17 Jul, 2007

1 commit

  • Currently we handle spurious IRQ activity based upon seeing a lot of
    invalid interrupts, and we clear things back on the base of lots of valid
    interrupts.

    Unfortunately in some cases you get legitimate invalid interrupts caused by
    timing asynchronicity between the PCI bus and the APIC bus when disabling
    interrupts and pulling other tricks. In this case although the spurious
    IRQs are not a problem our unhandled counters didn't clear and they act as
    a slow running timebomb. (This is effectively what the serial port/tty
    problem that was fixed by clearing counters when registering a handler
    showed up)

    It's easy enough to add a second parameter - time. This means that if we
    see a regular stream of harmless spurious interrupts which are not harming
    processing we don't go off and do something stupid like disable the IRQ
    after a month of running. OTOH lockups and performance killers show up a
    lot more than 10/second

    [akpm@linux-foundation.org: cleanup]
    Signed-off-by: Alan Cox
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     

09 May, 2007

1 commit

  • We noticed a drop in n/w performance due to the irq_desc being cacheline
    aligned rather than internode aligned. We see 50% of expected performance
    when two e1000 nics local to two different nodes have consecutive irq
    descriptors allocated, due to false sharing.

    Note that this patch does away with cacheline padding for the UP case, as
    it does not seem useful for UP configurations.

    Signed-off-by: Ravikiran Thirumalai
    Signed-off-by: Shai Fultheim
    Cc: "Siddha, Suresh B"
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ravikiran G Thirumalai
     

02 Mar, 2007

1 commit

  • linux/irq.h uses EINVAL but does not #include linux/errno.h. This results in
    the compiler spitting out errors on some files.

    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

27 Feb, 2007

1 commit

  • This patch replaces all instances of "set_native_irq_info(irq, mask)"
    with "irq_desc[irq].affinity = mask". The latter form is clearer
    uses fewer abstractions, and makes access to this field uniform
    accross different architectures.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

20 Feb, 2007

1 commit

  • powerpc gets:

    init/main.c: In function `do_basic_setup':
    init/main.c:714: warning: implicit declaration of function `init_irq_proc'

    but we cannot include linux/irq.h in generic code.

    Fix it by moving the declaration into linux/interrupt.h instead.

    And make sure all code that defines init_irq_proc() is including
    linux/interrupt.h.

    And nuke an ifdef-in-C

    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     

17 Feb, 2007

4 commits

  • Fix kernel-doc warnings in IRQ management.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Now that disable_irq() defaults to delayed-disable semantics, the IRQ_DISABLED
    flag is not needed anymore.

    Signed-off-by: Ingo Molnar
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Provide funtions to:
    - check, whether an interrupt can set the affinity
    - pin the interrupt to a given cpu

    Necessary for the ability to setup clocksources more flexible (e.g. use the
    different HPET channels per CPU)

    [akpm@osdl.org: alpha build fix]
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Cc: john stultz
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Add a flag so we can prevent the irq balancing of an interrupt. Move the
    bits, so we have room for more :)

    Necessary for the ability to setup clocksources more flexible (e.g. use the
    different HPET channels per CPU)

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Cc: john stultz
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     

08 Feb, 2007

1 commit

  • We need to be able to get from an irq number to a struct msi_desc.
    The msi_desc array in msi.c had several short comings the big one was
    that it could not be used outside of msi.c. Using irq_data in struct
    irq_desc almost worked except on some architectures irq_data needs to
    be used for something else.

    So this patch adds a msi_desc pointer to irq_desc, adds the appropriate
    wrappers and changes all of the msi code to use them.

    The dynamic_irq_init/cleanup code was tweaked to ensure the new
    field is left in a well defined state.

    Signed-off-by: Eric W. Biederman
    Acked-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Eric W. Biederman
     

21 Oct, 2006

1 commit


17 Oct, 2006

1 commit

  • Introduce desc->name and eliminate the handle_irq_name() hack. Add
    set_irq_chip_and_handler_name() to set the flow type and name at once.

    Signed-off-by: Ingo Molnar
    Acked-by: Thomas Gleixner
    Cc: "Eric W. Biederman"
    Cc: Matthew Wilcox
    Cc: Kyle McMartin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

05 Oct, 2006

2 commits

  • Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
    of passing regs around manually through all ~1800 interrupt handlers in the
    Linux kernel.

    The regs pointer is used in few places, but it potentially costs both stack
    space and code to pass it around. On the FRV arch, removing the regs parameter
    from all the genirq function results in a 20% speed up of the IRQ exit path
    (ie: from leaving timer_interrupt() to leaving do_IRQ()).

    Where appropriate, an arch may override the generic storage facility and do
    something different with the variable. On FRV, for instance, the address is
    maintained in GR28 at all times inside the kernel as part of general exception
    handling.

    Having looked over the code, it appears that the parameter may be handed down
    through up to twenty or so layers of functions. Consider a USB character
    device attached to a USB hub, attached to a USB controller that posts its
    interrupts through a cascaded auxiliary interrupt controller. A character
    device driver may want to pass regs to the sysrq handler through the input
    layer which adds another few layers of parameter passing.

    I've build this code with allyesconfig for x86_64 and i386. I've runtested the
    main part of the code on FRV and i386, though I can't test most of the drivers.
    I've also done partial conversion for powerpc and MIPS - these at least compile
    with minimal configurations.

    This will affect all archs. Mostly the changes should be relatively easy.
    Take do_IRQ(), store the regs pointer at the beginning, saving the old one:

    struct pt_regs *old_regs = set_irq_regs(regs);

    And put the old one back at the end:

    set_irq_regs(old_regs);

    Don't pass regs through to generic_handle_irq() or __do_IRQ().

    In timer_interrupt(), this sort of change will be necessary:

    - update_process_times(user_mode(regs));
    - profile_tick(CPU_PROFILING, regs);
    + update_process_times(user_mode(get_irq_regs()));
    + profile_tick(CPU_PROFILING);

    I'd like to move update_process_times()'s use of get_irq_regs() into itself,
    except that i386, alone of the archs, uses something other than user_mode().

    Some notes on the interrupt handling in the drivers:

    (*) input_dev() is now gone entirely. The regs pointer is no longer stored in
    the input_dev struct.

    (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does
    something different depending on whether it's been supplied with a regs
    pointer or not.

    (*) Various IRQ handler function pointers have been moved to type
    irq_handler_t.

    Signed-Off-By: David Howells
    (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)

    David Howells
     
  • Typedef the IRQ flow handler function type.

    Signed-Off-By: David Howells
    (cherry picked from 8e973fbdf5716b93a0a8c0365be33a31ca0fa351 commit)

    David Howells
     

04 Oct, 2006

5 commits

  • Currently msi.c is doing sanity checks that make certain before an irq is
    destroyed it has no more users.

    By adding irq_has_action I can perform the test is a generic way, instead of
    relying on a msi specific data structure.

    By performing the core check in dynamic_irq_cleanup I ensure every user of
    dynamic irqs has a test present and we don't free resources that are in use.

    In msi.c this allows me to kill the attrib.state member of msi_desc and all of
    the assciated code to maintain it.

    To keep from freeing data structures when irq cleanup code is called to soon
    changing dyanamic_irq_cleanup is insufficient because there are msi specific
    data structures that are also not safe to free.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Tony Luck
    Cc: Andi Kleen
    Cc: Thomas Gleixner
    Cc: Greg KH
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Because of the nasty way that CONFIG_PCI_MSI was implemented we wound up with
    set_irq_info and set_native_irq_info, with move_irq and move_native_irq. Both
    functions did the same thing but they were built and called under different
    circumstances. Now that the msi hacks are gone we can kill move_irq and
    set_irq_info.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Benjamin Herrenschmidt
    Cc: Rajesh Shah
    Cc: Andi Kleen
    Cc: "Protasevich, Natalie"
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • With the msi support comes a new concept in irq handling, irqs that are
    created dynamically at run time.

    Currently the msi code allocates irqs backwards. First it allocates a
    platform dependent routing value for an interrupt the ``vector'' and then it
    figures out from the vector which irq you are on.

    This msi backwards allocator suffers from two basic problems. The allocator
    suffers because it is trying to do something that is architecture specific in
    a generic way making it brittle, inflexible, and tied to tightly to the
    architecture implementation. The alloctor also suffers from it's very
    backwards nature as it has tied things together that should have no
    dependencies.

    To solve the basic dynamic irq allocation problem two new architecture
    specific functions are added: create_irq and destroy_irq.

    create_irq takes no input and returns an unused irq number, that won't be
    reused until it is returned to the free poll with destroy_irq. The irq then
    can be used for any purpose although the only initial consumer is the msi
    code.

    destroy_irq takes an irq number allocated with create_irq and returns it to
    the free pool.

    Making this functionality per architecture increases the simplicity of the irq
    allocation code and increases it's flexibility.

    dynamic_irq_init() and dynamic_irq_cleanup() are added to automate the
    irq_desc initializtion that should happen for dynamic irqs.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Benjamin Herrenschmidt
    Cc: Rajesh Shah
    Cc: Andi Kleen
    Cc: "Protasevich, Natalie"
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Currently move_native_irq disables and renables the irq we are migrating to
    ensure we don't take that irq when we are actually doing the migration
    operation. Disabling the irq needs to happen but sometimes doing the work is
    move_native_irq is too late.

    On x86 with ioapics the irq move sequences needs to be:
    edge_triggered:
    mask irq.
    move irq.
    unmask irq.
    ack irq.
    level_triggered:
    mask irq.
    ack irq.
    move irq.
    unmask irq.

    We can easily perform the edge triggered sequence, with the current defintion
    of move_native_irq. However the level triggered case does not map well. For
    that I have added move_masked_irq, to allow me to disable the irqs around both
    the ack and the move.

    Q: Why have we not seen this problem earlier?

    A: The only symptom I have been able to reproduce is that if we change
    the vector before acknowleding an irq the wrong irq is acknowledged.
    Since we currently are not reprogramming the irq vector during
    migration no problems show up.

    We have to mask the irq before we acknowledge the irq or else we could
    hit a window where an irq is asserted just before we acknowledge it.

    Edge triggered irqs do not have this problem because acknowledgements
    do not propogate in the same way.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Benjamin Herrenschmidt
    Cc: Rajesh Shah
    Cc: Andi Kleen
    Cc: "Protasevich, Natalie"
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • The primary aim of this patchset is to remove maintenances problems caused by
    the irq infrastructure. The two big issues I address are an artificially
    small cap on the number of irqs, and that MSI assumes vector == irq. My
    primary focus is on x86_64 but I have touched other architectures where
    necessary to keep them from breaking.

    - To increase the number of irqs I modify the code to look at the (cpu,
    vector) pair instead of just looking at the vector.

    With a large number of irqs available systems with a large irq count no
    longer need to compress their irq numbers to fit. Removing a lot of brittle
    special cases.

    For acpi guys the result is that irq == gsi.

    - Addressing the fact that MSI assumes irq == vector takes a few more
    patches. But suffice it to say when I am done none of the generic irq code
    even knows what a vector is.

    In quick testing on a large Unisys x86_64 machine we stumbled over at least
    one driver that assumed that NR_IRQS could always fit into an 8 bit number.
    This driver is clearly buggy today. But this has become a class of bugs that
    it is now much easier to hit.

    This patch:

    This is a minor space optimization. In practice I don't think this has any
    affect because of our alignment constraints and the other fields but there is
    not point in chewing up an uncessary word and since we already read the flag
    field this should improve the cache hit ratio of the irq handler.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Benjamin Herrenschmidt
    Cc: Rajesh Shah
    Cc: Andi Kleen
    Cc: "Protasevich, Natalie"
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

26 Sep, 2006

1 commit


01 Aug, 2006

2 commits

  • Reduce the likelihood of someone accidentally introducing namespace
    collisions.

    Signed-off-by: Yoichi Yuasa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yoichi Yuasa
     
  • IRQs need refcounting and a state flag to track whether the the IRQ should
    be enabled or disabled as a "normal IRQ" source after a series of calls to
    {en,dis}able_irq(). For shared IRQs, the IRQ must be enabled so long as at
    least one driver needs it active.

    Likewise, IRQs need the same support to track whether the IRQ should be
    enabled or disabled as a "wakeup event" source after a series of calls to
    {en,dis}able_irq_wake(). For shared IRQs, the IRQ must be enabled as a
    wakeup source during sleep so long as at least one driver needs it. But
    right now they _don't have_ that refcounting ... which means sharing a
    wakeup-capable IRQ can't work correctly in some configurations.

    This patch adds the refcount and flag mechanisms to set_irq_wake() -- which
    is what {en,dis}able_irq_wake() call -- and minimal documentation of what
    the irq wake mechanism does.

    Drivers relying on the older (broken) "toggle" semantics will trigger a
    warning; that'll be a handful of drivers on ARM systems.

    Signed-off-by: David Brownell
    Acked-by: Ingo Molnar
    Acked-by: Thomas Gleixner
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     

03 Jul, 2006

3 commits

  • Linus: "The hacks in kernel/irq/handle.c are really horrid. REALLY
    horrid."

    They are indeed. Move the dyntick quirks to ARM where they belong.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • * 'genirq' of master.kernel.org:/home/rmk/linux-2.6-arm: (24 commits)
    [ARM] 3683/2: ARM: Convert at91rm9200 to generic irq handling
    [ARM] 3682/2: ARM: Convert ixp4xx to generic irq handling
    [ARM] 3702/1: ARM: Convert ixp23xx to generic irq handling
    [ARM] 3701/1: ARM: Convert plat-omap to generic irq handling
    [ARM] 3700/1: ARM: Convert lh7a40x to generic irq handling
    [ARM] 3699/1: ARM: Convert s3c2410 to generic irq handling
    [ARM] 3698/1: ARM: Convert sa1100 to generic irq handling
    [ARM] 3697/1: ARM: Convert shark to generic irq handling
    [ARM] 3696/1: ARM: Convert clps711x to generic irq handling
    [ARM] 3694/1: ARM: Convert ecard driver to generic irq handling
    [ARM] 3693/1: ARM: Convert omap1 to generic irq handling
    [ARM] 3691/1: ARM: Convert imx to generic irq handling
    [ARM] 3688/1: ARM: Convert clps7500 to generic irq handling
    [ARM] 3687/1: ARM: Convert integrator to generic irq handling
    [ARM] 3685/1: ARM: Convert pxa to generic irq handling
    [ARM] 3684/1: ARM: Convert l7200 to generic irq handling
    [ARM] 3681/1: ARM: Convert ixp2000 to generic irq handling
    [ARM] 3680/1: ARM: Convert footbridge to generic irq handling
    [ARM] 3695/1: ARM drivers/pcmcia: Fixup includes
    [ARM] 3689/1: ARM drivers/input/touchscreen: Fixup includes
    ...

    Manual conflict resolved in kernel/irq/handle.c (butt-ugly ARM tickless
    code).

    Linus Torvalds
     
  • The recent interrupt rework introduced bit value conflicts with sparc.
    Instead of introducing new architecture flags mess, move the interrupt SA_
    flags out of the signal namespace and replace them by interrupt related flags.

    This allows to remove the obsolete SA_INTERRUPT flag and clean up the bit
    field values.

    This patch:

    Move the interrupt related SA_ flags out of linux/signal.h and rename them to
    IRQF_ . This moves the interrupt related flags out of the signal namespace
    and allows to remove the architecture dependencies.

    SA_INTERRUPT is not needed by userspace and glibc so it can be removed safely.

    The existing SA_ constants are kept for easy transition and will be
    removed after a 6 month grace period.

    Signed-off-by: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "David S. Miller"
    Cc: Benjamin Herrenschmidt
    Cc: "Randy.Dunlap"
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: "Antonino A. Daplas"
    Cc: Greg KH
    Cc: Russell King
    Cc: James Bottomley
    Cc: Kyle McMartin
    Cc: Jeff Garzik
    Cc: Mauro Carvalho Chehab
    Cc: Karsten Keil
    Cc: Jody McIntyre
    Cc: Ben Collins
    Cc: Stefan Richter
    Cc: Alan Cox
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Dave Airlie
    Cc: Jens Axboe
    Cc: Chris Zankel
    Cc: Andi Kleen
    Cc: Miles Bader
    Cc: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Cc: Paul Mundt
    Cc: Kazumoto Kojima
    Cc: Martin Schwidefsky Cc: Heiko Carstens
    Cc: Ralf Baechle
    Cc: Roman Zippel
    Cc: Geert Uytterhoeven
    Cc: Greg Ungerer
    Cc: "Luck, Tony"
    Cc: Yoshinori Sato
    Cc: David Howells
    Cc: Mikael Starvik
    Cc: Russell King
    Cc: Ivan Kokshaysky
    Cc: Richard Henderson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     

02 Jul, 2006

1 commit

  • Patch from Thomas Gleixner

    From: Thomas Gleixner

    ARM has a couple of really dumb interrupt controllers.
    Implement a generic one and fixup the ARM migration. ARM reused
    the no_irq_chip for this purpose, but this does not work out
    for platforms which are not converted to the new interrupt
    type handling model.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Signed-off-by: Russell King

    Thomas Gleixner
     

30 Jun, 2006

14 commits

  • Clean up the fastack concept by turning it into fasteoi and introducing the
    ->eoi() method for chips.

    This also allows the cleanup of an i386 EOI quirk - now the quirk is
    cleanly separated from the pure ACK implementation.

    Signed-off-by: Ingo Molnar
    Cc: Benjamin Herrenschmidt
    Cc: Roland Dreier
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Add a #define for the mask of the part of IRQ_TYPE that represents the
    trigger type. I use that in my in-progress work as I've standardized the
    way the irq description in the firmware device-tree get translated to linux
    useable things by using those constants. Having this mask to isolate the
    "trigger type" part of the flags is useful in a few places.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Thomas Gleixner
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • Enable platforms to use the irq-chip and irq-flow abstractions: allow setting
    of the chip, the type and provide highlevel handlers for common irq-flows.

    [rostedt@goodmis.org: misroute-irq: Don't call desc->chip->end because of edge interrupts]
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Steven Rostedt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • This is a fixed up and cleaned up replacement for genirq-msi-fixes.patch,
    which should solve the i386 4KSTACKS problem. I also added Ben's idea of
    pushing the __do_IRQ() check into generic_handle_irq().

    I booted this with MSI enabled, but i only have MSI devices, not MSI-X
    devices. I'd still expect MSI-X to work now.

    irqchip migration helper: call __do_IRQ() if a descriptor is attached to an
    irqtype-style controller. This also fixes MSI-X IRQ handling on i386 and
    x86_64.

    Signed-off-by: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Benjamin Herrenschmidt
    Cc: Roland Dreier
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Core genirq support: add the irq-chip and irq-flow abstractions.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Enable platforms to disable the automatic enabling of freshly set up irqs.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Enable platforms to disable request_irq() for certain interrupts.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Introduce IRQ_NOPROBE: enables platforms to control chip-probing.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Enable platforms that do not have a hardware-assisted hardirq-resend mechanism
    to resend them via a softirq-driven IRQ emulation mechanism.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Better document the hw_interrupt_type and irq_desc structures.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Add ->retrigger() irq op to consolidate hw_irq_resend() implementations.
    (Most architectures had it defined to NOP anyway.)

    NOTE: ia64 needs testing. i386 and x86_64 tested.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Cleanup: change ARCH_HAS_IRQ_PER_CPU into a Kconfig method.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Consolidation: remove the pending_irq_cpumask[NR_IRQS] array and move it into
    the irq_desc[NR_IRQS].pending_mask field.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Consolidation: remove the irq_dir[NR_IRQS] and the smp_affinity_entry[NR_IRQS]
    arrays and move them into the irq_desc[] array.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar