[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <tiadpmogdxom5h2bquct2ch6hoc6ozh6bgnzdmnj3mia22vtue@c5yjxbx65lsm>
Date: Tue, 25 Nov 2025 10:51:35 +0530
From: Manivannan Sadhasivam <mani@...nel.org>
To: Bjorn Helgaas <helgaas@...nel.org>
Cc: Manivannan Sadhasivam <manivannan.sadhasivam@....qualcomm.com>,
bhelgaas@...gle.com, linux-pci@...r.kernel.org, linux-kernel@...r.kernel.org,
Konrad Dybcio <konrad.dybcio@....qualcomm.com>, Alexey Bogoslavsky <Alexey.Bogoslavsky@...disk.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:
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