From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Bjorn Helgaas <bhelgaas@google.com>,
Sasha Levin <sashal@kernel.org>,
linux-pci@vger.kernel.org
Subject: [PATCH AUTOSEL 6.12 24/33] PCI: Enable Configuration RRS SV early
Date: Thu, 3 Apr 2025 15:16:47 -0400 [thread overview]
Message-ID: <20250403191656.2680995-24-sashal@kernel.org> (raw)
In-Reply-To: <20250403191656.2680995-1-sashal@kernel.org>
From: Bjorn Helgaas <bhelgaas@google.com>
[ Upstream commit 3f8c4959fc18e477801386a625e726c59f52a2c4 ]
Following a reset, a Function may respond to Config Requests with Request
Retry Status (RRS) Completion Status to indicate that it is temporarily
unable to process the Request, but will be able to process the Request in
the future (PCIe r6.0, sec 2.3.1).
If the Configuration RRS Software Visibility feature is enabled and a Root
Complex receives RRS for a config read of the Vendor ID, the Root Complex
completes the Request to the host by returning PCI_VENDOR_ID_PCI_SIG,
0x0001 (sec 2.3.2).
The Config RRS SV feature applies only to Root Ports and is not directly
related to pci_scan_bridge_extend(). Move the RRS SV enable to
set_pcie_port_type() where we handle other PCIe-specific configuration.
Link: https://lore.kernel.org/r/20250303210217.199504-1-helgaas@kernel.org
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/probe.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index ebb0c1d5cae25..a4330ad7cdfdf 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1328,8 +1328,6 @@ static int pci_scan_bridge_extend(struct pci_bus *bus, struct pci_dev *dev,
pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
- pci_enable_rrs_sv(dev);
-
if ((secondary || subordinate) && !pcibios_assign_all_busses() &&
!is_cardbus && !broken) {
unsigned int cmax, buses;
@@ -1570,6 +1568,11 @@ void set_pcie_port_type(struct pci_dev *pdev)
pdev->pcie_cap = pos;
pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, ®16);
pdev->pcie_flags_reg = reg16;
+
+ type = pci_pcie_type(pdev);
+ if (type == PCI_EXP_TYPE_ROOT_PORT)
+ pci_enable_rrs_sv(pdev);
+
pci_read_config_dword(pdev, pos + PCI_EXP_DEVCAP, &pdev->devcap);
pdev->pcie_mpss = FIELD_GET(PCI_EXP_DEVCAP_PAYLOAD, pdev->devcap);
@@ -1586,7 +1589,6 @@ void set_pcie_port_type(struct pci_dev *pdev)
* correctly so detect impossible configurations here and correct
* the port type accordingly.
*/
- type = pci_pcie_type(pdev);
if (type == PCI_EXP_TYPE_DOWNSTREAM) {
/*
* If pdev claims to be downstream port but the parent
--
2.39.5
next prev parent reply other threads:[~2025-04-03 19:17 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 19:16 [PATCH AUTOSEL 6.12 01/33] drm: allow encoder mode_set even when connectors change for crtc Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 02/33] drm/xe/bmg: Add new PCI IDs Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 03/33] drm/xe/vf: Don't try to trigger a full GT reset if VF Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 04/33] drm/amd/display: Update Cursor request mode to the beginning prefetch always Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 05/33] drm/amdgpu: Unlocked unmap only clear page table leaves Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 06/33] drm: panel-orientation-quirks: Add support for AYANEO 2S Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 07/33] drm: panel-orientation-quirks: Add quirks for AYA NEO Flip DS and KB Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 08/33] drm: panel-orientation-quirks: Add quirk for AYA NEO Slide Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 09/33] drm: panel-orientation-quirks: Add new quirk for GPD Win 2 Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 10/33] drm: panel-orientation-quirks: Add quirk for OneXPlayer Mini (Intel) Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 11/33] drm/debugfs: fix printk format for bridge index Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 12/33] drm/bridge: panel: forbid initializing a panel with unknown connector type Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 13/33] drm/amd/display: stop DML2 from removing pipes based on planes Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 14/33] drivers: base: devres: Allow to release group on device release Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 15/33] drm/amdkfd: clamp queue size to minimum Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 16/33] drm/amdkfd: Fix mode1 reset crash issue Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 17/33] drm/amdkfd: Fix pqm_destroy_queue race with GPU reset Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 18/33] drm/amdkfd: debugfs hang_hws skip GPU with MES Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 19/33] drm/xe/xelp: Move Wa_16011163337 from tunings to workarounds Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 20/33] drm/mediatek: mtk_dpi: Move the input_2p_en bit to platform data Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 21/33] drm/mediatek: mtk_dpi: Explicitly manage TVD clock in power on/off Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 22/33] PCI: Add Rockchip Vendor ID Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 23/33] drm/amdgpu: handle amdgpu_cgs_create_device() errors in amd_powerplay_create() Sasha Levin
2025-04-03 19:16 ` Sasha Levin [this message]
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 25/33] drm/amdgpu: Fix the race condition for draining retry fault Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 26/33] PCI: Check BAR index for validity Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 27/33] PCI: vmd: Make vmd_dev::cfg_lock a raw_spinlock_t type Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 28/33] drm/amdgpu: grab an additional reference on the gang fence v2 Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 29/33] fbdev: omapfb: Add 'plane' value check Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 30/33] tracing: probe-events: Add comments about entry data storing code Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 31/33] ktest: Fix Test Failures Due to Missing LOG_FILE Directories Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 32/33] tpm, tpm_tis: Workaround failed command reception on Infineon devices Sasha Levin
2025-04-03 19:16 ` [PATCH AUTOSEL 6.12 33/33] tpm: End any active auth session before shutdown Sasha Levin
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=20250403191656.2680995-24-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=stable@vger.kernel.org \
/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