patches.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: Yu Kuai <yukuai3@huawei.com>, Ming Lei <ming.lei@redhat.com>,
	Jens Axboe <axboe@kernel.dk>, Sasha Levin <sashal@kernel.org>,
	tj@kernel.org, josef@toxicpanda.com, cgroups@vger.kernel.org,
	linux-block@vger.kernel.org
Subject: [PATCH AUTOSEL 6.17-6.6] blk-cgroup: fix possible deadlock while configuring policy
Date: Thu,  9 Oct 2025 11:54:49 -0400	[thread overview]
Message-ID: <20251009155752.773732-23-sashal@kernel.org> (raw)
In-Reply-To: <20251009155752.773732-1-sashal@kernel.org>

From: Yu Kuai <yukuai3@huawei.com>

[ Upstream commit 5d726c4dbeeddef612e6bed27edd29733f4d13af ]

Following deadlock can be triggered easily by lockdep:

WARNING: possible circular locking dependency detected
6.17.0-rc3-00124-ga12c2658ced0 #1665 Not tainted
------------------------------------------------------
check/1334 is trying to acquire lock:
ff1100011d9d0678 (&q->sysfs_lock){+.+.}-{4:4}, at: blk_unregister_queue+0x53/0x180

but task is already holding lock:
ff1100011d9d00e0 (&q->q_usage_counter(queue)#3){++++}-{0:0}, at: del_gendisk+0xba/0x110

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-> #2 (&q->q_usage_counter(queue)#3){++++}-{0:0}:
       blk_queue_enter+0x40b/0x470
       blkg_conf_prep+0x7b/0x3c0
       tg_set_limit+0x10a/0x3e0
       cgroup_file_write+0xc6/0x420
       kernfs_fop_write_iter+0x189/0x280
       vfs_write+0x256/0x490
       ksys_write+0x83/0x190
       __x64_sys_write+0x21/0x30
       x64_sys_call+0x4608/0x4630
       do_syscall_64+0xdb/0x6b0
       entry_SYSCALL_64_after_hwframe+0x76/0x7e

-> #1 (&q->rq_qos_mutex){+.+.}-{4:4}:
       __mutex_lock+0xd8/0xf50
       mutex_lock_nested+0x2b/0x40
       wbt_init+0x17e/0x280
       wbt_enable_default+0xe9/0x140
       blk_register_queue+0x1da/0x2e0
       __add_disk+0x38c/0x5d0
       add_disk_fwnode+0x89/0x250
       device_add_disk+0x18/0x30
       virtblk_probe+0x13a3/0x1800
       virtio_dev_probe+0x389/0x610
       really_probe+0x136/0x620
       __driver_probe_device+0xb3/0x230
       driver_probe_device+0x2f/0xe0
       __driver_attach+0x158/0x250
       bus_for_each_dev+0xa9/0x130
       driver_attach+0x26/0x40
       bus_add_driver+0x178/0x3d0
       driver_register+0x7d/0x1c0
       __register_virtio_driver+0x2c/0x60
       virtio_blk_init+0x6f/0xe0
       do_one_initcall+0x94/0x540
       kernel_init_freeable+0x56a/0x7b0
       kernel_init+0x2b/0x270
       ret_from_fork+0x268/0x4c0
       ret_from_fork_asm+0x1a/0x30

-> #0 (&q->sysfs_lock){+.+.}-{4:4}:
       __lock_acquire+0x1835/0x2940
       lock_acquire+0xf9/0x450
       __mutex_lock+0xd8/0xf50
       mutex_lock_nested+0x2b/0x40
       blk_unregister_queue+0x53/0x180
       __del_gendisk+0x226/0x690
       del_gendisk+0xba/0x110
       sd_remove+0x49/0xb0 [sd_mod]
       device_remove+0x87/0xb0
       device_release_driver_internal+0x11e/0x230
       device_release_driver+0x1a/0x30
       bus_remove_device+0x14d/0x220
       device_del+0x1e1/0x5a0
       __scsi_remove_device+0x1ff/0x2f0
       scsi_remove_device+0x37/0x60
       sdev_store_delete+0x77/0x100
       dev_attr_store+0x1f/0x40
       sysfs_kf_write+0x65/0x90
       kernfs_fop_write_iter+0x189/0x280
       vfs_write+0x256/0x490
       ksys_write+0x83/0x190
       __x64_sys_write+0x21/0x30
       x64_sys_call+0x4608/0x4630
       do_syscall_64+0xdb/0x6b0
       entry_SYSCALL_64_after_hwframe+0x76/0x7e

other info that might help us debug this:

Chain exists of:
  &q->sysfs_lock --> &q->rq_qos_mutex --> &q->q_usage_counter(queue)#3

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&q->q_usage_counter(queue)#3);
                               lock(&q->rq_qos_mutex);
                               lock(&q->q_usage_counter(queue)#3);
  lock(&q->sysfs_lock);

Root cause is that queue_usage_counter is grabbed with rq_qos_mutex
held in blkg_conf_prep(), while queue should be freezed before
rq_qos_mutex from other context.

The blk_queue_enter() from blkg_conf_prep() is used to protect against
policy deactivation, which is already protected with blkcg_mutex, hence
convert blk_queue_enter() to blkcg_mutex to fix this problem. Meanwhile,
consider that blkcg_mutex is held after queue is freezed from policy
deactivation, also convert blkg_alloc() to use GFP_NOIO.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

YES

Explanation:

- Fixes a real deadlock. The report shows a lockdep-proven circular
  dependency involving `&q->sysfs_lock`, `&q->rq_qos_mutex`, and
  `&q->q_usage_counter`, triggered during blkcg policy configuration
  while devices are being removed. The root cause is explicitly
  identified in the commit message: `blkg_conf_prep()` took
  `rq_qos_mutex` (indirectly via open) and then grabbed
  `q_usage_counter` via `blk_queue_enter()`, but other paths freeze the
  queue before taking `rq_qos_mutex`, creating an inversion.

- Core change eliminates the lock inversion without changing semantics:
  - Replaces `blk_queue_enter(q, 0)` with `mutex_lock(&q->blkcg_mutex)`
    to prevent concurrent policy deactivation, matching the protection
    already used by `blkcg_deactivate_policy()`.
    - Before: `blk_queue_enter()` grabbed `q_usage_counter` while
      `rq_qos_mutex` was already held (bad ordering).
    - After: Take `q->blkcg_mutex` instead, which is the correct lock to
      serialize with policy deactivation and does not participate in the
      problematic chain.
    - Code reference (new behavior at the commit): block/blk-
      cgroup.c:880 acquires `mutex_lock(&q->blkcg_mutex)`; block/blk-
      cgroup.c:fail_exit and success paths unlock it instead of
      `blk_queue_exit()`.
  - Drops the corresponding `blk_queue_exit(q)` calls since
    `blk_queue_enter()` is no longer used (block/blk-
    cgroup.c:success/fail paths).

- Allocation context adjusted for freeze safety:
  - Changes `blkg_alloc(..., GFP_KERNEL)` to `GFP_NOIO` while
    `blkcg_mutex` is held, because policy deactivation holds
    `blkcg_mutex` after freezing the queue; `GFP_NOIO` avoids potential
    IO/reclaim that could deadlock while the queue is frozen.
    - Code reference: block/blk-cgroup.c:911 switches to `GFP_NOIO`.

- Locking contract to callers is preserved:
  - `blkg_conf_prep()` still returns with `queue_lock` held as annotated
    (`__acquires(&bdev->bd_queue->queue_lock)`), and `blkg_conf_exit()`
    remains responsible for releasing `rq_qos_mutex` and `queue_lock`
    (block/blk-cgroup.c:992-1007). The new `blkcg_mutex` is released
    inside `blkg_conf_prep()` before returning, so external APIs don’t
    change.

- Small, contained change in a single subsystem file:
  - Only touches `block/blk-cgroup.c` and only the `blkg_conf_prep()`
    path. No UAPI or architectural shifts; minimal surface area.

- Aligns with existing design:
  - `blkcg_deactivate_policy()` already uses `q->blkcg_mutex` to
    serialize policy teardown with queue freeze (e.g., v6.6 has
    `mutex_lock(&q->blkcg_mutex)` in block/blk-cgroup.c:1625). Using the
    same mutex in `blkg_conf_prep()` is consistent and resolves the
    ordering with `rq_qos_mutex`.

- Applicability to stable:
  - Affects stable branches that:
    - Hold `rq_qos_mutex` in `blkg_conf_open_bdev()` and use
      `blk_queue_enter()` in `blkg_conf_prep()` (e.g., v6.6).
    - Have `q->blkcg_mutex` and use it in `blkcg_deactivate_policy()`.
  - Not directly applicable to much older series (e.g., v6.1) where the
    blkcg prep logic and locks differ (no `blkcg_mutex` field there, and
    `blkg_conf_prep()` is structured differently). Those branches may
    not exhibit the same lock chain or would need a different
    adaptation.

- Risk of regression is low:
  - The switch from `q_usage_counter` to `blkcg_mutex` is targeted to
    the specific policy update path and matches existing deactivate-
    policy synchronization.
  - The `GFP_NOIO` change is safer under queue freeze; allocation
    failure is handled with existing error paths (-ENOMEM) and retry
    logic for -EBUSY remains intact for other sources.

- Process signals quality:
  - Reviewed-by: Ming Lei; Signed-off-by: Jens Axboe. This is a well-
    scoped block layer fix.

Conclusion: This is a clear bug fix that removes a proven deadlock with
a minimal, well-aligned locking change. It should be backported to
stable trees where the affected locking and function structure exist
(e.g., 6.6+). It is not a straightforward backport to older trees
lacking `blkcg_mutex` and the newer prep/open split, so applicability
should be limited to branches that already have `rq_qos_mutex` in
`blkg_conf_open_bdev()` and `blk_queue_enter()` in `blkg_conf_prep()`.

 block/blk-cgroup.c | 23 ++++++++---------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index fe9ebd6a2e14d..6e89e64c71be0 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -883,14 +883,8 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
 	disk = ctx->bdev->bd_disk;
 	q = disk->queue;
 
-	/*
-	 * blkcg_deactivate_policy() requires queue to be frozen, we can grab
-	 * q_usage_counter to prevent concurrent with blkcg_deactivate_policy().
-	 */
-	ret = blk_queue_enter(q, 0);
-	if (ret)
-		goto fail;
-
+	/* Prevent concurrent with blkcg_deactivate_policy() */
+	mutex_lock(&q->blkcg_mutex);
 	spin_lock_irq(&q->queue_lock);
 
 	if (!blkcg_policy_enabled(q, pol)) {
@@ -920,16 +914,16 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
 		/* Drop locks to do new blkg allocation with GFP_KERNEL. */
 		spin_unlock_irq(&q->queue_lock);
 
-		new_blkg = blkg_alloc(pos, disk, GFP_KERNEL);
+		new_blkg = blkg_alloc(pos, disk, GFP_NOIO);
 		if (unlikely(!new_blkg)) {
 			ret = -ENOMEM;
-			goto fail_exit_queue;
+			goto fail_exit;
 		}
 
 		if (radix_tree_preload(GFP_KERNEL)) {
 			blkg_free(new_blkg);
 			ret = -ENOMEM;
-			goto fail_exit_queue;
+			goto fail_exit;
 		}
 
 		spin_lock_irq(&q->queue_lock);
@@ -957,7 +951,7 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
 			goto success;
 	}
 success:
-	blk_queue_exit(q);
+	mutex_unlock(&q->blkcg_mutex);
 	ctx->blkg = blkg;
 	return 0;
 
@@ -965,9 +959,8 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,
 	radix_tree_preload_end();
 fail_unlock:
 	spin_unlock_irq(&q->queue_lock);
-fail_exit_queue:
-	blk_queue_exit(q);
-fail:
+fail_exit:
+	mutex_unlock(&q->blkcg_mutex);
 	/*
 	 * If queue was bypassing, we should retry.  Do so after a
 	 * short msleep().  It isn't strictly necessary but queue
-- 
2.51.0


  parent reply	other threads:[~2025-10-09 15:58 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-09 15:54 [PATCH AUTOSEL 6.17-6.6] hwmon: (k10temp) Add device ID for Strix Halo Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] clocksource/drivers/timer-rtl-otto: Work around dying timers Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] mfd: intel-lpss: Add Intel Wildcat Lake LPSS PCI IDs Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.4] bpf: Don't use %pK through printk Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.16] mfd: qnap-mcu: Handle errors returned from qnap_mcu_write Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.15] ACPI: scan: Add Intel CVS ACPI HIDs to acpi_ignore_dep_ids[] Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.1] bpftool: Fix -Wuninitialized-const-pointer warnings with clang >= 21 Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] bpf: Use tnums for JEQ/JNE is_branch_taken logic Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] soc: apple: mailbox: Add Apple A11 and T2 mailbox support Sasha Levin
2025-10-10  2:22   ` Nick Chan
2025-11-04  0:22     ` Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.4] ACPICA: dispatcher: Use acpi_ds_clear_operands() in acpi_ds_call_control_method() Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] soc: sunxi: sram: add entry for a523 Sasha Levin
2025-10-09 16:38   ` Andre Przywara
2025-11-04  0:22     ` Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.10] pinctrl: single: fix bias pull up/down handling in pin_config_set Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.16] mmc: sdhci: Disable SD card clock before changing parameters Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.4] tee: allow a driver to allocate a tee_device without a pool Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.15] nvmet-fc: avoid scheduling association deletion twice Sasha Levin
2025-10-10  7:39   ` Daniel Wagner
2025-11-04  0:26     ` Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.16] soc: ti: k3-socinfo: Add information for AM62L SR1.1 Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.10] cpuidle: Fail cpuidle device registration if there is one already Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] firewire: ohci: move self_id_complete tracepoint after validating register Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.16] pinctrl: renesas: rzg2l: Add suspend/resume support for Schmitt control registers Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.4] arc: Fix __fls() const-foldability via __builtin_clzl() Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17] io_uring/zcrx: check all niovs filled with dma addresses Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.16] selftests/bpf: Fix incorrect array size calculation Sasha Levin
2025-10-09 15:54 ` Sasha Levin [this message]
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] selftests/bpf: Fix selftest verifier_arena_large failure Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] ACPI: sysfs: Use ACPI_FREE() for freeing an ACPI object Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.15] power: supply: sbs-charger: Support multiple devices Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.12] thermal: intel: selftests: workload_hint: Mask unsupported types Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.4] memstick: Add timeout to prevent indefinite waiting Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.15] ACPI: PRM: Skip handlers with NULL handler_address or NULL VA Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.1] spi: rpc-if: Add resume support for RZ/G3E Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-5.10] soc/tegra: fuse: Add Tegra114 nvmem cells and fuse lookups Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.16] rust: kunit: allow `cfg` on `test`s Sasha Levin
2025-10-09 15:54 ` [PATCH AUTOSEL 6.17-6.6] power: supply: qcom_battmgr: handle charging state change notifications Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] mfd: qnap-mcu: Include linux/types.h in qnap-mcu.h shared header Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] hwmon: (dell-smm) Remove Dell Precision 490 custom config data Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17] kunit: Enable PCI on UML without triggering WARN() Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] selftests: ublk: fix behavior when fio is not installed Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] i3c: dw: Add shutdown support to dw_i3c_master driver Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.1] bpf: Clear pfmemalloc flag when freeing all fragments Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17] mfd: macsmc: Add "apple,t8103-smc" compatible Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.1] nvme: Use non zero KATO for persistent discovery connections Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.6] power: supply: qcom_battmgr: add OOI chemistry Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] io_uring/zctx: check chained notif contexts Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.10] tools/power x86_energy_perf_policy: Fix incorrect fopen mode usage Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] uprobe: Do not emulate/sstep original instruction when ip is changed Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] tools/power x86_energy_perf_policy: Enhance HWP enable Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.15] tools/cpupower: fix error return value in cpupower_write_sysfs() Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] selftests/bpf: Fix bpf_prog_detach2 usage in test_lirc_mode2 Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] firmware: qcom: tzmem: disable sc7180 platform Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17] kselftest/arm64: tpidr2: Switch to waitpid() over wait4() Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] mfd: core: Increment of_node's refcount before linking it to the platform device Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] mfd: stmpe: Remove IRQ domain upon removal Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] soc: qcom: smem: Fix endian-unaware access of num_entries Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] cpufreq/longhaul: handle NULL policy in longhaul_exit Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] spi: loopback-test: Don't use %pK through printk Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] selftests/bpf: Fix flaky bpf_cookie selftest Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17] selftests: drv-net: Pull data before parsing headers Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] firmware: ti_sci: Enable abort handling of entry to LPM Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.15] soc: aspeed: socinfo: Add AST27xx silicon IDs Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] pinctrl: qcom: make the pinmuxing strict Sasha Levin
2025-10-09 16:08   ` Konrad Dybcio
2025-11-04  0:28     ` Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] libbpf: Fix USDT SIB argument handling causing unrecognized register error Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.1] irqchip/loongson-pch-lpc: Use legacy domain for PCH-LPC IRQ controller Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.6] arm64: zynqmp: Revert usb node drive strength and slew rate for zcu106 Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] bpftool: Add CET-aware symbol matching for x86_64 architectures Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] firmware: qcom: scm: Allow QSEECOM on Dell Inspiron 7441 / Latitude 7455 Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.10] mfd: da9063: Split chip variant reading in two bus transactions Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] tools/cpupower: Fix incorrect size in cpuidle_state_disable() Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] io_uring/rsrc: respect submitter_task in io_register_clone_buffers() Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17] pmdomain: thead: create auxiliary device for rebooting Sasha Levin
2025-10-09 16:02   ` Icenowy Zheng
2025-11-04  0:28     ` Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] spi: spi-qpic-snand: handle 'use_ecc' parameter of qcom_spi_config_cw_read() Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] cpufreq: ondemand: Update the efficient idle check for Intel extended Families Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] firmware: qcom: scm: preserve assign_mem() error return value Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] i3c: mipi-i3c-hci-pci: Add support for Intel Wildcat Lake-U I3C Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.6] bpf: Do not limit bpf_cgroup_from_id to current's namespace Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] arm64: zynqmp: Disable coresight by default Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] mfd: madera: Work around false-positive -Wininitialized warning Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.6] ARM: tegra: transformer-20: add missing magnetometer interrupt Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] tools/power x86_energy_perf_policy: Prefer driver HWP limits Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] selftests/futex: Fix futex_wait() for 32bit ARM Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] tools/power turbostat: Fix incorrect sorting of PMT telemetry Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] io_uring/zcrx: account niov arrays to cgroup Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.15] hwmon: (sbtsi_temp) AMD CPU extended temperature range support Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] ACPI: video: force native for Lenovo 82K8 Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] irqchip/loongson-eiointc: Route interrupt parsed from bios table Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.12] cpufreq: ti: Add support for AM62D2 Sasha Levin
2025-10-13  3:49   ` Paresh Bhagat
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] mfd: cs42l43: Move IRQ enable/disable to encompass force suspend Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.1] selftests/bpf: Upon failures, exit with code 1 in test_xsk.sh Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.1] irqchip/sifive-plic: Respect mask state when setting affinity Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.6] pmdomain: apple: Add "apple,t8103-pmgr-pwrstate" Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] video: backlight: lp855x_bl: Set correct EPROM start for LP8556 Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-5.4] clocksource/drivers/vf-pit: Replace raw_readl/writel to readl/writel Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.16] selftests/bpf: Fix arena_spin_lock selftest failure Sasha Levin
2025-10-09 15:55 ` [PATCH AUTOSEL 6.17-6.6] pinctrl: keembay: release allocated memory in detach path Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] mfd: kempld: Switch back to earlier ->init() behavior Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.6] ARM: tegra: transformer-20: fix audio-codec interrupt Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] ARM: tegra: p880: set correct touchscreen clipping Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] ACPI: resource: Skip IRQ override on ASUS Vivobook Pro N6506CU Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.16] block: check for valid bio while splitting Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.16] arm64: versal-net: Update rtc calibration value Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] thermal: gov_step_wise: Allow cooling level to be reduced earlier Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.10] nvme-fc: use lock accessing port_state and rport state Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.4] mfd: si476x: Add GPIOLIB_LEGACY dependency Sasha Levin
2025-10-09 16:03   ` Arnd Bergmann
2025-11-04  0:30     ` Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.10] soc: ti: pruss: don't use %pK through printk Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] pwm: pca9685: Use bulk write to atomicially update registers Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.6] hwmon: (k10temp) Add thermal support for AMD Family 1Ah-based models Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.4] mfd: stmpe-i2c: Add missing MODULE_LICENSE Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] ACPI: SPCR: Support Precise Baud Rate field Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.4] mmc: sdhci-msm: Enable tuning for SDR50 mode for SD card Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] clocksource/drivers/timer-rtl-otto: Do not interfere with interrupts Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.6] riscv: bpf: Fix uninitialized symbol 'retval_off' Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.4] irqchip/gic-v2m: Handle Multiple MSI base IRQ Alignment Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.4] hwmon: (dell-smm) Add support for Dell OptiPlex 7040 Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.12] hwmon: (lenovo-ec-sensors) Update P8 supprt Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-5.4] mmc: host: renesas_sdhi: Fix the actual clock Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.1] hwmon: sy7636a: add alias Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.1] futex: Don't leak robust_list pointer on exec race Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.16] mfd: simple-mfd-i2c: Add compatible strings for Layerscape QIXIS FPGA Sasha Levin
2025-10-09 15:56 ` [PATCH AUTOSEL 6.17-6.1] hwmon: (asus-ec-sensors) increase timeout for locking ACPI mutex 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=20251009155752.773732-23-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=axboe@kernel.dk \
    --cc=cgroups@vger.kernel.org \
    --cc=josef@toxicpanda.com \
    --cc=linux-block@vger.kernel.org \
    --cc=ming.lei@redhat.com \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    --cc=tj@kernel.org \
    --cc=yukuai3@huawei.com \
    /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;
as well as URLs for NNTP newsgroup(s).