qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH] qemu: fix configuring kvm probe when using --ke


From: Christian Ehrhardt
Subject: [Qemu-devel] Re: [PATCH] qemu: fix configuring kvm probe when using --kerneldir
Date: Mon, 12 Jan 2009 07:42:34 +0100
User-agent: Thunderbird 2.0.0.19 (X11/20090105)

Andre Przywara wrote:
address@hidden wrote:
From: Christian Ehrhardt <address@hidden>

There is already a variable kvm_cflags which gets the path of the kernel
includes when using --kerneldir. But eventually with newer kernels we all will need arch/$arch/include too (my case was a incldue of asm/kvm.h which was not
found anymore). Headers in a full kernel source are not flattened to
one arch like they are if e.g. installed kernel headers are used.
I also stumbled over this recently (in kvm-userspace.git), but I had problems with the qemu part not including KVM support because in qemu/configure the KVM build test failed due to the missing asm/kvm.h. I saw that --kerneldir gets not propagated to qemu, but libkvm_kerneldir instead, which is hardcoded to point to `pwd`/kernel. Shouldn't that be fixed, too? I use kvm-userspace.git and a not-installed kernel from kvm.git for compiling, so I say "./configure --kerneldir=/src/kvm.git --with-patched-kernel". I eventually hacked KVM's configure to propagate --kerneldir to qemu and added arch/x86/include to the include path in qemu/configure. This is of course a hack (that's why I don't append it here), but it worked ;-) If someone proposes a clean and easy way to solve this, I'd be happy to write a patch.

I know this issue and reported it ~a month ago. I also had issues compiling against a --kerneldir kernel because the libkvm_kerneldir was propagated. Eventually in the discussion it came up that we don't need to fix configure "technically", but maybe we should find a way to better inform users/developüers about this (I guess up to 99% that this works for you in kvm-userspace too):

(in a clean kvm-userspace)
 cd kernel
 make sync LINUX=path/to/your/kerneldir
 cd ..
 ./configure opt=whateveryouwant

This way your kerneldir is synced and flattened into kvm-userspace and propagating libkvm_kerneldir is fine since that are your kerneldir headers now. Maybe a "fix" would be that if --kerneldir is provided to configure it has to ensure that THIS kerneldir is synced in before continuing. You should be aware that the fix I sent on Friday was for plain qemu which doesn't have that kernel subdir indirection and therefore works a bit different.

To fix that, the includes added to cflags depending on --kerneldir should also contian the arch includes. The patch adds a special check for x86 because its source layout recently changed, all others directly use arch/$cpu/include if
existent.
This is one problem I also noticed. $cpu is not the same as the Linux' arch name, is there a suitable variable or do we have to do a large switch/case?

I looked around and there was no real 1:1 matching variable. But fortunately $cpu is similar enough to simplify that swicth/case a lot like I did in my patch here.

Regards,
Andre.



Signed-off-by: Christian Ehrhardt <address@hidden>
---

[diffstat]
 configure |    6 ++++++
 1 file changed, 6 insertions(+)

[diff]
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -963,6 +963,12 @@ EOF
 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 -d "$kerneldir/arch/$cpu/include" ; then
+            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
+      fi
   else
       kvm_cflags=""
   fi


--

Grüsse / regards, Christian Ehrhardt
IBM Linux Technology Center, Open Virtualization





reply via email to

[Prev in Thread] Current Thread [Next in Thread]