Re: kcompactd hotplug fail

From: Thomas Gleixner
Date: Thu Sep 10 2020 - 17:13:26 EST


On Thu, Sep 10 2020 at 16:10, peterz wrote:
> While playing with hotplug, I ran into the below:
>
> [ 2305.676384] ------------[ cut here ]------------
> [ 2305.681543] WARNING: CPU: 1 PID: 15 at kernel/sched/core.c:1924 __set_cpus_allowed_ptr+0x1bd/0x230
> [ 2305.821454] kcompactd_cpu_online+0xa1/0xb0
>
> Given:
>
> static int __init kcompactd_init(void)
> {
> ...
> ret = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
> "mm/compaction:online",
> kcompactd_cpu_online, NULL);
>
> and:
>
>
> CPUHP_AP_ONLINE_DYN,
> CPUHP_AP_ONLINE_DYN_END = CPUHP_AP_ONLINE_DYN + 30,
> CPUHP_AP_X86_HPET_ONLINE,
> CPUHP_AP_X86_KVM_CLK_ONLINE,
> CPUHP_AP_ACTIVE,
>
> this is somewhat expected behaviour.
>
> It tries and set the compaction affinity to include the newly onlined
> CPU before it is marked active and that's a no-no.
>
> Ideally the kcompactd notifier is ran after AP_ACTIVE, not before.

Indeed. So we need steps post ACTIVE which we did not want to have in
the first place :)

Thanks,

tglx