Re: [PATCH] pci: quirks: Disable native PCIe hotplug on MSI Claw A8 root bridge

Derek John Clark <[email protected]>
Newsgroups dev.linux.lists.sashiko-reviews,org.kernel.vger.linux-pci
Message-ID <CAFqHKTk47MvjVvijt_JKH53pMmaNMWSGvU9QkTuj6zJ7XHhnXQ@mail.gmail.com>
On Thu, Aug 6, 2026 at 12:19 PM <[email protected]> wrote:
>
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [High] The quirk disables native PCIe hotplug on the shared host bridge rather than specifically for the target root port, which breaks hotplug functionality for dynamically enumerated Thunderbolt/USB4 devices system-wide.
> --
>
> --- Patch [1]: [PATCH] pci: quirks: Disable native PCIe hotplug on MSI Claw A8 root bridge ---
> commit 841400e3b6d906dff0f94738835128127178d2e6
> Author: Derek J. Clark <[email protected]>
>
> pci: quirks: Disable native PCIe hotplug on MSI Claw A8 root bridge
>
> This commit adds a quirk for the MSI Claw A8 to prevent s2idle resume failures
> caused by the Realtek card reader. It disables native PCIe hotplug on the host
> bridge when the specific root port is found.
>
> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > --- a/drivers/pci/quirks.c
> > +++ b/drivers/pci/quirks.c
>
> [ ... ]
>
> > +static void quirk_claw_a8_no_native_hotplug(struct pci_dev *pdev)
> > +{
> > +     struct pci_host_bridge *bridge;
> > +
> > +     if (!dmi_match(DMI_BOARD_NAME, "MS-1T8K"))
> > +             return;
> > +
> > +     if (pdev->bus->number != 0 ||
> > +         PCI_SLOT(pdev->devfn) != 2 ||
> > +         PCI_FUNC(pdev->devfn) != 2)
> > +             return;
> > +
> > +     bridge = pci_find_host_bridge(pdev->bus);
> > +     if (!bridge)
> > +             return;
> > +     dev_info(&pdev->dev, "disabling native PCIe hotplug\n");
> > +     bridge->native_pcie_hotplug = false;
>
> [Severity: High]
> Does setting bridge->native_pcie_hotplug = false here break hotplug
> functionality for dynamically enumerated Thunderbolt/USB4 devices on this
> system?
>
> Because the pci_host_bridge is a shared structure, modifying it globally
> prevents the pciehp driver from claiming any hotplug-capable PCIe port under
> that domain. While this might be the only fixed slot reporting HotPlug+ during
> boot, downstream ports on dynamically hot-plugged PCIe switches (like
> Thunderbolt docks, eGPUs, or NVMe enclosures) rely on the host bridge's native
> hotplug capability to function.
>
> Would it be safer to clear pdev->is_pciehp and pdev->is_hotplug_bridge on the
> specific root port instead of modifying the shared host bridge?
>

Hi robot, and any humans reading this,

This identified something I missed when scoping the patch. The two USB
ports on top of the unit are USB4/TB capable and are affected by the
root bridge quirk. In a previous version of the patch I did try
pdev->is_hotplug_bridge = false to no effect, but was not aware of
pdev->is_pciehp. I will try with both and see if that resolves it at
the lower scope.

Thanks,
Derek

> > +}
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x150b,
> > +                      quirk_claw_a8_no_native_hotplug);
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.