All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukas Wunner <lukas@wunner.de>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: Hans de Goede <hdegoede@redhat.com>,
	Michael Jamet <michael.jamet@intel.com>,
	"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
	"open list:THUNDERBOLT DRIVER" <linux-usb@vger.kernel.org>,
	Yehezkel Bernat <YehezkelShB@gmail.com>,
	"open list:DRM DRIVERS" <dri-devel@lists.freedesktop.org>,
	Andreas Noever <andreas.noever@gmail.com>,
	"open list:RADEON and AMDGPU DRM DRIVERS"
	<amd-gfx@lists.freedesktop.org>,
	"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
	<nouveau@lists.freedesktop.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alexander.Deucher@amd.com,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: Re: [PATCH v3 04/12] PCI: Drop the `is_thunderbolt` attribute from PCI core
Date: Sun, 13 Feb 2022 09:20:56 +0100	[thread overview]
Message-ID: <20220213082056.GA23572@wunner.de> (raw)
In-Reply-To: <20220211193250.1904843-5-mario.limonciello@amd.com>

On Fri, Feb 11, 2022 at 01:32:42PM -0600, Mario Limonciello wrote:
> The `is_thunderbolt` attribute is currently a dumping ground for a
> variety of things.

It's not as arbitrary as it may seem.  Quite a bit of thought went into
the current design.


> Instead use the driver core removable attribute to indicate the
> detail a device is attached to a thunderbolt or USB4 chain.

You're missing the point that "is_thunderbolt" is set on the *controller*
(i.e. its upstream and downstream ports).

The controller itself is *not* removable if it's the host controller.

However a device can be assumed to be removable if it has an ancestor
which has the "is_thunderbolt" flag set.


>  static void pci_set_removable(struct pci_dev *dev)
>  {
>  	struct pci_dev *parent = pci_upstream_bridge(dev);
> +	u16 vsec;
> +
> +	/* Is the device a Thunderbolt controller? */
> +	vsec = pci_find_vsec_capability(dev, PCI_VENDOR_ID_INTEL, PCI_VSEC_ID_INTEL_TBT);

This doesn't make any sense because the host controller is not
removable.


> @@ -1860,7 +1855,6 @@ int pci_setup_device(struct pci_dev *dev)
>  	dev->cfg_size = pci_cfg_space_size(dev);
>  
>  	/* Need to have dev->cfg_size ready */
> -	set_pcie_thunderbolt(dev);
>  
>  	set_pcie_untrusted(dev);

Either drop the blank line or drop the code comment if set_pcie_untrusted()
doesn't need dev->cfg_size.


> diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple-gmux.c
> index 57553f9b4d1d..04232fbc7d56 100644
> --- a/drivers/platform/x86/apple-gmux.c
> +++ b/drivers/platform/x86/apple-gmux.c
> @@ -596,7 +596,7 @@ static int gmux_resume(struct device *dev)
>  
>  static int is_thunderbolt(struct device *dev, void *data)
>  {
> -	return to_pci_dev(dev)->is_thunderbolt;
> +	return pci_is_thunderbolt_attached(to_pci_dev(dev));
>  }

No, the gmux driver changes its behavior if a Thunderbolt host
controller is present.  Not if there's a Thunderbolt-attached
device present.

Thanks,

Lukas

WARNING: multiple messages have this Message-ID (diff)
From: Lukas Wunner <lukas@wunner.de>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
	"open list:THUNDERBOLT DRIVER" <linux-usb@vger.kernel.org>,
	"open list:RADEON and AMDGPU DRM DRIVERS" 
	<amd-gfx@lists.freedesktop.org>,
	"open list:DRM DRIVERS" <dri-devel@lists.freedesktop.org>,
	"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS" 
	<nouveau@lists.freedesktop.org>,
	Andreas Noever <andreas.noever@gmail.com>,
	Michael Jamet <michael.jamet@intel.com>,
	Yehezkel Bernat <YehezkelShB@gmail.com>,
	Alexander.Deucher@amd.com, Hans de Goede <hdegoede@redhat.com>
Subject: Re: [PATCH v3 04/12] PCI: Drop the `is_thunderbolt` attribute from PCI core
Date: Sun, 13 Feb 2022 09:20:56 +0100	[thread overview]
Message-ID: <20220213082056.GA23572@wunner.de> (raw)
In-Reply-To: <20220211193250.1904843-5-mario.limonciello@amd.com>

On Fri, Feb 11, 2022 at 01:32:42PM -0600, Mario Limonciello wrote:
> The `is_thunderbolt` attribute is currently a dumping ground for a
> variety of things.

It's not as arbitrary as it may seem.  Quite a bit of thought went into
the current design.


> Instead use the driver core removable attribute to indicate the
> detail a device is attached to a thunderbolt or USB4 chain.

You're missing the point that "is_thunderbolt" is set on the *controller*
(i.e. its upstream and downstream ports).

The controller itself is *not* removable if it's the host controller.

However a device can be assumed to be removable if it has an ancestor
which has the "is_thunderbolt" flag set.


>  static void pci_set_removable(struct pci_dev *dev)
>  {
>  	struct pci_dev *parent = pci_upstream_bridge(dev);
> +	u16 vsec;
> +
> +	/* Is the device a Thunderbolt controller? */
> +	vsec = pci_find_vsec_capability(dev, PCI_VENDOR_ID_INTEL, PCI_VSEC_ID_INTEL_TBT);

This doesn't make any sense because the host controller is not
removable.


> @@ -1860,7 +1855,6 @@ int pci_setup_device(struct pci_dev *dev)
>  	dev->cfg_size = pci_cfg_space_size(dev);
>  
>  	/* Need to have dev->cfg_size ready */
> -	set_pcie_thunderbolt(dev);
>  
>  	set_pcie_untrusted(dev);

Either drop the blank line or drop the code comment if set_pcie_untrusted()
doesn't need dev->cfg_size.


> diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple-gmux.c
> index 57553f9b4d1d..04232fbc7d56 100644
> --- a/drivers/platform/x86/apple-gmux.c
> +++ b/drivers/platform/x86/apple-gmux.c
> @@ -596,7 +596,7 @@ static int gmux_resume(struct device *dev)
>  
>  static int is_thunderbolt(struct device *dev, void *data)
>  {
> -	return to_pci_dev(dev)->is_thunderbolt;
> +	return pci_is_thunderbolt_attached(to_pci_dev(dev));
>  }

No, the gmux driver changes its behavior if a Thunderbolt host
controller is present.  Not if there's a Thunderbolt-attached
device present.

Thanks,

Lukas

WARNING: multiple messages have this Message-ID (diff)
From: Lukas Wunner <lukas@wunner.de>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: Hans de Goede <hdegoede@redhat.com>,
	Michael Jamet <michael.jamet@intel.com>,
	"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
	"open list:THUNDERBOLT DRIVER" <linux-usb@vger.kernel.org>,
	Yehezkel Bernat <YehezkelShB@gmail.com>,
	"open list:DRM DRIVERS" <dri-devel@lists.freedesktop.org>,
	Andreas Noever <andreas.noever@gmail.com>,
	"open list:RADEON and AMDGPU DRM DRIVERS"
	<amd-gfx@lists.freedesktop.org>,
	"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
	<nouveau@lists.freedesktop.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alexander.Deucher@amd.com,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: Re: [Nouveau] [PATCH v3 04/12] PCI: Drop the `is_thunderbolt` attribute from PCI core
Date: Sun, 13 Feb 2022 09:20:56 +0100	[thread overview]
Message-ID: <20220213082056.GA23572@wunner.de> (raw)
In-Reply-To: <20220211193250.1904843-5-mario.limonciello@amd.com>

On Fri, Feb 11, 2022 at 01:32:42PM -0600, Mario Limonciello wrote:
> The `is_thunderbolt` attribute is currently a dumping ground for a
> variety of things.

It's not as arbitrary as it may seem.  Quite a bit of thought went into
the current design.


> Instead use the driver core removable attribute to indicate the
> detail a device is attached to a thunderbolt or USB4 chain.

You're missing the point that "is_thunderbolt" is set on the *controller*
(i.e. its upstream and downstream ports).

The controller itself is *not* removable if it's the host controller.

However a device can be assumed to be removable if it has an ancestor
which has the "is_thunderbolt" flag set.


>  static void pci_set_removable(struct pci_dev *dev)
>  {
>  	struct pci_dev *parent = pci_upstream_bridge(dev);
> +	u16 vsec;
> +
> +	/* Is the device a Thunderbolt controller? */
> +	vsec = pci_find_vsec_capability(dev, PCI_VENDOR_ID_INTEL, PCI_VSEC_ID_INTEL_TBT);

This doesn't make any sense because the host controller is not
removable.


> @@ -1860,7 +1855,6 @@ int pci_setup_device(struct pci_dev *dev)
>  	dev->cfg_size = pci_cfg_space_size(dev);
>  
>  	/* Need to have dev->cfg_size ready */
> -	set_pcie_thunderbolt(dev);
>  
>  	set_pcie_untrusted(dev);

Either drop the blank line or drop the code comment if set_pcie_untrusted()
doesn't need dev->cfg_size.


> diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple-gmux.c
> index 57553f9b4d1d..04232fbc7d56 100644
> --- a/drivers/platform/x86/apple-gmux.c
> +++ b/drivers/platform/x86/apple-gmux.c
> @@ -596,7 +596,7 @@ static int gmux_resume(struct device *dev)
>  
>  static int is_thunderbolt(struct device *dev, void *data)
>  {
> -	return to_pci_dev(dev)->is_thunderbolt;
> +	return pci_is_thunderbolt_attached(to_pci_dev(dev));
>  }

No, the gmux driver changes its behavior if a Thunderbolt host
controller is present.  Not if there's a Thunderbolt-attached
device present.

Thanks,

Lukas

  reply	other threads:[~2022-02-13  8:29 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-11 19:32 [PATCH v3 00/12] Overhaul `is_thunderbolt` Mario Limonciello
2022-02-11 19:32 ` Mario Limonciello
2022-02-11 19:32 ` [Nouveau] " Mario Limonciello
2022-02-11 19:32 ` Mario Limonciello
2022-02-11 19:32 ` [PATCH v3 01/12] thunderbolt: move definition of PCI_CLASS_SERIAL_USB_USB4 Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 21:02   ` Bjorn Helgaas
2022-02-11 21:02     ` Bjorn Helgaas
2022-02-11 21:02     ` [Nouveau] " Bjorn Helgaas
2022-02-11 21:02     ` Bjorn Helgaas
2022-02-11 19:32 ` [PATCH v3 02/12] PCI: Move `is_thunderbolt` check for lack of command completed to a quirk Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 21:20   ` Bjorn Helgaas
2022-02-11 21:20     ` Bjorn Helgaas
2022-02-11 21:20     ` [Nouveau] " Bjorn Helgaas
2022-02-11 21:20     ` Bjorn Helgaas
2022-02-11 19:32 ` [PATCH v3 03/12] PCI: Move check for old Apple Thunderbolt controllers into " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 21:35   ` Bjorn Helgaas
2022-02-11 21:35     ` Bjorn Helgaas
2022-02-11 21:35     ` [Nouveau] " Bjorn Helgaas
2022-02-11 21:35     ` Bjorn Helgaas
2022-02-11 22:06     ` Limonciello, Mario
2022-02-11 22:06       ` Limonciello, Mario
2022-02-11 22:06       ` [Nouveau] " Limonciello, Mario
2022-02-11 22:06       ` Limonciello, Mario
2022-02-14  7:15       ` Mika Westerberg
2022-02-14  7:15         ` Mika Westerberg
2022-02-14  7:15         ` [Nouveau] " Mika Westerberg
2022-02-14  7:15         ` Mika Westerberg
2022-02-13  9:19   ` Lukas Wunner
2022-02-13  9:19     ` [Nouveau] " Lukas Wunner
2022-02-13  9:19     ` Lukas Wunner
2022-02-13  9:21     ` Lukas Wunner
2022-02-13  9:21       ` [Nouveau] " Lukas Wunner
2022-02-13  9:21       ` Lukas Wunner
2022-02-14  7:23     ` Mika Westerberg
2022-02-14  7:23       ` [Nouveau] " Mika Westerberg
2022-02-14  7:23       ` Mika Westerberg
2022-02-11 19:32 ` [PATCH v3 04/12] PCI: Drop the `is_thunderbolt` attribute from PCI core Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-13  8:20   ` Lukas Wunner [this message]
2022-02-13  8:20     ` [Nouveau] " Lukas Wunner
2022-02-13  8:20     ` Lukas Wunner
2022-02-13 17:26     ` Limonciello, Mario
2022-02-13 17:26       ` [Nouveau] " Limonciello, Mario
2022-02-13 17:26       ` Limonciello, Mario
2022-02-14  7:27       ` Mika Westerberg
2022-02-14  7:27         ` Mika Westerberg
2022-02-14  7:27         ` [Nouveau] " Mika Westerberg
2022-02-14  7:27         ` Mika Westerberg
2022-02-11 19:32 ` [PATCH v3 05/12] PCI: Detect root port of internal USB4 devices by `usb4-host-interface` Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 21:45   ` Bjorn Helgaas
2022-02-11 21:45     ` Bjorn Helgaas
2022-02-11 21:45     ` [Nouveau] " Bjorn Helgaas
2022-02-11 21:45     ` Bjorn Helgaas
2022-02-14  7:34     ` Mika Westerberg
2022-02-14  7:34       ` Mika Westerberg
2022-02-14  7:34       ` [Nouveau] " Mika Westerberg
2022-02-14  7:34       ` Mika Westerberg
2022-02-14  8:52       ` Lukas Wunner
2022-02-14  8:52         ` [Nouveau] " Lukas Wunner
2022-02-14  8:52         ` Lukas Wunner
2022-02-14 10:56         ` Mika Westerberg
2022-02-14 10:56           ` Mika Westerberg
2022-02-14 11:08             ` [Nouveau] " Mika Westerberg
2022-02-14 11:08             ` Mika Westerberg
2022-02-14 11:08             ` Mika Westerberg
2022-02-14 10:56             ` [Nouveau] " Mika Westerberg
2022-02-14 10:56             ` Mika Westerberg
2022-02-14 11:11             ` Mika Westerberg
2022-02-14 11:11               ` [Nouveau] " Mika Westerberg
2022-02-14 11:11               ` Mika Westerberg
2022-02-17 20:40             ` Bjorn Helgaas
2022-02-17 20:40               ` Bjorn Helgaas
2022-02-17 20:40               ` [Nouveau] " Bjorn Helgaas
2022-02-17 20:40               ` Bjorn Helgaas
2022-02-11 19:32 ` [PATCH v3 06/12] PCI: Explicitly mark USB4 NHI devices as removable Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 21:58   ` Bjorn Helgaas
2022-02-11 21:58     ` [Nouveau] " Bjorn Helgaas
2022-02-11 21:58     ` Bjorn Helgaas
2022-02-11 19:32 ` [PATCH v3 07/12] PCI: Set ports for discrete USB4 controllers appropriately Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 22:10   ` Bjorn Helgaas
2022-02-11 22:10     ` Bjorn Helgaas
2022-02-11 22:10     ` [Nouveau] " Bjorn Helgaas
2022-02-11 22:10     ` Bjorn Helgaas
2022-02-11 19:32 ` [PATCH v3 08/12] drm/amd: drop the use of `pci_is_thunderbolt_attached` Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32 ` [PATCH v3 09/12] drm/nouveau: " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32 ` [PATCH v3 10/12] drm/radeon: " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32 ` [PATCH v3 11/12] platform/x86: amd-gmux: " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32 ` [PATCH v3 12/12] PCI: drop `pci_is_thunderbolt_attached` Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello
2022-02-11 19:32   ` [Nouveau] " Mario Limonciello
2022-02-11 19:32   ` Mario Limonciello

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=20220213082056.GA23572@wunner.de \
    --to=lukas@wunner.de \
    --cc=Alexander.Deucher@amd.com \
    --cc=YehezkelShB@gmail.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=andreas.noever@gmail.com \
    --cc=bhelgaas@google.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hdegoede@redhat.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mario.limonciello@amd.com \
    --cc=michael.jamet@intel.com \
    --cc=mika.westerberg@linux.intel.com \
    --cc=nouveau@lists.freedesktop.org \
    /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.