2004-06-29 21:19:41

by Hamie

[permalink] [raw]
Subject: 2.6.7-mm4 compile buglet

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.


2004-06-29 21:26:55

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.7-mm4 compile buglet

Hamie <[email protected]> wrote:
>
> 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.




--- linux-2.6.7-mm4/drivers/perfctr/x86_tests.c.~1~ 2004-06-29 12:43:27.000000000 +0200
+++ linux-2.6.7-mm4/drivers/perfctr/x86_tests.c 2004-06-29 13:26:26.000000000 +0200
@@ -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;

2004-06-29 21:48:06

by Hamie

[permalink] [raw]
Subject: Re: 2.6.7-mm4 compile buglet

Andrew Morton wrote:

>Hamie <[email protected]> wrote:
>
>
>>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.
>
>
>
>
>--- linux-2.6.7-mm4/drivers/perfctr/x86_tests.c.~1~ 2004-06-29 12:43:27.000000000 +0200
>+++ linux-2.6.7-mm4/drivers/perfctr/x86_tests.c 2004-06-29 13:26:26.000000000 +0200
>@@ -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;
>
>
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.

2004-06-30 12:26:28

by Mikael Pettersson

[permalink] [raw]
Subject: Re: 2.6.7-mm4 compile buglet

On Tue, 29 Jun 2004 22:19:12 +0100, Hamie <[email protected]> wrote:
>drivers/built-in.o(.init.text+0x90ed): In function `do_wrlvtpc':
>: undefined reference to `apic_write'

Disable CONFIG_PERFCTR_INIT_TESTS or apply part 1/6
of the perfctr updates I just posted.