lkml.org 
[lkml]   [2008]   [Dec]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [BUG] next-20081216 - WARNING: at kernel/smp.c:333 smp_call_function_mask
    On Fri, Dec 26, 2008 at 02:05:47AM -0800, Yinghai Lu wrote:
    > Kamalesh Babulal wrote:
    > > * Yinghai Lu <yinghai@kernel.org> [2008-12-24 12:34:41]:
    > >
    > >> --
    > >
    > > After the applying the patch, the kernel panic's with the same backtrace. The
    > > box is running Fedora 5 on it.
    > >
    >
    > please try...
    > Ingo, do we need to switch to use #idef and inline function instead?

    I recall David Howells had a similar issue with the bootparamter patch set.
    The workaround he used was to add a barrier(); call in the weak function
    to avoid the inline.

    [full context kept as I added David to to: list].
    Sam

    >
    > YH
    >
    >
    > [PATCH] sparseirq: add printk to workaround compiler optimizing
    >
    > Impact: fix panic on null pointer with sparseirq
    >
    > some compiler seems to inline the weak global function.
    > try to workaround it
    >
    > also remove duplicated arch_early_irq_init()
    > already have one weak copy in init/main.c
    >
    > Signed-off-by: Yinghai <yinghai@kernel.org>
    >
    > ---
    > init/main.c | 2 ++
    > kernel/irq/handle.c | 7 ++-----
    > 2 files changed, 4 insertions(+), 5 deletions(-)
    >
    > Index: linux-2.6/init/main.c
    > ===================================================================
    > --- linux-2.6.orig/init/main.c
    > +++ linux-2.6/init/main.c
    > @@ -544,10 +544,12 @@ void __init __weak thread_info_cache_ini
    >
    > void __init __weak arch_early_irq_init(void)
    > {
    > + printk(KERN_DEBUG "calling __weak arch_early_irq_init\n");
    > }
    >
    > void __init __weak early_irq_init(void)
    > {
    > + printk(KERN_DEBUG "calling __weak early_irq_init\n");
    > arch_early_irq_init();
    > }
    >
    > Index: linux-2.6/kernel/irq/handle.c
    > ===================================================================
    > --- linux-2.6.orig/kernel/irq/handle.c
    > +++ linux-2.6/kernel/irq/handle.c
    > @@ -56,10 +56,6 @@ void handle_bad_irq(unsigned int irq, st
    > int nr_irqs = NR_IRQS;
    > EXPORT_SYMBOL_GPL(nr_irqs);
    >
    > -void __init __attribute__((weak)) arch_early_irq_init(void)
    > -{
    > -}
    > -
    > #ifdef CONFIG_SPARSE_IRQ
    > static struct irq_desc irq_desc_init = {
    > .irq = -1,
    > @@ -90,8 +86,9 @@ void init_kstat_irqs(struct irq_desc *de
    > desc->kstat_irqs = (unsigned int *)ptr;
    > }
    >
    > -void __attribute__((weak)) arch_init_chip_data(struct irq_desc *desc, int cpu)
    > +void __weak arch_init_chip_data(struct irq_desc *desc, int cpu)
    > {
    > + printk(KERN_DEBUG "calling __weak arch_init_chip_data\n");
    > }
    >
    > static void init_one_irq_desc(int irq, struct irq_desc *desc, int cpu)
    > --
    > 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: 2008-12-26 11:29    [W:0.026 / U:0.256 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site