On Wed, 2019-08-14 at 17:15 +0100, George Dunlap wrote: > On Fri, Aug 2, 2019 at 2:08 PM Juergen Gross wrote: > > --- a/xen/common/cpupool.c > > +++ b/xen/common/cpupool.c > > @@ -762,18 +762,28 @@ static struct notifier_block cpu_nfb = { > > .notifier_call = cpu_callback > > }; > > > > -static int __init cpupool_presmp_init(void) > > +static int __init cpupool_init(void) > > { > > + unsigned int cpu; > > int err; > > - void *cpu = (void *)(long)smp_processor_id(); > > + > > cpupool0 = cpupool_create(0, 0, &err); > > BUG_ON(cpupool0 == NULL); > > cpupool_put(cpupool0); > > - cpu_callback(&cpu_nfb, CPU_ONLINE, cpu); > > register_cpu_notifier(&cpu_nfb); > > + > > + spin_lock(&cpupool_lock); > > + > > + cpumask_copy(&cpupool_free_cpus, &cpu_online_map); > > + > > + for_each_cpu ( cpu, &cpupool_free_cpus ) > > + cpupool_assign_cpu_locked(cpupool0, cpu); > > + > > + spin_unlock(&cpupool_lock); > > Just to make sure I understand what's happening here -- > cpu_callback() > now won't get called with CPU_ONLINE early in the boot process; but > it > will still be called with CPU_ONLINE in other circumstances (e.g., > hot-plug / suspend / whatever)? > Exactly. It is not used for resume (from suspend) any longer, since commit 6870ea9d1fad ("xen/cpupool: simplify suspend/resume handling). But it is used for putting the various CPUs in Pool-0, as they come-up, during boot. This patch remove the "hack" of calling it directly, during cpupool initialization, for the BSP. > Sorry that's an overly-basic question; I don't have a good picture > for > the cpu state machine. > Well, I used to... I tried to quickly double check things, and what I said above should be still valid, even after the latest changes (or so I hope :-) ). Regards -- Dario Faggioli, Ph.D http://about.me/dario.faggioli Virtualization Software Engineer SUSE Labs, SUSE https://www.suse.com/ ------------------------------------------------------------------- <> (Raistlin Majere)