mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 03:50:24 +09:00
f2d7da8fafed03cf468cd399cec7d80fbe4bab11
[ Upstream commit5e70d0acf0] Many places in the kernel write the Link Control and Root Control PCI Express Capability Registers without proper concurrency control and this could result in losing the changes one of the writers intended to make. Add pcie_cap_lock spinlock into the struct pci_dev and use it to protect bit changes made in the RMW capability accessors. Protect only a selected set of registers by differentiating the RMW accessor internally to locked/unlocked variants using a wrapper which has the same signature as pcie_capability_clear_and_set_word(). As the Capability Register (pos) given to the wrapper is always a constant, the compiler should be able to simplify all the dead-code away. So far only the Link Control Register (ASPM, hotplug, link retraining, various drivers) and the Root Control Register (AER & PME) seem to require RMW locking. Suggested-by: Lukas Wunner <lukas@wunner.de> Fixes:c7f486567c("PCI PM: PCIe PME root port service driver") Fixes:f12eb72a26("PCI/ASPM: Use PCI Express Capability accessors") Fixes:7d715a6c1a("PCI: add PCI Express ASPM support") Fixes:affa48de84("staging/rdma/hfi1: Add support for enabling/disabling PCIe ASPM") Fixes:849a9366cb("misc: rtsx: Add support new chip rts5228 mmc: rtsx: Add support MMC_CAP2_NO_MMC") Fixes:3d1e7aa80d("misc: rtsx: Use pcie_capability_clear_and_set_word() for PCI_EXP_LNKCTL") Fixes:c0e5f4e73a("misc: rtsx: Add support for RTS5261") Fixes:3df4fce739("misc: rtsx: separate aspm mode into MODE_REG and MODE_CFG") Fixes:121e9c6b5c("misc: rtsx: modify and fix init_hw function") Fixes:19f3bd548f("mfd: rtsx: Remove LCTLR defination") Fixes:773ccdfd9c("mfd: rtsx: Read vendor setting from config space") Fixes:8275b77a15("mfd: rts5249: Add support for RTS5250S power saving") Fixes:5da4e04ae4("misc: rtsx: Add support for RTS5260") Fixes:0f49bfbd0f("tg3: Use PCI Express Capability accessors") Fixes:5e7dfd0fb9("tg3: Prevent corruption at 10 / 100Mbps w CLKREQ") Fixes:b726e493e8("r8169: sync existing 8168 device hardware start sequences with vendor driver") Fixes:e6de30d63e("r8169: more 8168dp support.") Fixes:8a06127602("Bluetooth: hci_bcm4377: Add new driver for BCM4377 PCIe boards") Fixes:6f461f6c7c("e1000e: enable/disable ASPM L0s and L1 and ERT according to hardware errata") Fixes:1eae4eb2a1("e1000e: Disable L1 ASPM power savings for 82573 mobile variants") Fixes:8060e169e0("ath9k: Enable extended synch for AR9485 to fix L0s recovery issue") Fixes:69ce674bfa("ath9k: do btcoex ASPM disabling at initialization time") Fixes:f37f055035("mt76: mt76x2e: disable pcie_aspm by default") Link: https://lore.kernel.org/r/20230717120503.15276-2-ilpo.jarvinen@linux.intel.com Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: "Rafael J. Wysocki" <rafael@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Merge tag 'mm-hotfixes-stable-2022-12-10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Linux kernel
============
There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.
In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``. The formatted documentation can also be read online at:
https://www.kernel.org/doc/html/latest/
There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.
Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.
Description
Languages
C
97.7%
Assembly
1.1%
Shell
0.4%
Makefile
0.3%
Python
0.2%