1. 04 10月, 2006 1 次提交
    • E
      [PATCH] genirq: irq: convert the move_irq flag from a 32bit word to a single bit · a24ceab4
      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: NEric W. Biederman <ebiederm@xmission.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Rajesh Shah <rajesh.shah@intel.com>
      Cc: Andi Kleen <ak@muc.de>
      Cc: "Protasevich, Natalie" <Natalie.Protasevich@UNISYS.com>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a24ceab4
  2. 30 6月, 2006 4 次提交
  3. 23 6月, 2006 1 次提交
  4. 11 4月, 2006 1 次提交
  5. 26 3月, 2006 2 次提交
    • B
      [PATCH] IRQ: prevent enabling of previously disabled interrupt · 501f2499
      Bryan Holty 提交于
      This fix prevents re-disabling and enabling of a previously disabled
      interrupt.  On an SMP system with irq balancing enabled; If an interrupt is
      disabled from within its own interrupt context with disable_irq_nosync and is
      also earmarked for processor migration, the interrupt is blindly moved to the
      other processor and enabled without regard for its current "enabled" state.
      If there is an interrupt pending, it will unexpectedly invoke the irq handler
      on the new irq owning processor (even though the irq was previously disabled)
      
      The more intuitive fix would be to invoke disable_irq_nosync and
      enable_irq, but since we already have the desc->lock from __do_IRQ, we
      cannot call them directly.  Instead we can use the same logic to disable
      and enable found in disable_irq_nosync and enable_irq, with regards to the
      desc->depth.
      
      This now prevents a disabled interrupt from being re-disabled, and more
      importantly prevents a disabled interrupt from being incorrectly enabled on
      a different processor.
      Signed-off-by: NBryan Holty <lgeek@frontiernet.net>
      Cc: Andi Kleen <ak@muc.de>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      501f2499
    • A
      [PATCH] irq: uninline migration functions · c777ac55
      Andrew Morton 提交于
      Uninline some massive IRQ migration functions.  Put them in the new
      kernel/irq/migration.c.
      
      Cc: Andi Kleen <ak@muc.de>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c777ac55