lkml.org 
[lkml]   [2011]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH] ata: Don't use NO_IRQ in pata_of_platform driver
    From
    On Sat, Dec 3, 2011 at 00:22, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
    >> This is now broken on ARM where, for good or bad, NO_IRQ currently is
    >> used and is -1.
    >
    > Good.
    >
    > ARM developers have been told to change this for several years. The nice
    > approach hasn't worked, the patient approach hasn't worked so now finally
    > ARM is going to be dragged kicking and screaming into doing the work
    > everyone else did several years ago.
    >
    > I have so little sympathy over this that you'll need a quantum physicist
    > to measure it.
    >
    >> Half-removing NO_IRQ is going to be problematic, though...
    >> I really don't care whether the "no irq" value is 0 or -1, but it is
    >> abundantly clear that choosing different values to mean the same thing
    >> on opposite sides of an interface does not work.
    >
    > You've had years to fix it. If I were you I'd delete NO_IRQ from your
    > tree, type make and get it done. It's not even a big job to clean it out.
    >
    > At that point various other drivers will also start working properly on
    > ARM because they use 0 for polled mode.

    Not just ARM:

    arch/arm/include/asm/irq.h:#ifndef
    NO_IRQarch/arm/include/asm/irq.h:#define NO_IRQ       ((unsigned
    int)(-1))arch/microblaze/include/asm/irq.h:#define NO_IRQ
    (-1)arch/mn10300/include/asm/irq.h:#define NO_IRQ
    INT_MAXarch/openrisc/include/asm/irq.h:#define NO_IRQ
    (-1)arch/parisc/include/asm/irq.h:#define NO_IRQ
    (-1)arch/powerpc/include/asm/irq.h:#define NO_IRQ
    (0)arch/powerpc/include/asm/machdep.h:     /* Return an irq, or NO_IRQ
    to indicate arch/powerpc/include/asm/parport.h:             if (virq
    == NO_IRQ)arch/powerpc/include/asm/qe_ic.h:       if (cascade_irq !=
    NO_IRQ)arch/powerpc/include/asm/qe_ic.h:       if (cascade_irq !=
    NO_IRQ)arch/powerpc/include/asm/qe_ic.h:       if (cascade_irq !=
    NO_IRQ)arch/powerpc/include/asm/qe_ic.h:       if (cascade_irq !=
    NO_IRQ)arch/powerpc/include/asm/qe_ic.h:       if (cascade_irq ==
    NO_IRQ)arch/powerpc/include/asm/qe_ic.h:       if (cascade_irq !=
    NO_IRQ)arch/sparc/include/asm/irq_32.h:#define NO_IRQ
    0xffffffffarch/sparc/include/asm/irq_64.h:#define NO_IRQ
    0xffffffff

    And it's not just definitions of NO_IRQ. These are easy to find.
    On some archs (notably ARM) zero still seems to be a valid IRQ number,
    e.g. IRQ_LOCOMO_KEY and IRQ_DMA0C0.

    Also, UML has TIMER_IRQ being zero.

    A quick grep found many more IRQ definitions being zero, but
    surprisingly the few
    I looked into were definitions without users (e.g. SE7343_FPGA_IRQ_MRSHPC0,
    ROUTE_VIA_IRQ0 aka IRQ_MB93493_VDC_ROUTE).

    Perhaps request_irq() should just reject zero to find all of them?

    Gr{oetje,eeting}s,

                            Geert

    --
    Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

    In personal conversations with technical people, I call myself a hacker. But
    when I'm talking to journalists I just say "programmer" or something like that.
                                    -- Linus Torvalds
    --
    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: 2011-12-03 19:59    [W:0.025 / U:2.056 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site