Re: [GIT PULL] stable/for-ingo-v3.5 of IOAPIC abstraction (and thensome users) for v3.5

From: Konrad Rzeszutek Wilk
Date: Tue May 01 2012 - 16:32:45 EST


On Tue, May 01, 2012 at 04:08:19PM -0400, Josh Boyer wrote:
> On Tue, May 1, 2012 at 3:42 PM, Konrad Rzeszutek Wilk
> <konrad.wilk@xxxxxxxxxx> wrote:
> > -static void __init __ioapic_init_mappings(void)
> > +void __init native_io_apic_init_mappings(void)
> >  {
> >        unsigned long ioapic_phys, idx = FIX_IO_APIC_BASE_0;
> >        struct resource *ioapic_res;
> > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > index 1a29015..8526317 100644
> > --- a/arch/x86/kernel/setup.c
> > +++ b/arch/x86/kernel/setup.c
> > @@ -1012,7 +1012,7 @@ void __init setup_arch(char **cmdline_p)
> >        init_cpu_to_node();
> >
> >        init_apic_mappings();
> > -       ioapic_and_gsi_init();
> > +       x86_io_apic_ops.init();
> >
> >        kvm_guest_init();
> >
> > diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c
> > index 9cf71d0..35c5e54 100644
> > --- a/arch/x86/kernel/x86_init.c
> > +++ b/arch/x86/kernel/x86_init.c
> > @@ -18,6 +18,7 @@
> >  #include <asm/e820.h>
> >  #include <asm/time.h>
> >  #include <asm/irq.h>
> > +#include <asm/io_apic.h>
> >  #include <asm/pat.h>
> >  #include <asm/tsc.h>
> >  #include <asm/iommu.h>
> > @@ -119,3 +120,10 @@ struct x86_msi_ops x86_msi = {
> >        .teardown_msi_irqs = default_teardown_msi_irqs,
> >        .restore_msi_irqs = default_restore_msi_irqs,
> >  };
> > +
> > +struct x86_io_apic_ops x86_io_apic_ops = {
> > +       .init   = native_io_apic_init_mappings,
> > +       .read   = native_io_apic_read,
> > +       .write  = native_io_apic_write,
> > +       .modify = native_io_apic_modify,
> > +};
>
> You'll get a section mismatch warning on this struct. It's not a huge
> deal, but native_io_apic_init_mappings is annotated as __init whereas
> this struct isn't. In practice it doesn't seem to matter as
> x86_io_apic_ops.init is only called in setup_arch, but it's still a
> valid warning.

I think that the mismatch disappears if the structure has the word
_ops in it. At least that is what I saw (when I ran with the MODULE_SECTION=y
with the initial implementation of this and then fixed it up).

However, let me double check - I might have seen that with something
else and misremebered it.

>
> (First noticed in https://bugzilla.redhat.com/show_bug.cgi?id=817645 )
>
> josh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/