2007-02-17 02:09:41

by Len Brown

[permalink] [raw]
Subject: 2.6.20-git: undefined reference to `smp_call_function_single'

Yes, an obscure .config, but it used to build before today:

kernel/built-in.o: In function `tick_broadcast_on_off':
(.text+0x1b6f0): undefined reference to `smp_call_function_single'


Attachments:
(No filename) (184.00 B)
config.X86_VOYAGER (31.92 kB)
Download all attachments

2007-02-17 10:20:40

by Thomas Gleixner

[permalink] [raw]
Subject: Re: 2.6.20-git: undefined reference to `smp_call_function_single'

On Fri, 2007-02-16 at 21:08 -0500, Len Brown wrote:
> Yes, an obscure .config, but it used to build before today:
>
> kernel/built-in.o: In function `tick_broadcast_on_off':
> (.text+0x1b6f0): undefined reference to `smp_call_function_single'

Yup, this obscure machine is missing smp_call_function_single().

James ?

tglx


2007-02-17 18:27:07

by James Bottomley

[permalink] [raw]
Subject: Re: 2.6.20-git: undefined reference to `smp_call_function_single'

On Sat, 2007-02-17 at 11:25 +0100, Thomas Gleixner wrote:
> On Fri, 2007-02-16 at 21:08 -0500, Len Brown wrote:
> > Yes, an obscure .config, but it used to build before today:
> >
> > kernel/built-in.o: In function `tick_broadcast_on_off':
> > (.text+0x1b6f0): undefined reference to `smp_call_function_single'
>
> Yup, this obscure machine is missing smp_call_function_single().
>
> James ?

Where's this coming from? smp_call_function_single() is an obscure kvm
only API think for x86/ia64 ... it's not supported on any other
architecure. The symbol you have is blowing up in the kernel
subdirectory which suggests someone has tried to use it in generic code,
which will fail to compile on a lot more than voyager and parisc ...

James


2007-02-17 18:37:52

by Thomas Gleixner

[permalink] [raw]
Subject: Re: 2.6.20-git: undefined reference to `smp_call_function_single'

On Sat, 2007-02-17 at 12:25 -0600, James Bottomley wrote:
> > Yup, this obscure machine is missing smp_call_function_single().
> >
> > James ?
>
> Where's this coming from? smp_call_function_single() is an obscure kvm
> only API think for x86/ia64 ... it's not supported on any other
> architecure. The symbol you have is blowing up in the kernel
> subdirectory which suggests someone has tried to use it in generic code,
> which will fail to compile on a lot more than voyager and parisc ...

smp_call_function_single() was added with commit:
eaa70773e750cc09d60938bceacd028bc76b8e3a

[PATCH] i386: add smp_call_function_single

Continiung the series of small patches necessary for the perfmon subsystem,
here is a patch that adds support for the smp_call_function_single()
function for i386. It exists for almost all other architectures but i386.
The perfmon subsystem needs it in one case to free some state on a
designated remote CPU.

It's not an obscure kvm API :) But the claim that it is available on
almost all other architectures but i386 is wrong. Only x86_64, ia64 and
i386 have it.

The function is defined in include/linux/smp.h and there is no
indication that it is an architecture specific thingy. What a steaming
pile of ....

/me grumbles

tglx


2007-02-17 18:58:36

by Thomas Gleixner

[permalink] [raw]
Subject: [PATCH] tick management: make broadcast dependent on local APIC

The broadcast functionality is only necessary when a local APIC is
available. Make the config switch depend on X86_LOCAL_APIC. This
resolves the mach-voyager breakage introduced by the tick managament
code.

Signed-off-by: Thomas Gleixner <[email protected]>

diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 1df4a1f..2f76725 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -29,6 +29,7 @@ config GENERIC_CLOCKEVENTS
config GENERIC_CLOCKEVENTS_BROADCAST
bool
default y
+ depends on X86_LOCAL_APIC

config LOCKDEP_SUPPORT
bool