[PATCH v2 1/2] PCI/ASPM: Override the ASPM and Clock PM states set by BIOS for devicetree platforms
Jon Hunter
jonathanh at nvidia.com
Thu Feb 26 08:55:34 PST 2026
On 26/02/2026 11:08, Manivannan Sadhasivam wrote:
...
> Since we know that ASPM is the issue on your platform and the failure also
> confirms that ASPM was never enabled before, I'd suggest disabling ASPM for the
> Root Port as a workaround:
>
> ```
> diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c
> index 06571d806ab3..f504b4ffbcb6 100644
> --- a/drivers/pci/controller/dwc/pcie-tegra194.c
> +++ b/drivers/pci/controller/dwc/pcie-tegra194.c
> @@ -2499,6 +2499,13 @@ module_platform_driver(tegra_pcie_dw_driver);
>
> MODULE_DEVICE_TABLE(of, tegra_pcie_dw_of_match);
>
> +static void tegra_pcie_quirk_disable_aspm(struct pci_dev *dev)
> +{
> + pcie_aspm_remove_cap(dev, PCI_EXP_LNKCAP_ASPM_L1 |
> + PCI_EXP_LNKCAP_ASPM_L0S);
> +}
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, tegra_pcie_quirk_disable_aspm);
> +
> MODULE_AUTHOR("Vidya Sagar <vidyas at nvidia.com>");
> MODULE_DESCRIPTION("NVIDIA PCIe host controller driver");
> MODULE_LICENSE("GPL v2");
> ```
>
> You can use specific Root Port IDs or PCI_ANY_ID depending on the impact. We can
> also work on fixing the actual issue parallelly.
Thanks. By default we are building the PCIe driver for Tegra as a module
and so I am not sure we can use DECLARE_PCI_FIXUP_EARLY() right?
I was just thinking that in pcie_aspm_override_default_link_state() we
just need a callback to specify the default ASPM override state?
Cheers
Jon
--
nvpublic
More information about the Linux-nvme
mailing list