From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Johan Hovold <johan+linaro@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>
Subject: [PATCH 6.1 141/141] PCI/ASPM: Fix deadlock when enabling ASPM
Date: Tue, 23 Apr 2024 14:40:09 -0700 [thread overview]
Message-ID: <20240423213857.798145327@linuxfoundation.org> (raw)
In-Reply-To: <20240423213853.356988651@linuxfoundation.org>
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <johan+linaro@kernel.org>
commit 1e560864159d002b453da42bd2c13a1805515a20 upstream.
A last minute revert in 6.7-final introduced a potential deadlock when
enabling ASPM during probe of Qualcomm PCIe controllers as reported by
lockdep:
============================================
WARNING: possible recursive locking detected
6.7.0 #40 Not tainted
--------------------------------------------
kworker/u16:5/90 is trying to acquire lock:
ffffacfa78ced000 (pci_bus_sem){++++}-{3:3}, at: pcie_aspm_pm_state_change+0x58/0xdc
but task is already holding lock:
ffffacfa78ced000 (pci_bus_sem){++++}-{3:3}, at: pci_walk_bus+0x34/0xbc
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(pci_bus_sem);
lock(pci_bus_sem);
*** DEADLOCK ***
Call trace:
print_deadlock_bug+0x25c/0x348
__lock_acquire+0x10a4/0x2064
lock_acquire+0x1e8/0x318
down_read+0x60/0x184
pcie_aspm_pm_state_change+0x58/0xdc
pci_set_full_power_state+0xa8/0x114
pci_set_power_state+0xc4/0x120
qcom_pcie_enable_aspm+0x1c/0x3c [pcie_qcom]
pci_walk_bus+0x64/0xbc
qcom_pcie_host_post_init_2_7_0+0x28/0x34 [pcie_qcom]
The deadlock can easily be reproduced on machines like the Lenovo ThinkPad
X13s by adding a delay to increase the race window during asynchronous
probe where another thread can take a write lock.
Add a new pci_set_power_state_locked() and associated helper functions that
can be called with the PCI bus semaphore held to avoid taking the read lock
twice.
Link: https://lore.kernel.org/r/ZZu0qx2cmn7IwTyQ@hovoldconsulting.com
Link: https://lore.kernel.org/r/20240130100243.11011-1-johan+linaro@kernel.org
Fixes: f93e71aea6c6 ("Revert "PCI/ASPM: Remove pcie_aspm_pm_state_change()"")
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: <stable@vger.kernel.org> # 6.7
[bhelgaas: backported to v6.1.y, which contains b9c370b61d73 ("Revert
"PCI/ASPM: Remove pcie_aspm_pm_state_change()""), a backport of
f93e71aea6c6. This omits the drivers/pci/controller/dwc/pcie-qcom.c hunk
that updates qcom_pcie_enable_aspm(), which was added by 9f4f3dfad8cf
("PCI: qcom: Enable ASPM for platforms supporting 1.9.0 ops"), which is not
present in v6.1.87.]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/pci/bus.c | 49 +++++++++++++++++++-----------
drivers/pci/pci.c | 78 ++++++++++++++++++++++++++++++++----------------
drivers/pci/pci.h | 4 +-
drivers/pci/pcie/aspm.c | 13 +++++---
include/linux/pci.h | 5 +++
5 files changed, 100 insertions(+), 49 deletions(-)
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -379,21 +379,8 @@ void pci_bus_add_devices(const struct pc
}
EXPORT_SYMBOL(pci_bus_add_devices);
-/** pci_walk_bus - walk devices on/under bus, calling callback.
- * @top bus whose devices should be walked
- * @cb callback to be called for each device found
- * @userdata arbitrary pointer to be passed to callback.
- *
- * Walk the given bus, including any bridged devices
- * on buses under this bus. Call the provided callback
- * on each device found.
- *
- * We check the return of @cb each time. If it returns anything
- * other than 0, we break out.
- *
- */
-void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
- void *userdata)
+static void __pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
+ void *userdata, bool locked)
{
struct pci_dev *dev;
struct pci_bus *bus;
@@ -401,7 +388,8 @@ void pci_walk_bus(struct pci_bus *top, i
int retval;
bus = top;
- down_read(&pci_bus_sem);
+ if (!locked)
+ down_read(&pci_bus_sem);
next = top->devices.next;
for (;;) {
if (next == &bus->devices) {
@@ -424,10 +412,37 @@ void pci_walk_bus(struct pci_bus *top, i
if (retval)
break;
}
- up_read(&pci_bus_sem);
+ if (!locked)
+ up_read(&pci_bus_sem);
+}
+
+/**
+ * pci_walk_bus - walk devices on/under bus, calling callback.
+ * @top: bus whose devices should be walked
+ * @cb: callback to be called for each device found
+ * @userdata: arbitrary pointer to be passed to callback
+ *
+ * Walk the given bus, including any bridged devices
+ * on buses under this bus. Call the provided callback
+ * on each device found.
+ *
+ * We check the return of @cb each time. If it returns anything
+ * other than 0, we break out.
+ */
+void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *), void *userdata)
+{
+ __pci_walk_bus(top, cb, userdata, false);
}
EXPORT_SYMBOL_GPL(pci_walk_bus);
+void pci_walk_bus_locked(struct pci_bus *top, int (*cb)(struct pci_dev *, void *), void *userdata)
+{
+ lockdep_assert_held(&pci_bus_sem);
+
+ __pci_walk_bus(top, cb, userdata, true);
+}
+EXPORT_SYMBOL_GPL(pci_walk_bus_locked);
+
struct pci_bus *pci_bus_get(struct pci_bus *bus)
{
if (bus)
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1258,6 +1258,7 @@ end:
/**
* pci_set_full_power_state - Put a PCI device into D0 and update its state
* @dev: PCI device to power up
+ * @locked: whether pci_bus_sem is held
*
* Call pci_power_up() to put @dev into D0, read from its PCI_PM_CTRL register
* to confirm the state change, restore its BARs if they might be lost and
@@ -1267,7 +1268,7 @@ end:
* to D0, it is more efficient to use pci_power_up() directly instead of this
* function.
*/
-static int pci_set_full_power_state(struct pci_dev *dev)
+static int pci_set_full_power_state(struct pci_dev *dev, bool locked)
{
u16 pmcsr;
int ret;
@@ -1303,7 +1304,7 @@ static int pci_set_full_power_state(stru
}
if (dev->bus->self)
- pcie_aspm_pm_state_change(dev->bus->self);
+ pcie_aspm_pm_state_change(dev->bus->self, locked);
return 0;
}
@@ -1332,10 +1333,22 @@ void pci_bus_set_current_state(struct pc
pci_walk_bus(bus, __pci_dev_set_current_state, &state);
}
+static void __pci_bus_set_current_state(struct pci_bus *bus, pci_power_t state, bool locked)
+{
+ if (!bus)
+ return;
+
+ if (locked)
+ pci_walk_bus_locked(bus, __pci_dev_set_current_state, &state);
+ else
+ pci_walk_bus(bus, __pci_dev_set_current_state, &state);
+}
+
/**
* pci_set_low_power_state - Put a PCI device into a low-power state.
* @dev: PCI device to handle.
* @state: PCI power state (D1, D2, D3hot) to put the device into.
+ * @locked: whether pci_bus_sem is held
*
* Use the device's PCI_PM_CTRL register to put it into a low-power state.
*
@@ -1346,7 +1359,7 @@ void pci_bus_set_current_state(struct pc
* 0 if device already is in the requested state.
* 0 if device's power state has been successfully changed.
*/
-static int pci_set_low_power_state(struct pci_dev *dev, pci_power_t state)
+static int pci_set_low_power_state(struct pci_dev *dev, pci_power_t state, bool locked)
{
u16 pmcsr;
@@ -1400,29 +1413,12 @@ static int pci_set_low_power_state(struc
pci_power_name(state));
if (dev->bus->self)
- pcie_aspm_pm_state_change(dev->bus->self);
+ pcie_aspm_pm_state_change(dev->bus->self, locked);
return 0;
}
-/**
- * pci_set_power_state - Set the power state of a PCI device
- * @dev: PCI device to handle.
- * @state: PCI power state (D0, D1, D2, D3hot) to put the device into.
- *
- * Transition a device to a new power state, using the platform firmware and/or
- * the device's PCI PM registers.
- *
- * RETURN VALUE:
- * -EINVAL if the requested state is invalid.
- * -EIO if device does not support PCI PM or its PM capabilities register has a
- * wrong version, or device doesn't support the requested state.
- * 0 if the transition is to D1 or D2 but D1 and D2 are not supported.
- * 0 if device already is in the requested state.
- * 0 if the transition is to D3 but D3 is not supported.
- * 0 if device's power state has been successfully changed.
- */
-int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
+static int __pci_set_power_state(struct pci_dev *dev, pci_power_t state, bool locked)
{
int error;
@@ -1446,7 +1442,7 @@ int pci_set_power_state(struct pci_dev *
return 0;
if (state == PCI_D0)
- return pci_set_full_power_state(dev);
+ return pci_set_full_power_state(dev, locked);
/*
* This device is quirked not to be put into D3, so don't put it in
@@ -1460,16 +1456,16 @@ int pci_set_power_state(struct pci_dev *
* To put the device in D3cold, put it into D3hot in the native
* way, then put it into D3cold using platform ops.
*/
- error = pci_set_low_power_state(dev, PCI_D3hot);
+ error = pci_set_low_power_state(dev, PCI_D3hot, locked);
if (pci_platform_power_transition(dev, PCI_D3cold))
return error;
/* Powering off a bridge may power off the whole hierarchy */
if (dev->current_state == PCI_D3cold)
- pci_bus_set_current_state(dev->subordinate, PCI_D3cold);
+ __pci_bus_set_current_state(dev->subordinate, PCI_D3cold, locked);
} else {
- error = pci_set_low_power_state(dev, state);
+ error = pci_set_low_power_state(dev, state, locked);
if (pci_platform_power_transition(dev, state))
return error;
@@ -1477,8 +1473,38 @@ int pci_set_power_state(struct pci_dev *
return 0;
}
+
+/**
+ * pci_set_power_state - Set the power state of a PCI device
+ * @dev: PCI device to handle.
+ * @state: PCI power state (D0, D1, D2, D3hot) to put the device into.
+ *
+ * Transition a device to a new power state, using the platform firmware and/or
+ * the device's PCI PM registers.
+ *
+ * RETURN VALUE:
+ * -EINVAL if the requested state is invalid.
+ * -EIO if device does not support PCI PM or its PM capabilities register has a
+ * wrong version, or device doesn't support the requested state.
+ * 0 if the transition is to D1 or D2 but D1 and D2 are not supported.
+ * 0 if device already is in the requested state.
+ * 0 if the transition is to D3 but D3 is not supported.
+ * 0 if device's power state has been successfully changed.
+ */
+int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
+{
+ return __pci_set_power_state(dev, state, false);
+}
EXPORT_SYMBOL(pci_set_power_state);
+int pci_set_power_state_locked(struct pci_dev *dev, pci_power_t state)
+{
+ lockdep_assert_held(&pci_bus_sem);
+
+ return __pci_set_power_state(dev, state, true);
+}
+EXPORT_SYMBOL(pci_set_power_state_locked);
+
#define PCI_EXP_SAVE_REGS 7
static struct pci_cap_saved_state *_pci_find_saved_cap(struct pci_dev *pci_dev,
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -556,12 +556,12 @@ bool pcie_wait_for_link(struct pci_dev *
#ifdef CONFIG_PCIEASPM
void pcie_aspm_init_link_state(struct pci_dev *pdev);
void pcie_aspm_exit_link_state(struct pci_dev *pdev);
-void pcie_aspm_pm_state_change(struct pci_dev *pdev);
+void pcie_aspm_pm_state_change(struct pci_dev *pdev, bool locked);
void pcie_aspm_powersave_config_link(struct pci_dev *pdev);
#else
static inline void pcie_aspm_init_link_state(struct pci_dev *pdev) { }
static inline void pcie_aspm_exit_link_state(struct pci_dev *pdev) { }
-static inline void pcie_aspm_pm_state_change(struct pci_dev *pdev) { }
+static inline void pcie_aspm_pm_state_change(struct pci_dev *pdev, bool locked) { }
static inline void pcie_aspm_powersave_config_link(struct pci_dev *pdev) { }
#endif
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -1055,8 +1055,11 @@ void pcie_aspm_exit_link_state(struct pc
up_read(&pci_bus_sem);
}
-/* @pdev: the root port or switch downstream port */
-void pcie_aspm_pm_state_change(struct pci_dev *pdev)
+/*
+ * @pdev: the root port or switch downstream port
+ * @locked: whether pci_bus_sem is held
+ */
+void pcie_aspm_pm_state_change(struct pci_dev *pdev, bool locked)
{
struct pcie_link_state *link = pdev->link_state;
@@ -1066,12 +1069,14 @@ void pcie_aspm_pm_state_change(struct pc
* Devices changed PM state, we should recheck if latency
* meets all functions' requirement
*/
- down_read(&pci_bus_sem);
+ if (!locked)
+ down_read(&pci_bus_sem);
mutex_lock(&aspm_lock);
pcie_update_aspm_capable(link->root);
pcie_config_aspm_path(link);
mutex_unlock(&aspm_lock);
- up_read(&pci_bus_sem);
+ if (!locked)
+ up_read(&pci_bus_sem);
}
void pcie_aspm_powersave_config_link(struct pci_dev *pdev)
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1383,6 +1383,7 @@ int pci_load_and_free_saved_state(struct
struct pci_saved_state **state);
int pci_platform_power_transition(struct pci_dev *dev, pci_power_t state);
int pci_set_power_state(struct pci_dev *dev, pci_power_t state);
+int pci_set_power_state_locked(struct pci_dev *dev, pci_power_t state);
pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state);
bool pci_pme_capable(struct pci_dev *dev, pci_power_t state);
void pci_pme_active(struct pci_dev *dev, bool enable);
@@ -1553,6 +1554,8 @@ int pci_scan_bridge(struct pci_bus *bus,
void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
void *userdata);
+void pci_walk_bus_locked(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
+ void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
void pci_setup_bridge(struct pci_bus *bus);
@@ -1884,6 +1887,8 @@ static inline int pci_save_state(struct
static inline void pci_restore_state(struct pci_dev *dev) { }
static inline int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
{ return 0; }
+static inline int pci_set_power_state_locked(struct pci_dev *dev, pci_power_t state)
+{ return 0; }
static inline int pci_wake_from_d3(struct pci_dev *dev, bool enable)
{ return 0; }
static inline pci_power_t pci_choose_state(struct pci_dev *dev,
next prev parent reply other threads:[~2024-04-23 21:46 UTC|newest]
Thread overview: 164+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-23 21:37 [PATCH 6.1 000/141] 6.1.88-rc1 review Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 001/141] drm/vmwgfx: Enable DMA mappings with SEV Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 002/141] drm/amdgpu: fix incorrect active rb bitmap for gfx11 Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 003/141] drm/amdgpu: fix incorrect number of active RBs " Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 004/141] drm/amd/display: Do not recursively call manual trigger programming Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 005/141] io_uring: Fix io_cqring_wait() not restoring sigmask on get_timespec64() failure Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 006/141] SUNRPC: Fix rpcgss_context trace event acceptor field Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 007/141] selftests/ftrace: Limit length in subsystem-enable tests Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 008/141] random: handle creditable entropy from atomic process context Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 009/141] net: usb: ax88179_178a: avoid writing the mac address before first reading Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 010/141] drm/i915/vma: Fix UAF on destroy against retire race Greg Kroah-Hartman
2024-04-23 21:37 ` [PATCH 6.1 011/141] x86/efi: Drop EFI stub .bss from .data section Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 012/141] x86/efi: Disregard setup header of loaded image Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 013/141] x86/efistub: Reinstate soft limit for initrd loading Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 014/141] x86/efi: Drop alignment flags from PE section headers Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 015/141] x86/boot: Remove the bugger off message Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 016/141] x86/boot: Omit compression buffer from PE/COFF image memory footprint Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 017/141] x86/boot: Drop redundant code setting the root device Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 018/141] x86/boot: Drop references to startup_64 Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 019/141] x86/boot: Grab kernel_info offset from zoffset header directly Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 020/141] x86/boot: Set EFI handover offset directly in header asm Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 021/141] x86/boot: Define setup size in linker script Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 022/141] x86/boot: Derive file size from _edata symbol Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 023/141] x86/boot: Construct PE/COFF .text section from assembler Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 024/141] x86/boot: Drop PE/COFF .reloc section Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 025/141] x86/boot: Split off PE/COFF .data section Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 026/141] x86/boot: Increase section and file alignment to 4k/512 Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 027/141] x86/efistub: Use 1:1 file:memory mapping for PE/COFF .compat section Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 028/141] x86/mm: Remove P*D_PAGE_MASK and P*D_PAGE_SIZE macros Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 029/141] x86/head/64: Add missing __head annotation to startup_64_load_idt() Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 030/141] x86/head/64: Move the __head definition to <asm/init.h> Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 031/141] x86/sme: Move early SME kernel encryption handling into .head.text Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 032/141] x86/sev: Move early startup code into .head.text section Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 033/141] x86/efistub: Remap kernel text read-only before dropping NX attribute Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 034/141] netfilter: nf_tables: Fix potential data-race in __nft_expr_type_get() Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 035/141] netfilter: nf_tables: Fix potential data-race in __nft_obj_type_get() Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 036/141] netfilter: br_netfilter: skip conntrack input hook for promisc packets Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 037/141] netfilter: nft_set_pipapo: do not free live element Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 038/141] netfilter: flowtable: validate pppoe header Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 039/141] netfilter: flowtable: incorrect pppoe tuple Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 040/141] af_unix: Call manage_oob() for every skb in unix_stream_read_generic() Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 041/141] af_unix: Dont peek OOB data without MSG_OOB Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 042/141] net/mlx5: Lag, restore buckets number to default after hash LAG deactivation Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 043/141] net/mlx5e: Prevent deadlock while disabling aRFS Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 044/141] ice: tc: allow zero flags in parsing tc flower Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 045/141] tun: limit printing rate when illegal packet received by tun dev Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 046/141] net: dsa: mt7530: fix mirroring frames received on local port Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 047/141] net: ethernet: ti: am65-cpsw-nuss: cleanup DMA Channels before using them Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 048/141] RDMA/rxe: Fix the problem "mutex_destroy missing" Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 049/141] RDMA/cm: Print the old state when cm_destroy_id gets timeout Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 050/141] RDMA/mlx5: Fix port number for counter query in multi-port configuration Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 051/141] s390/qdio: handle deferred cc1 Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 052/141] s390/cio: fix race condition during online processing Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 053/141] drm: nv04: Fix out of bounds access Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 054/141] drm/panel: visionox-rm69299: dont unregister DSI device Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 055/141] ARM: omap2: n8x0: stop instantiating codec platform data Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 056/141] ARM: OMAP2+: pdata-quirks: stop including wl12xx.h Greg Kroah-Hartman
2024-04-24 17:25 ` Dmitry Torokhov
2024-04-27 14:07 ` Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 057/141] PCI: Avoid FLR for SolidRun SNET DPU rev 1 Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 058/141] HID: kye: Sort kye devices Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 059/141] usb: pci-quirks: Reduce the length of a spinlock section in usb_amd_find_chipset_info() Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 060/141] PCI: Delay after FLR of Solidigm P44 Pro NVMe Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 061/141] x86/quirks: Include linux/pnp.h for arch_pnpbios_disabled() Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 062/141] thunderbolt: Log function name of the called quirk Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 063/141] thunderbolt: Add debug log for link controller power quirk Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 064/141] PCI: Execute quirk_enable_clear_retrain_link() earlier Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 065/141] PCI: Make quirk using inw() depend on HAS_IOPORT Greg Kroah-Hartman
2024-04-24 6:23 ` Arnd Bergmann
2024-04-27 14:09 ` Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 066/141] PCI: switchtec: Use normal comment style Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 067/141] PCI: switchtec: Add support for PCIe Gen5 devices Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 068/141] ARM: davinci: Drop unused includes Greg Kroah-Hartman
2024-04-25 20:35 ` Rob Herring
2024-04-27 14:06 ` Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 069/141] ALSA: scarlett2: Move USB IDs out from device_info struct Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 070/141] ALSA: scarlett2: Add support for Clarett 8Pre USB Greg Kroah-Hartman
2024-04-23 21:38 ` [PATCH 6.1 071/141] ASoC: ti: Convert Pandora ASoC to GPIO descriptors Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 072/141] usb: pci-quirks: group AMD specific quirk code together Greg Kroah-Hartman
2024-04-24 6:28 ` Arnd Bergmann
2024-04-27 14:09 ` Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 073/141] ALSA: scarlett2: Default mixer driver to enabled Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 074/141] ALSA: scarlett2: Add correct product series name to messages Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 075/141] ALSA: scarlett2: Add Focusrite Clarett+ 2Pre and 4Pre support Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 076/141] ALSA: scarlett2: Add Focusrite Clarett 2Pre and 4Pre USB support Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 077/141] PCI/DPC: Use FIELD_GET() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 078/141] PCI: Simplify pcie_capability_clear_and_set_word() to ..._clear_word() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 079/141] ALSA: scarlett2: Rename scarlett_gen2 to scarlett2 Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 080/141] drm: panel-orientation-quirks: Add quirk for Lenovo Legion Go Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 081/141] usb: xhci: Add timeout argument in address_device USB HCD callback Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 082/141] usb: new quirk to reduce the SET_ADDRESS request timeout Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 083/141] clk: Remove prepare_lock hold assertion in __clk_release() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 084/141] clk: Print an info line before disabling unused clocks Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 085/141] clk: Initialize struct clk_core kref earlier Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 086/141] clk: Get runtime PM before walking tree during disable_unused Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 087/141] clk: remove unnecessary (void*) conversions Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 088/141] clk: Show active consumers of clocks in debugfs Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 089/141] clk: Get runtime PM before walking tree for clk_summary Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 090/141] clk: mediatek: mt8192: Correctly unregister and free clocks on failure Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 091/141] clk: mediatek: mt8192: Propagate struct device for gate clocks Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 092/141] clk: mediatek: clk-gate: Propagate struct device with mtk_clk_register_gates() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 093/141] clk: mediatek: clk-mtk: Propagate struct device for composites Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 094/141] clk: mediatek: clk-mux: Propagate struct device for mtk-mux Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 095/141] clk: mediatek: clk-mtk: Extend mtk_clk_simple_probe() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 096/141] clk: mediatek: Do a runtime PM get on controllers during probe Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 097/141] x86/bugs: Fix BHI retpoline check Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 098/141] x86/cpufeatures: Fix dependencies for GFNI, VAES, and VPCLMULQDQ Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 099/141] ALSA: hda/realtek - Enable audio jacks of Haier Boyue G42 with ALC269VC Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 100/141] binder: check offset alignment in binder_get_object() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 101/141] thunderbolt: Avoid notify PM core about runtime PM resume Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 102/141] thunderbolt: Fix wake configurations after device unplug Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 103/141] comedi: vmk80xx: fix incomplete endpoint checking Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 104/141] serial: mxs-auart: add spinlock around changing cts state Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 105/141] serial/pmac_zilog: Remove flawed mitigation for rx irq flood Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 106/141] serial: stm32: Return IRQ_NONE in the ISR if no handling happend Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 107/141] serial: stm32: Reset .throttled state in .startup() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 108/141] USB: serial: option: add Fibocom FM135-GL variants Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 109/141] USB: serial: option: add support for Fibocom FM650/FG650 Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 110/141] USB: serial: option: add Lonsung U8300/U9300 product Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 111/141] USB: serial: option: support Quectel EM060K sub-models Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 112/141] USB: serial: option: add Rolling RW101-GL and RW135-GL support Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 113/141] USB: serial: option: add Telit FN920C04 rmnet compositions Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 114/141] Revert "usb: cdc-wdm: close race between read and workqueue" Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 115/141] usb: dwc2: host: Fix dereference issue in DDMA completion flow Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 116/141] usb: Disable USB3 LPM at shutdown Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 117/141] usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport error Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 118/141] mei: me: disable RPL-S on SPS and IGN firmwares Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 119/141] speakup: Avoid crash on very long word Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 120/141] fs: sysfs: Fix reference leak in sysfs_break_active_protection() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 121/141] KVM: x86: Snapshot if a vCPUs vendor model is AMD vs. Intel compatible Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 122/141] KVM: x86/pmu: Disable support for adaptive PEBS Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 123/141] KVM: x86/pmu: Do not mask LVTPC when handling a PMI on AMD platforms Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 124/141] arm64: hibernate: Fix level3 translation fault in swsusp_save() Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 125/141] init/main.c: Fix potential static_command_line memory overflow Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 126/141] mm/memory-failure: fix deadlock when hugetlb_optimize_vmemmap is enabled Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 127/141] drm/amdgpu: validate the parameters of bo mapping operations more clearly Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 128/141] drm/vmwgfx: Sort primary plane formats by order of preference Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 129/141] drm/vmwgfx: Fix crtcs atomic check conditional Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 130/141] nouveau: fix instmem race condition around ptr stores Greg Kroah-Hartman
2024-04-23 21:39 ` [PATCH 6.1 131/141] bootconfig: use memblock_free_late to free xbc memory to buddy Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 132/141] nilfs2: fix OOB in nilfs_set_de_type Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 133/141] net: dsa: mt7530: set all CPU ports in MT7531_CPU_PMAP Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 134/141] net: dsa: introduce preferred_default_local_cpu_port and use on MT7530 Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 135/141] net: dsa: mt7530: fix improper frames on all 25MHz and 40MHz XTAL MT7530 Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 136/141] net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 137/141] ksmbd: fix slab-out-of-bounds in smb2_allocate_rsp_buf Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 138/141] ksmbd: validate request buffer size in smb2_allocate_rsp_buf() Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 139/141] ksmbd: clear RENAME_NOREPLACE before calling vfs_rename Greg Kroah-Hartman
2024-04-23 21:40 ` [PATCH 6.1 140/141] ksmbd: common: use struct_group_attr instead of struct_group for network_open_info Greg Kroah-Hartman
2024-04-23 21:40 ` Greg Kroah-Hartman [this message]
2024-04-23 23:00 ` [PATCH 6.1 000/141] 6.1.88-rc1 review SeongJae Park
2024-04-24 7:21 ` Pavel Machek
2024-04-24 8:23 ` Naresh Kamboju
2024-04-28 12:32 ` Vitaly Chikunov
2024-04-28 16:24 ` Guenter Roeck
2024-04-29 10:21 ` Greg Kroah-Hartman
2024-04-24 8:26 ` Ron Economos
2024-04-24 16:26 ` Florian Fainelli
2024-04-25 9:02 ` Jon Hunter
2024-04-25 9:03 ` Yann Sionneau
2024-04-25 19:27 ` Mateusz Jończyk
2024-04-25 20:08 ` Shreeya Patel
2024-04-26 2:21 ` Mark Brown
2024-04-26 10:44 ` Pavel Machek
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=20240423213857.798145327@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=bhelgaas@google.com \
--cc=johan+linaro@kernel.org \
--cc=patches@lists.linux.dev \
--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 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.