03 May, 2016

1 commit

  • If tb_drom_read() fails, sw->drom is freed but not set to NULL. sw->drom
    is then freed again in the error path of tb_switch_alloc().

    The bug can be triggered by unplugging a thunderbolt device shortly after
    it is detected by the thunderbolt driver.

    Clear sw->drom if tb_drom_read() fails.

    [bhelgaas: add Fixes:, stable versions of interest]
    Fixes: 343fcb8c70d7 ("thunderbolt: Fix nontrivial endpoint devices.")
    Signed-off-by: Andreas Noever
    Signed-off-by: Bjorn Helgaas
    CC: stable@vger.kernel.org # v3.17+
    CC: Lukas Wunner

    Andreas Noever
     

09 Apr, 2016

2 commits

  • 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 [MacBookPro9,1]
    Tested-by: William Brown [MacBookPro8,2]
    Signed-off-by: Lukas Wunner
    Signed-off-by: Bjorn Helgaas
    Acked-by: Andreas Noever

    Lukas Wunner
     
  • Fix typo in tb_cfg_print_error() message. Fix bytecount in struct
    tb_drom_entry_port comment. Replace magic number in tb_switch_alloc().
    Rename tb_sw_set_unpplugged() and TB_CAL_IECS to fix typos.

    [bhelgaas: no functional change intended]
    Signed-off-by: Lukas Wunner
    Signed-off-by: Bjorn Helgaas
    Acked-by: Andreas Noever

    Lukas Wunner
     

21 Jun, 2014

4 commits


20 Jun, 2014

2 commits

  • All Thunderbolt switches (except the root switch) contain a drom which
    contains information about the device. Right now we only read the UID.

    Add code to read and parse this drom. For now we are only interested in
    which ports are disabled and which ports are "dual link ports" (a
    physical thunderbolt port/socket contains two such ports).

    Signed-off-by: Andreas Noever
    Signed-off-by: Greg Kroah-Hartman

    Andreas Noever
     
  • Add eeprom access code and read the uid during switch initialization.
    The UID will be used to check device identity after suspend.

    Signed-off-by: Andreas Noever
    Signed-off-by: Greg Kroah-Hartman

    Andreas Noever