aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2006-11-21 10:19:06 +0000
committerAvi Kivity <avi@qumranet.com>2006-11-21 10:19:06 +0000
commit36a87c3a00d25f8ec19062d598564dca7ff20504 (patch)
tree8a893de1b658287541b088d875a2cdf58adf7edd
parent1fee06fa1dd0477d3823e7ac0c846ec639c7d768 (diff)
kvm: merge minor changes from trunk
-rw-r--r--hw/usb-hid.c4
-rw-r--r--kvm/Makefile34
-rw-r--r--kvm/kernel/Makefile12
-rwxr-xr-xkvm/kvm8
-rw-r--r--kvm/kvm.spec59
-rw-r--r--kvm/user/Makefile7
6 files changed, 109 insertions, 15 deletions
diff --git a/hw/usb-hid.c b/hw/usb-hid.c
index 8fc0b744b..327d2a923 100644
--- a/hw/usb-hid.c
+++ b/hw/usb-hid.c
@@ -169,7 +169,9 @@ static const uint8_t qemu_tablet_config_descriptor[] = {
0x81, /* u8 ep_bEndpointAddress; IN Endpoint 1 */
0x03, /* u8 ep_bmAttributes; Interrupt */
0x08, 0x00, /* u16 ep_wMaxPacketSize; */
- 0x03, /* u8 ep_bInterval; (255ms -- usb 2.0 spec) */
+ /* Temporarily increase usb polling interval to prevent cpu
+ * saturation (3 ms is way too often for kvm) */
+ 0x33, /* u8 ep_bInterval; (255ms -- usb 2.0 spec) */
};
static const uint8_t qemu_mouse_hid_report_descriptor[] = {
diff --git a/kvm/Makefile b/kvm/Makefile
index 9209f4c7b..07a1111b9 100644
--- a/kvm/Makefile
+++ b/kvm/Makefile
@@ -5,7 +5,7 @@ DESTDIR=
rpmrelease = devel
-.PHONY: kernel user qemu
+.PHONY: kernel user qemu clean
all: $(if $(WANT_MODULE), kernel) user qemu
@@ -14,6 +14,27 @@ qemu kernel user:
qemu: user
+clean:
+ @for d in kernel user qemu; do \
+ $(MAKE) -C $$d $@; \
+ done
+
+bindir = /usr/bin
+bin = $(bindir)/kvm
+initdir = /etc/init.d
+confdir = /etc/kvm
+utilsdir = /etc/kvm/utils
+
+install-rpm:
+ mkdir -p $(DESTDIR)/$(bindir)
+ mkdir -p $(DESTDIR)/$(confdir)
+ mkdir -p $(DESTDIR)/$(initdir)
+ mkdir -p $(DESTDIR)/$(utilsdir)
+ cp qemu/x86_64-softmmu/qemu-system-x86_64 $(DESTDIR)/$(bin)
+ cp scripts/kvm $(DESTDIR)/$(initdir)/kvm
+ cp scripts/qemu-ifup $(DESTDIR)/$(confdir)/qemu-ifup
+ cp kvm $(DESTDIR)/$(utilsdir)/kvm
+
install:
make -C user DESTDIR="$(DESTDIR)" install
make -C qemu DESTDIR="$(DESTDIR)" install
@@ -26,8 +47,19 @@ rpm: user qemu
rpmbuild --define="kverrel $$(uname -r)" \
--define="objdir $$(pwd)" \
--define="_topdir $$(pwd)" \
+ --define="prebuilt 1" \
-bb $(tmpspec)
+srpm:
+ mkdir -p SOURCES SRPMS
+ sed 's/^Release:.*/Release: $(rpmrelease)/' kvm.spec > $(tmpspec)
+ tar czf SOURCES/kvm.tar.gz qemu
+ tar czf SOURCES/user.tar.gz user
+ tar czf SOURCES/kernel.tar.gz kernel
+ tar czf SOURCES/scripts.tar.gz scripts
+ cp Makefile SOURCES
+ rpmbuild --define="_topdir $$(pwd)" -bs $(tmpspec)
+
clean:
for i in $(if $(WANT_MODULE), kernel) user qemu; do \
make -C $$i clean; \
diff --git a/kvm/kernel/Makefile b/kvm/kernel/Makefile
index e5183307d..1f2d19296 100644
--- a/kvm/kernel/Makefile
+++ b/kvm/kernel/Makefile
@@ -1,4 +1,5 @@
-KERNELDIR := /lib/modules/`uname -r`/build
+KERNELDIR := /lib/modules/$(shell uname -r)/build
+KVERREL = $(patsubst /lib/modules/%/build,%,$(KERNELDIR))
rpmrelease = devel
@@ -10,11 +11,14 @@ tmpspec = .tmp.kvm-kmod.spec
rpm: all
mkdir -p ../BUILD ../RPMS/$$(uname -m)
sed 's/^Release:.*/Release: $(rpmrelease)/' kvm-kmod.spec > $(tmpspec)
- rpmbuild --define="kverrel $$(uname -r)" \
+ rpmbuild --define="kverrel $(KVERREL)" \
--define="objdir $$(pwd)" \
--define="_topdir $$(pwd)/.." \
-bb $(tmpspec)
clean:
- $(MAKE) -C $(KERNELDIR) M=`pwd` clean
- rm -f Module.symvers \ No newline at end of file
+ $(MAKE) -C $(KERNELDIR) M=`pwd` $@
+
+svnclean:
+ svn st | grep '^\?' | awk '{print $2}' | xargs rm -rf
+
diff --git a/kvm/kvm b/kvm/kvm
index ead4d1778..db7d21a5c 100755
--- a/kvm/kvm
+++ b/kvm/kvm
@@ -53,6 +53,11 @@ optparser.add_option('--cdrom',
dest = 'cdrom',
default = '/data/mirror/fedora/core/5/x86_64/os/images/boot.iso',
)
+optparser.add_option('--loadvm',
+ help = 'select saved vm-image',
+ dest = 'saved_image',
+ default = '',
+ )
(options, args) = optparser.parse_args(sys.argv)
@@ -118,6 +123,9 @@ if not options.notap:
if options.vnc is not None:
qemu_args += ('-vnc', str(options.vnc))
+if options.saved_image != '':
+ qemu_args += ('-loadvm' , options.saved_image, )
+
def concat_func(x,y): return x + ' ' + y
print 'Running %s' % reduce(concat_func, qemu_args)
diff --git a/kvm/kvm.spec b/kvm/kvm.spec
index 7caf48e20..bc6745936 100644
--- a/kvm/kvm.spec
+++ b/kvm/kvm.spec
@@ -10,8 +10,27 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
ExclusiveArch: i386 x86_64
-Requires: qemu kvm-kmod
-BuildRequires: SDL-devel zlib-devel compat-gcc-32
+Requires: qemu kvm-kmod bridge-utils
+
+%define fedora_release %(rpm -q --qf '%%{version}' fedora-release)
+
+%if %{fedora_release} == 5
+BuildRequires: compat-gcc-32
+%else
+BuildRequires: compat-gcc-34
+%endif
+
+BuildRequires: SDL-devel zlib-devel
+
+%define _prebuilt %{?prebuilt:1}%{!?prebuilt:0}
+
+%if !%{_prebuilt}
+Source0: kvm.tar.gz
+Source1: user.tar.gz
+Source2: kernel.tar.gz
+Source3: scripts.tar.gz
+Source4: Makefile
+%endif
%description
The Kernel Virtual Machine provides a virtualization enviroment for processors
@@ -19,20 +38,46 @@ with hardware support for virtualization: Intel's VT and AMD's AMD-V.
%prep
+%if !%{_prebuilt}
+%setup -T -b 0 -n qemu
+%setup -T -b 1 -n user -D
+%setup -T -b 2 -n kernel -D
+%setup -T -b 3 -n scripts -D
+cd ..
+cp %{_sourcedir}/Makefile .
+%endif
+
%build
rm -rf %{buildroot}
+%if !%{_prebuilt}
+cd ..
+make -C user
+(cd qemu; ./kvm-configure)
+make -C qemu
+%endif
+
%install
+%if !%{_prebuilt}
+cd ..
+%else
+cd %{objdir}
+%endif
+
+make DESTDIR=%{buildroot} install-rpm
+
%define bindir /usr/bin
%define bin %{bindir}/kvm
-mkdir -p %{buildroot}/%{bindir}
-cp %{objdir}/qemu/x86_64-softmmu/qemu-system-x86_64 %{buildroot}/%{bin}
+%define initdir /etc/init.d
+%define confdir /etc/kvm
+%define utilsdir /etc/kvm/utils
%post
-
depmod %{kverrel}
+/sbin/chkconfig --level 2345 kvm on
+/sbin/chkconfig --level 16 kvm off
%postun
@@ -42,5 +87,7 @@ depmod %{kverrel}
%files
/usr/bin/kvm
-
+%{confdir}/qemu-ifup
+%{initdir}/kvm
+%{utilsdir}/kvm
%changelog
diff --git a/kvm/user/Makefile b/kvm/user/Makefile
index 2327bdc8a..885e0f55c 100644
--- a/kvm/user/Makefile
+++ b/kvm/user/Makefile
@@ -45,7 +45,8 @@ test/sieve.flat: test/cstart64.o test/sieve.o test/print.o test/vm.o
test/test32.flat: test/test32.o
-clean:
- rm -f kvmctl *.o *.a test/*.o test/*.flat test/bootstrap .*.d
-
-include .*.d
+
+clean:
+ $(RM) kvmctl *.o *.a .*.d
+ $(RM) test/bootstrap test/*.o test/*.flat test/.*.d