From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Douglas Anderson <dianders@chromium.org>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Krzysztof Kozlowski <krzk@kernel.org>,
Stephen Boyd <sboyd@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.1 086/141] clk: Get runtime PM before walking tree during disable_unused
Date: Tue, 23 Apr 2024 14:39:14 -0700 [thread overview]
Message-ID: <20240423213855.983222834@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: Stephen Boyd <sboyd@kernel.org>
[ Upstream commit e581cf5d216289ef292d1a4036d53ce90e122469 ]
Doug reported [1] the following hung task:
INFO: task swapper/0:1 blocked for more than 122 seconds.
Not tainted 5.15.149-21875-gf795ebc40eb8 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:swapper/0 state:D stack: 0 pid: 1 ppid: 0 flags:0x00000008
Call trace:
__switch_to+0xf4/0x1f4
__schedule+0x418/0xb80
schedule+0x5c/0x10c
rpm_resume+0xe0/0x52c
rpm_resume+0x178/0x52c
__pm_runtime_resume+0x58/0x98
clk_pm_runtime_get+0x30/0xb0
clk_disable_unused_subtree+0x58/0x208
clk_disable_unused_subtree+0x38/0x208
clk_disable_unused_subtree+0x38/0x208
clk_disable_unused_subtree+0x38/0x208
clk_disable_unused_subtree+0x38/0x208
clk_disable_unused+0x4c/0xe4
do_one_initcall+0xcc/0x2d8
do_initcall_level+0xa4/0x148
do_initcalls+0x5c/0x9c
do_basic_setup+0x24/0x30
kernel_init_freeable+0xec/0x164
kernel_init+0x28/0x120
ret_from_fork+0x10/0x20
INFO: task kworker/u16:0:9 blocked for more than 122 seconds.
Not tainted 5.15.149-21875-gf795ebc40eb8 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kworker/u16:0 state:D stack: 0 pid: 9 ppid: 2 flags:0x00000008
Workqueue: events_unbound deferred_probe_work_func
Call trace:
__switch_to+0xf4/0x1f4
__schedule+0x418/0xb80
schedule+0x5c/0x10c
schedule_preempt_disabled+0x2c/0x48
__mutex_lock+0x238/0x488
__mutex_lock_slowpath+0x1c/0x28
mutex_lock+0x50/0x74
clk_prepare_lock+0x7c/0x9c
clk_core_prepare_lock+0x20/0x44
clk_prepare+0x24/0x30
clk_bulk_prepare+0x40/0xb0
mdss_runtime_resume+0x54/0x1c8
pm_generic_runtime_resume+0x30/0x44
__genpd_runtime_resume+0x68/0x7c
genpd_runtime_resume+0x108/0x1f4
__rpm_callback+0x84/0x144
rpm_callback+0x30/0x88
rpm_resume+0x1f4/0x52c
rpm_resume+0x178/0x52c
__pm_runtime_resume+0x58/0x98
__device_attach+0xe0/0x170
device_initial_probe+0x1c/0x28
bus_probe_device+0x3c/0x9c
device_add+0x644/0x814
mipi_dsi_device_register_full+0xe4/0x170
devm_mipi_dsi_device_register_full+0x28/0x70
ti_sn_bridge_probe+0x1dc/0x2c0
auxiliary_bus_probe+0x4c/0x94
really_probe+0xcc/0x2c8
__driver_probe_device+0xa8/0x130
driver_probe_device+0x48/0x110
__device_attach_driver+0xa4/0xcc
bus_for_each_drv+0x8c/0xd8
__device_attach+0xf8/0x170
device_initial_probe+0x1c/0x28
bus_probe_device+0x3c/0x9c
deferred_probe_work_func+0x9c/0xd8
process_one_work+0x148/0x518
worker_thread+0x138/0x350
kthread+0x138/0x1e0
ret_from_fork+0x10/0x20
The first thread is walking the clk tree and calling
clk_pm_runtime_get() to power on devices required to read the clk
hardware via struct clk_ops::is_enabled(). This thread holds the clk
prepare_lock, and is trying to runtime PM resume a device, when it finds
that the device is in the process of resuming so the thread schedule()s
away waiting for the device to finish resuming before continuing. The
second thread is runtime PM resuming the same device, but the runtime
resume callback is calling clk_prepare(), trying to grab the
prepare_lock waiting on the first thread.
This is a classic ABBA deadlock. To properly fix the deadlock, we must
never runtime PM resume or suspend a device with the clk prepare_lock
held. Actually doing that is near impossible today because the global
prepare_lock would have to be dropped in the middle of the tree, the
device runtime PM resumed/suspended, and then the prepare_lock grabbed
again to ensure consistency of the clk tree topology. If anything
changes with the clk tree in the meantime, we've lost and will need to
start the operation all over again.
Luckily, most of the time we're simply incrementing or decrementing the
runtime PM count on an active device, so we don't have the chance to
schedule away with the prepare_lock held. Let's fix this immediate
problem that can be triggered more easily by simply booting on Qualcomm
sc7180.
Introduce a list of clk_core structures that have been registered, or
are in the process of being registered, that require runtime PM to
operate. Iterate this list and call clk_pm_runtime_get() on each of them
without holding the prepare_lock during clk_disable_unused(). This way
we can be certain that the runtime PM state of the devices will be
active and resumed so we can't schedule away while walking the clk tree
with the prepare_lock held. Similarly, call clk_pm_runtime_put() without
the prepare_lock held to properly drop the runtime PM reference. We
remove the calls to clk_pm_runtime_{get,put}() in this path because
they're superfluous now that we know the devices are runtime resumed.
Reported-by: Douglas Anderson <dianders@chromium.org>
Closes: https://lore.kernel.org/all/20220922084322.RFC.2.I375b6b9e0a0a5348962f004beb3dafee6a12dfbb@changeid/ [1]
Closes: https://issuetracker.google.com/328070191
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Fixes: 9a34b45397e5 ("clk: Add support for runtime PM")
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Link: https://lore.kernel.org/r/20240325184204.745706-5-sboyd@kernel.org
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/clk.c | 117 +++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 105 insertions(+), 12 deletions(-)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 4f9f55cff9231..75d8f7f0de9ba 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -37,6 +37,10 @@ static HLIST_HEAD(clk_root_list);
static HLIST_HEAD(clk_orphan_list);
static LIST_HEAD(clk_notifier_list);
+/* List of registered clks that use runtime PM */
+static HLIST_HEAD(clk_rpm_list);
+static DEFINE_MUTEX(clk_rpm_list_lock);
+
static const struct hlist_head *all_lists[] = {
&clk_root_list,
&clk_orphan_list,
@@ -59,6 +63,7 @@ struct clk_core {
struct clk_hw *hw;
struct module *owner;
struct device *dev;
+ struct hlist_node rpm_node;
struct device_node *of_node;
struct clk_core *parent;
struct clk_parent_map *parents;
@@ -122,6 +127,89 @@ static void clk_pm_runtime_put(struct clk_core *core)
pm_runtime_put_sync(core->dev);
}
+/**
+ * clk_pm_runtime_get_all() - Runtime "get" all clk provider devices
+ *
+ * Call clk_pm_runtime_get() on all runtime PM enabled clks in the clk tree so
+ * that disabling unused clks avoids a deadlock where a device is runtime PM
+ * resuming/suspending and the runtime PM callback is trying to grab the
+ * prepare_lock for something like clk_prepare_enable() while
+ * clk_disable_unused_subtree() holds the prepare_lock and is trying to runtime
+ * PM resume/suspend the device as well.
+ *
+ * Context: Acquires the 'clk_rpm_list_lock' and returns with the lock held on
+ * success. Otherwise the lock is released on failure.
+ *
+ * Return: 0 on success, negative errno otherwise.
+ */
+static int clk_pm_runtime_get_all(void)
+{
+ int ret;
+ struct clk_core *core, *failed;
+
+ /*
+ * Grab the list lock to prevent any new clks from being registered
+ * or unregistered until clk_pm_runtime_put_all().
+ */
+ mutex_lock(&clk_rpm_list_lock);
+
+ /*
+ * Runtime PM "get" all the devices that are needed for the clks
+ * currently registered. Do this without holding the prepare_lock, to
+ * avoid the deadlock.
+ */
+ hlist_for_each_entry(core, &clk_rpm_list, rpm_node) {
+ ret = clk_pm_runtime_get(core);
+ if (ret) {
+ failed = core;
+ pr_err("clk: Failed to runtime PM get '%s' for clk '%s'\n",
+ dev_name(failed->dev), failed->name);
+ goto err;
+ }
+ }
+
+ return 0;
+
+err:
+ hlist_for_each_entry(core, &clk_rpm_list, rpm_node) {
+ if (core == failed)
+ break;
+
+ clk_pm_runtime_put(core);
+ }
+ mutex_unlock(&clk_rpm_list_lock);
+
+ return ret;
+}
+
+/**
+ * clk_pm_runtime_put_all() - Runtime "put" all clk provider devices
+ *
+ * Put the runtime PM references taken in clk_pm_runtime_get_all() and release
+ * the 'clk_rpm_list_lock'.
+ */
+static void clk_pm_runtime_put_all(void)
+{
+ struct clk_core *core;
+
+ hlist_for_each_entry(core, &clk_rpm_list, rpm_node)
+ clk_pm_runtime_put(core);
+ mutex_unlock(&clk_rpm_list_lock);
+}
+
+static void clk_pm_runtime_init(struct clk_core *core)
+{
+ struct device *dev = core->dev;
+
+ if (dev && pm_runtime_enabled(dev)) {
+ core->rpm_enabled = true;
+
+ mutex_lock(&clk_rpm_list_lock);
+ hlist_add_head(&core->rpm_node, &clk_rpm_list);
+ mutex_unlock(&clk_rpm_list_lock);
+ }
+}
+
/*** locking ***/
static void clk_prepare_lock(void)
{
@@ -1310,9 +1398,6 @@ static void __init clk_unprepare_unused_subtree(struct clk_core *core)
if (core->flags & CLK_IGNORE_UNUSED)
return;
- if (clk_pm_runtime_get(core))
- return;
-
if (clk_core_is_prepared(core)) {
trace_clk_unprepare(core);
if (core->ops->unprepare_unused)
@@ -1321,8 +1406,6 @@ static void __init clk_unprepare_unused_subtree(struct clk_core *core)
core->ops->unprepare(core->hw);
trace_clk_unprepare_complete(core);
}
-
- clk_pm_runtime_put(core);
}
static void __init clk_disable_unused_subtree(struct clk_core *core)
@@ -1338,9 +1421,6 @@ static void __init clk_disable_unused_subtree(struct clk_core *core)
if (core->flags & CLK_OPS_PARENT_ENABLE)
clk_core_prepare_enable(core->parent);
- if (clk_pm_runtime_get(core))
- goto unprepare_out;
-
flags = clk_enable_lock();
if (core->enable_count)
@@ -1365,8 +1445,6 @@ static void __init clk_disable_unused_subtree(struct clk_core *core)
unlock_out:
clk_enable_unlock(flags);
- clk_pm_runtime_put(core);
-unprepare_out:
if (core->flags & CLK_OPS_PARENT_ENABLE)
clk_core_disable_unprepare(core->parent);
}
@@ -1382,6 +1460,7 @@ __setup("clk_ignore_unused", clk_ignore_unused_setup);
static int __init clk_disable_unused(void)
{
struct clk_core *core;
+ int ret;
if (clk_ignore_unused) {
pr_warn("clk: Not disabling unused clocks\n");
@@ -1390,6 +1469,13 @@ static int __init clk_disable_unused(void)
pr_info("clk: Disabling unused clocks\n");
+ ret = clk_pm_runtime_get_all();
+ if (ret)
+ return ret;
+ /*
+ * Grab the prepare lock to keep the clk topology stable while iterating
+ * over clks.
+ */
clk_prepare_lock();
hlist_for_each_entry(core, &clk_root_list, child_node)
@@ -1406,6 +1492,8 @@ static int __init clk_disable_unused(void)
clk_prepare_unlock();
+ clk_pm_runtime_put_all();
+
return 0;
}
late_initcall_sync(clk_disable_unused);
@@ -4071,6 +4159,12 @@ static void __clk_release(struct kref *ref)
{
struct clk_core *core = container_of(ref, struct clk_core, ref);
+ if (core->rpm_enabled) {
+ mutex_lock(&clk_rpm_list_lock);
+ hlist_del(&core->rpm_node);
+ mutex_unlock(&clk_rpm_list_lock);
+ }
+
clk_core_free_parent_map(core);
kfree_const(core->name);
kfree(core);
@@ -4110,9 +4204,8 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw)
}
core->ops = init->ops;
- if (dev && pm_runtime_enabled(dev))
- core->rpm_enabled = true;
core->dev = dev;
+ clk_pm_runtime_init(core);
core->of_node = np;
if (dev && dev->driver)
core->owner = dev->driver->owner;
--
2.43.0
next prev parent reply other threads:[~2024-04-23 21:45 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 ` Greg Kroah-Hartman [this message]
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 ` [PATCH 6.1 141/141] PCI/ASPM: Fix deadlock when enabling ASPM Greg Kroah-Hartman
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=20240423213855.983222834@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=dianders@chromium.org \
--cc=krzk@kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=patches@lists.linux.dev \
--cc=sashal@kernel.org \
--cc=sboyd@kernel.org \
--cc=stable@vger.kernel.org \
--cc=ulf.hansson@linaro.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.