All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Lukas Wunner <lukas@wunner.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Andreas Noever <andreas.noever@gmail.com>,
	Michael Jamet <michael.jamet@intel.com>,
	Yehezkel Bernat <yehezkel.bernat@intel.com>,
	Amir Levy <amir.jer.levy@intel.com>,
	Andy Lutomirski <luto@kernel.org>,
	Mario.Limonciello@dell.com, Jared.Dominguez@dell.com,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 19/27] thunderbolt: Add new Thunderbolt PCI IDs
Date: Mon, 5 Jun 2017 15:55:07 +0300	[thread overview]
Message-ID: <20170605125507.GL3454@lahna.fi.intel.com> (raw)
In-Reply-To: <20170605120756.GA7793@wunner.de>

On Mon, Jun 05, 2017 at 02:07:56PM +0200, Lukas Wunner wrote:
> On Mon, Jun 05, 2017 at 12:32:49PM +0300, Mika Westerberg wrote:
> > On Mon, Jun 05, 2017 at 10:14:37AM +0200, Lukas Wunner wrote:
> > > On Fri, Jun 02, 2017 at 05:05:16PM +0300, Mika Westerberg wrote:
> > > > --- a/drivers/thunderbolt/nhi.h
> > > > +++ b/drivers/thunderbolt/nhi.h
> > > > @@ -143,4 +143,21 @@ static inline int ring_tx(struct tb_ring *ring, struct ring_frame *frame)
> > > >  	return __ring_enqueue(ring, frame);
> > > >  }
> > > >  
> > > > +/*
> > > > + * PCI IDs used in this driver from Win Ridge forward. There is no
> > > > + * need for the PCI quirk anymore as we will use ICM also on Apple
> > > > + * hardware.
> > > > + */
> > > 
> > > I wrote a patch a few months ago which replaces the PCI quirk with
> > > device links:
> > > 
> > > https://github.com/l1k/linux/commit/8e2e7eaa1163
> > > 
> > > I was going to upstream this sometime this year, it probably would
> > > have been better if I had done that already but I wasn't expecting
> > > your series.
> > > 
> > > In any case, all Thunderbolt PCI device IDs can then be moved to a
> > > header in drivers/thunderbolt/, except for a few TB1 devices which
> > > are referenced by quirk_thunderbolt_hotplug_msi() and
> > > quirk_apple_poweroff_thunderbolt().
> > 
> > OK, but that should be a separate patch, right? On top of your device
> > links patch.
> 
> Yes.  If you like the device links patch, feel free to include it
> in your series or modify it as you see fit.

It is kind of separate thing - here we add the the missing functionality
so that PC users can finally get their TBT devices connected.

We can do those things later when the basic functionality is in place
IMHO.

> I forgot to mention, on Alpine Ridge there's an additional downstream
> bridge with an XHCI controller below it.  A device link will also be
> established from that downstream bridge to the NHI.  I'm not sure if
> that is actually necessary, perhaps it's even undesirable.

OK

> > > As to using ICM on Apple hardware, I've heard from people with
> > > Alpine Ridge MacBook Pros that the native (i.e. non-ICM) driver
> > > at least probes fine.  I've yet to hear from folks who have
> > > actually tested it with any attached TB3 devices, but my expectation
> > > would be that it should work fine in native mode since the protocol
> > > seems to be the same.
> > 
> > I have one Mac with Alpine Ridge (well 4 Thunderbolt ports, 2 Alpine
> > Ridges) and it indeed works in native mode but it can tunnel only one
> > device, no display port.
> 
> Yes.  Those are limitations of the native driver.  It doesn't support
> chaining and DP tunnels yet.  If chained devices and DP devices are
> present on boot, then the EFI NHI driver (on Macs) will establish the
> tunnels and thunderbolt.ko will inherit them.  Once the devices are
> unplugged and replugged, the tunnels are gone and cannot be re-established
> until the machine is rebooted.
> 
> > However, starting ICM on them allows you to connect up to 6 devices
> > including display port. It also allows cross-domain connections where we
> > can implement things like Amir's networking driver.
> > 
> > That's the reason we did it this way - to get Thunderbolt working the
> > same way in Linux than it works on Macs running OS X :)
> 
> Yes, it's useful to have ICM-based Thunderbolt on Macs and personally
> I'm totally fine with making it the default for Macs which support it.
> (I can't speak for Andreas, obviously.)
> 
> However it would be great to give people the *choice* between ICM versus
> native mode, for at least two reasons:
> 
> (1) Native mode uses free software.  (I assume the ICM firmware remains
>     closed source.)
> 
> (2) Native mode allows more versatility, e.g. how PCI tunnels are set up
>     to chained devices: PCI fanout or PCI direct routing, see:
>     https://developer.apple.com/library/content/documentation/HardwareDrivers/Conceptual/ThunderboltDevGuide/Basics/Basics.html
> 
>     Apple supports traffic prioritization to enable audio over Thunderbolt
>     with higher accuracy / minimal skew, I assume their choice to use
>     native mode was largely motivated by being able to support specialized
>     applications like that which are difficult or perhaps impossible to
>     implement in firmware:
>     http://pdfpiw.uspto.gov/.piw?Docid=09015384

Right, but do we need to do it now before we have got any feedback from
users using Macs with Alpine Ridge and ICM? We can always add the module
parameter later if really needed.

> By the way, you wrote in one of the commit messages that ICM is
> "a firmware running on the host controller".  Is it really running on
> the *controller* (i.e. Thunderbolt chip)?  My understanding was that
> ICM is part of the BIOS and executed on the host CPU in System Management
> Mode.

Yes it is. The TBT3 devices (well even TBT2 devices) supporting secure
connect for example implement it in ICM firmware.

With these patches you can even upgrade that ICM firmware on devices and
that also works if you are using the native connection manager.

  reply	other threads:[~2017-06-05 12:55 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-02 14:04 [PATCH v3 00/27] Thunderbolt security levels and NVM firmware upgrade Mika Westerberg
2017-06-02 14:04 ` [PATCH v3 01/27] thunderbolt: Use const buffer pointer in write operations Mika Westerberg
2017-06-02 14:04 ` [PATCH v3 02/27] thunderbolt: No need to read UID of the root switch on resume Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 03/27] thunderbolt: Do not try to read UID if DROM offset is read as 0 Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 04/27] thunderbolt: Do not warn about newer DROM versions Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 05/27] thunderbolt: Add MSI-X support Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 06/27] thunderbolt: Rework capability handling Mika Westerberg
2017-06-04 13:52   ` Lukas Wunner
2017-06-04 15:00     ` Mika Westerberg
2017-06-04 15:06       ` Mika Westerberg
2017-06-04 18:15         ` Andy Shevchenko
2017-06-05  6:42           ` Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 07/27] thunderbolt: Allow passing NULL to tb_ctl_free() Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 08/27] thunderbolt: Introduce thunderbolt bus and connection manager Mika Westerberg
2017-06-05 15:10   ` Andreas Noever
2017-06-02 14:05 ` [PATCH v3 09/27] thunderbolt: Convert switch to a device Mika Westerberg
2017-06-03  9:11   ` Greg Kroah-Hartman
2017-06-02 14:05 ` [PATCH v3 10/27] thunderbolt: Fail switch adding operation if reading DROM fails Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 11/27] thunderbolt: Do not fail if DROM data CRC32 is invalid Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 12/27] thunderbolt: Refactor and fix parsing of port drom entries Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 13/27] thunderbolt: Read vendor and device name from DROM Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 14/27] thunderbolt: Move control channel messages to tb_msgs.h Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 15/27] thunderbolt: Expose get_route() to other files Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 16/27] thunderbolt: Expose make_header() " Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 17/27] thunderbolt: Let the connection manager handle all notifications Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 18/27] thunderbolt: Rework control channel to be more reliable Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 19/27] thunderbolt: Add new Thunderbolt PCI IDs Mika Westerberg
2017-06-05  8:14   ` Lukas Wunner
2017-06-05  9:32     ` Mika Westerberg
2017-06-05 12:07       ` Lukas Wunner
2017-06-05 12:55         ` Mika Westerberg [this message]
2017-06-05 13:33           ` Mika Westerberg
2017-06-05 13:46             ` Lukas Wunner
2017-06-05 13:52               ` Mika Westerberg
2017-06-05 14:21             ` Andy Shevchenko
2017-06-05 14:44               ` Mika Westerberg
2017-06-05 15:20               ` Greg Kroah-Hartman
2017-06-05 15:40                 ` Mika Westerberg
2017-06-05 15:50                   ` Mario.Limonciello
2017-06-05 16:49                     ` Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 20/27] thunderbolt: Add support for NHI mailbox Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 21/27] thunderbolt: Store Thunderbolt generation in the switch structure Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 22/27] thunderbolt: Add support for DMA configuration based mailbox Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 23/27] thunderbolt: Do not touch the hardware if the NHI is gone on resume Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 24/27] thunderbolt: Add support for Internal Connection Manager (ICM) Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 25/27] thunderbolt: Add support for host and device NVM firmware upgrade Mika Westerberg
2017-06-02 14:05 ` [PATCH v3 26/27] thunderbolt: Add documentation how Thunderbolt bus can be used Mika Westerberg
2017-06-03  9:14   ` Greg Kroah-Hartman
2017-06-02 14:05 ` [PATCH v3 27/27] MAINTAINERS: Add maintainers for Thunderbolt driver Mika Westerberg
2017-06-02 17:58 ` [PATCH v3 00/27] Thunderbolt security levels and NVM firmware upgrade Andy Shevchenko
2017-06-03  9:17 ` Greg Kroah-Hartman
2017-06-05  7:18   ` Mika Westerberg
2017-06-05 17:01     ` Andreas Noever
2017-06-05 19:43       ` Mika Westerberg
2017-06-06  6:03       ` Greg Kroah-Hartman
2017-06-06  6:41         ` Mika Westerberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170605125507.GL3454@lahna.fi.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=Jared.Dominguez@dell.com \
    --cc=Mario.Limonciello@dell.com \
    --cc=amir.jer.levy@intel.com \
    --cc=andreas.noever@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=luto@kernel.org \
    --cc=michael.jamet@intel.com \
    --cc=yehezkel.bernat@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.