[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/15] Switch build system to accompanied kernel hea
From: |
Marcelo Tosatti |
Subject: |
[Qemu-devel] [PATCH 04/15] Switch build system to accompanied kernel headers |
Date: |
Tue, 21 Jun 2011 14:07:53 -0300 |
From: Jan Kiszka <address@hidden>
This helps reducing our build-time checks for feature support in the
available Linux kernel headers. And it helps users that do not have
sufficiently recent headers installed on their build machine.
Consequently, the patch removes and build-time checks for kvm and vhost
in configure, the --kerneldir switch, and KVM_CFLAGS. Kernel headers are
supposed to be provided by QEMU only.
s390 needs some extra love as it carries redefinitions from kernel
headers.
CC: Alexander Graf <address@hidden>
Signed-off-by: Jan Kiszka <address@hidden>
Signed-off-by: Marcelo Tosatti <address@hidden>
---
Makefile.target | 4 +-
configure | 151 ++++++----------------------------------------
target-s390x/cpu.h | 10 ---
target-s390x/op_helper.c | 1 +
4 files changed, 21 insertions(+), 145 deletions(-)
diff --git a/Makefile.target b/Makefile.target
index b1a0f6d..db2fa6e 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -14,7 +14,7 @@ endif
TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
$(call set-vpath, $(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw)
-QEMU_CFLAGS+= -I.. -I$(TARGET_PATH) -DNEED_CPU_H
+QEMU_CFLAGS+= -I.. -I../linux-headers -I$(TARGET_PATH) -DNEED_CPU_H
include $(SRC_PATH)/Makefile.objs
@@ -37,8 +37,6 @@ ifndef CONFIG_HAIKU
LIBS+=-lm
endif
-kvm.o kvm-all.o vhost.o vhost_net.o kvmclock.o: QEMU_CFLAGS+=$(KVM_CFLAGS)
-
config-target.h: config-target.h-timestamp
config-target.h-timestamp: config-target.mak
diff --git a/configure b/configure
index 44c092a..8df6485 100755
--- a/configure
+++ b/configure
@@ -113,8 +113,7 @@ curl=""
curses=""
docs=""
fdt=""
-kvm=""
-kvm_para=""
+kvm="yes"
nptl=""
sdl=""
vnc="yes"
@@ -130,7 +129,7 @@ xen=""
xen_ctrl_version=""
linux_aio=""
attr=""
-vhost_net=""
+vhost_net="yes"
xfs=""
gprof="no"
@@ -166,7 +165,6 @@ guest_base=""
uname_release=""
io_thread="no"
mixemu="no"
-kerneldir=""
aix="no"
blobs="yes"
pkgversion=""
@@ -715,8 +713,6 @@ for opt do
;;
--disable-blobs) blobs="no"
;;
- --kerneldir=*) kerneldir="$optarg"
- ;;
--with-pkgversion=*) pkgversion=" ($optarg)"
;;
--disable-docs) docs="no"
@@ -1005,7 +1001,6 @@ echo " --disable-attr disables attr and xattr
support"
echo " --enable-attr enable attr and xattr support"
echo " --enable-io-thread enable IO thread"
echo " --disable-blobs disable installing provided firmware blobs"
-echo " --kerneldir=PATH look for kernel includes in PATH"
echo " --enable-docs enable documentation build"
echo " --disable-docs disable documentation build"
echo " --disable-vhost-net disable vhost-net acceleration support"
@@ -1779,124 +1774,6 @@ EOF
fi
##########################################
-# kvm probe
-if test "$kvm" != "no" ; then
- cat > $TMPC <<EOF
-#include <linux/kvm.h>
-#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
-#error Invalid KVM version
-#endif
-EOF
- must_have_caps="KVM_CAP_USER_MEMORY \
- KVM_CAP_DESTROY_MEMORY_REGION_WORKS \
- KVM_CAP_COALESCED_MMIO \
- KVM_CAP_SYNC_MMU \
- "
- if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) ; then
- must_have_caps="$caps \
- KVM_CAP_SET_TSS_ADDR \
- KVM_CAP_EXT_CPUID \
- KVM_CAP_CLOCKSOURCE \
- KVM_CAP_NOP_IO_DELAY \
- KVM_CAP_PV_MMU \
- KVM_CAP_MP_STATE \
- KVM_CAP_USER_NMI \
- "
- fi
- for c in $must_have_caps ; do
- cat >> $TMPC <<EOF
-#if !defined($c)
-#error Missing KVM capability $c
-#endif
-EOF
- done
- cat >> $TMPC <<EOF
-int main(void) { return 0; }
-EOF
- if test "$kerneldir" != "" ; then
- kvm_cflags=-I"$kerneldir"/include
- if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
- -a -d "$kerneldir/arch/x86/include" ; then
- kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
- elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
- kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
- elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
- kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
- elif test -d "$kerneldir/arch/$cpu/include" ; then
- kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
- fi
- else
- kvm_cflags=`$pkg_config --cflags kvm-kmod 2>/dev/null`
- fi
- if compile_prog "$kvm_cflags" "" ; then
- kvm=yes
- cat > $TMPC <<EOF
-#include <linux/kvm_para.h>
-int main(void) { return 0; }
-EOF
- if compile_prog "$kvm_cflags" "" ; then
- kvm_para=yes
- fi
- else
- if test "$kvm" = "yes" ; then
- if has awk && has grep; then
- kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
- | grep "error: " \
- | awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
- if test "$kvmerr" != "" ; then
- echo -e "${kvmerr}\n\
-NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
-recent kvm-kmod from http://sourceforge.net/projects/kvm."
- fi
- fi
- feature_not_found "kvm"
- fi
- kvm=no
- fi
-fi
-
-##########################################
-# test for ppc kvm pvr setting
-
-if test "$kvm" = "yes" && test "$cpu" = "ppc" -o "$cpu" = "ppc64"; then
- cat > $TMPC <<EOF
- #include <asm/kvm.h>
- int main(void) { struct kvm_sregs s; s.pvr = 0; return 0; }
-EOF
- if compile_prog "$kvm_cflags" "" ; then
- kvm_ppc_pvr=yes
- else
- kvm_ppc_pvr=no
- fi
-fi
-
-##########################################
-# test for vhost net
-
-if test "$vhost_net" != "no"; then
- if test "$kvm" != "no"; then
- cat > $TMPC <<EOF
- #include <linux/vhost.h>
- int main(void) { return 0; }
-EOF
- if compile_prog "$kvm_cflags" "" ; then
- vhost_net=yes
- else
- if test "$vhost_net" = "yes" ; then
- feature_not_found "vhost-net"
- fi
- vhost_net=no
- fi
- else
- if test "$vhost_net" = "yes" ; then
- echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
- feature_not_found "vhost-net"
- fi
- vhost_net=no
- fi
-fi
-
-##########################################
# pthread probe
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
@@ -3346,16 +3223,11 @@ 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 "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
- if test "$kvm_para" = "yes"; then
- echo "CONFIG_KVM_PARA=y" >> $config_target_mak
- fi
+ echo "CONFIG_KVM_PARA=y" >> $config_target_mak
if test $vhost_net = "yes" ; then
echo "CONFIG_VHOST_NET=y" >> $config_target_mak
fi
- if test "$kvm_ppc_pvr" = "yes" ; then
- echo "CONFIG_KVM_PPC_PVR=y" >> $config_target_mak
- fi
+ echo "CONFIG_KVM_PPC_PVR=y" >> $config_target_mak
fi
esac
if test "$target_bigendian" = "yes" ; then
@@ -3546,6 +3418,21 @@ if test "$target_linux_user" = "yes" -o
"$target_bsd_user" = "yes" ; then
esac
fi
+# use included Linux headers
+includes="-I\$(SRC_PATH)/linux-headers $includes"
+mkdir -p linux-headers
+case "$cpu" in
+i386|x86_64)
+ symlink $source_path/linux-headers/asm-x86 linux-headers/asm
+ ;;
+ppcemb|ppc|ppc64)
+ symlink $source_path/linux-headers/asm-x86 linux-headers/asm
+ ;;
+s390x)
+ symlink $source_path/linux-headers/asm-s390 linux-headers/asm
+ ;;
+esac
+
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
index 4e5c391..b5e587f 100644
--- a/target-s390x/cpu.h
+++ b/target-s390x/cpu.h
@@ -313,16 +313,6 @@ CPUState *s390_cpu_addr2state(uint16_t cpu_addr);
/* from s390-virtio-bus */
extern const target_phys_addr_t virtio_size;
-#ifndef KVM_S390_SIGP_STOP
-#define KVM_S390_SIGP_STOP 0
-#define KVM_S390_PROGRAM_INT 0
-#define KVM_S390_SIGP_SET_PREFIX 0
-#define KVM_S390_RESTART 0
-#define KVM_S390_INT_VIRTIO 0
-#define KVM_S390_INT_SERVICE 0
-#define KVM_S390_INT_EMERGENCY 0
-#endif
-
#endif
void cpu_lock(void);
void cpu_unlock(void);
diff --git a/target-s390x/op_helper.c b/target-s390x/op_helper.c
index db03a79..9429698 100644
--- a/target-s390x/op_helper.c
+++ b/target-s390x/op_helper.c
@@ -23,6 +23,7 @@
#include "helpers.h"
#include <string.h>
#include "kvm.h"
+#include <linux/kvm.h>
#include "qemu-timer.h"
/*****************************************************************************/
--
1.7.5.4
- [Qemu-devel] [PATCH 06/15] kvm: ppc: Drop CONFIG_KVM_PPC_PVR, (continued)
- [Qemu-devel] [PATCH 06/15] kvm: ppc: Drop CONFIG_KVM_PPC_PVR, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 12/15] kvm: x86: Pass KVMState to kvm_arch_get_supported_cpuid, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 07/15] kvm: Drop useless zero-initializations, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 10/15] kvm: ppc: Drop KVM_CAP build dependencies, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 08/15] kvm: Drop KVM_CAP build dependencies, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 11/15] kvm: Clean up stubs, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 13/15] Remove unneeded kvm.h from cpu-exec.c, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 05/15] kvm: Drop CONFIG_KVM_PARA, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 14/15] KVM: Fix XSAVE feature bit enumeration, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 01/15] kvm: x86: Save/restore FPU OP, IP and DP, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 04/15] Switch build system to accompanied kernel headers,
Marcelo Tosatti <=
- [Qemu-devel] [PATCH 02/15] Add kernel header update script, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 15/15] kvm: fix FPU state subsection, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 09/15] kvm: x86: Drop KVM_CAP build dependencies, Marcelo Tosatti, 2011/06/21
- [Qemu-devel] [PATCH 03/15] Import kernel headers, Marcelo Tosatti, 2011/06/21
- Re: [Qemu-devel] [PATCH 00/15] [PULL] qemu-kvm.git uq/master queue, Anthony Liguori, 2011/06/22