Re: [PATCH] scsi: NCR5380: no longer mark irq probing as __init

From: Ondrej Zary
Date: Tue Oct 11 2016 - 16:58:25 EST


On Tuesday 11 October 2016 11:39:57 Finn Thain wrote:
> Acked-by: Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx>
>
> Thanks.
>
> On Tue, 11 Oct 2016, Arnd Bergmann wrote:
> > The g_NCR5380 has been converted to more regular probing, which
> > means its probe function can now be invoked after the __init section
> > is discarded, as pointed out by this kbuild warning:
> >
> > WARNING: drivers/scsi/built-in.o(.text+0x3a105): Section mismatch in
> > reference from the function generic_NCR5380_isa_match() to the function
> > .init.text:probe_intr() WARNING: drivers/scsi/built-in.o(.text+0x3a145):
> > Section mismatch in reference from the function
> > generic_NCR5380_isa_match() to the variable .init.data:probe_irq
> >
> > To make sure this works correctly in all cases, let's remove
> > the __init and __initdata annotations.
> >
> > Fixes: a8cfbcaec0c1 ("scsi: g_NCR5380: Stop using scsi_module.c")
> > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> > ---
> > drivers/scsi/NCR5380.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
> > index 7053de5bd468..61f34aca2fa0 100644
> > --- a/drivers/scsi/NCR5380.c
> > +++ b/drivers/scsi/NCR5380.c
> > @@ -353,7 +353,7 @@ static void NCR5380_print_phase(struct Scsi_Host
> > *instance) #endif
> >
> >
> > -static int probe_irq __initdata;
> > +static int probe_irq;
> >
> > /**
> > * probe_intr - helper for IRQ autoprobe
> > @@ -365,7 +365,7 @@ static int probe_irq __initdata;
> > * used by the IRQ probe code.
> > */
> >
> > -static irqreturn_t __init probe_intr(int irq, void *dev_id)
> > +static irqreturn_t probe_intr(int irq, void *dev_id)
> > {
> > probe_irq = irq;
> > return IRQ_HANDLED;
> > @@ -380,7 +380,7 @@ static irqreturn_t __init probe_intr(int irq, void
> > *dev_id) * and then looking to see what interrupt actually turned up.
> > */
> >
> > -static int __init __maybe_unused NCR5380_probe_irq(struct Scsi_Host
> > *instance, +static int __maybe_unused NCR5380_probe_irq(struct Scsi_Host
> > *instance, int possible)
> > {
> > struct NCR5380_hostdata *hostdata = shost_priv(instance);

I've tested IRQ probing on my IRQ7-hardwired ISA card without any success some
time ago. No IRQ was detected because it wasn't even generated (no increment
in /proc/interruptts). It also produced some warnings in dmesg about
conflicting interrupt flags. Can't the IRQ probing be simply deleted?

--
Ondrej Zary