On Fri, 2016-07-15 at 19:02 +0100, George Dunlap wrote: > The generic domain creation logic in > xen/common/domctl.c:default_vcpu0_location() attempts to try to do > initial placement load-balancing by placing vcpu 0 on the least-busy > non-primary hyperthread available.  Unfortunately, the logic can end > up picking a pcpu that's not in the online mask.  When this is passed > to a scheduler such which assumes that the initial assignment is > valid, it causes a null pointer dereference looking up the runqueue. > > Furthermore, this initial placement doesn't take into account hard or > soft affinity, or any scheduler-specific knowledge (such as historic > runqueue load, as in credit2). > > To solve this, when inserting a vcpu, always call the per-scheduler > "pick" function to revise the initial placement.  This will > automatically take all knowledge the scheduler has into account. > > Signed-off-by: George Dunlap > --- > CC: Dario Faggioli > CC: Anshul Makkar > CC: Meng Xu > CC: Jan Beulich > Reviewed-by: Dario Faggioli Regards, Dario -- <> (Raistlin Majere) ----------------------------------------------------------------- Dario Faggioli, Ph.D, http://about.me/dario.faggioli Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)