lkml.org 
[lkml]   [2006]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: pcmcia oops on 2.6.17-rc[12]
    On Sun, 23 Apr 2006 15:02:06 -0700 Andrew Morton wrote:

    > From: Andrew Morton <akpm@osdl.org>
    >
    > - Add new SA_PROBEIRQ which suppresses the new sharing-mismatch warning.
    > Some drivers like to use request_irq() to find an unused interrupt slot.
    >
    > - Use it in i82365.c
    >
    > - Kill unused SA_PROBE.
    >
    >
    >
    > Signed-off-by: Andrew Morton <akpm@osdl.org>
    > ---
    >
    > drivers/pcmcia/i82365.c | 7 ++++---
    > include/asm-xtensa/signal.h | 2 +-
    > include/linux/signal.h | 4 +++-
    > kernel/irq/manage.c | 6 ++++--
    > 4 files changed, 12 insertions(+), 7 deletions(-)
    >
    > diff -puN include/linux/signal.h~request_irq-remove-warnings-from-irq-probing include/linux/signal.h
    > --- devel/include/linux/signal.h~request_irq-remove-warnings-from-irq-probing 2006-04-23 14:55:13.000000000 -0700
    > +++ devel-akpm/include/linux/signal.h 2006-04-23 14:56:19.000000000 -0700
    > @@ -14,10 +14,12 @@
    > *
    > * SA_INTERRUPT is also used by the irq handling routines.
    > * SA_SHIRQ is for shared interrupt support on PCI and EISA.
    > + * SA_PROBEIRQ is set by callers when they expect sharing mismatches to occur
    > */
    > -#define SA_PROBE SA_ONESHOT
    > #define SA_SAMPLE_RANDOM SA_RESTART
    > #define SA_SHIRQ 0x04000000
    > +#define SA_PROBEIRQ 0x08000000

    Is SA_PROBE_IRQ something different or a typo (below)?

    > +
    > /*
    > * As above, these correspond to the IORESOURCE_IRQ_* defines in
    > * linux/ioport.h to select the interrupt line behaviour. When
    > diff -puN kernel/irq/manage.c~request_irq-remove-warnings-from-irq-probing kernel/irq/manage.c
    > --- devel/kernel/irq/manage.c~request_irq-remove-warnings-from-irq-probing 2006-04-23 14:55:13.000000000 -0700
    > +++ devel-akpm/kernel/irq/manage.c 2006-04-23 14:57:01.000000000 -0700
    > @@ -246,8 +246,10 @@ int setup_irq(unsigned int irq, struct i
    >
    > mismatch:
    > spin_unlock_irqrestore(&desc->lock, flags);
    > - printk(KERN_ERR "%s: irq handler mismatch\n", __FUNCTION__);
    > - dump_stack();
    > + if (!(new->flags & SA_PROBE_IRQ)) {
    > + printk(KERN_ERR "%s: irq handler mismatch\n", __FUNCTION__);
    > + dump_stack();
    > + }
    > return -EBUSY;
    > }
    >
    > diff -puN drivers/pcmcia/i82365.c~request_irq-remove-warnings-from-irq-probing drivers/pcmcia/i82365.c
    > --- devel/drivers/pcmcia/i82365.c~request_irq-remove-warnings-from-irq-probing 2006-04-23 14:55:13.000000000 -0700
    > +++ devel-akpm/drivers/pcmcia/i82365.c 2006-04-23 14:58:14.000000000 -0700
    > @@ -509,7 +509,8 @@ static irqreturn_t i365_count_irq(int ir
    > static u_int __init test_irq(u_short sock, int irq)
    > {
    > debug(2, " testing ISA irq %d\n", irq);
    > - if (request_irq(irq, i365_count_irq, 0, "scan", i365_count_irq) != 0)
    > + if (request_irq(irq, i365_count_irq, SA_PROBEIRQ, "scan",
    > + i365_count_irq) != 0)
    > return 1;
    > irq_hits = 0; irq_sock = sock;
    > msleep(10);
    > @@ -561,7 +562,7 @@ static u_int __init isa_scan(u_short soc
    > } else {
    > /* Fallback: just find interrupts that aren't in use */
    > for (i = 0; i < 16; i++)
    > - if ((mask0 & (1 << i)) && (_check_irq(i, 0) == 0))
    > + if ((mask0 & (1 << i)) && (_check_irq(i, SA_PROBEIRQ) == 0))
    > mask1 |= (1 << i);
    > printk("default");
    > /* If scan failed, default to polled status */
    > @@ -725,7 +726,7 @@ static void __init add_pcic(int ns, int
    > u_int cs_mask = mask & ((cs_irq) ? (1<<cs_irq) : ~(1<<12));
    > for (cs_irq = 15; cs_irq > 0; cs_irq--)
    > if ((cs_mask & (1 << cs_irq)) &&
    > - (_check_irq(cs_irq, 0) == 0))
    > + (_check_irq(cs_irq, SA_PROBEIRQ) == 0))
    > break;
    > if (cs_irq) {
    > grab_irq = 1;
    > diff -puN include/asm-xtensa/signal.h~request_irq-remove-warnings-from-irq-probing include/asm-xtensa/signal.h
    > --- devel/include/asm-xtensa/signal.h~request_irq-remove-warnings-from-irq-probing 2006-04-23 14:59:43.000000000 -0700
    > +++ devel-akpm/include/asm-xtensa/signal.h 2006-04-23 15:00:07.000000000 -0700
    > @@ -118,9 +118,9 @@ typedef struct {
    > * SA_INTERRUPT is also used by the irq handling routines.
    > * SA_SHIRQ is for shared interrupt support on PCI and EISA.
    > */
    > -#define SA_PROBE SA_ONESHOT
    > #define SA_SAMPLE_RANDOM SA_RESTART
    > #define SA_SHIRQ 0x04000000
    > +#define SA_PROBEIRQ 0x08000000
    > #endif
    >
    > #define SIG_BLOCK 0 /* for blocking signals */


    ---
    ~Randy
    -
    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-04-24 00:15    [W:0.032 / U:0.320 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site