Skip to content

Commit 36f0b35

Browse files
melvertorvalds
authored andcommitted
kfence: use power-efficient work queue to run delayed work
Use the power-efficient work queue, to avoid the pathological case where we keep pinning ourselves on the same possibly idle CPU on systems that want to be power-efficient (https://lwn.net/Articles/731052/). Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Marco Elver <[email protected]> Cc: Alexander Potapenko <[email protected]> Cc: Dmitry Vyukov <[email protected]> Cc: Hillf Danton <[email protected]> Cc: Jann Horn <[email protected]> Cc: Mark Rutland <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 37c9284 commit 36f0b35

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

mm/kfence/core.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,8 @@ static void toggle_allocation_gate(struct work_struct *work)
636636
/* Disable static key and reset timer. */
637637
static_branch_disable(&kfence_allocation_key);
638638
#endif
639-
schedule_delayed_work(&kfence_timer, msecs_to_jiffies(kfence_sample_interval));
639+
queue_delayed_work(system_power_efficient_wq, &kfence_timer,
640+
msecs_to_jiffies(kfence_sample_interval));
640641
}
641642
static DECLARE_DELAYED_WORK(kfence_timer, toggle_allocation_gate);
642643

@@ -665,7 +666,7 @@ void __init kfence_init(void)
665666
}
666667

667668
WRITE_ONCE(kfence_enabled, true);
668-
schedule_delayed_work(&kfence_timer, 0);
669+
queue_delayed_work(system_power_efficient_wq, &kfence_timer, 0);
669670
pr_info("initialized - using %lu bytes for %d objects at 0x%p-0x%p\n", KFENCE_POOL_SIZE,
670671
CONFIG_KFENCE_NUM_OBJECTS, (void *)__kfence_pool,
671672
(void *)(__kfence_pool + KFENCE_POOL_SIZE));

0 commit comments

Comments
 (0)