1. 19 Jun, 2009 1 commit
    • Matthew Wilcox's avatar
      PCI: Fix the NIU MSI-X problem in a better way · f598282f
      Matthew Wilcox authored
      The previous MSI-X fix (8d181018) had
      three bugs.  First, it didn't move the write that disabled the vector.
      This led to writing garbage to the MSI-X vector (spotted by Michael
      Ellerman).  It didn't fix the PCI resume case, and it had a race window
      where the device could generate an interrupt before the MSI-X registers
      were programmed (leading to a DMA to random addresses).
      
      Fortunately, the MSI-X capability has a bit to mask all the vectors.
      By setting this bit instead of clearing the enable bit, we can ensure
      the device will not generate spurious interrupts.  Since the capability
      is now enabled, the NIU device will not have a problem with the reads
      and writes to the MSI-X registers being in the original order in the code.
      Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
      Reviewed-by: default avatarHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      f598282f
  2. 18 Jun, 2009 16 commits
  3. 16 Jun, 2009 23 commits