From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: "open list:THUNDERBOLT DRIVER" <linux-usb@vger.kernel.org>,
"Karol Herbst" <kherbst@redhat.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<nouveau@lists.freedesktop.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<dri-devel@lists.freedesktop.org>,
"open list:X86 PLATFORM DRIVERS"
<platform-driver-x86@vger.kernel.org>,
"Andreas Noever" <andreas.noever@gmail.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Marek Behún" <kabel@kernel.org>,
"open list:RADEON and AMDGPU DRM DRIVERS"
<amd-gfx@lists.freedesktop.org>,
"open list:ACPI" <linux-acpi@vger.kernel.org>,
"Danilo Krummrich" <dakr@redhat.com>,
"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Michael Jamet" <michael.jamet@intel.com>,
"Mark Gross" <markgross@kernel.org>,
"Hans de Goede" <hdegoede@redhat.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Mika Westerberg" <mika.westerberg@linux.intel.com>,
"Xinhui Pan" <Xinhui.Pan@amd.com>,
"open list" <linux-kernel@vger.kernel.org>,
"Lukas Wunner" <lukas@wunner.de>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Yehezkel Bernat" <YehezkelShB@gmail.com>,
"Pali Rohár" <pali@kernel.org>,
"Christian König" <christian.koenig@amd.com>,
"Maciej W . Rozycki" <macro@orcam.me.uk>
Subject: Re: [PATCH v2 5/9] PCI: pciehp: Move check for is_thunderbolt into a quirk
Date: Mon, 6 Nov 2023 14:41:58 +0200 (EET) [thread overview]
Message-ID: <e0a74b28-e862-202e-328-9eca3cb622f@linux.intel.com> (raw)
In-Reply-To: <20231103190758.82911-6-mario.limonciello@amd.com>
On Fri, 3 Nov 2023, Mario Limonciello wrote:
> commit 493fb50e958c ("PCI: pciehp: Assume NoCompl+ for Thunderbolt
> ports") added a check into pciehp code to explicitly set NoCompl+
> for all Intel Thunderbolt controllers, including those that don't
> need it.
>
> This overloaded the purpose of the `is_thunderbolt` member of
> `struct pci_device` because that means that any controller that
> identifies as thunderbolt would set NoCompl+ even if it doesn't
> suffer this deficiency. As that commit helpfully specifies all the
> controllers with the problem, move them into a PCI quirk.
>
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> drivers/pci/hotplug/pciehp_hpc.c | 6 +-----
> drivers/pci/quirks.c | 20 ++++++++++++++++++++
> include/linux/pci.h | 1 +
> 3 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
> index fd713abdfb9f..23a92d681d1c 100644
> --- a/drivers/pci/hotplug/pciehp_hpc.c
> +++ b/drivers/pci/hotplug/pciehp_hpc.c
> @@ -991,11 +991,7 @@ struct controller *pcie_init(struct pcie_device *dev)
> if (pdev->hotplug_user_indicators)
> slot_cap &= ~(PCI_EXP_SLTCAP_AIP | PCI_EXP_SLTCAP_PIP);
>
> - /*
> - * We assume no Thunderbolt controllers support Command Complete events,
> - * but some controllers falsely claim they do.
> - */
> - if (pdev->is_thunderbolt)
> + if (pdev->no_command_complete)
> slot_cap |= PCI_EXP_SLTCAP_NCCS;
>
> ctrl->slot_cap = slot_cap;
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index eeec1d6f9023..4bbf6e33ca11 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3807,6 +3807,26 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> quirk_thunderbolt_hotplug_msi);
>
> +/*
> + * We assume no Thunderbolt controllers support Command Complete events,
> + * but some controllers falsely claim they do.
IMO, this wording makes little sense with the new code. How about taking
some text from the original commit's changelog:
/*
* Certain Thunderbolt 1 controllers falsely claim to support Command
* Completed events.
*/
The code change looks fine.
--
i.
> + */
> +static void quirk_thunderbolt_command_complete(struct pci_dev *pdev)
> +{
> + pdev->no_command_complete = 1;
> +}
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EAGLE_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_PEAK,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_2C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> + quirk_thunderbolt_command_complete);
> #ifdef CONFIG_ACPI
> /*
> * Apple: Shutdown Cactus Ridge Thunderbolt controller.
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 530b0a360514..439c2dac8a3e 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -441,6 +441,7 @@ struct pci_dev {
> unsigned int is_hotplug_bridge:1;
> unsigned int shpc_managed:1; /* SHPC owned by shpchp */
> unsigned int is_thunderbolt:1; /* Thunderbolt controller */
> + unsigned int no_command_complete:1; /* No command completion */
> /*
> * Devices marked being untrusted are the ones that can potentially
> * execute DMA attacks and similar. They are typically connected
>
WARNING: multiple messages have this Message-ID (diff)
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: "Karol Herbst" <kherbst@redhat.com>,
"Lyude Paul" <lyude@redhat.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Hans de Goede" <hdegoede@redhat.com>,
"Mika Westerberg" <mika.westerberg@linux.intel.com>,
"Lukas Wunner" <lukas@wunner.de>,
"Danilo Krummrich" <dakr@redhat.com>,
"David Airlie" <airlied@gmail.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Xinhui Pan" <Xinhui.Pan@amd.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"Mark Gross" <markgross@kernel.org>,
"Andreas Noever" <andreas.noever@gmail.com>,
"Michael Jamet" <michael.jamet@intel.com>,
"Yehezkel Bernat" <YehezkelShB@gmail.com>,
"Pali Rohár" <pali@kernel.org>, "Marek Behún" <kabel@kernel.org>,
"Maciej W . Rozycki" <macro@orcam.me.uk>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<dri-devel@lists.freedesktop.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<nouveau@lists.freedesktop.org>,
"open list" <linux-kernel@vger.kernel.org>,
"open list:RADEON and AMDGPU DRM DRIVERS"
<amd-gfx@lists.freedesktop.org>,
"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
"open list:ACPI" <linux-acpi@vger.kernel.org>,
"open list:X86 PLATFORM DRIVERS"
<platform-driver-x86@vger.kernel.org>,
"open list:THUNDERBOLT DRIVER" <linux-usb@vger.kernel.org>
Subject: Re: [PATCH v2 5/9] PCI: pciehp: Move check for is_thunderbolt into a quirk
Date: Mon, 6 Nov 2023 14:41:58 +0200 (EET) [thread overview]
Message-ID: <e0a74b28-e862-202e-328-9eca3cb622f@linux.intel.com> (raw)
In-Reply-To: <20231103190758.82911-6-mario.limonciello@amd.com>
On Fri, 3 Nov 2023, Mario Limonciello wrote:
> commit 493fb50e958c ("PCI: pciehp: Assume NoCompl+ for Thunderbolt
> ports") added a check into pciehp code to explicitly set NoCompl+
> for all Intel Thunderbolt controllers, including those that don't
> need it.
>
> This overloaded the purpose of the `is_thunderbolt` member of
> `struct pci_device` because that means that any controller that
> identifies as thunderbolt would set NoCompl+ even if it doesn't
> suffer this deficiency. As that commit helpfully specifies all the
> controllers with the problem, move them into a PCI quirk.
>
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> drivers/pci/hotplug/pciehp_hpc.c | 6 +-----
> drivers/pci/quirks.c | 20 ++++++++++++++++++++
> include/linux/pci.h | 1 +
> 3 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
> index fd713abdfb9f..23a92d681d1c 100644
> --- a/drivers/pci/hotplug/pciehp_hpc.c
> +++ b/drivers/pci/hotplug/pciehp_hpc.c
> @@ -991,11 +991,7 @@ struct controller *pcie_init(struct pcie_device *dev)
> if (pdev->hotplug_user_indicators)
> slot_cap &= ~(PCI_EXP_SLTCAP_AIP | PCI_EXP_SLTCAP_PIP);
>
> - /*
> - * We assume no Thunderbolt controllers support Command Complete events,
> - * but some controllers falsely claim they do.
> - */
> - if (pdev->is_thunderbolt)
> + if (pdev->no_command_complete)
> slot_cap |= PCI_EXP_SLTCAP_NCCS;
>
> ctrl->slot_cap = slot_cap;
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index eeec1d6f9023..4bbf6e33ca11 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3807,6 +3807,26 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> quirk_thunderbolt_hotplug_msi);
>
> +/*
> + * We assume no Thunderbolt controllers support Command Complete events,
> + * but some controllers falsely claim they do.
IMO, this wording makes little sense with the new code. How about taking
some text from the original commit's changelog:
/*
* Certain Thunderbolt 1 controllers falsely claim to support Command
* Completed events.
*/
The code change looks fine.
--
i.
> + */
> +static void quirk_thunderbolt_command_complete(struct pci_dev *pdev)
> +{
> + pdev->no_command_complete = 1;
> +}
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EAGLE_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_PEAK,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_2C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> + quirk_thunderbolt_command_complete);
> #ifdef CONFIG_ACPI
> /*
> * Apple: Shutdown Cactus Ridge Thunderbolt controller.
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 530b0a360514..439c2dac8a3e 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -441,6 +441,7 @@ struct pci_dev {
> unsigned int is_hotplug_bridge:1;
> unsigned int shpc_managed:1; /* SHPC owned by shpchp */
> unsigned int is_thunderbolt:1; /* Thunderbolt controller */
> + unsigned int no_command_complete:1; /* No command completion */
> /*
> * Devices marked being untrusted are the ones that can potentially
> * execute DMA attacks and similar. They are typically connected
>
WARNING: multiple messages have this Message-ID (diff)
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: "open list:THUNDERBOLT DRIVER" <linux-usb@vger.kernel.org>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<nouveau@lists.freedesktop.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<dri-devel@lists.freedesktop.org>,
"open list:X86 PLATFORM DRIVERS"
<platform-driver-x86@vger.kernel.org>,
"Andreas Noever" <andreas.noever@gmail.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Marek Behún" <kabel@kernel.org>,
"open list:RADEON and AMDGPU DRM DRIVERS"
<amd-gfx@lists.freedesktop.org>,
"open list:ACPI" <linux-acpi@vger.kernel.org>,
"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Michael Jamet" <michael.jamet@intel.com>,
"Mark Gross" <markgross@kernel.org>,
"Hans de Goede" <hdegoede@redhat.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Mika Westerberg" <mika.westerberg@linux.intel.com>,
"Xinhui Pan" <Xinhui.Pan@amd.com>,
"open list" <linux-kernel@vger.kernel.org>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Yehezkel Bernat" <YehezkelShB@gmail.com>,
"Pali Rohár" <pali@kernel.org>,
"Christian König" <christian.koenig@amd.com>,
"Maciej W . Rozycki" <macro@orcam.me.uk>
Subject: Re: [PATCH v2 5/9] PCI: pciehp: Move check for is_thunderbolt into a quirk
Date: Mon, 6 Nov 2023 14:41:58 +0200 (EET) [thread overview]
Message-ID: <e0a74b28-e862-202e-328-9eca3cb622f@linux.intel.com> (raw)
In-Reply-To: <20231103190758.82911-6-mario.limonciello@amd.com>
On Fri, 3 Nov 2023, Mario Limonciello wrote:
> commit 493fb50e958c ("PCI: pciehp: Assume NoCompl+ for Thunderbolt
> ports") added a check into pciehp code to explicitly set NoCompl+
> for all Intel Thunderbolt controllers, including those that don't
> need it.
>
> This overloaded the purpose of the `is_thunderbolt` member of
> `struct pci_device` because that means that any controller that
> identifies as thunderbolt would set NoCompl+ even if it doesn't
> suffer this deficiency. As that commit helpfully specifies all the
> controllers with the problem, move them into a PCI quirk.
>
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> drivers/pci/hotplug/pciehp_hpc.c | 6 +-----
> drivers/pci/quirks.c | 20 ++++++++++++++++++++
> include/linux/pci.h | 1 +
> 3 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
> index fd713abdfb9f..23a92d681d1c 100644
> --- a/drivers/pci/hotplug/pciehp_hpc.c
> +++ b/drivers/pci/hotplug/pciehp_hpc.c
> @@ -991,11 +991,7 @@ struct controller *pcie_init(struct pcie_device *dev)
> if (pdev->hotplug_user_indicators)
> slot_cap &= ~(PCI_EXP_SLTCAP_AIP | PCI_EXP_SLTCAP_PIP);
>
> - /*
> - * We assume no Thunderbolt controllers support Command Complete events,
> - * but some controllers falsely claim they do.
> - */
> - if (pdev->is_thunderbolt)
> + if (pdev->no_command_complete)
> slot_cap |= PCI_EXP_SLTCAP_NCCS;
>
> ctrl->slot_cap = slot_cap;
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index eeec1d6f9023..4bbf6e33ca11 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3807,6 +3807,26 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> quirk_thunderbolt_hotplug_msi);
>
> +/*
> + * We assume no Thunderbolt controllers support Command Complete events,
> + * but some controllers falsely claim they do.
IMO, this wording makes little sense with the new code. How about taking
some text from the original commit's changelog:
/*
* Certain Thunderbolt 1 controllers falsely claim to support Command
* Completed events.
*/
The code change looks fine.
--
i.
> + */
> +static void quirk_thunderbolt_command_complete(struct pci_dev *pdev)
> +{
> + pdev->no_command_complete = 1;
> +}
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EAGLE_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_PEAK,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_2C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> + quirk_thunderbolt_command_complete);
> #ifdef CONFIG_ACPI
> /*
> * Apple: Shutdown Cactus Ridge Thunderbolt controller.
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 530b0a360514..439c2dac8a3e 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -441,6 +441,7 @@ struct pci_dev {
> unsigned int is_hotplug_bridge:1;
> unsigned int shpc_managed:1; /* SHPC owned by shpchp */
> unsigned int is_thunderbolt:1; /* Thunderbolt controller */
> + unsigned int no_command_complete:1; /* No command completion */
> /*
> * Devices marked being untrusted are the ones that can potentially
> * execute DMA attacks and similar. They are typically connected
>
WARNING: multiple messages have this Message-ID (diff)
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: "open list:THUNDERBOLT DRIVER" <linux-usb@vger.kernel.org>,
"Karol Herbst" <kherbst@redhat.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<nouveau@lists.freedesktop.org>,
"open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS"
<dri-devel@lists.freedesktop.org>,
"open list:X86 PLATFORM DRIVERS"
<platform-driver-x86@vger.kernel.org>,
"Andreas Noever" <andreas.noever@gmail.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Marek Behún" <kabel@kernel.org>,
"open list:RADEON and AMDGPU DRM DRIVERS"
<amd-gfx@lists.freedesktop.org>,
"open list:ACPI" <linux-acpi@vger.kernel.org>,
"Danilo Krummrich" <dakr@redhat.com>,
"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Michael Jamet" <michael.jamet@intel.com>,
"Mark Gross" <markgross@kernel.org>,
"Hans de Goede" <hdegoede@redhat.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Mika Westerberg" <mika.westerberg@linux.intel.com>,
"Xinhui Pan" <Xinhui.Pan@amd.com>,
"open list" <linux-kernel@vger.kernel.org>,
"Yehezkel Bernat" <YehezkelShB@gmail.com>,
"Pali Rohár" <pali@kernel.org>,
"Christian König" <christian.koenig@amd.com>,
"Maciej W . Rozycki" <macro@orcam.me.uk>
Subject: Re: [PATCH v2 5/9] PCI: pciehp: Move check for is_thunderbolt into a quirk
Date: Mon, 6 Nov 2023 14:41:58 +0200 (EET) [thread overview]
Message-ID: <e0a74b28-e862-202e-328-9eca3cb622f@linux.intel.com> (raw)
In-Reply-To: <20231103190758.82911-6-mario.limonciello@amd.com>
On Fri, 3 Nov 2023, Mario Limonciello wrote:
> commit 493fb50e958c ("PCI: pciehp: Assume NoCompl+ for Thunderbolt
> ports") added a check into pciehp code to explicitly set NoCompl+
> for all Intel Thunderbolt controllers, including those that don't
> need it.
>
> This overloaded the purpose of the `is_thunderbolt` member of
> `struct pci_device` because that means that any controller that
> identifies as thunderbolt would set NoCompl+ even if it doesn't
> suffer this deficiency. As that commit helpfully specifies all the
> controllers with the problem, move them into a PCI quirk.
>
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> drivers/pci/hotplug/pciehp_hpc.c | 6 +-----
> drivers/pci/quirks.c | 20 ++++++++++++++++++++
> include/linux/pci.h | 1 +
> 3 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
> index fd713abdfb9f..23a92d681d1c 100644
> --- a/drivers/pci/hotplug/pciehp_hpc.c
> +++ b/drivers/pci/hotplug/pciehp_hpc.c
> @@ -991,11 +991,7 @@ struct controller *pcie_init(struct pcie_device *dev)
> if (pdev->hotplug_user_indicators)
> slot_cap &= ~(PCI_EXP_SLTCAP_AIP | PCI_EXP_SLTCAP_PIP);
>
> - /*
> - * We assume no Thunderbolt controllers support Command Complete events,
> - * but some controllers falsely claim they do.
> - */
> - if (pdev->is_thunderbolt)
> + if (pdev->no_command_complete)
> slot_cap |= PCI_EXP_SLTCAP_NCCS;
>
> ctrl->slot_cap = slot_cap;
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index eeec1d6f9023..4bbf6e33ca11 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3807,6 +3807,26 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> quirk_thunderbolt_hotplug_msi);
>
> +/*
> + * We assume no Thunderbolt controllers support Command Complete events,
> + * but some controllers falsely claim they do.
IMO, this wording makes little sense with the new code. How about taking
some text from the original commit's changelog:
/*
* Certain Thunderbolt 1 controllers falsely claim to support Command
* Completed events.
*/
The code change looks fine.
--
i.
> + */
> +static void quirk_thunderbolt_command_complete(struct pci_dev *pdev)
> +{
> + pdev->no_command_complete = 1;
> +}
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EAGLE_RIDGE,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LIGHT_PEAK,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_2C,
> + quirk_thunderbolt_command_complete);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
> + quirk_thunderbolt_command_complete);
> #ifdef CONFIG_ACPI
> /*
> * Apple: Shutdown Cactus Ridge Thunderbolt controller.
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 530b0a360514..439c2dac8a3e 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -441,6 +441,7 @@ struct pci_dev {
> unsigned int is_hotplug_bridge:1;
> unsigned int shpc_managed:1; /* SHPC owned by shpchp */
> unsigned int is_thunderbolt:1; /* Thunderbolt controller */
> + unsigned int no_command_complete:1; /* No command completion */
> /*
> * Devices marked being untrusted are the ones that can potentially
> * execute DMA attacks and similar. They are typically connected
>
next prev parent reply other threads:[~2023-11-06 13:53 UTC|newest]
Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-03 19:07 [PATCH v2 0/9] Improvements to pcie_bandwidth_available() for eGPUs Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [PATCH v2 1/9] drm/nouveau: Switch from pci_is_thunderbolt_attached() to dev_is_removable() Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-06 12:25 ` Ilpo Järvinen
2023-11-06 12:25 ` Ilpo Järvinen
2023-11-06 12:25 ` Ilpo Järvinen
2023-11-06 12:25 ` Ilpo Järvinen
2023-11-06 16:47 ` Mika Westerberg
2023-11-06 16:47 ` Mika Westerberg
2023-11-06 16:47 ` [Nouveau] " Mika Westerberg
2023-11-06 16:47 ` Mika Westerberg
2023-11-06 16:49 ` Mario Limonciello
2023-11-06 16:49 ` Mario Limonciello
2023-11-06 16:49 ` [Nouveau] " Mario Limonciello
2023-11-06 16:49 ` Mario Limonciello
2023-11-03 19:07 ` [PATCH v2 2/9] drm/radeon: " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-06 12:27 ` Ilpo Järvinen
2023-11-06 12:27 ` Ilpo Järvinen
2023-11-06 12:27 ` Ilpo Järvinen
2023-11-06 12:27 ` Ilpo Järvinen
2023-11-03 19:07 ` [PATCH v2 3/9] PCI: Drop pci_is_thunderbolt_attached() Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-04 0:37 ` kernel test robot
2023-11-04 0:37 ` kernel test robot
2023-11-04 0:37 ` kernel test robot
2023-11-06 12:33 ` Ilpo Järvinen
2023-11-06 12:33 ` Ilpo Järvinen
2023-11-06 12:33 ` Ilpo Järvinen
2023-11-06 12:33 ` Ilpo Järvinen
2023-11-06 16:46 ` Mario Limonciello
2023-11-06 16:46 ` Mario Limonciello
2023-11-06 16:46 ` [Nouveau] " Mario Limonciello
2023-11-06 16:46 ` Mario Limonciello
2023-11-03 19:07 ` [PATCH v2 4/9] PCI: Move the `PCI_CLASS_SERIAL_USB_USB4` definition to common header Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [PATCH v2 5/9] PCI: pciehp: Move check for is_thunderbolt into a quirk Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-06 12:41 ` Ilpo Järvinen [this message]
2023-11-06 12:41 ` Ilpo Järvinen
2023-11-06 12:41 ` Ilpo Järvinen
2023-11-06 12:41 ` Ilpo Järvinen
2023-11-06 16:50 ` Mario Limonciello
2023-11-06 16:50 ` Mario Limonciello
2023-11-06 16:50 ` [Nouveau] " Mario Limonciello
2023-11-06 16:50 ` Mario Limonciello
2023-11-03 19:07 ` [PATCH v2 6/9] PCI: Rename is_thunderbolt to is_tunneled Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:38 ` Hans de Goede
2023-11-03 19:38 ` Hans de Goede
2023-11-03 19:38 ` [Nouveau] " Hans de Goede
2023-11-03 19:38 ` Hans de Goede
2023-11-05 17:39 ` Lukas Wunner
2023-11-05 17:39 ` Lukas Wunner
2023-11-05 17:39 ` [Nouveau] " Lukas Wunner
2023-11-05 17:39 ` Lukas Wunner
2023-11-06 16:59 ` Mario Limonciello
2023-11-06 16:59 ` Mario Limonciello
2023-11-06 16:59 ` [Nouveau] " Mario Limonciello
2023-11-06 16:59 ` Mario Limonciello
2023-11-06 18:18 ` Lukas Wunner
2023-11-06 18:18 ` Lukas Wunner
2023-11-06 18:18 ` [Nouveau] " Lukas Wunner
2023-11-06 18:18 ` Lukas Wunner
2023-11-03 19:07 ` [PATCH v2 7/9] PCI: ACPI: Detect PCIe root ports that are used for tunneling Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [PATCH v2 8/9] PCI: Exclude PCIe ports used for tunneling in pcie_bandwidth_available() Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-04 6:57 ` Lazar, Lijo
2023-11-04 6:57 ` Lazar, Lijo
2023-11-04 6:57 ` Lazar, Lijo
2023-11-04 6:57 ` Lazar, Lijo
2023-11-06 12:52 ` Ilpo Järvinen
2023-11-06 12:52 ` Ilpo Järvinen
2023-11-06 12:52 ` Ilpo Järvinen
2023-11-06 12:52 ` Ilpo Järvinen
2023-11-06 16:51 ` Mario Limonciello
2023-11-06 16:51 ` Mario Limonciello
2023-11-06 16:51 ` [Nouveau] " Mario Limonciello
2023-11-06 16:51 ` Mario Limonciello
2023-11-06 18:10 ` Lukas Wunner
2023-11-06 18:10 ` Lukas Wunner
2023-11-06 18:10 ` [Nouveau] " Lukas Wunner
2023-11-06 18:10 ` Lukas Wunner
2023-11-06 18:44 ` Mario Limonciello
2023-11-06 18:44 ` Mario Limonciello
2023-11-06 18:44 ` [Nouveau] " Mario Limonciello
2023-11-06 18:44 ` Mario Limonciello
2023-11-06 18:56 ` Lukas Wunner
2023-11-06 18:56 ` Lukas Wunner
2023-11-06 18:56 ` [Nouveau] " Lukas Wunner
2023-11-06 18:56 ` Lukas Wunner
2023-11-07 5:45 ` Mika Westerberg
2023-11-07 5:45 ` Mika Westerberg
2023-11-07 5:45 ` [Nouveau] " Mika Westerberg
2023-11-07 5:45 ` Mika Westerberg
2023-11-07 6:24 ` Mika Westerberg
2023-11-07 6:24 ` Mika Westerberg
2023-11-07 6:24 ` [Nouveau] " Mika Westerberg
2023-11-07 6:24 ` Mika Westerberg
2023-11-03 19:07 ` [PATCH v2 9/9] PCI: Add a quirk to mark 0x8086 : 0x9a23 as supporting PCIe tunneling Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:07 ` [Nouveau] " Mario Limonciello
2023-11-03 19:07 ` Mario Limonciello
2023-11-03 19:20 ` [PATCH v2 0/9] Improvements to pcie_bandwidth_available() for eGPUs Bjorn Helgaas
2023-11-03 19:20 ` Bjorn Helgaas
2023-11-03 19:20 ` [Nouveau] " Bjorn Helgaas
2023-11-03 19:20 ` Bjorn Helgaas
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=e0a74b28-e862-202e-328-9eca3cb622f@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=Xinhui.Pan@amd.com \
--cc=YehezkelShB@gmail.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=andreas.noever@gmail.com \
--cc=bhelgaas@google.com \
--cc=christian.koenig@amd.com \
--cc=dakr@redhat.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=hdegoede@redhat.com \
--cc=kabel@kernel.org \
--cc=kherbst@redhat.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=macro@orcam.me.uk \
--cc=mani@kernel.org \
--cc=mario.limonciello@amd.com \
--cc=markgross@kernel.org \
--cc=michael.jamet@intel.com \
--cc=mika.westerberg@linux.intel.com \
--cc=nouveau@lists.freedesktop.org \
--cc=pali@kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=rafael@kernel.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.