Skip to contentSkip to conversation

Intel x86-64 support patch breaks amd64

PATCH New Tony Lindgren 4 participants 8 messages Feb 19, 2004

lore
Share & tools
lore
#0 lore raw

Hi Andi,

I guess you probably already know about this, but the recent changeset 1.1561.1.1 breaks compiling and booting for amd64.

First, this breaks for the compile:

arch/x86_64/kernel/setup.c: In function detect_ht':
arch/x86_64/kernel/setup.c:599: error: smp_num_siblings' undeclared (first use in this function)
arch/x86_64/kernel/setup.c:599: error: (Each undeclared identifier is reported only once
arch/x86_64/kernel/setup.c:599: error: for each function it appears in.) make[1]: *** [arch/x86_64/kernel/setup.o] Error 1
make: *** [arch/x86_64/kernel] Error 2

After #if 0 out some parts to make it compile, it fails to boot with no output at all. Sorry, don't have low level debugging or serial console on this machine configured, let me know if you need further information.

Undoing this cset makes things work as before.

Regards,

Tony

#1 lore raw
Quoted 2 lines · On Thu, 19 Feb 2004 10:34:49 -0800 Tony Lindgren <[email protected]> wrote:

I guess you probably already know about this, but the recent changeset 1.1561.1.1 breaks compiling and booting for amd64.

You need the appended patch to build on Uni Processor again. I already submitted it to Linus, but he doesn't seem to have merged it yet (or alternatively compile for SMP)

Quoted 3 lines

After #if 0 out some parts to make it compile, it fails to boot with no output at all. Sorry, don't have low level debugging or serial console on this machine configured, let me know if you need further information.

It works for me with this patch both UP and SMP. Maybe you commented out too much?

-Andi

arch/x86_64/kernel/setup.c renamed from arch/x86_64/kernel/setup.c-o +2 -0
diff -u linux-2.6.3/arch/x86_64/kernel/setup.c-o linux-2.6.3/arch/x86_64/kernel/setup.c
@@ -588,6 +588,7 @@
 
 static void __init detect_ht(void)
 {
+#ifdef CONFIG_SMP
 	extern	int phys_proc_id[NR_CPUS];
 	
 	u32 	eax, ebx, ecx, edx;
@@ -631,6 +632,7 @@
 		printk(KERN_INFO  "CPU: Physical Processor ID: %d\n",
 		       phys_proc_id[cpu]);
 	}
+#endif
 }
 	
 #define LVL_1_INST	1
arch/x86_64/kernel/Makefile renamed from arch/x86_64/kernel/Makefile-o +1 -1
diff -u linux-2.6.3/arch/x86_64/kernel/Makefile-o linux-2.6.3/arch/x86_64/kernel/Makefile
@@ -33,4 +33,4 @@
 cpuid-$(subst m,y,$(CONFIG_X86_CPUID))  += ../../i386/kernel/cpuid.o
 topology-y                     += ../../i386/mach-default/topology.o
 swiotlb-$(CONFIG_SWIOTLB)      += ../../ia64/lib/swiotlb.o
-microcode-$(CONFIG_MICROCODE)  += ../../i386/kernel/microcode.o
+microcode-$(subst m,y,$(CONFIG_X86_CPUID))  += ../../i386/kernel/microcode.o
arch/x86_64/kernel/x8664_ksyms.c renamed from arch/x86_64/kernel/x8664_ksyms.c-o +2 -0
diff -u linux-2.6.3/arch/x86_64/kernel/x8664_ksyms.c-o linux-2.6.3/arch/x86_64/kernel/x8664_ksyms.c
@@ -194,7 +194,9 @@
 
 EXPORT_SYMBOL(die_chain);
 
+#ifdef CONFIG_SMP_
 EXPORT_SYMBOL(cpu_sibling_map);
+#endif
 
 extern void do_softirq_thunk(void);
 EXPORT_SYMBOL_NOVERS(do_softirq_thunk);
#2 lore raw

arch/x86_64/kernel/x8664_ksyms.c line 197

Quoted 7 lines · Andi Kleen
arch/x86_64/kernel/x8664_ksyms.c renamed from arch/x86_64/kernel/x8664_ksyms.c-o +1 -0
@@ -194,7 +194,9 @@
 
 EXPORT_SYMBOL(die_chain);
 
+#ifdef CONFIG_SMP_

^ Isn't this a typo?

arch/x86_64/kernel/x8664_ksyms.c line 202

Quoted 5 lines
arch/x86_64/kernel/x8664_ksyms.c renamed from arch/x86_64/kernel/x8664_ksyms.c-o +1 -0
 EXPORT_SYMBOL(cpu_sibling_map);
+#endif
 
 extern void do_softirq_thunk(void);
 EXPORT_SYMBOL_NOVERS(do_softirq_thunk);

Jakub

#3 lore raw
Quoted 10 lines · On Thu, 19 Feb 2004 14:36:10 -0500 Jakub Jelinek <[email protected]> wrote:

arch/x86_64/kernel/x8664_ksyms.c line 197

Quoted 7 lines · Andi Kleen
arch/x86_64/kernel/x8664_ksyms.c renamed from arch/x86_64/kernel/x8664_ksyms.c-o +1 -0
@@ -194,7 +194,9 @@
 
 EXPORT_SYMBOL(die_chain);
 
+#ifdef CONFIG_SMP_

^ Isn't this a typo?

Indeed. Thanks for catching it.

It probably doesn't hurt because I don't know of any module that uses cpu_sibling_map[]. I think I just copied the export from i386. Maybe it would be best to just remove it completely.

-Andi

#4 lore raw
Quoted 8 lines · Andi Kleen
Quoted 3 lines
Quoted 1 line

+#ifdef CONFIG_SMP_

^ Isn't this a typo?

Indeed. Thanks for catching it.

It probably doesn't hurt because I don't know of any module that uses cpu_sibling_map[]. I think I just copied the export from i386. Maybe it would be best to just remove it completely.

Andrew added it a few hours ago, oprofile use it.

regards,
Phil

#6 lore raw
In reply to Andi Kleen
Quoted 4 lines · Andi Kleen

You need the appended patch to build on Uni Processor again. I already submitted it to Linus, but he doesn't seem to have merged it yet (or alternatively compile for SMP)

OK, that compiles, but does not boot. Tt's not the *.S files, not the *.c, files, I think it's in the .h files somewhere.

Undoing *.S files did not help. Undoing *.c files did not help. Finally undoing the *.h files booted... I'll try to narrow it down more.

Yeah, this is UP machine. Also just remembered I don't have a serial port for lowe level printk's :)

Tony

#7 lore raw
Quoted 8 lines · On Thu, 19 Feb 2004 12:39:20 -0800 Tony Lindgren <[email protected]> wrote:
Quoted 4 lines · Andi Kleen

You need the appended patch to build on Uni Processor again. I already submitted it to Linus, but he doesn't seem to have merged it yet (or alternatively compile for SMP)

OK, that compiles, but does not boot. Tt's not the *.S files, not the *.c, files, I think it's in the .h files somewhere.

Not sure what you mean with that.

Can you please fetch a completely fresh tree, apply the patch and try again?

Most likely you have a broken build of some sort.

-Andi

#5 lore raw

PATCH 1/1 Fix typo in x86-64 fix

In reply to Philippe Elie
Quoted 4 lines · On Thu, 19 Feb 2004 21:20:02 +0000 Philippe Elie <[email protected]> wrote:
Quoted 2 lines · Andi Kleen
Quoted 2 lines
Quoted 1 line

+#ifdef CONFIG_SMP_

Quoted 8 lines
Quoted 6 lines
Quoted 1 line

^ Isn't this a typo?

Indeed. Thanks for catching it.

It probably doesn't hurt because I don't know of any module that uses cpu_sibling_map[]. I think I just copied the export from i386. Maybe it would be best to just remove it completely.

Andrew added it a few hours ago, oprofile use it.

Ok, Andrew, can you please apply this incremental patch to fix the typo too ?

arch/x86_64/kernel/x8664_ksyms.c renamed from arch/x86_64/kernel/x8664_ksyms.c-o +1 -1
diff -u linux-2.6.3-amd64/arch/x86_64/kernel/x8664_ksyms.c-o linux-2.6.3-amd64/arch/x86_64/kernel/x8664_ksyms.c
@@ -194,7 +194,7 @@
 
 EXPORT_SYMBOL(die_chain);
 
-#ifdef CONFIG_SMP_
+#ifdef CONFIG_SMP
 EXPORT_SYMBOL(cpu_sibling_map);
 #endif
 

-Andi