Skip to content
  • Eric W. Biederman's avatar
    [PATCH] genirq: irq: convert the move_irq flag from a 32bit word to a single bit · a24ceab4
    Eric W. Biederman authored
    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: default avatarEric 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: default avatarAndrew Morton <>
    Signed-off-by: default avatarLinus Torvalds <>