[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Allow wake up of offline vcpu via nmi-ipi
On 18/01/2012 09:31, "Keir Fraser" <keir.xen@xxxxxxxxx> wrote: > On 18/01/2012 09:07, "Juergen Gross" <juergen.gross@xxxxxxxxxxxxxx> wrote: > >> On 01/18/2012 09:48 AM, Juergen Gross wrote: >>> On a real machine a cpu disabled via hlt with interrupts disabled can be >>> reactivated via a nmi ipi. Enable the hypervisor to do this for hvm, too. >>> >>> Signed-off-by: juergen.gross@xxxxxxxxxxxxxx >>> >>> >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> xen/arch/x86/hvm/vlapic.c | 5 ++++- >> >> BTW: I was not able to reactivate a vcpu via INIT/SIPI/SIPI sequence. It >> works >> on initial system boot when the target vcpu is activated the first time. If I >> deactivate a vcpu and try to activate it again it will start to run, but it >> is >> not starting at the specified entry point (at least it isn't performing the >> first instruction there). >> Is there some special initialization needed to make this work? Do I have to >> reset >> something on the vcpu before deactivating it? > > No it should just work. Hvmloader wakes and then sleeps every AP, in > hvmloader/smp.c. So even the first INIT-SIPI wakeup of an AP in the guest OS > is not the first, as hvmloader already did it once! So this path should be > working and indeed tested on every HVM guest boot. Bit more info: INIT-SIPI logic is complicated by needing to avoid deadlocks between two VCPUs attempting to pause and reset each other. But the core dispatch logic is in vlapic_init_sipi_action(). You will see that on INIT, we should call vcpu_reset() which will de-initialise and VCPU_down the vcpu. And then on SIPI we call hvm_vcpu_reset_state(), which should reinitialise and wake the vcpu to start running at the specified CS:IP. So the above will be good places for you to add tracing and work out what's going on. :-) -- Keir > -- Keir > >> >> Juergen > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |