Re: [6.12.y regression] Regression with 58130e7ce6cb ("PCI/ERR: Ensure error recoverability at all times"): echo vfio-pci >driver_override does not work for DVB Adapter
From: Bernd Schumacher
Date: Sat Mar 28 2026 - 12:16:35 EST
Thank you for your patch. But ...
Applying the patch to v6.12.73 did not help. (same errors).
Thanks!
Bernd
Am Samstag, dem 28.03.2026 um 15:11 +0100 schrieb Lukas Wunner:
> On Sat, Mar 28, 2026 at 02:37:50PM +0100, Salvatore Bonaccorso wrote:
> > Bernd Schumacher reported in Debian (report and report from
> > bisection
> > in https://bugs.debian.org/1131025) a 6.12.y specific regression of
> > 58130e7ce6cb ("PCI/ERR: Ensure error recoverability at all times"):
>
> Thanks for the report and sorry for the breakage.
>
> According to the Debian bug report, the issue only occurs on
> v6.12-stable. It does not affect v6.18 and v6.19.
>
> I note that v6.12-stable commit 58130e7ce6cb differs from upstream
> commit a2f1e22390ac in that the call to pci_save_state() is at the
> top of pci_bus_add_device(), not in the middle of the function after
> pci_bridge_d3_update().
>
> @Bernd, could you test whether moving the call to pci_save_state()
> as in the small patch below resolves the issue on v6.12-stable?
>
> If it does, then the upstream commit was backported to v6.12 in an
> incorrect manner. If it does not, I need to dig deeper.
>
> Thanks!
>
> Lukas
>
> -- >8 --
>
> diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
> index 429c0c8ce93d..bdb3e10f947a 100644
> --- a/drivers/pci/bus.c
> +++ b/drivers/pci/bus.c
> @@ -331,9 +331,6 @@ void pci_bus_add_device(struct pci_dev *dev)
> struct device_node *dn = dev->dev.of_node;
> int retval;
>
> - /* Save config space for error recoverability */
> - pci_save_state(dev);
> -
> /*
> * Can not put in pci_device_add yet because resources
> * are not assigned yet for some devices.
> @@ -346,6 +343,9 @@ void pci_bus_add_device(struct pci_dev *dev)
> pci_proc_attach_device(dev);
> pci_bridge_d3_update(dev);
>
> + /* Save config space for error recoverability */
> + pci_save_state(dev);
> +
> dev->match_driver = !dn || of_device_is_available(dn);
> retval = device_attach(&dev->dev);
> if (retval < 0 && retval != -EPROBE_DEFER)
Attachment:
signature.asc
Description: This is a digitally signed message part