[BitVisor-devel-en:34] Re: about ipi interrupt
zhang zhi
zhangzhi2022 at hotmail.com
Tue Jan 15 23:10:13 JST 2013
Yes, you are right. Thanks for your reply.
And I have also read the ""Intel(R) 64 and IA-32 Architectures Software
Developer's Manual, Volume 3B"" .
Now, core 1 which is in root-mode has used the NMI to cause core2 which is
in guest os mode to exit back to root mode, then this cpu's vcpu "current"
is set including its interruption info and vm-entry vector of interrupt,
also the length of vm-exit instruction. Right?
Re: Re: [BitVisor-devel-en:32] about ipi interrupt
> In the context of multi-core mode, core 1 is in root-mode,
> meaning that it's running VMM, and core 2 is in non-root mode, meaning
> that it's running guest OS. If core 1 wants to send an IPI to core2 in
> order to cause
> core2 exit back to root-mode, then core 1 should set its own apic_icr.
> Right?
Yes. Panic is similar case. When panic, BitVisor sends an NMI to all other
processors.
> The problem is that bitvisor only defines 32-bit of apic_icr which
> means that the destination field ranging from bits 56 to 63 can't be used.
Right. Upper 32-bit of the ICR (physical address 0xFEE00310) is not defined
because IPIs sent from BitVisor (INIT, start-up IPI or NMI to all other
processors) do not use the destination field.
> Moreover, the function vt__exit_reason also does not define such an
> event, thus it can not handle a case like : EXIT_REASON_IPI. I have
> noticed that it can handle the case of EXIT_REASON_STARTUP_IPI.
>
> Need I define a handler of case as EXIT_REASON_IPI as well as a new
> apic_icr of 64 bit ?
The exit reason comes from Intel VT-x specification. According to
"Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume
3B", there is no "EXIT_REASON_IPI".
Start-up IPI is a special interrupt. NMI which is also a special interrupt
makes "EXIT_REASON_EXCEPTION_OR_NMI". Other interrupts are handled by
"EXIT_REASON_EXTERNAL_INT".
--
Hideki EIRAKU <hdk at igel.co.jp>
More information about the BitVisor-devel-en
mailing list