Build KVM for all targets

This commit is contained in:
Cole Robinson 2012-08-14 08:54:17 -04:00
parent 57c57a19f5
commit c5cd364aca
2 changed files with 93 additions and 8 deletions

View File

@ -0,0 +1,72 @@
From b652c0572859e594fe8d1fc9fd2289126a4c3a1b Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
Date: Mon, 13 Aug 2012 18:39:54 -0400
Subject: [PATCH] configure: Add --disable-kvm-options
In Fedora, our qemu package is based on qemu-kvm, and we go to convoluted
lengths to provide a qemu-kvm binary with KVM on by default, but all
qemu-system-* with KVM off by default (using ./configure --disable-kvm)
For qemu-system*, what we really want is upstream qemu symantics of TCG
by default, but the opt in option for KVM. CONFIG_KVM_OPTIONS fits the
bill, so let's expose it through ./configure. This will also simplify
our packaging for non-x86 KVM.
Signed-off-by: Cole Robinson <crobinso@redhat.com>
---
configure | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index 6b66d34..8f4d9e3 100755
--- a/configure
+++ b/configure
@@ -189,6 +189,7 @@ guest_base=""
uname_release=""
mixemu="no"
kvm_cap_device_assignment="yes"
+kvmoptions="yes"
aix="no"
blobs="yes"
pkgversion=" ($(kvm_version))"
@@ -707,6 +708,8 @@ for opt do
;;
--enable-kvm) kvm="yes"
;;
+ --disable-kvm-options) kvmoptions="no"
+ ;;
--disable-tcg-interpreter) tcg_interpreter="no"
;;
--enable-tcg-interpreter) tcg_interpreter="yes"
@@ -1071,6 +1074,8 @@ echo " --enable-bluez enable bluez stack connectivity"
echo " --disable-slirp disable SLIRP userspace network connectivity"
echo " --disable-kvm disable KVM acceleration support"
echo " --enable-kvm enable KVM acceleration support"
+echo " --disable-kvm-options if KVM is enabled, default to KVM=off, and"
+echo " remove non-upstream cli options"
echo " --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
echo " --disable-kvm-device-assignment disable KVM device assignment support"
echo " --enable-kvm-device-assignment enable KVM device assignment support"
@@ -3101,6 +3106,7 @@ echo "Install blobs $blobs"
echo "KVM support $kvm"
echo "TCG interpreter $tcg_interpreter"
echo "KVM device assig. $kvm_cap_device_assignment"
+echo "KVM CLI options $kvmoptions"
echo "fdt support $fdt"
echo "preadv support $preadv"
echo "fdatasync $fdatasync"
@@ -3818,7 +3824,10 @@ case "$target_arch2" in
\( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \
\( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then
echo "CONFIG_KVM=y" >> $config_target_mak
- echo "CONFIG_KVM_OPTIONS=y" >> $config_host_mak
+
+ if test "$kvmoptions" = "yes" ; then
+ echo "CONFIG_KVM_OPTIONS=y" >> $config_host_mak
+ fi
if test "$vhost_net" = "yes" ; then
echo "CONFIG_VHOST_NET=y" >> $config_target_mak
fi
--
1.7.11.2

View File

@ -87,6 +87,10 @@ Source11: 99-qemu-guest-agent.rules
# Non upstream build fix
Patch1: 0001-mips-Fix-link-error-with-piix4_pm_init.patch
# Add ./configure --disable-kvm-options
# Sent upstream on August 13 2012
Patch2: 0002-configure-Add-disable-kvm-options.patch
# The infamous chardev flow control patches
Patch101: 0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch
Patch102: 0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch
@ -378,6 +382,7 @@ such as kvm_stat.
%setup -q -n qemu-kvm-%{version}
%patch1 -p1
%patch2 -p1
%patch101 -p1
%patch102 -p1
@ -393,7 +398,6 @@ such as kvm_stat.
%patch112 -p1
%patch113 -p1
%build
buildarch="i386-softmmu x86_64-softmmu arm-softmmu cris-softmmu \
m68k-softmmu mips-softmmu mipsel-softmmu mips64-softmmu \
@ -405,7 +409,7 @@ buildarch="i386-softmmu x86_64-softmmu arm-softmmu cris-softmmu \
ppc64abi32-linux-user sh4-linux-user sh4eb-linux-user \
sparc-linux-user sparc64-linux-user sparc32plus-linux-user"
%if %{with x86only}
buildarch="i386-softmmu x86_64-softmmu i386-linux-user x86_64-linux-user"
buildarch="i386-linux-user x86_64-linux-user"
%endif
# Targets we don't build as of qemu 1.1.50
@ -430,6 +434,7 @@ dobuild() {
./configure \
--prefix=%{_prefix} \
--sysconfdir=%{_sysconfdir} \
--interp-prefix=%{_prefix}/qemu-%%M \
--audio-drv-list=pa,sdl,alsa,oss \
--disable-strip \
--extra-ldflags="$extraldflags -pie -Wl,-z,relro -Wl,-z,now" \
@ -447,6 +452,7 @@ dobuild() {
--enable-trace-backend=dtrace \
--disable-werror \
--disable-xen \
--enable-kvm \
"$@"
echo "config-host.mak contents:"
@ -457,11 +463,21 @@ dobuild() {
make V=1 %{?_smp_mflags} $buildldflags
}
# This is kind of confusing. We run ./configure + make twice here to
# preserve some back compat: if on x86, we want to provide a qemu-kvm
# binary that defaults to KVM=on. All other qemu-system* should be
# able to use KVM, but default to KVM=off (upstream qemu semantics).
#
# Once qemu-kvm and qemu fully merge, and we base off qemu releases,
# all qemu-system-* will default to KVM=off, so we hopefully won't need
# to do these double builds. But then I'm not sure how we are going to
# generate a back compat qemu-kvm binary...
# KVM enabled builds
%ifarch %{ix86} x86_64
# Build qemu-kvm back compat binary
dobuild --target-list=x86_64-softmmu
# Setup back compat qemu-kvm binary which defaults to KVM=on
./scripts/tracetool.py --backend dtrace --format stap \
--binary %{_bindir}/qemu-kvm --target-arch x86_64 --target-type system \
--probe-prefix qemu.kvm < ./trace-events > qemu-kvm.stp
@ -469,11 +485,8 @@ cp -a x86_64-softmmu/qemu-system-x86_64 qemu-kvm
make clean
%endif
# KVM disabled builds
dobuild --target-list="$buildarch" \
--interp-prefix=%{_prefix}/qemu-%%M \
--disable-kvm
# Build qemu-system-* with consistent default of kvm=off
dobuild --target-list="$buildarch" --disable-kvm-options
gcc %{SOURCE6} -O2 -g -o ksmctl