From: sashiko-bot@kernel.org
To: "Leon Romanovsky" <leon@kernel.org>
Cc: linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-rdma@vger.kernel.org, kvm@vger.kernel.org,
media-ci@linuxtv.org
Subject: Re: [PATCH v11 01/19] PCI/P2PDMA: Honor device-specific ACS redirection
Date: Tue, 13 Oct 2026 14:44:37 +0000 [thread overview]
Message-ID: <sashiko-outbox-169930@kernel.org> (raw)
In-Reply-To: <20261013-fix-p2p-acs-v4-0-v11-1-72cf8c96e617@nvidia.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] pci/p2pdma: deadlock in calc_map_type_and_dist() calling xa_store() from softirq
--
commit 6120f97b22446453f3e4fa09135e1a44135ecfe8
Author: Leon Romanovsky <leon@kernel.org>
PCI/P2PDMA: Honor device-specific ACS redirection
This commit updates PCI P2PDMA to respect device-specific ACS redirection
quirks for switches and ports that redirect peer-to-peer traffic without a
standard ACS capability. It queries quirks to set Request and Completion
Redirect flags and modifies how affected ports are warned about.
> diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c
> index 45260423dfb09..ba94b0f339285 100644
> --- a/drivers/pci/p2pdma.c
> +++ b/drivers/pci/p2pdma.c
[ ... ]
> @@ -782,15 +867,8 @@ calc_map_type_and_dist(struct pci_dev *provider, struct pci_dev *client,
> goto done;
> }
>
> - if (verbose) {
> - /* Drop the final semicolon; the list is not empty here */
> - if (!seq_buf_has_overflowed(&acs_list))
> - acs_list.buffer[acs_list.len - 1] = '\0';
> - pci_warn(client, "ACS redirect is set between the client and provider (%s)\n",
> - pci_name(provider));
> - pci_warn(client, "to disable ACS redirect for this path, add the kernel parameter: pci=disable_acs_redir=%s\n",
> - seq_buf_str(&acs_list));
> - }
> + if (verbose)
> + pci_p2pdma_warn_redir(client, provider, &acs_list, &quirk_list);
>
> map_through_host_bridge:
> if (!cpu_supports_p2pdma() &&
[Severity: High]
Does calling xa_store() further down in this function risk a deadlock?
The map_types xarray is initialized with a plain xa_init() (without
XA_FLAGS_LOCK_IRQ) in pcim_p2pdma_init(). This means its internal lock
operates as a simple process-context spin_lock.
Since calc_map_type_and_dist() can be called from softirq/hardirq context
during P2P DMA mapping (e.g., via dma_map_sg()), and xa_store() takes the
xarray lock without disabling interrupts, a process-context thread interrupted
by a DMA mapping on the same CPU could cause a deadlock if they both try to
access this xarray:
drivers/pci/p2pdma.c:calc_map_type_and_dist() {
...
done:
rcu_read_lock();
p2pdma = rcu_dereference(provider->p2pdma);
if (p2pdma)
xa_store(&p2pdma->map_types, map_types_idx(client),
xa_mk_value(map_type), GFP_ATOMIC);
rcu_read_unlock();
return map_type;
}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261013-fix-p2p-acs-v4-0-v11-0-72cf8c96e617@nvidia.com?part=1
next prev parent reply other threads:[~2026-10-13 14:44 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 14:25 [PATCH v11 00/19] PCI/P2PDMA: Route peer-to-peer DMA by TLP class Leon Romanovsky
2026-10-13 14:25 ` [PATCH v11 01/19] PCI/P2PDMA: Honor device-specific ACS redirection Leon Romanovsky
2026-10-13 14:44 ` sashiko-bot [this message]
2026-10-13 14:25 ` [PATCH v11 02/19] PCI/P2PDMA: Document the TLP attribute assumptions Leon Romanovsky
2026-10-13 14:28 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 03/19] PCI/P2PDMA: Derive routing from directional ACS controls Leon Romanovsky
2026-10-13 14:32 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 04/19] PCI: Reject unreadable ACS controls in isolation checks Leon Romanovsky
2026-10-13 14:37 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 05/19] PCI/P2PDMA: Evaluate ACS controls at the path divergence Leon Romanovsky
2026-10-13 14:38 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 06/19] PCI/P2PDMA: Document directional ACS routing Leon Romanovsky
2026-10-13 14:28 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 07/19] PCI/P2PDMA: Collect the path's ACS controls before deciding Leon Romanovsky
2026-10-13 14:32 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 08/19] PCI/P2PDMA: Answer routing per TLP class Leon Romanovsky
2026-10-13 14:34 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 09/19] PCI/P2PDMA: Route Relaxed Ordering Completions directly Leon Romanovsky
2026-10-13 14:37 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 10/19] PCI/P2PDMA: Reject Translated Requests blocked by Translation Blocking Leon Romanovsky
2026-10-13 14:49 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 11/19] PCI/P2PDMA: Route Translated Requests under Direct Translated P2P Leon Romanovsky
2026-10-13 14:36 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 12/19] PCI/P2PDMA: Log detailed ACS routing diagnostics Leon Romanovsky
2026-10-13 14:40 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 13/19] PCI/P2PDMA: Add KUnit tests for the ACS routing decisions Leon Romanovsky
2026-10-13 14:40 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 14/19] PCI/P2PDMA: Test the ACS P2P routing walk Leon Romanovsky
2026-10-13 14:49 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 15/19] PCI: Add KUnit coverage for ACS isolation checks Leon Romanovsky
2026-10-13 14:44 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 16/19] PCI/P2PDMA: Document TLP-class routing Leon Romanovsky
2026-10-13 14:39 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 17/19] PCI/P2PDMA: Let a client declare that it selects ATS per mapping Leon Romanovsky
2026-10-13 14:47 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 18/19] PCI/P2PDMA: Evaluate the ATS path for clients with ATS enabled Leon Romanovsky
2026-10-13 14:47 ` sashiko-bot
2026-10-13 14:25 ` [PATCH v11 19/19] PCI/P2PDMA: Test the routing of " Leon Romanovsky
2026-10-13 14:47 ` sashiko-bot
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=sashiko-outbox-169930@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=kvm@vger.kernel.org \
--cc=leon@kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=media-ci@linuxtv.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.