1. 23 11月, 2012 1 次提交
  2. 10 9月, 2012 1 次提交
    • G
      powerpc/eeh: Trace error based on PE from beginning · 66523d9f
      Gavin Shan 提交于
      There're 2 conditions to trigger EEH error detection: invalid value
      returned from reading I/O or config space. On each case, the function
      eeh_dn_check_failure will be called to initialize EEH event and put
      it into the poll for further processing.
      
      The patch changes the function for a little bit so that the EEH error
      will be traced based on PE instead of EEH device any more. Also, the
      function eeh_find_device_pe() has been removed since the eeh device
      is tracing the PE by struct eeh_dev::pe.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      66523d9f
  3. 07 9月, 2012 1 次提交
  4. 09 3月, 2012 1 次提交
  5. 29 3月, 2011 1 次提交
  6. 11 3月, 2011 1 次提交
  7. 05 11月, 2009 1 次提交
  8. 11 3月, 2009 1 次提交
  9. 23 2月, 2009 2 次提交
    • M
      powerpc/pseries: Implement a quota system for MSIs · 448e2ca0
      Michael Ellerman 提交于
      There are hardware limitations on the number of available MSIs,
      which firmware expresses using a property named "ibm,pe-total-#msi".
      This property tells us how many MSIs are available for devices below
      the point in the PCI tree where we find the property.
      
      For old firmwares which don't have the property, we assume there are
      8 MSIs available per "partitionable endpoint" (PE). The PE can be
      found using existing EEH code, which uses the methods described in
      PAPR. For our purposes we want the parent of the node that's
      identified using this method.
      
      When a driver requests n MSIs for a device, we first establish where
      the "ibm,pe-total-#msi" property above that device is, or we find the
      PE if the property is not found. In both cases we call this node
      the "pe_dn".
      
      We then count all non-bridge devices below the pe_dn, to establish
      how many devices in total may need MSIs. The quota is then simply the
      total available divided by the number of devices, if the request is
      less than or equal to the quota, the request is fine and we're done.
      
      If the request is greater than the quota, we try to determine if there
      are any "spare" MSIs which we can give to this device. Spare MSIs are
      found by looking for other devices which can never use their full
      quota, because their "req#msi(-x)" property is less than the quota.
      
      If we find any spare, we divide the spares by the number of devices
      that could request more than their quota. This ensures the spare
      MSIs are spread evenly amongst all over-quota requestors.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      448e2ca0
    • M
      powerpc/pseries: Return req#msi(-x) if request is larger · d523cc37
      Michael Ellerman 提交于
      If a driver asks for more MSIs than the devices "req#msi(-x)" property,
      we currently return -ENOSPC. This doesn't give the driver any chance to
      make a new request with a number that might work.
      
      So if "req#msi(-x)" is less than the request, return its value. To be
      100% safe, make sure we return an error if req_msi == 0.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      d523cc37
  10. 11 2月, 2009 4 次提交
  11. 08 11月, 2007 1 次提交
  12. 03 10月, 2007 2 次提交
  13. 08 5月, 2007 1 次提交
    • M
      [POWERPC] RTAS MSI implementation · 85f2bf9f
      Michael Ellerman 提交于
      Implement MSI support via RTAS (RTAS = run-time firmware on pSeries
      machines).  For now we assumes that if the required RTAS tokens for
      MSI are present, then we want to use the RTAS MSI routines.
      
      When RTAS is managing MSIs for us, it will/may enable MSI on devices that
      support it by default. This is contrary to the Linux model where a device
      is in LSI mode until the driver requests MSIs.
      
      To remedy this we add a pci_irq_fixup call, which disables MSI if they've
      been assigned by firmware and the device also supports LSI. Devices that
      don't support LSI at all will be left as is, drivers are still expected
      to call pci_enable_msi() before using the device.
      
      At the moment there is no pci_irq_fixup on pSeries, so we can just set it
      unconditionally. If other platforms use the RTAS MSI backend they'll need
      to check that still holds.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      85f2bf9f