[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

  • To: Keir Fraser <keir.xen@xxxxxxxxx>
  • From: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx>
  • Date: Wed, 18 Jan 2012 11:39:22 +0100
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
  • Delivery-date: Wed, 18 Jan 2012 10:41:14 +0000
  • Domainkey-signature: s=s1536a; d=ts.fujitsu.com; c=nofws; q=dns; h=X-SBRSScore:X-IronPort-AV:Received:X-IronPort-AV: Received:Received:Message-ID:Date:From:Organization: User-Agent:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type:Content-Transfer-Encoding; b=kR6lvLHbY9KqXRZAIW41epYsRe7dPJU6LECNpil8klGcehZI1AtQiSxs c3TYSZERU6NOmwtjwmbW9ZqCVniyXM6ttFvbJw7PPwIRoaKtdgGu843xi bnDcuT6ziO0zdkgjaFbiMYjESMo3iGCbGe4mpH8HeQiKqazYrTfk1w/cu gIdnJdFk6eGJ1lD+z2hQABuCUsJ0Zv0q/fuoDIdA61taUMM3Aw85cebmU V1RWJVWeEIZB4oN4EW2b7CyWkXh8z;
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

On 01/18/2012 10:36 AM, Keir Fraser wrote:
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
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
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
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. :-)

Yeah, thanks for the confirmation this should work.
Printing some diagnostics helped me to spot the error in my code.


Juergen Gross                 Principal Developer Operating Systems
PDG ES&S SWE OS6                       Telephone: +49 (0) 89 3222 2967
Fujitsu Technology Solutions              e-mail: juergen.gross@xxxxxxxxxxxxxx
Domagkstr. 28                           Internet: ts.fujitsu.com
D-80807 Muenchen                 Company details: ts.fujitsu.com/imprint.html

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.