Linux PCI subsystem development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "David Matlack" <dmatlack@google.com>
Cc: linux-pci@vger.kernel.org
Subject: Re: [PATCH v5 07/11] PCI: liveupdate: Inherit ACS flags in incoming preserved devices
Date: Thu, 14 May 2026 02:37:17 +0000	[thread overview]
Message-ID: <20260514023718.1A7A4C19425@smtp.kernel.org> (raw)
In-Reply-To: <20260512184846.119396-8-dmatlack@google.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Modifying pci_dev state while holding only a read lock in pci_liveupdate_init_acs().
- [High] Intel SPT PCH root ports bypass the ACS quirk rejection check, causing their custom ACS control registers to be permanently lost on the new kernel.
--

commit 9befbb904977419650ee202e0854fc1452e0a9de
Author: David Matlack <dmatlack@google.com>

PCI: liveupdate: Inherit ACS flags in incoming preserved devices

This commit updates the live update process to inherit Access Control
Services (ACS) flags on incoming preserved devices. It caches the
inherited ACS controls established by the previous kernel so they do
not change after a reset.

> diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
> index d8e06afde2c76..e3cd6d76636c3 100644
> --- a/drivers/pci/liveupdate.c
> +++ b/drivers/pci/liveupdate.c
[ ... ]
> @@ -361,6 +373,16 @@ static int pci_liveupdate_preserve_device_new(struct pci_ser *ser, struct pci_de
>  {
>  	int i;
>  
> +	/*
> +	 * Do not preserve a devices that rely on device-specific ACS
> +	 * equivalents (for now) since that would complicate keeping ACS
> +	 * flags constant across Live Update.
> +	 */
> +	if (dev->dev_flags & PCI_DEV_FLAGS_ACS_ENABLED_QUIRK) {
> +		pci_warn(dev, "Refusing to preserve device that relies on ACS quirks\n");
> +		return -EINVAL;
> +	}

Can Intel SPT PCH root ports bypass this check?

Looking at pci_quirk_enable_intel_spt_pch_acs(), it does not appear to set
the PCI_DEV_FLAGS_ACS_ENABLED_QUIRK flag.

If these ports bypass the check and are preserved, pci_liveupdate_init_acs()
will only cache the standard PCI_ACS_CTRL register, ignoring the
device-specific INTEL_SPT_ACS_CTRL register.

When the new kernel calls pci_enable_acs(), pci_liveupdate_inherit_acs()
will restore the standard register and return true, skipping the
pci_dev_specific_enable_acs() path entirely.

Will this cause a regression where the custom ACS configuration is lost?

[ ... ]
> @@ -671,6 +694,32 @@ void pci_liveupdate_finish(struct pci_dev *dev)
>  }
>  EXPORT_SYMBOL_GPL(pci_liveupdate_finish);
>  
> +void pci_liveupdate_init_acs(struct pci_dev *dev)
> +{
> +	guard(read_lock)(&dev->liveupdate.lock);
> +
> +	if (!dev->acs_cap || !dev->liveupdate.incoming)
> +		return;
> +
> +	pci_read_config_word(dev, dev->acs_cap + PCI_ACS_CTRL, &dev->liveupdate.acs_ctrl);
> +}

Does this mutate dev->liveupdate.acs_ctrl while holding a read lock?

Since pci_read_config_word() writes the read value into the acs_ctrl
pointer, should this use write_lock to avoid a data race regression?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260512184846.119396-1-dmatlack@google.com?part=7

  reply	other threads:[~2026-05-14  2:37 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-12 18:48 [PATCH v5 00/11] PCI: liveupdate: PCI core support for Live Update David Matlack
2026-05-12 18:48 ` [PATCH v5 01/11] PCI: liveupdate: Set up FLB handler for the PCI core David Matlack
2026-05-12 18:48 ` [PATCH v5 02/11] PCI: liveupdate: Track outgoing preserved PCI devices David Matlack
2026-05-14  0:31   ` sashiko-bot
2026-05-12 18:48 ` [PATCH v5 03/11] PCI: liveupdate: Track incoming " David Matlack
2026-05-14  1:05   ` sashiko-bot
2026-05-12 18:48 ` [PATCH v5 04/11] PCI: liveupdate: Document driver binding responsibilities David Matlack
2026-05-12 18:48 ` [PATCH v5 05/11] PCI: liveupdate: Keep bus numbers constant during Live Update David Matlack
2026-05-14  1:36   ` sashiko-bot
2026-05-12 18:48 ` [PATCH v5 06/11] PCI: liveupdate: Auto-preserve upstream bridges across " David Matlack
2026-05-14  2:05   ` sashiko-bot
2026-05-12 18:48 ` [PATCH v5 07/11] PCI: liveupdate: Inherit ACS flags in incoming preserved devices David Matlack
2026-05-14  2:37   ` sashiko-bot [this message]
2026-05-12 18:48 ` [PATCH v5 08/11] PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges David Matlack
2026-05-12 18:48 ` [PATCH v5 09/11] PCI: liveupdate: Freeze preservation status during shutdown David Matlack
2026-05-14  3:14   ` sashiko-bot
2026-05-12 18:48 ` [PATCH v5 10/11] PCI: liveupdate: Do not disable bus mastering on preserved devices during kexec David Matlack
2026-05-12 18:48 ` [PATCH v5 11/11] Documentation: PCI: Add documentation for Live Update David Matlack

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260514023718.1A7A4C19425@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dmatlack@google.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox