summaryrefslogtreecommitdiff
path: root/kernel/time/timer_migration.c
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2025-03-16 12:02:46 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2025-03-16 12:02:46 +1100
commitff443fb402e95f5095dde3c64f7c3249d7c6f993 (patch)
treefac700d27838ff41a7308dc217551253a1e2b0df /kernel/time/timer_migration.c
parent772ba9b5bd2701a9967c084b66ff1daaee0367eb (diff)
parenteff2eb592efd73f00590d578c3d6021f604df62c (diff)
downloadlwn-ff443fb402e95f5095dde3c64f7c3249d7c6f993.tar.gz
lwn-ff443fb402e95f5095dde3c64f7c3249d7c6f993.zip
Merge branch 'fixes' into topic/cxl
Merge our fixes branch to bring in the changes to the CXL documentation that the CXL removal patch depends on.
Diffstat (limited to 'kernel/time/timer_migration.c')
-rw-r--r--kernel/time/timer_migration.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c
index 9cb9b6584ea1..2f6330831f08 100644
--- a/kernel/time/timer_migration.c
+++ b/kernel/time/timer_migration.c
@@ -1675,6 +1675,9 @@ static int tmigr_setup_groups(unsigned int cpu, unsigned int node)
} while (i < tmigr_hierarchy_levels);
+ /* Assert single root */
+ WARN_ON_ONCE(!err && !group->parent && !list_is_singular(&tmigr_level_list[top]));
+
while (i > 0) {
group = stack[--i];
@@ -1716,7 +1719,12 @@ static int tmigr_setup_groups(unsigned int cpu, unsigned int node)
WARN_ON_ONCE(top == 0);
lvllist = &tmigr_level_list[top];
- if (group->num_children == 1 && list_is_singular(lvllist)) {
+
+ /*
+ * Newly created root level should have accounted the upcoming
+ * CPU's child group and pre-accounted the old root.
+ */
+ if (group->num_children == 2 && list_is_singular(lvllist)) {
/*
* The target CPU must never do the prepare work, except
* on early boot when the boot CPU is the target. Otherwise