lkml.org 
[lkml]   [2006]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: 2.6.18-rc1-mm1 fails on amd64 (smp_call_function_single)
    On Mon, 10 Jul 2006 00:37:14 +0200
    "Rafael J. Wysocki" <rjw@sisk.pl> wrote:

    > On Sunday 09 July 2006 23:03, Andrew Morton wrote:
    > > On Sun, 9 Jul 2006 22:39:48 +0200
    > > "Rafael J. Wysocki" <rjw@sisk.pl> 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 majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-07-10 00:47    [W:4.081 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site