Re: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-29 Thread Alexander Graf
Any further comments on this? I would really like to see KVM build out- 
of-the-box on SUSE kernels (and kernels built with O= at the same time).


Alex

On 15.09.2008, at 16:19, Alexander Graf wrote:

KVM as is assumes that the kernel obj dir and the kernel source dir  
are at the same location. This is true for most self-built vanilla  
kernels, but some distributions split these up (e.g. SUSE).
To keep compatible and have users have a good experience on building  
KVM on any distribution, this patch attempts to rebuild the logic  
from the kernel Makefile as closely as possible. With it I  
successfully built KVM on a current SUSE system.


Signed-off-by: Alexander Graf [EMAIL PROTECTED]

Please check and see if it breaks the build process for anyone else.  
Building with IA64 on SUSE-kernels is still broken due to similar  
but separate problems.



diff --git a/configure b/configure
index 3bb10ce..5e9cbab 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,7 @@
#!/bin/bash

prefix=/usr/local
+kernelsourcedir=
kerneldir=/lib/modules/$(uname -r)/build
cc=gcc
ld=ld
@@ -102,6 +103,11 @@ if [ $arch = powerpc ]; then
qemu_ldflags=$qemu_ldflags -L $PWD/libfdt
fi

+# see if we have split build and source directories
+if [ -d $kerneldir/include2 ]; then
+kernelsourcedir=${kerneldir%/*}/source
+fi
+
#configure user dir
(cd user; ./configure --prefix=$prefix -- 
kerneldir=$libkvm_kerneldir \

  --arch=$arch \
@@ -124,6 +130,7 @@ cat EOF  config.mak
ARCH=$arch
PREFIX=$prefix
KERNELDIR=$kerneldir
+KERNELSOURCEDIR=$kernelsourcedir
LIBKVM_KERNELDIR=$libkvm_kerneldir
WANT_MODULE=$want_module
CROSS_COMPILE=$cross_prefix
diff --git a/kernel/Makefile b/kernel/Makefile
index 3f5f6da..d2cf89c 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -36,7 +36,9 @@ hack-files = $(hack-files-$(ARCH_DIR))
all:: header-link prerequisite
#   include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
$(MAKE) -C $(KERNELDIR) M=`pwd` \
-		LINUXINCLUDE=-I`pwd`/include -Iinclude -Iarch/${ARCH_DIR}/ 
include -I`pwd`/include-compat \

+   LINUXINCLUDE=-I`pwd`/include -Iinclude \
+   $(if $(KERNELSOURCEDIR),-Iinclude2 
-I$(KERNELSOURCEDIR)/include) \
+   -Iarch/${ARCH_DIR}/include -I`pwd`/include-compat \
-include include/linux/autoconf.h \
-include `pwd`/$(ARCH_DIR)/external-module-compat.h
$$@


--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-29 Thread Jan Kiszka
Alexander Graf wrote:
 Any further comments on this? I would really like to see KVM build
 out-of-the-box on SUSE kernels (and kernels built with O= at the same
 time).

 Alex

/me, too. And my colleagues @work. We carry around an old hack to build
against SuSE, now waiting for your clean solution to be merged.

Jan

 
 On 15.09.2008, at 16:19, Alexander Graf wrote:
 
 KVM as is assumes that the kernel obj dir and the kernel source dir
 are at the same location. This is true for most self-built vanilla
 kernels, but some distributions split these up (e.g. SUSE).
 To keep compatible and have users have a good experience on building
 KVM on any distribution, this patch attempts to rebuild the logic from
 the kernel Makefile as closely as possible. With it I successfully
 built KVM on a current SUSE system.

 Signed-off-by: Alexander Graf [EMAIL PROTECTED]

 Please check and see if it breaks the build process for anyone else.
 Building with IA64 on SUSE-kernels is still broken due to similar but
 separate problems.


 diff --git a/configure b/configure
 index 3bb10ce..5e9cbab 100755
 --- a/configure
 +++ b/configure
 @@ -1,6 +1,7 @@
 #!/bin/bash

 prefix=/usr/local
 +kernelsourcedir=
 kerneldir=/lib/modules/$(uname -r)/build
 cc=gcc
 ld=ld
 @@ -102,6 +103,11 @@ if [ $arch = powerpc ]; then
 qemu_ldflags=$qemu_ldflags -L $PWD/libfdt
 fi

 +# see if we have split build and source directories
 +if [ -d $kerneldir/include2 ]; then
 +kernelsourcedir=${kerneldir%/*}/source
 +fi
 +
 #configure user dir
 (cd user; ./configure --prefix=$prefix
 --kerneldir=$libkvm_kerneldir \
   --arch=$arch \
 @@ -124,6 +130,7 @@ cat EOF  config.mak
 ARCH=$arch
 PREFIX=$prefix
 KERNELDIR=$kerneldir
 +KERNELSOURCEDIR=$kernelsourcedir
 LIBKVM_KERNELDIR=$libkvm_kerneldir
 WANT_MODULE=$want_module
 CROSS_COMPILE=$cross_prefix
 diff --git a/kernel/Makefile b/kernel/Makefile
 index 3f5f6da..d2cf89c 100644
 --- a/kernel/Makefile
 +++ b/kernel/Makefile
 @@ -36,7 +36,9 @@ hack-files = $(hack-files-$(ARCH_DIR))
 all:: header-link prerequisite
 #include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
 $(MAKE) -C $(KERNELDIR) M=`pwd` \
 -LINUXINCLUDE=-I`pwd`/include -Iinclude
 -Iarch/${ARCH_DIR}/include -I`pwd`/include-compat \
 +LINUXINCLUDE=-I`pwd`/include -Iinclude \
 +$(if $(KERNELSOURCEDIR),-Iinclude2
 -I$(KERNELSOURCEDIR)/include) \
 +-Iarch/${ARCH_DIR}/include -I`pwd`/include-compat \
 -include include/linux/autoconf.h \
 -include `pwd`/$(ARCH_DIR)/external-module-compat.h
 $$@
 
 -- 
 To unsubscribe from this list: send the line unsubscribe kvm in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 




signature.asc
Description: OpenPGP digital signature


Re: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-29 Thread Brian Jackson
With your patch, I still can't build with a split kernel source/object dir.

Don't know if it's a difference of configure options or what. Here's mine just 
in case:
./configure --disable-gfx-check --disable-sdl --with-patched-kernel 
--prefix=/usr

I needed the attached patch as well.




On Monday 29 September 2008 1:13:52 pm Alexander Graf wrote:
 Any further comments on this? I would really like to see KVM build out-
 of-the-box on SUSE kernels (and kernels built with O= at the same time).

 Alex

 On 15.09.2008, at 16:19, Alexander Graf wrote:
  KVM as is assumes that the kernel obj dir and the kernel source dir
  are at the same location. This is true for most self-built vanilla
  kernels, but some distributions split these up (e.g. SUSE).
  To keep compatible and have users have a good experience on building
  KVM on any distribution, this patch attempts to rebuild the logic
  from the kernel Makefile as closely as possible. With it I
  successfully built KVM on a current SUSE system.
 
  Signed-off-by: Alexander Graf [EMAIL PROTECTED]
 
  Please check and see if it breaks the build process for anyone else.
  Building with IA64 on SUSE-kernels is still broken due to similar
  but separate problems.
 
 
  diff --git a/configure b/configure
  index 3bb10ce..5e9cbab 100755
  --- a/configure
  +++ b/configure
  @@ -1,6 +1,7 @@
  #!/bin/bash
 
  prefix=/usr/local
  +kernelsourcedir=
  kerneldir=/lib/modules/$(uname -r)/build
  cc=gcc
  ld=ld
  @@ -102,6 +103,11 @@ if [ $arch = powerpc ]; then
  qemu_ldflags=$qemu_ldflags -L $PWD/libfdt
  fi
 
  +# see if we have split build and source directories
  +if [ -d $kerneldir/include2 ]; then
  +kernelsourcedir=${kerneldir%/*}/source
  +fi
  +
  #configure user dir
  (cd user; ./configure --prefix=$prefix --
  kerneldir=$libkvm_kerneldir \
--arch=$arch \
  @@ -124,6 +130,7 @@ cat EOF  config.mak
  ARCH=$arch
  PREFIX=$prefix
  KERNELDIR=$kerneldir
  +KERNELSOURCEDIR=$kernelsourcedir
  LIBKVM_KERNELDIR=$libkvm_kerneldir
  WANT_MODULE=$want_module
  CROSS_COMPILE=$cross_prefix
  diff --git a/kernel/Makefile b/kernel/Makefile
  index 3f5f6da..d2cf89c 100644
  --- a/kernel/Makefile
  +++ b/kernel/Makefile
  @@ -36,7 +36,9 @@ hack-files = $(hack-files-$(ARCH_DIR))
  all:: header-link prerequisite
  #   include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
  $(MAKE) -C $(KERNELDIR) M=`pwd` \
  -   LINUXINCLUDE=-I`pwd`/include -Iinclude -Iarch/${ARCH_DIR}/
  include -I`pwd`/include-compat \
  +   LINUXINCLUDE=-I`pwd`/include -Iinclude \
  +   $(if $(KERNELSOURCEDIR),-Iinclude2 
  -I$(KERNELSOURCEDIR)/include) \
  +   -Iarch/${ARCH_DIR}/include -I`pwd`/include-compat \
  -include include/linux/autoconf.h \
  -include `pwd`/$(ARCH_DIR)/external-module-compat.h
  $$@

 --
 To unsubscribe from this list: send the line unsubscribe kvm in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

diff --git a/kernel/Makefile b/kernel/Makefile
index f2a71fa..46948cc 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -58,8 +58,8 @@ T = $(subst -sync,,$@)-tmp
 header-sync:
 	rm -rf $T
 	rsync -R \
-	 $(LINUX)/./include/linux/kvm*.h \
-	 $(LINUX)/./include/asm-*/kvm*.h \
+	 $(subst build,source,$(LINUX))/./include/linux/kvm*.h \
+	 $(subst build,source,$(LINUX))/./include/asm-*/kvm*.h \
  $T/
 	-rsync -R \
 	 $(LINUX)/arch/$(ARCH_DIR)/include/asm/./kvm*.h \


Re: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-29 Thread Alexander Graf


On 29.09.2008, at 23:50, Brian Jackson wrote:

With your patch, I still can't build with a split kernel source/ 
object dir.


Don't know if it's a difference of configure options or what. Here's  
mine just

in case:
./configure --disable-gfx-check --disable-sdl --with-patched-kernel  
--prefix=/usr


I needed the attached patch as well.


Does --with-patched-kernel work again? I thought that's broken anyways.

Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-17 Thread Zhang, Xiantao
Alexander Graf wrote:
 On Sep 16, 2008, at 12:22 PM, Zhang, Xiantao wrote:
 
 Alexander Graf wrote:
 On Sep 16, 2008, at 9:22 AM, Zhang, Xiantao wrote:
 
 Alexander Graf wrote:
 KVM as is assumes that the kernel obj dir and the kernel source
 dir are at the same location. This is true for most self-built
 vanilla kernels, but some distributions split these up (e.g.
 SUSE). 
 To keep compatible and have users have a good experience on
 building KVM on any distribution, this patch attempts to rebuild
 the logic from the kernel Makefile as closely as possible. With
 it I successfully built KVM on a current SUSE system.
 
 Signed-off-by: Alexander Graf [EMAIL PROTECTED]
 
 Please check and see if it breaks the build process for anyone
 else. Building with IA64 on SUSE-kernels is still broken due to
 similar but separate problems.
 
 Hi, Graf
what problems did you meet when building kvm/ia64 ?
 Xiantao
 
 
 This is the list of stuff I had to modify to get kvm-74 to run. I
 haven't tried anything more recent yet.
 
 1) -mno-sdata does not work. Qemu CFLAGS need to be -msdata
 
 Which version of GCC are you using ?
 
 # gcc --version
 gcc (SUSE Linux) 4.3.2 20080815 (prerelease) [gcc-4_3-branch revision
 139129]
 
 
 
 2) In qemu/ia64.ld SEARCH_DIR is invalid for SUSE. It shouldn't
 search in /usr/ia64-linux but in /usr/ia64-suse-linux.
 You can make a patch to fix it.
 
 Right, this one should be really easy to fix.
 
 3) TARGET_PAGE_BITS is wrong
 Currently, we just set TARGET_PAGE_BITS to 16 by hardcoding in Qemu.
 In the future, we should add the logic to make it equal to kernel's
 PAGE_SHIFT.
 
  From what I read on the KVM IA64 ML, this is not the first time
 someone ran into this issue. Sounds like a really good idea to add the
 logic ;-).
 
 4) kernel/ia64/Makefile.pre assumes to find .S files in $KERNELDIR.
 They are in $SOURCEDIR.
 
 There is no issue here, I think.  You have to set corrent $KERNELDIR
 through ./configure --kerneldir= once target machine and build
 machine is not same.
 
 No, since $KERNELDIR is the build dir, as that one contains all the
 configurations. The source dir only contains the sources.
 
 5) kernel/ia64/Makefile.pre suffers from the same problem my
 original fix for x86 addressed.
 
 Ditto.
 
 6) The IA64 kernel build system is broken. The file asm-ia64/nr-
 irqs.h gets generated during the kernel build, but is not exported
 as obj, so it won't be in the split obj directory. Since the
 source-dir is clean though, the file simply does not exist on SUSE
 rpms. 
 
 You mean the source-dir is clean ?  So the generated header files
 including (linux/autoconf.h, asm-offsets.h...)should be removed
 wholely? I don't think they can be built with a clean source for
 most modules. 
 
 This is what I'm talking about all the time :-). For SUSE kernels
 there are two distinct directories:
 
 # ls -l /usr/src
 drwxr-xr-x 24 root root 4096 Aug 27 14:51 linux-2.6.27-rc4-
 HEAD_20080825213702
 drwxr-xr-x  3 root root 4096 Aug 25 23:28 linux-2.6.27-rc4-
 HEAD_20080825213702-obj
 
 whereas the normal directory contains the sources and the -obj
 directory contains all files that were generated during the build.
 Scratch that with the 2 rpm files - they are all in kernel-sources.
 
 # ls -l
 /usr/src/linux-2.6.27-rc4-HEAD_20080825213702-obj/ia64/default/ total
 568 
 -rw-r--r-- 1 root root  76287 Aug 25 23:27 .config
 -rw-r--r-- 2 root root554 Aug 25 23:28 Makefile
 -rw-r--r-- 1 root root 468615 Aug 25 23:51 Module.symvers
 drwxr-xr-x 3 root root   4096 Aug 26 18:01 arch
 drwxr-xr-x 5 root root   4096 Aug 26 18:01 include
 drwxr-xr-x 2 root root   4096 Aug 26 18:01 include2
 drwxr-xr-x 2 root root   4096 Aug 25 23:28 kernel
 drwxr-xr-x 6 root root   4096 Aug 26 18:01 scripts
 
 The problem is now that a lot of people assume these two directories
 to be one. This is the default mode when you compile a kernel. SUSE
 does not take this route though, and hasn't for quite a while now. I
 don't know about other distributions, but I guess we're not the only
 ones ;-).
Okay, I see now. But due to shortage of Suse OS at hand, I can't try it
. Anyway once you found any issues related to the compability with Suse
OS, welcome to post patches to fix them. :)
Xiantao

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-17 Thread Alexander Graf


Am 18.09.2008 um 04:12 schrieb Zhang, Xiantao  
[EMAIL PROTECTED]:



Alexander Graf wrote:

On Sep 16, 2008, at 12:22 PM, Zhang, Xiantao wrote:


Alexander Graf wrote:

On Sep 16, 2008, at 9:22 AM, Zhang, Xiantao wrote:


Alexander Graf wrote:

KVM as is assumes that the kernel obj dir and the kernel source
dir are at the same location. This is true for most self-built
vanilla kernels, but some distributions split these up (e.g.
SUSE).
To keep compatible and have users have a good experience on
building KVM on any distribution, this patch attempts to rebuild
the logic from the kernel Makefile as closely as possible. With
it I successfully built KVM on a current SUSE system.

Signed-off-by: Alexander Graf [EMAIL PROTECTED]

Please check and see if it breaks the build process for anyone
else. Building with IA64 on SUSE-kernels is still broken due to
similar but separate problems.


Hi, Graf
   what problems did you meet when building kvm/ia64 ?
Xiantao



This is the list of stuff I had to modify to get kvm-74 to run. I
haven't tried anything more recent yet.

1) -mno-sdata does not work. Qemu CFLAGS need to be -msdata


Which version of GCC are you using ?


# gcc --version
gcc (SUSE Linux) 4.3.2 20080815 (prerelease) [gcc-4_3-branch revision
139129]





2) In qemu/ia64.ld SEARCH_DIR is invalid for SUSE. It shouldn't
search in /usr/ia64-linux but in /usr/ia64-suse-linux.

You can make a patch to fix it.


Right, this one should be really easy to fix.


3) TARGET_PAGE_BITS is wrong

Currently, we just set TARGET_PAGE_BITS to 16 by hardcoding in Qemu.
In the future, we should add the logic to make it equal to kernel's
PAGE_SHIFT.


From what I read on the KVM IA64 ML, this is not the first time
someone ran into this issue. Sounds like a really good idea to add  
the

logic ;-).


4) kernel/ia64/Makefile.pre assumes to find .S files in $KERNELDIR.
They are in $SOURCEDIR.


There is no issue here, I think.  You have to set corrent $KERNELDIR
through ./configure --kerneldir= once target machine and build
machine is not same.


No, since $KERNELDIR is the build dir, as that one contains all the
configurations. The source dir only contains the sources.


5) kernel/ia64/Makefile.pre suffers from the same problem my
original fix for x86 addressed.


Ditto.


6) The IA64 kernel build system is broken. The file asm-ia64/nr-
irqs.h gets generated during the kernel build, but is not exported
as obj, so it won't be in the split obj directory. Since the
source-dir is clean though, the file simply does not exist on SUSE
rpms.


You mean the source-dir is clean ?  So the generated header files
including (linux/autoconf.h, asm-offsets.h...)should be removed
wholely? I don't think they can be built with a clean source for
most modules.


This is what I'm talking about all the time :-). For SUSE kernels
there are two distinct directories:

# ls -l /usr/src
drwxr-xr-x 24 root root 4096 Aug 27 14:51 linux-2.6.27-rc4-
HEAD_20080825213702
drwxr-xr-x  3 root root 4096 Aug 25 23:28 linux-2.6.27-rc4-
HEAD_20080825213702-obj

whereas the normal directory contains the sources and the -obj
directory contains all files that were generated during the build.
Scratch that with the 2 rpm files - they are all in kernel-sources.

# ls -l
/usr/src/linux-2.6.27-rc4-HEAD_20080825213702-obj/ia64/default/ total
568
-rw-r--r-- 1 root root  76287 Aug 25 23:27 .config
-rw-r--r-- 2 root root554 Aug 25 23:28 Makefile
-rw-r--r-- 1 root root 468615 Aug 25 23:51 Module.symvers
drwxr-xr-x 3 root root   4096 Aug 26 18:01 arch
drwxr-xr-x 5 root root   4096 Aug 26 18:01 include
drwxr-xr-x 2 root root   4096 Aug 26 18:01 include2
drwxr-xr-x 2 root root   4096 Aug 25 23:28 kernel
drwxr-xr-x 6 root root   4096 Aug 26 18:01 scripts

The problem is now that a lot of people assume these two directories
to be one. This is the default mode when you compile a kernel. SUSE
does not take this route though, and hasn't for quite a while now. I
don't know about other distributions, but I guess we're not the only
ones ;-).
Okay, I see now. But due to shortage of Suse OS at hand, I can't try  
it
. Anyway once you found any issues related to the compability with  
Suse

OS, welcome to post patches to fix them. :)


Oh I will :). I just wanted to make sure x86 compiles for everyone  
first, as that probably hurts more users :).


Thanks for caring!

Alex
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-16 Thread Zhang, Xiantao
Alexander Graf wrote:
 KVM as is assumes that the kernel obj dir and the kernel source dir
 are at the same location. This is true for most self-built vanilla
 kernels, but some distributions split these up (e.g. SUSE).
 To keep compatible and have users have a good experience on building
 KVM on any distribution, this patch attempts to rebuild the logic
 from the kernel Makefile as closely as possible. With it I
 successfully built KVM on a current SUSE system.
 
 Signed-off-by: Alexander Graf [EMAIL PROTECTED]
 
 Please check and see if it breaks the build process for anyone else.
 Building with IA64 on SUSE-kernels is still broken due to similar but
 separate problems.

Hi, Graf
what problems did you meet when building kvm/ia64 ?
Xiantao
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-16 Thread Alexander Graf


On Sep 16, 2008, at 9:22 AM, Zhang, Xiantao wrote:


Alexander Graf wrote:

KVM as is assumes that the kernel obj dir and the kernel source dir
are at the same location. This is true for most self-built vanilla
kernels, but some distributions split these up (e.g. SUSE).
To keep compatible and have users have a good experience on building
KVM on any distribution, this patch attempts to rebuild the logic
from the kernel Makefile as closely as possible. With it I
successfully built KVM on a current SUSE system.

Signed-off-by: Alexander Graf [EMAIL PROTECTED]

Please check and see if it breaks the build process for anyone else.
Building with IA64 on SUSE-kernels is still broken due to similar but
separate problems.


Hi, Graf
what problems did you meet when building kvm/ia64 ?
Xiantao



This is the list of stuff I had to modify to get kvm-74 to run. I  
haven't tried anything more recent yet.


1) -mno-sdata does not work. Qemu CFLAGS need to be -msdata
2) In qemu/ia64.ld SEARCH_DIR is invalid for SUSE. It shouldn't search  
in /usr/ia64-linux but in /usr/ia64-suse-linux.

3) TARGET_PAGE_BITS is wrong
4) kernel/ia64/Makefile.pre assumes to find .S files in $KERNELDIR.  
They are in $SOURCEDIR.
5) kernel/ia64/Makefile.pre suffers from the same problem my original  
fix for x86 addressed.
6) The IA64 kernel build system is broken. The file asm-ia64/nr-irqs.h  
gets generated during the kernel build, but is not exported as obj, so  
it won't be in the split obj directory. Since the source-dir is clean  
though, the file simply does not exist on SUSE rpms.


I will attach the patch I use in our local buildsystem to make KVM  
compile on IA64. Please do not take this as fixes, most of them are  
simple workarounds and should rather be fixed properly. We were just  
hitting deadlines internally.


Alex



IA64-kvm-suse.patch
Description: Binary data




RE: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-16 Thread Zhang, Xiantao
Alexander Graf wrote:
 On Sep 16, 2008, at 9:22 AM, Zhang, Xiantao wrote:
 
 Alexander Graf wrote:
 KVM as is assumes that the kernel obj dir and the kernel source dir
 are at the same location. This is true for most self-built vanilla
 kernels, but some distributions split these up (e.g. SUSE).
 To keep compatible and have users have a good experience on building
 KVM on any distribution, this patch attempts to rebuild the logic
 from the kernel Makefile as closely as possible. With it I
 successfully built KVM on a current SUSE system.
 
 Signed-off-by: Alexander Graf [EMAIL PROTECTED]
 
 Please check and see if it breaks the build process for anyone else.
 Building with IA64 on SUSE-kernels is still broken due to similar
 but separate problems.
 
 Hi, Graf
  what problems did you meet when building kvm/ia64 ?
 Xiantao
 
 
 This is the list of stuff I had to modify to get kvm-74 to run. I
 haven't tried anything more recent yet.
 
 1) -mno-sdata does not work. Qemu CFLAGS need to be -msdata 

Which version of GCC are you using ? 

 2) In qemu/ia64.ld SEARCH_DIR is invalid for SUSE. It shouldn't search
 in /usr/ia64-linux but in /usr/ia64-suse-linux.
You can make a patch to fix it. 

 3) TARGET_PAGE_BITS is wrong
Currently, we just set TARGET_PAGE_BITS to 16 by hardcoding in Qemu. In
the future, we should add the logic to make it equal to kernel's
PAGE_SHIFT.  

 4) kernel/ia64/Makefile.pre assumes to find .S files in $KERNELDIR.
 They are in $SOURCEDIR.

There is no issue here, I think.  You have to set corrent $KERNELDIR
through ./configure --kerneldir= once target machine and build
machine is not same.

 5) kernel/ia64/Makefile.pre suffers from the same problem my original
 fix for x86 addressed.

Ditto. 

 6) The IA64 kernel build system is broken. The file asm-ia64/nr-irqs.h
 gets generated during the kernel build, but is not exported as obj, so
 it won't be in the split obj directory. Since the source-dir is clean
 though, the file simply does not exist on SUSE rpms.

You mean the source-dir is clean ?  So the generated header files
including (linux/autoconf.h, asm-offsets.h...)should be removed wholely?
I don't think they can be built with a clean source for most modules. 

 I will attach the patch I use in our local buildsystem to make KVM
 compile on IA64. Please do not take this as fixes, most of them are
 simple workarounds and should rather be fixed properly. We were just
 hitting deadlines internally.
 
 Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Make KVM compile on split source/object kernel configurations

2008-09-16 Thread Alexander Graf


On Sep 16, 2008, at 12:22 PM, Zhang, Xiantao wrote:


Alexander Graf wrote:

On Sep 16, 2008, at 9:22 AM, Zhang, Xiantao wrote:


Alexander Graf wrote:

KVM as is assumes that the kernel obj dir and the kernel source dir
are at the same location. This is true for most self-built vanilla
kernels, but some distributions split these up (e.g. SUSE).
To keep compatible and have users have a good experience on  
building

KVM on any distribution, this patch attempts to rebuild the logic
from the kernel Makefile as closely as possible. With it I
successfully built KVM on a current SUSE system.

Signed-off-by: Alexander Graf [EMAIL PROTECTED]

Please check and see if it breaks the build process for anyone  
else.

Building with IA64 on SUSE-kernels is still broken due to similar
but separate problems.


Hi, Graf
what problems did you meet when building kvm/ia64 ?
Xiantao



This is the list of stuff I had to modify to get kvm-74 to run. I
haven't tried anything more recent yet.

1) -mno-sdata does not work. Qemu CFLAGS need to be -msdata


Which version of GCC are you using ?


# gcc --version
gcc (SUSE Linux) 4.3.2 20080815 (prerelease) [gcc-4_3-branch revision  
139129]





2) In qemu/ia64.ld SEARCH_DIR is invalid for SUSE. It shouldn't  
search

in /usr/ia64-linux but in /usr/ia64-suse-linux.

You can make a patch to fix it.


Right, this one should be really easy to fix.


3) TARGET_PAGE_BITS is wrong
Currently, we just set TARGET_PAGE_BITS to 16 by hardcoding in Qemu.  
In

the future, we should add the logic to make it equal to kernel's
PAGE_SHIFT.


From what I read on the KVM IA64 ML, this is not the first time  
someone ran into this issue. Sounds like a really good idea to add the  
logic ;-).



4) kernel/ia64/Makefile.pre assumes to find .S files in $KERNELDIR.
They are in $SOURCEDIR.


There is no issue here, I think.  You have to set corrent $KERNELDIR
through ./configure --kerneldir= once target machine and build
machine is not same.


No, since $KERNELDIR is the build dir, as that one contains all the  
configurations. The source dir only contains the sources.



5) kernel/ia64/Makefile.pre suffers from the same problem my original
fix for x86 addressed.


Ditto.

6) The IA64 kernel build system is broken. The file asm-ia64/nr- 
irqs.h
gets generated during the kernel build, but is not exported as obj,  
so

it won't be in the split obj directory. Since the source-dir is clean
though, the file simply does not exist on SUSE rpms.


You mean the source-dir is clean ?  So the generated header files
including (linux/autoconf.h, asm-offsets.h...)should be removed  
wholely?

I don't think they can be built with a clean source for most modules.


This is what I'm talking about all the time :-). For SUSE kernels  
there are two distinct directories:


# ls -l /usr/src
drwxr-xr-x 24 root root 4096 Aug 27 14:51 linux-2.6.27-rc4- 
HEAD_20080825213702
drwxr-xr-x  3 root root 4096 Aug 25 23:28 linux-2.6.27-rc4- 
HEAD_20080825213702-obj


whereas the normal directory contains the sources and the -obj  
directory contains all files that were generated during the build.  
Scratch that with the 2 rpm files - they are all in kernel-sources.


# ls -l /usr/src/linux-2.6.27-rc4-HEAD_20080825213702-obj/ia64/default/
total 568
-rw-r--r-- 1 root root  76287 Aug 25 23:27 .config
-rw-r--r-- 2 root root554 Aug 25 23:28 Makefile
-rw-r--r-- 1 root root 468615 Aug 25 23:51 Module.symvers
drwxr-xr-x 3 root root   4096 Aug 26 18:01 arch
drwxr-xr-x 5 root root   4096 Aug 26 18:01 include
drwxr-xr-x 2 root root   4096 Aug 26 18:01 include2
drwxr-xr-x 2 root root   4096 Aug 25 23:28 kernel
drwxr-xr-x 6 root root   4096 Aug 26 18:01 scripts

The problem is now that a lot of people assume these two directories  
to be one. This is the default mode when you compile a kernel. SUSE  
does not take this route though, and hasn't for quite a while now. I  
don't know about other distributions, but I guess we're not the only  
ones ;-).


Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html