1. 07 9月, 2016 2 次提交
  2. 31 8月, 2016 3 次提交
  3. 19 8月, 2016 1 次提交
  4. 30 7月, 2016 1 次提交
  5. 20 7月, 2016 1 次提交
  6. 11 6月, 2016 2 次提交
  7. 20 4月, 2016 3 次提交
  8. 12 4月, 2016 3 次提交
  9. 09 4月, 2016 2 次提交
    • L
      thunderbolt: Support 1st gen Light Ridge controller · 19bf4d4f
      Lukas Wunner 提交于
      Add support for the 1st gen Light Ridge controller, which is built into
      these systems:
      
        iMac12,1       2011  21.5"
        iMac12,2       2011  27"
        Macmini5,1     2011  i5 2.3 GHz
        Macmini5,2     2011  i5 2.5 GHz
        Macmini5,3     2011  i7 2.0 GHz
        MacBookPro8,1  2011  13"
        MacBookPro8,2  2011  15"
        MacBookPro8,3  2011  17"
        MacBookPro9,1  2012  15"
        MacBookPro9,2  2012  13"
      
      Light Ridge (CV82524) was the very first copper Thunderbolt controller,
      introduced 2010 alongside its fiber-optic cousin Light Peak (CVL2510).
      Consequently the chip suffers from some teething troubles:
      
        - MSI is broken for hotplug signaling on the downstream bridges: The chip
          just never sends an interrupt.  It requests 32 MSIs for each of its six
          bridges and the pcieport driver only allocates one per bridge.  However
          I've verified that even if 32 MSIs are allocated there's no interrupt
          on hotplug.  The only option is thus to disable MSI, which is also what
          OS X does.  Apparently all Thunderbolt chips up to revision 1 of Cactus
          Ridge 4C are plagued by this issue so quirk those as well.
      
        - The chip supports a maximum hop_count of 32, unlike its successors
          which support only 12.  Fixup ring_interrupt_active() to cope with
          values >= 32.
      
        - Another peculiarity is that the chip supports a maximum of 13 ports
          whereas its successors support 12.  However the additional port (#5)
          seems to be unusable as reading its TB_CFG_PORT config space results in
          TB_CFG_ERROR_INVALID_CONFIG_SPACE.  Add a quirk to mark the port
          disabled on the root switch, assuming that's necessary on all Macs
          using this chip.
      
      Tested-by: Lukas Wunner <lukas@wunner.de> [MacBookPro9,1]
      Tested-by: William Brown <william@blackhats.net.au> [MacBookPro8,2]
      Signed-off-by: NLukas Wunner <lukas@wunner.de>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NAndreas Noever <andreas.noever@gmail.com>
      19bf4d4f
    • L
      PCI: Add Intel Thunderbolt device IDs · 1d111406
      Lukas Wunner 提交于
      Intel Gen 1 and 2 chips use the same ID for NHI, bridges and switch.  Gen 3
      chips and onward use a distinct ID for the NHI.
      
      No functional change intended.
      Signed-off-by: NLukas Wunner <lukas@wunner.de>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NAndreas Noever <andreas.noever@gmail.com>
      1d111406
  10. 15 3月, 2016 1 次提交
  11. 11 3月, 2016 1 次提交
  12. 05 2月, 2016 1 次提交
  13. 21 1月, 2016 1 次提交
  14. 16 1月, 2016 1 次提交
  15. 11 12月, 2015 1 次提交
  16. 18 11月, 2015 1 次提交
  17. 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
  18. 25 9月, 2015 2 次提交
  19. 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
  20. 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
  21. 12 8月, 2015 1 次提交
  22. 10 8月, 2015 1 次提交
  23. 22 7月, 2015 1 次提交
  24. 15 7月, 2015 7 次提交
    • R
      PCI: Remove a broken link in quirks.c · 46fd9625
      Rami Rosen 提交于
      Remove a broken link in drivers/pci/quirks.c.
      Signed-off-by: NRami Rosen <ramirose@gmail.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      46fd9625
    • W
      PCI: Move PCI_FIND_CAP_TTL to pci.h and use it in quirks · fff905f3
      Wei Yang 提交于
      Some quirks search for a HyperTransport capability and use a hard-coded TTL
      value of 48 to avoid an infinite loop.
      
      Move the definition of PCI_FIND_CAP_TTL to pci.h and use it instead of the
      hard-coded TTL values.
      
      [bhelgaas: changelog]
      Signed-off-by: NWei Yang <weiyang@linux.vnet.ibm.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      fff905f3
    • B
      PCI: Shift PCI_CLASS_NOT_DEFINED consistently with other classes · 2b4aed1d
      Bjorn Helgaas 提交于
      The PCI class in dev->class is a three-byte value comprising a base class,
      sub-class, and interface type.  PCI_CLASS_NOT_DEFINED includes the base
      class and sub-class, but not the interface type, so it should be shifted to
      make space for the interface.  It happens that PCI_CLASS_NOT_DEFINED is
      zero, so it doesn't matter in the end, but we should still use it
      consistently with other class definitions.
      
      Treat PCI_CLASS_NOT_DEFINED as a base class/sub-class value that should
      appear in bits 8-23 of dev->class.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      2b4aed1d
    • B
      PCI: Revert aeb30016 ("PCI: add Intel USB specific reset method") · eefaf338
      Bjorn Helgaas 提交于
      Revert aeb30016 ("PCI: add Intel USB specific reset method").
      
      We checked for "dev->class == PCI_CLASS_SERIAL_USB", but dev->class
      contains the entire three-byte base class/sub-class/interface, while
      PCI_CLASS_SERIAL_USB is only the two-byte base class/sub-class.
      
      This error meant that we used the Intel device-specific reset on devices
      with class code 0x000c03 instead of those with class code 0x0c03xx.
      0x000c03 is a reserved value in the 0x00 backwards compatibility base
      class and shouldn't match any devices, so I think reset_intel_generic_dev()
      always failed.
      
      I considered adding a shift, but I can't test it, so it's as likely to
      break something as to fix something.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Yu Zhao <yu.zhao@intel.com>
      CC: Mathias Nyman <mathias.nyman@intel.com>
      eefaf338
    • B
      PCI: Fix TI816X class code quirk · d1541dc9
      Bjorn Helgaas 提交于
      In fixup_ti816x_class(), we assigned "class = PCI_CLASS_MULTIMEDIA_VIDEO".
      But PCI_CLASS_MULTIMEDIA_VIDEO is only the two-byte base class/sub-class
      and needs to be shifted to make space for the low-order interface byte.
      
      Shift PCI_CLASS_MULTIMEDIA_VIDEO to set the correct class code.
      
      Fixes: 63c44080 ("PCI: Add quirk for setting valid class for TI816X Endpoint")
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Hemant Pedanekar <hemantp@ti.com>
      d1541dc9
    • B
      PCI: Fix generic NCR 53c810 class code quirk · e6323e3c
      Bjorn Helgaas 提交于
      In the generic quirk fixup_rev1_53c810(), added by a5312e28 ("[PATCH]
      PCI: NCR 53c810 quirk"), we assigned "class = PCI_CLASS_STORAGE_SCSI".  But
      PCI_CLASS_STORAGE_SCSI is only the two-byte base class/sub-class and needs
      to be shifted to make space for the low-order interface byte.
      
      Furthermore, we had a similar quirk, pci_fixup_ncr53c810(), for arch/x86,
      which assigned class correctly.  The arch code is linked before the PCI
      core, so arch quirks run before generic quirks.  Therefore, on x86, the x86
      arch quirk ran first, and the generic quirk did nothing because it saw that
      dev->class was already set.  But on other arches, the generic quirk set the
      wrong class code.
      
      Fix the generic quirk to set the correct class code and remove the
      now-unnecessary x86-specific quirk.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Matthew Wilcox <matthew@wil.cx>
      e6323e3c
    • B
      PCI: Use PCI_CLASS_SERIAL_USB instead of bare number · cd76d10b
      Bjorn Helgaas 提交于
      be6646bf ("PCI: Prevent xHCI driver from claiming AMD Nolan USB3 DRD
      device") added a quirk to override the PCI class code of the AMD Nolan
      device.
      
      Use PCI_CLASS_SERIAL_USB instead of a bare number to improve greppability.
      Also add a log message about what we're doing.
      
      No functional change except the new message.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NHuang Rui <ray.huang@amd.com>
      CC: Jason Chang <jason.chang@amd.com>
      CC: Felipe Balbi <balbi@ti.com>
      cd76d10b