From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: linux-pci@vger.kernel.org, "Bjorn Helgaas" <bhelgaas@google.com>,
"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Emmanuel Grumbach" <emmanuel.grumbach@intel.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"Heiner Kallweit" <hkallweit1@gmail.com>,
"Lukas Wunner" <lukas@wunner.de>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Stefan Mätje" <stefan.maetje@esd.eu>,
"Shaohua Li" <shaohua.li@intel.com>,
"Greg Kroah-Hartman" <gregkh@suse.de>,
linux-kernel@vger.kernel.org
Cc: "Dean Luick" <dean.luick@cornelisnetworks.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
stable@vger.kernel.org
Subject: [PATCH v3 02/10] PCI: Make link retraining use RMW accessors for changing LNKCTL
Date: Tue, 20 Jun 2023 16:46:16 +0300 [thread overview]
Message-ID: <20230620134624.99688-3-ilpo.jarvinen@linux.intel.com> (raw)
In-Reply-To: <20230620134624.99688-1-ilpo.jarvinen@linux.intel.com>
Don't assume that the device is fully under the control of PCI core.
Use RMW capability accessors in link retraining which do proper locking
to avoid losing concurrent updates to the register values.
Fixes: 4ec73791a64b ("PCI: Work around Pericom PCIe-to-PCI bridge Retrain Link erratum")
Fixes: 7d715a6c1ae5 ("PCI: add PCI Express ASPM support")
Suggested-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Cc: stable@vger.kernel.org
---
pci/enumeration branch moves the link retraining code into PCI core and
also conflicts with a link retraining fix in pci/aspm. The changelog
(and patch splitting) takes the move into account by not referring to
ASPM while the change itself is not based on pci/enumeration (as per
Bjorn's preference).
---
drivers/pci/pcie/aspm.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 66d7514ca111..50e32bda4656 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -199,17 +199,14 @@ static bool pcie_retrain_link(struct pcie_link_state *link)
unsigned long end_jiffies;
u16 reg16;
- pcie_capability_read_word(parent, PCI_EXP_LNKCTL, ®16);
- reg16 |= PCI_EXP_LNKCTL_RL;
- pcie_capability_write_word(parent, PCI_EXP_LNKCTL, reg16);
+ pcie_capability_set_word(parent, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL);
if (parent->clear_retrain_link) {
/*
* Due to an erratum in some devices the Retrain Link bit
* needs to be cleared again manually to allow the link
* training to succeed.
*/
- reg16 &= ~PCI_EXP_LNKCTL_RL;
- pcie_capability_write_word(parent, PCI_EXP_LNKCTL, reg16);
+ pcie_capability_clear_word(parent, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL);
}
/* Wait for link training end. Break out after waiting for timeout */
--
2.30.2
next prev parent reply other threads:[~2023-06-20 13:47 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-20 13:46 [PATCH v3 00/10] PCI: Improve PCIe Capability RMW concurrency control Ilpo Järvinen
2023-06-20 13:46 ` [PATCH v3 01/10] PCI: Add locking to RMW PCI Express Capability Register accessors Ilpo Järvinen
2023-06-20 13:46 ` Ilpo Järvinen [this message]
2023-06-20 13:46 ` [PATCH v3 03/10] PCI: pciehp: Use RMW accessors for changing LNKCTL Ilpo Järvinen
2023-06-20 13:46 ` [PATCH v3 04/10] PCI/ASPM: " Ilpo Järvinen
2023-06-20 13:46 ` [PATCH v3 05/10] drm/amdgpu: " Ilpo Järvinen
2023-06-20 13:46 ` [PATCH v3 06/10] drm/radeon: " Ilpo Järvinen
2023-06-20 13:46 ` [PATCH v3 07/10] net/mlx5: " Ilpo Järvinen
2023-06-21 14:46 ` Simon Horman
2023-06-20 13:46 ` [PATCH v3 08/10] wifi: ath11k: " Ilpo Järvinen
2023-06-21 14:47 ` Simon Horman
2023-06-20 13:46 ` [PATCH v3 09/10] wifi: ath12k: " Ilpo Järvinen
2023-06-21 14:47 ` Simon Horman
2023-06-20 13:46 ` [PATCH v3 10/10] wifi: ath10k: " Ilpo Järvinen
2023-06-21 14:46 ` Simon Horman
2023-06-20 14:11 ` [PATCH v3 00/10] PCI: Improve PCIe Capability RMW concurrency control Andy Shevchenko
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=20230620134624.99688-3-ilpo.jarvinen@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=dean.luick@cornelisnetworks.com \
--cc=emmanuel.grumbach@intel.com \
--cc=gregkh@suse.de \
--cc=hkallweit1@gmail.com \
--cc=kw@linux.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=lukas@wunner.de \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=shaohua.li@intel.com \
--cc=stable@vger.kernel.org \
--cc=stefan.maetje@esd.eu \
/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