Re: 2.6.18-rc1-mm1 fails on amd64 (smp_call_function_single)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 10 Jul 2006 00:37:14 +0200
"Rafael J. Wysocki" <[email protected]> wrote:

> On Sunday 09 July 2006 23:03, Andrew Morton wrote:
> > On Sun, 9 Jul 2006 22:39:48 +0200
> > "Rafael J. Wysocki" <[email protected]> wrote:
> > 
> > > On Sunday 09 July 2006 13:49, Gregoire Favre wrote:
> > > > Hello,
> > > > 
> > > > can't compil it :
> > > > 
> > > >   CHK     include/linux/compile.h
> > > >   UPD     include/linux/compile.h
> > > >   CC      init/version.o
> > > >   LD      init/built-in.o
> > > >   LD      .tmp_vmlinux1
> > > > arch/x86_64/kernel/built-in.o: In function `vsyscall_set_cpu':
> > > > (.init.text+0x1e87): undefined reference to `smp_call_function_single'
> > > > make: *** [.tmp_vmlinux1] Error 1
> > > 
> > > This is because of x86_64-mm-getcpu-vsyscall.patch which breaks
> > > compilation without SMP and is not obviously fixable.
> > 
> > Is it not as simple as adding a !SMP implementation of
> > smp_call_function_single(), which just calls the thing?
> 
> Like this:
> 
>  arch/x86_64/kernel/vsyscall.c |    6 ++++++
>  1 files changed, 6 insertions(+)
> 
> Index: linux-2.6.18-rc1-mm1/arch/x86_64/kernel/vsyscall.c
> ===================================================================
> --- linux-2.6.18-rc1-mm1.orig/arch/x86_64/kernel/vsyscall.c
> +++ linux-2.6.18-rc1-mm1/arch/x86_64/kernel/vsyscall.c
> @@ -241,10 +241,12 @@ static ctl_table kernel_root_table2[] = 
>  
>  #endif
>  
> +#ifdef CONFIG_SMP
>  static void __cpuinit write_rdtscp_cb(void *info)
>  {
>  	write_rdtscp_aux((unsigned long)info);
>  }
> +#endif
>  
>  void __cpuinit vsyscall_set_cpu(int cpu)
>  {
> @@ -254,10 +256,14 @@ void __cpuinit vsyscall_set_cpu(int cpu)
>  	node = cpu_to_node[cpu];
>  #endif
>  	if (cpu_has(&cpu_data[cpu], X86_FEATURE_RDTSCP)) {
> +#ifdef CONFIG_SMP
>  		/* the notifier is unfortunately not executed on the
>  		   target CPU */
>  		void *info = (void *)((node << 12) | cpu);
>  		smp_call_function_single(cpu, write_rdtscp_cb, info, 0, 1);
> +#else
> +		write_rdtscp_aux(0);
> +#endif
>  	}
>  
>  	/* Store cpu number in limit so that it can be loaded quickly

I meant, in smp.h:

#else	/* CONFIG_SMP */
#define smp_call_function_single(cpu, fn, arg, x, y) fn(arg)
#endif	/* CONFIG_SMP */

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux