1. 23 10月, 2015 1 次提交
    • H
      PCI: Turn off Request Attributes to avoid Chelsio T5 Completion erratum · c56d4450
      Hariprasad Shenai 提交于
      The Chelsio T5 has a PCIe compliance erratum that causes Malformed TLP or
      Unexpected Completion errors in some systems, which may cause device access
      timeouts.
      
      Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same values
      for the Attribute as were supplied in the header of the corresponding
      Request, except as explicitly allowed when IDO is used."
      
      Instead of copying the Attributes from the Request to the Completion, the
      T5 always generates Completions with zero Attributes.  The receiver of a
      Completion whose Attributes don't match the Request may accept it (which
      itself seems non-compliant based on sec 2.3.2), or it may handle it as a
      Malformed TLP or an Unexpected Completion, which will probably lead to a
      device access timeout.
      
      Work around this by disabling "Relaxed Ordering" and "No Snoop" in the Root
      Port so it always generate Requests with zero Attributes.
      
      This does affect all other devices which are downstream of that Root Port,
      but these are performance optimizations that should not make a functional
      difference.
      
      Note that Configuration Space accesses are never supposed to have TLP
      Attributes, so we're safe waiting till after any Configuration Space
      accesses to do the Root Port "fixup".
      
      Based on original work by Casey Leedom <leedom@chelsio.com>
      
      [bhelgaas: changelog, comments, rename to pci_find_pcie_root_port(), rework
      to use pci_upstream_bridge() and check for Root Port device type, edit
      diagnostics to clarify intent and devices affected]
      Signed-off-by: NHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      c56d4450
  2. 25 8月, 2015 1 次提交
    • Z
      PCI: Disable async suspend/resume for JMicron multi-function SATA/AHCI · 91f15fb3
      Zhang Rui 提交于
      On multi-function JMicron SATA/PATA/AHCI devices, the PATA controller at
      function 1 doesn't work if it is powered on before the SATA controller at
      function 0.  The result is that PATA doesn't work after resume, and we
      print messages like this:
      
        pata_jmicron 0000:02:00.1: Refused to change power state, currently in D3
        irq 17: nobody cared (try booting with the "irqpoll" option)
      
      Async resume was introduced in v3.15 by 76569faa ("PM / sleep:
      Asynchronous threads for resume_noirq").  Prior to that, we powered on
      the functions in order, so this problem shouldn't happen.
      
      e6b7e41c ("ata: Disabling the async PM for JMicron chip 363/361")
      solved the problem for JMicron 361 and 363 devices.  With async suspend
      disabled, we always power on function 0 before function 1.
      
      Barto then reported the same problem with a JMicron 368 (see comment #57 in
      the bugzilla).
      
      Rather than extending the blacklist piecemeal, disable async suspend for
      all JMicron multi-function SATA/PATA/AHCI devices.
      
      This quirk could stay in the ahci and pata_jmicron drivers, but it's likely
      the problem will occur even if pata_jmicron isn't loaded until after the
      suspend/resume.  Making it a PCI quirk ensures that we'll preserve the
      power-on order even if the drivers aren't loaded.
      
      [bhelgaas: changelog, limit to multi-function, limit to IDE/ATA]
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=81551Reported-and-tested-by: NBarto <mister.freeman@laposte.net>
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: stable@vger.kernel.org	# v3.15+
      91f15fb3
  3. 24 8月, 2015 1 次提交
    • K
      PCI: Set MPS to match upstream bridge · 27d868b5
      Keith Busch 提交于
      Firmware typically configures the PCIe fabric with a consistent Max Payload
      Size setting based on the devices present at boot.  A hot-added device
      typically has the power-on default MPS setting (128 bytes), which may not
      match the fabric.
      
      The previous Linux default, in the absence of any "pci=pcie_bus_*" options,
      was PCIE_BUS_TUNE_OFF, in which we never touch MPS, even for hot-added
      devices.
      
      Add a new default setting, PCIE_BUS_DEFAULT, in which we make sure every
      device's MPS setting matches the upstream bridge.  This makes it more
      likely that a hot-added device will work in a system with optimized MPS
      configuration.
      
      Note that if we hot-add a device that only supports 128-byte MPS, it still
      likely won't work because we don't reconfigure the rest of the fabric.
      Booting with "pci=pcie_bus_peer2peer" is a workaround for this because it
      sets MPS to 128 for everything.
      
      [bhelgaas: changelog, new default, rework for pci_configure_device() path]
      Tested-by: NKeith Busch <keith.busch@intel.com>
      Tested-by: NJordan Hargrave <jharg93@gmail.com>
      Signed-off-by: NKeith Busch <keith.busch@intel.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NYinghai Lu <yinghai@kernel.org>
      27d868b5
  4. 12 8月, 2015 1 次提交
  5. 10 8月, 2015 1 次提交
  6. 22 7月, 2015 1 次提交
  7. 15 7月, 2015 9 次提交
  8. 22 5月, 2015 1 次提交
  9. 16 5月, 2015 1 次提交
  10. 07 5月, 2015 1 次提交
  11. 24 4月, 2015 1 次提交
  12. 09 4月, 2015 1 次提交
  13. 24 3月, 2015 1 次提交
    • A
      PCI: Add ACS quirks for Intel 1G NICs · d748804f
      Alex Williamson 提交于
      Intel has verified that there is no peer-to-peer between functions for the
      below selection of 82580, 82576, 82575, I350, and 82571 multi-port devices.
      This adds the necessary quirks to consider the functions isolated from each
      other.  82571 quad-port devices are omitted due to likely lack of
      ACS/isolation in the onboard switch, rendering quirks for the downstream
      endpoints useless.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: John Ronciak <john.ronciak@intel.com>
      d748804f
  14. 04 2月, 2015 1 次提交
  15. 24 1月, 2015 2 次提交
    • A
      PCI: Add Wellsburg (X99) to Intel PCH root port ACS quirk · 78e88358
      Alex Williamson 提交于
      Intel has confirmed that the Wellsburg chipset, while not reporting ACS,
      does provide the proper isolation through the RCBA/BSPR registers, so the
      same quirk works for this set of device IDs.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NDon Dugger <donald.d.dugger@intel.com>
      78e88358
    • A
      PCI: Add DMA alias quirk for Adaptec 3405 · d3d2ab43
      Alex Williamson 提交于
      The Adaptec 3405 is actually an Intel 80333 I/O processor where the exposed
      device at 0e.0 is actually the address translation unit of the I/O
      processor and a hidden, private device at 01.0 masters the DMA for the
      device.  Create a fixed alias between the exposed and hidden devfn so we
      can enable the IOMMU.
      
      Scenarios like this are potentially likely for any device incorporating
      this I/O processor, so this little bit of abstraction with the fixed alias
      table should make future additions trivial.
      
      Without this fix, booting a system with the Intel IOMMU enabled and an
      Adaptec 3405 at 02:0e.0 results in a flood of errors like this:
      
        dmar: DRHD: handling fault status reg 3
        dmar: DMAR:[DMA Write] Request device [02:01.0] fault addr ffbff000
        DMAR:[fault reason 02] Present bit in context entry is clear
      
      [bhelgaas: changelog, comment]
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Adaptec OEM Raid Solutions <aacraid@adaptec.com>
      d3d2ab43
  16. 17 1月, 2015 3 次提交
  17. 04 11月, 2014 1 次提交
  18. 02 10月, 2014 1 次提交
  19. 30 9月, 2014 1 次提交
  20. 23 9月, 2014 2 次提交
  21. 17 9月, 2014 1 次提交
  22. 09 9月, 2014 1 次提交
  23. 06 7月, 2014 1 次提交
  24. 20 6月, 2014 2 次提交
    • A
      PCI: Suspend/resume quirks for Apple thunderbolt · 1df5172c
      Andreas Noever 提交于
      Add two quirks to support thunderbolt suspend/resume on Apple systems.
      We need to perform two different actions during suspend and resume:
      
      The whole controller has to be powered down before suspend. If this is
      not done then the native host interface device will be gone after resume
      if a thunderbolt device was plugged in before suspending. The controller
      represents itself as multiple PCI devices/bridges. To power it down we
      hook into the upstream bridge of the controller and call the magic ACPI
      methods.  Power will be restored automatically during resume (by the
      firmware presumably).
      
      During resume we have to wait for the native host interface to
      reestablish all pci tunnels. Since there is no parent-child relationship
      between the NHI and the bridges we have to explicitly wait for them
      using device_pm_wait_for_dev. We do this in the resume_noirq phase of
      the downstream bridges of the controller (which lead into the
      thunderbolt tunnels).
      Signed-off-by: NAndreas Noever <andreas.noever@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1df5172c
    • A
      PCI: Add pci_fixup_suspend_late quirk pass · 7d2a01b8
      Andreas Noever 提交于
      Add pci_fixup_suspend_late as a new pci_fixup_pass. The pass is called
      from suspend_noirq and poweroff_noirq. Using the same pass for suspend
      and hibernate is consistent with resume_early which is called by
      resume_noirq and restore_noirq.
      
      The new quirk pass is required for Thunderbolt support on Apple
      hardware.
      Signed-off-by: NAndreas Noever <andreas.noever@gmail.com>
      Acked-by: NBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7d2a01b8
  25. 12 6月, 2014 1 次提交
  26. 11 6月, 2014 2 次提交