Skip to contentSkip to conversation

2.6.7-mm4 compile buglet

DISCUSSION Hamie 2 participants 3 messages Jun 29, 2004

lore
Share & tools
lore

Hamie

author
#0 lore raw

Hi all.

Sorry. Wasn't sure if this short of thing should be raised on bugtracker or not... Basically I downloaded 2.6.7-mm4 because I found a kernel bug that was apparently fixed in -mm2 (& hopefully later) where the acpi button events get 'lost' after a suspend-resume.

It appears that the -=mm4 patch introduces a bug however where it won't compile unless local apic is defined due to the following

 LD      arch/i386/lib/built-in.o
 CC      arch/i386/lib/bitops.o
 AS      arch/i386/lib/checksum.o
 CC      arch/i386/lib/dec_and_lock.o
 CC      arch/i386/lib/delay.o
 AS      arch/i386/lib/getuser.o
 CC      arch/i386/lib/memcpy.o
 CC      arch/i386/lib/strstr.o
 CC      arch/i386/lib/usercopy.o
 AR      arch/i386/lib/lib.a
 GEN     .version
 CHK     include/linux/compile.h
 UPD     include/linux/compile.h
 CC      init/version.o
 LD      init/built-in.o
 LD      .tmp_vmlinux1

drivers/built-in.o(.init.text+0x90ed): In function `do_wrlvtpc':
: undefined reference to apic_write' drivers/built-in.o(.init.text+0x90fd): In function do_wrlvtpc':
: undefined reference to apic_write' drivers/built-in.o(.init.text+0x910d): In function do_wrlvtpc':
: undefined reference to apic_write' drivers/built-in.o(.init.text+0x911d): In function do_wrlvtpc':
: undefined reference to apic_write' drivers/built-in.o(.init.text+0x912d): In function do_wrlvtpc':
: undefined reference to apic_write' drivers/built-in.o(.init.text+0x913d): more undefined references to apic_write' follow
make: *** [.tmp_vmlinux1] Error 1 ballbreaker:/archive/linux/kernel/linux-2.6.7#

apic_write seems to be defined in apic.h & ifdef'ed out if local apic is not selected, however there are several calls to it that aren't ifdef'ed out...

Turning on local apic means the kernel compiles... But in the past this introduces a power down bug on the thinkpad where a shutdown won't power off the laptop without a manual off using the power button (Sorry. Haven't had a chance to test whether this would be fixed in -mm4 or not yet).

regards
Hamish.

#1 lore raw
Quoted 3 lines · Hamie

drivers/built-in.o(.init.text+0x90ed): In function `do_wrlvtpc':
: undefined reference to `apic_write'

You'll need to disable CONFIG_PERFCTR or apply the below patch.

drivers/perfctr/x86_tests.c renamed from drivers/perfctr/x86_tests.c.~1~ +5 -0
@@ -44,6 +44,11 @@
 #define CR4MOV	"movl"
 #endif
 
+#ifndef PERFCTR_INTERRUPT_SUPPORT
+#undef apic_write
+#define apic_write(reg,vector)			do{}while(0)
+#endif
+
 static void __init do_rdpmc(unsigned pmc, unsigned unused2)
 {
 	unsigned i;
author
#2 lore raw
Quoted 19 lines · Andrew Morton
Quoted 4 lines · Hamie

drivers/built-in.o(.init.text+0x90ed): In function `do_wrlvtpc':
: undefined reference to `apic_write'

You'll need to disable CONFIG_PERFCTR or apply the below patch.

drivers/perfctr/x86_tests.c renamed from drivers/perfctr/x86_tests.c.~1~ +0 -0
@@ -44,6 +44,11 @@
 #define CR4MOV	"movl"

drivers/perfctr/x86_tests.c line 54

Quoted 10 lines
drivers/perfctr/x86_tests.c renamed from drivers/perfctr/x86_tests.c.~1~ +5 -0
 #endif
 
+#ifndef PERFCTR_INTERRUPT_SUPPORT
+#undef apic_write
+#define apic_write(reg,vector)			do{}while(0)
+#endif
+
 static void __init do_rdpmc(unsigned pmc, unsigned unused2)
 {
 	unsigned i;

Ah right... I didn't trace it back to what was calling it sorry, or else I might (maybe... honest) have realised that.

TIA
Hamish.