On Tue, 2019-08-13 at 17:52 +0100, Julien Grall wrote: > Hi Dario, > Hello! > On 8/13/19 4:27 PM, Dario Faggioli wrote: > > On Fri, 2019-08-09 at 11:30 -0700, Stefano Stabellini wrote: > > > > > In my (x86 and "dom0full") testbox, this seems to come from > > domain_unpause_by_systemcontroller(dom0) called by > > xen/arch/x86/setup.c:init_done(), at the very end of __start_xen(). > > > > I don't know if domain construction in an ARM dom0less system works > > similarly, though. What we want, is someone calling either > > vcpu_wake() > > or vcpu_unpause(), after having cleared _VPF_down from pause_flags. > > Looking at create_domUs() there is a call to > domain_unpause_by_controller for each domUs. > Yes, I saw that. And I've seen the one done don dom0, at the end of xen/arch/arm/setup.c:start_xen(), as well. Also, both construct_dom0() (still from start_xen()) and construct_domU() (called from create_domUs()) call construct_domain(), which does clear_bit(_VPF_down), setting the domain to online. So, unless the flag gets cleared again, or something else happens that makes the vCPU(s) fail the vcpu_runnable() check in domain_unpause()->vcpu_wake(), I don't see why the wakeup that let the null scheduler start scheduling the vCPU doesn't happen... as it instead does on x86 or !dom0less ARM (because, as far as I've understood, it's only dom0less that doesn't work, it this correct?) Regards -- Dario Faggioli, Ph.D http://about.me/dario.faggioli Virtualization Software Engineer SUSE Labs, SUSE https://www.suse.com/ ------------------------------------------------------------------- <> (Raistlin Majere)