diff options
| author | Michael Ellerman <mpe@ellerman.id.au> | 2025-03-16 12:02:46 +1100 |
|---|---|---|
| committer | Michael Ellerman <mpe@ellerman.id.au> | 2025-03-16 12:02:46 +1100 |
| commit | ff443fb402e95f5095dde3c64f7c3249d7c6f993 (patch) | |
| tree | fac700d27838ff41a7308dc217551253a1e2b0df /kernel/time/timer_migration.c | |
| parent | 772ba9b5bd2701a9967c084b66ff1daaee0367eb (diff) | |
| parent | eff2eb592efd73f00590d578c3d6021f604df62c (diff) | |
| download | lwn-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.c | 10 |
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 |
