On Wed, Feb 06, 2019 at 04:17:10PM +0300, Mika Westerberg wrote: > Hi, > > Software connection manager (drivers/thunderbolt/tb.c) is used on older > Apple hardware with Light Ridge, Cactus Ridge or Falcon Ridge controllers > to create PCIe tunnels when a Thunderbolt device is connected. Currently > only one PCIe tunnel is supported. On newer Alpine Ridge based Apple > systems the driver starts the firmware which then takes care creating > tunnels. > > This series improves the software connection manager so that it will > support: > > - Full PCIe daisy chains (up to 6 devices) > - Display Port tunneling > - P2P networking > > We also add support for Titan Ridge based Apple systems where we can use > the same flows than with Alpine Ridge to start the firmware. > > Note in order to prevent possible DMA attacks on these systems we should > make sure IOMMU is enabled. One option is to force dmar_platform_optin() > return true on Apple hardware. However, it is not part of this series. I'm > trusting people using Linux on such systems to take care of it. :-) > > Previous version of the patch series can be viewed here: > > https://lkml.org/lkml/2019/1/29/924
>From code style and some other things we discussed off list the series looks good to me. Reviewed-by: Andy Shevchenko <andriy.shevche...@linux.intel.com> Though minor comments per individual patches are provided. > > Changes from v1: > > * Added ACK from David > > * Add constant (TMU_ACCESS_EN) for BIT(20) when TMU access is enabled. We > keep it in cap.c close to the LR/ER workaround. Also we enable/disable > only during capability walk. If it turns we need to have it enabled > elsewhere we can move it to switch.c and enable just once during > switch enumeration. > > * Use 0 to mean no cap_adap instead of negative value. This follows > cap_phy. > > * Use correct PCI IDs (_BRIDGE) in the last patch where we start firmware > on Titan Ridge. It wrongly used NHI PCI IDs in v1. > > Mika Westerberg (28): > net: thunderbolt: Unregister ThunderboltIP protocol handler when suspending > thunderbolt: Do not allocate switch if depth is greater than 6 > thunderbolt: Enable TMU access when accessing port space on legacy devices > thunderbolt: Add dummy read after port capability list walk on Light Ridge > thunderbolt: Move LC specific functionality into a separate file > thunderbolt: Configure lanes when switch is initialized > thunderbolt: Set sleep bit when suspending switch > thunderbolt: Properly disable path > thunderbolt: Cache adapter specific capability offset into struct port > thunderbolt: Rename tunnel_pci to tunnel > thunderbolt: Generalize tunnel creation functionality > thunderbolt: Add functions for allocating and releasing hop IDs > thunderbolt: Add helper function to iterate from one port to another > thunderbolt: Extend tunnel creation to more than 2 adjacent switches > thunderbolt: Deactivate all paths before restarting them > thunderbolt: Discover preboot PCIe paths the boot firmware established > thunderbolt: Add support for full PCIe daisy chains > thunderbolt: Scan only valid NULL adapter ports in hotplug > thunderbolt: Generalize port finding routines to support all port types > thunderbolt: Rework NFC credits handling > thunderbolt: Add support for Display Port tunnels > thunderbolt: Run tb_xdp_handle_request() in system workqueue > thunderbolt: Add XDomain UUID exchange support > thunderbolt: Add support for DMA tunnels > thunderbolt: Make tb_switch_alloc() return ERR_PTR() > thunderbolt: Add support for XDomain connections > thunderbolt: Make rest of the logging to happen at debug level > thunderbolt: Start firmware on Titan Ridge Apple systems > > drivers/net/thunderbolt.c | 3 + > drivers/thunderbolt/Makefile | 4 +- > drivers/thunderbolt/cap.c | 90 +++- > drivers/thunderbolt/ctl.c | 2 +- > drivers/thunderbolt/icm.c | 15 +- > drivers/thunderbolt/lc.c | 179 ++++++++ > drivers/thunderbolt/path.c | 326 +++++++++++++-- > drivers/thunderbolt/switch.c | 466 ++++++++++++++++++--- > drivers/thunderbolt/tb.c | 529 ++++++++++++++++++------ > drivers/thunderbolt/tb.h | 67 ++- > drivers/thunderbolt/tb_msgs.h | 11 + > drivers/thunderbolt/tb_regs.h | 50 ++- > drivers/thunderbolt/tunnel.c | 681 +++++++++++++++++++++++++++++++ > drivers/thunderbolt/tunnel.h | 75 ++++ > drivers/thunderbolt/tunnel_pci.c | 226 ---------- > drivers/thunderbolt/tunnel_pci.h | 31 -- > drivers/thunderbolt/xdomain.c | 142 ++++++- > include/linux/thunderbolt.h | 8 + > 18 files changed, 2389 insertions(+), 516 deletions(-) > create mode 100644 drivers/thunderbolt/lc.c > create mode 100644 drivers/thunderbolt/tunnel.c > create mode 100644 drivers/thunderbolt/tunnel.h > delete mode 100644 drivers/thunderbolt/tunnel_pci.c > delete mode 100644 drivers/thunderbolt/tunnel_pci.h > > -- > 2.20.1 > -- With Best Regards, Andy Shevchenko