[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<BY5PR16MB339612035106C16822855A5A92D1A@BY5PR16MB3396.namprd16.prod.outlook.com>
Date: Tue, 25 Nov 2025 15:30:15 +0000
From: Alexey Bogoslavsky <Alexey.Bogoslavsky@...disk.com>
To: Manivannan Sadhasivam <mani@...nel.org>, Bjorn Helgaas
<helgaas@...nel.org>
CC: Manivannan Sadhasivam <manivannan.sadhasivam@....qualcomm.com>,
"bhelgaas@...gle.com" <bhelgaas@...gle.com>, "linux-pci@...r.kernel.org"
<linux-pci@...r.kernel.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>, Konrad Dybcio
<konrad.dybcio@....qualcomm.com>, Jeffrey Lien <Jeff.Lien@...disk.com>,
Avinash M N <Avinash.M.N@...disk.com>
Subject: RE: [PATCH v2] PCI: Add quirk to disable ASPM L1 for Sandisk SN740
NVMe SSDs
On Mon, Nov 24, 2025 at 05:53:07PM -0600, Bjorn Helgaas wrote:
> > [+cc Alexey, Jeffrey, Avinash]
> >
> > On Thu, Nov 20, 2025 at 09:42:53PM +0530, Manivannan Sadhasivam wrote:
> > > The Sandisk SN740 NVMe SSDs cause below AER errors on the upstream
> > > Root Port of PCIe controller in Microsoft Surface Laptop 7, when
> > > ASPM L1 is
> > > enabled:
> > >
> > > pcieport 0006:00:00.0: AER: Correctable error message received from 0006:01:00.0
> > > nvme 0006:01:00.0: PCIe Bus Error: severity=Correctable, type=Physical Layer, (Receiver ID)
> > > nvme 0006:01:00.0: device [15b7:5015] error status/mask=00000001/0000e000
> > > nvme 0006:01:00.0: [ 0] RxErr
> >
> > Do we have any information about whether this error happens with the
> > SN740 on platforms other than the Surface Laptop 7? Or whether it
> > happens on the Surface with other endpoints?
> >
> This device comes pre installed with the Surface Laptop 7 I believe. It is not very convenient to replace the NVMe in a laptop for testing.
> > I'm a little hesitant about quirking devices and claiming they are
> > defective without a solid root cause.
> >
> There are a couple of points that made me convince myself:
> * Other X1E laptops are working fine with ASPM L1.
> * This laptop has WCN785x WiFi/BT combo card connected to the other controller instance and L1 is working fine for it.
> * There is no known issue with ASPM L1 in X1E chipsets.
> Because of these, I was so certain that the NVMe is the fault here.
> > Sandisk folks, do you have any insight into this? Any known errata or
> > possibility of looking into this with an analyzer?
> >
> I don't think Konrad has access to the analyzer, neither any of us.
> If you are still hesitant, I'd suggest adding the platform check so that this quirk is only limited to the Surface Laptop 7:
We at Sandisk are currently checking and double-checking the issue on several platforms and with several devices.
We haven't reached final conclusions yet, but what's clear is that quirking out SN740 unconditionally, for all platforms,
is definitely an overkill. The device performs normally on vast majority of platforms. Applying the quirk for the combination
of SN740 and Surface Laptop 7, as you suggested, is definitely a better choice. Still, we'd like to check a few more
platform / device combinations so we cover everything that needs to be covered while sparing the rest of combinations.
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index adc54533df7f..1655757ba66a 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -29,6 +29,7 @@
#include <linux/ktime.h>
#include <linux/mm.h>
#include <linux/nvme.h>
+#include <linux/of.h>
#include <linux/platform_data/x86/apple.h> #include <linux/pm_runtime.h> #include <linux/sizes.h> @@ -2527,15 +2528,19 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, 0x0451, quirk_disable_aspm_l0s DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PASEMI, 0xa002, quirk_disable_aspm_l0s_l1); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_HUAWEI, 0x1105, quirk_disable_aspm_l0s_l1);
+/*
+ * Sandisk SN740 NVMe SSDs in Microsoft Surface Laptop 7 cause AER
+timeout
+ * errors on the upstream PCIe Root Port when ASPM L1 is enabled.
+ */
static void quirk_disable_aspm_l1(struct pci_dev *dev) {
- pcie_aspm_remove_cap(dev, PCI_EXP_LNKCAP_ASPM_L1);
+ struct device_node *root __free(device_node) = of_find_node_by_path("/");
+ const char *model = of_get_property(root, "compatible", NULL);
+
+ if (!strcmp(model, "microsoft,romulus13"))
+ pcie_aspm_remove_cap(dev, PCI_EXP_LNKCAP_ASPM_L1);
}
-/*
- * Sandisk SN740 NVMe SSDs cause AER timeout errors on the upstream PCIe Root
- * Port when ASPM L1 is enabled.
- */
DECLARE_PCI_FIXUP_HEADER(0x15b7, 0x5015, quirk_disable_aspm_l1);
/*
This check is similar to the DMI checks we have currently non-DT platforms.
Infact, we have also use the DMI checks on this laptop as it comes with SMBIOS.
Note: I'm not sure if Konrad's lapto is based on "microsoft,romulus13" or "microsoft,romulus15".
- Mani
--
மணிவண்ணன் சதாசிவம்
Powered by blists - more mailing lists