* RE: [PATCH] Make KVM compile on split source/object kernel configurations
@ 2008-09-16 7:22 ` Zhang, Xiantao
0 siblings, 0 replies; 20+ messages in thread
From: Zhang, Xiantao @ 2008-09-16 7:22 UTC (permalink / raw)
To: Alexander Graf, kvm, kvm-ia64; +Cc: alexey.eremenko
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 <agraf@suse.de>
>
> 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Make KVM compile on split source/object kernel configurations
2008-09-16 7:22 ` Zhang, Xiantao
@ 2008-09-16 9:34 ` Alexander Graf
-1 siblings, 0 replies; 20+ messages in thread
From: Alexander Graf @ 2008-09-16 9:34 UTC (permalink / raw)
To: kvm-ia64
[-- Attachment #1: Type: text/plain, Size: 1865 bytes --]
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 <agraf@suse.de>
>>
>> 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
[-- Attachment #2: IA64-kvm-suse.patch --]
[-- Type: application/octet-stream, Size: 3148 bytes --]
From 8ec9fd6df253413cd0d2a07202e31c86d22e8f6d Mon Sep 17 00:00:00 2001
From: Raymund Will <rw@iridium.suse.de>
Date: Thu, 4 Sep 2008 11:14:59 +0200
Subject: [PATCH] KVM-ia64 build fix for SuSE Linux
---
qemu/Makefile.target | 6 ++++--
qemu/ia64.ld | 2 +-
qemu/target-ia64/cpu.h | 2 +-
3 files changed, 6 insertions(+), 4 deletions(-)
Index: kvm-74/qemu/Makefile.target
===================================================================
--- kvm-74.orig/qemu/Makefile.target
+++ kvm-74/qemu/Makefile.target
@@ -150,8 +150,10 @@ BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)
endif
ifeq ($(ARCH),ia64)
-CFLAGS+=-mno-sdata
-OP_CFLAGS+=-mno-sdata
+#CFLAGS+=-mno-sdata
+#OP_CFLAGS+=-mno-sdata
+CFLAGS+=-msdata
+OP_CFLAGS+=-msdata
endif
ifeq ($(ARCH),arm)
Index: kvm-74/qemu/ia64.ld
===================================================================
--- kvm-74.orig/qemu/ia64.ld
+++ kvm-74/qemu/ia64.ld
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf64-ia64-little", "elf6
"elf64-ia64-little")
OUTPUT_ARCH(ia64)
ENTRY(_start)
-SEARCH_DIR("/usr/ia64-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SEARCH_DIR("/usr/ia64-suse-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
/* Do we need any of these for elf?
__DYNAMIC = 0; */
SECTIONS
Index: kvm-74/qemu/target-ia64/cpu.h
===================================================================
--- kvm-74.orig/qemu/target-ia64/cpu.h
+++ kvm-74/qemu/target-ia64/cpu.h
@@ -30,7 +30,7 @@
#define TARGET_LONG_BITS 64
-#define TARGET_PAGE_BITS 16
+#define TARGET_PAGE_BITS 14
#define ELF_MACHINE EM_IA_64
Index: kvm-74/kernel/ia64/Makefile.pre
===================================================================
--- kvm-74.orig/kernel/ia64/Makefile.pre
+++ kvm-74/kernel/ia64/Makefile.pre
@@ -1,6 +1,6 @@
prerequisite: asm-offsets.h ia64/memset.S ia64/memcpy.S
- cp -f $(KERNELDIR)/arch/ia64/lib/memcpy.S ia64/memcpy.S
- cp -f $(KERNELDIR)/arch/ia64/lib/memset.S ia64/memset.S
+ cp -f /usr/src/linux/arch/ia64/lib/memcpy.S ia64/memcpy.S
+ cp -f /usr/src/linux/arch/ia64/lib/memset.S ia64/memset.S
cmp -s asm-offset.h ia64/asm-offset.h || mv -f asm-offsets.* ia64/
asm-offsets.h: asm-offsets.s
@@ -20,4 +20,4 @@ asm-offsets.h: asm-offsets.s
echo "#endif") <$< >$@
asm-offsets.s: ia64/asm-offsets.c
- gcc -S -D__KERNEL__ -I$(KERNELDIR)/include -I$(KERNELDIR)/arch/ia64/include -I./include ia64/asm-offsets.c
+ gcc -S -D__KERNEL__ -I$(KERNELDIR)/include -I$(KERNELDIR)/arch/ia64/include -Iinclude2 -I/usr/src/linux/include -I/usr/src/linux/arch/ia64/include -I./include ia64/asm-offsets.c
Index: kvm-74/kernel/include/asm-ia64/nr-irqs.h
===================================================================
--- /dev/null
+++ kvm-74/kernel/include/asm-ia64/nr-irqs.h
@@ -0,0 +1,12 @@
+#ifndef __ASM_NR_IRQS_H__
+#define __ASM_NR_IRQS_H__
+/*
+ * DO NOT MODIFY.
+ *
+ * This file was generated by Kbuild
+ *
+ */
+
+#define NR_IRQS 1024 /* sizeof (union paravirt_nr_irqs_max) // */
+
+#endif
[-- Attachment #3: Type: text/plain, Size: 1 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH] Make KVM compile on split source/object kernel configurations
@ 2008-09-16 9:34 ` Alexander Graf
0 siblings, 0 replies; 20+ messages in thread
From: Alexander Graf @ 2008-09-16 9:34 UTC (permalink / raw)
To: Zhang, Xiantao; +Cc: KVM list, kvm-ia64, Alexey Eremenko, Raymund Will
[-- Attachment #1: Type: text/plain, Size: 1865 bytes --]
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 <agraf@suse.de>
>>
>> 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
[-- Attachment #2: IA64-kvm-suse.patch --]
[-- Type: application/octet-stream, Size: 3148 bytes --]
From 8ec9fd6df253413cd0d2a07202e31c86d22e8f6d Mon Sep 17 00:00:00 2001
From: Raymund Will <rw@iridium.suse.de>
Date: Thu, 4 Sep 2008 11:14:59 +0200
Subject: [PATCH] KVM-ia64 build fix for SuSE Linux
---
qemu/Makefile.target | 6 ++++--
qemu/ia64.ld | 2 +-
qemu/target-ia64/cpu.h | 2 +-
3 files changed, 6 insertions(+), 4 deletions(-)
Index: kvm-74/qemu/Makefile.target
===================================================================
--- kvm-74.orig/qemu/Makefile.target
+++ kvm-74/qemu/Makefile.target
@@ -150,8 +150,10 @@ BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)
endif
ifeq ($(ARCH),ia64)
-CFLAGS+=-mno-sdata
-OP_CFLAGS+=-mno-sdata
+#CFLAGS+=-mno-sdata
+#OP_CFLAGS+=-mno-sdata
+CFLAGS+=-msdata
+OP_CFLAGS+=-msdata
endif
ifeq ($(ARCH),arm)
Index: kvm-74/qemu/ia64.ld
===================================================================
--- kvm-74.orig/qemu/ia64.ld
+++ kvm-74/qemu/ia64.ld
@@ -3,7 +3,7 @@ OUTPUT_FORMAT("elf64-ia64-little", "elf6
"elf64-ia64-little")
OUTPUT_ARCH(ia64)
ENTRY(_start)
-SEARCH_DIR("/usr/ia64-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+SEARCH_DIR("/usr/ia64-suse-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
/* Do we need any of these for elf?
__DYNAMIC = 0; */
SECTIONS
Index: kvm-74/qemu/target-ia64/cpu.h
===================================================================
--- kvm-74.orig/qemu/target-ia64/cpu.h
+++ kvm-74/qemu/target-ia64/cpu.h
@@ -30,7 +30,7 @@
#define TARGET_LONG_BITS 64
-#define TARGET_PAGE_BITS 16
+#define TARGET_PAGE_BITS 14
#define ELF_MACHINE EM_IA_64
Index: kvm-74/kernel/ia64/Makefile.pre
===================================================================
--- kvm-74.orig/kernel/ia64/Makefile.pre
+++ kvm-74/kernel/ia64/Makefile.pre
@@ -1,6 +1,6 @@
prerequisite: asm-offsets.h ia64/memset.S ia64/memcpy.S
- cp -f $(KERNELDIR)/arch/ia64/lib/memcpy.S ia64/memcpy.S
- cp -f $(KERNELDIR)/arch/ia64/lib/memset.S ia64/memset.S
+ cp -f /usr/src/linux/arch/ia64/lib/memcpy.S ia64/memcpy.S
+ cp -f /usr/src/linux/arch/ia64/lib/memset.S ia64/memset.S
cmp -s asm-offset.h ia64/asm-offset.h || mv -f asm-offsets.* ia64/
asm-offsets.h: asm-offsets.s
@@ -20,4 +20,4 @@ asm-offsets.h: asm-offsets.s
echo "#endif") <$< >$@
asm-offsets.s: ia64/asm-offsets.c
- gcc -S -D__KERNEL__ -I$(KERNELDIR)/include -I$(KERNELDIR)/arch/ia64/include -I./include ia64/asm-offsets.c
+ gcc -S -D__KERNEL__ -I$(KERNELDIR)/include -I$(KERNELDIR)/arch/ia64/include -Iinclude2 -I/usr/src/linux/include -I/usr/src/linux/arch/ia64/include -I./include ia64/asm-offsets.c
Index: kvm-74/kernel/include/asm-ia64/nr-irqs.h
===================================================================
--- /dev/null
+++ kvm-74/kernel/include/asm-ia64/nr-irqs.h
@@ -0,0 +1,12 @@
+#ifndef __ASM_NR_IRQS_H__
+#define __ASM_NR_IRQS_H__
+/*
+ * DO NOT MODIFY.
+ *
+ * This file was generated by Kbuild
+ *
+ */
+
+#define NR_IRQS 1024 /* sizeof (union paravirt_nr_irqs_max) // */
+
+#endif
[-- Attachment #3: Type: text/plain, Size: 1 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: [PATCH] Make KVM compile on split source/object kernel configurations
2008-09-16 9:34 ` Alexander Graf
@ 2008-09-16 10:22 ` Zhang, Xiantao
-1 siblings, 0 replies; 20+ messages in thread
From: Zhang, Xiantao @ 2008-09-16 10:22 UTC (permalink / raw)
To: kvm-ia64
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 <agraf@suse.de>
>>>
>>> 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=xxxx 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: [PATCH] Make KVM compile on split source/object kernel configurations
@ 2008-09-16 10:22 ` Zhang, Xiantao
0 siblings, 0 replies; 20+ messages in thread
From: Zhang, Xiantao @ 2008-09-16 10:22 UTC (permalink / raw)
To: Alexander Graf; +Cc: KVM list, kvm-ia64, Alexey Eremenko, Raymund Will
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 <agraf@suse.de>
>>>
>>> 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=xxxx 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Make KVM compile on split source/object kernel configurations
2008-09-16 10:22 ` Zhang, Xiantao
@ 2008-09-16 10:38 ` Alexander Graf
-1 siblings, 0 replies; 20+ messages in thread
From: Alexander Graf @ 2008-09-16 10:38 UTC (permalink / raw)
To: kvm-ia64
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 <agraf@suse.de>
>>>>
>>>> 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=xxxx 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 root 554 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Make KVM compile on split source/object kernel configurations
@ 2008-09-16 10:38 ` Alexander Graf
0 siblings, 0 replies; 20+ messages in thread
From: Alexander Graf @ 2008-09-16 10:38 UTC (permalink / raw)
To: Zhang, Xiantao; +Cc: KVM list, kvm-ia64, Alexey Eremenko, Raymund Will
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 <agraf@suse.de>
>>>>
>>>> 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=xxxx 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 root 554 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: [PATCH] Make KVM compile on split source/object kernel configurations
2008-09-16 10:38 ` Alexander Graf
@ 2008-09-18 2:12 ` Zhang, Xiantao
-1 siblings, 0 replies; 20+ messages in thread
From: Zhang, Xiantao @ 2008-09-18 2:12 UTC (permalink / raw)
To: kvm-ia64
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 <agraf@suse.de>
>>>>>
>>>>> 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=xxxx 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 root 554 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: [PATCH] Make KVM compile on split source/object kernel configurations
@ 2008-09-18 2:12 ` Zhang, Xiantao
0 siblings, 0 replies; 20+ messages in thread
From: Zhang, Xiantao @ 2008-09-18 2:12 UTC (permalink / raw)
To: Alexander Graf; +Cc: KVM list, kvm-ia64, Alexey Eremenko, Raymund Will
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 <agraf@suse.de>
>>>>>
>>>>> 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=xxxx 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 root 554 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Make KVM compile on split source/object kernel configurations
2008-09-18 2:12 ` Zhang, Xiantao
@ 2008-09-18 2:54 ` Alexander Graf
-1 siblings, 0 replies; 20+ messages in thread
From: Alexander Graf @ 2008-09-18 2:54 UTC (permalink / raw)
To: kvm-ia64
Am 18.09.2008 um 04:12 schrieb "Zhang, Xiantao"
<xiantao.zhang@intel.com>:
> 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 <agraf@suse.de>
>>>>>>
>>>>>> 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=xxxx 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 root 554 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] Make KVM compile on split source/object kernel configurations
@ 2008-09-18 2:54 ` Alexander Graf
0 siblings, 0 replies; 20+ messages in thread
From: Alexander Graf @ 2008-09-18 2:54 UTC (permalink / raw)
To: Zhang, Xiantao
Cc: KVM list, <kvm-ia64@vger.kernel.org>, Alexey Eremenko,
Raymund Will
Am 18.09.2008 um 04:12 schrieb "Zhang, Xiantao"
<xiantao.zhang@intel.com>:
> 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 <agraf@suse.de>
>>>>>>
>>>>>> 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=xxxx 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 root 554 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
^ permalink raw reply [flat|nested] 20+ messages in thread