From: Gleb Natapov <gleb@redhat.com>
To: zhang zhi <zhangzhi2022@hotmail.com>
Cc: kvm@vger.kernel.org
Subject: Re: kvm running on core1 wants guest os on core2 to execute a pre-defined program
Date: Sun, 17 Feb 2013 17:25:49 +0200 [thread overview]
Message-ID: <20130217152549.GV9817@redhat.com> (raw)
In-Reply-To: <BLU170-DS12707EE6D9EACFD7F61D5CC0C0@phx.gbl>
On Sun, Feb 17, 2013 at 11:08:19PM +0800, zhang zhi wrote:
>
> topic: Re: kvm running on core1 wants guest os on core2 to execute a
> pre-defined program
>
> On Sun, Feb 17, 2013 at 02:46:28AM +0000, zhangzhi wrote:
> > I have been studying some stuff about KVM and sincerely hope that
> > someone is willing to reply to this mail.
> > As we know, If physical NIC interrupt is received on physical CPU 0
> > which is in root mode and the hypervisor determines that this is a
> > network packet targeted to the emulated NIC for a VM at the same time
> > this VM is running a user program in guest mode on physical CPU 1.
> > My question is:
> > At this time can hypervisor running on CPU 0 *actively* interrupt VM
> > and make it run the corresponding interrupt handler to handle the
> > incoming network data packet? CPU 1 which is running a user program is
> > not supposed to vm-exit considering the performance effect, so I can
> > not use the inter-processor
> > interrupt(IPI) to cause the CPU1 to leave guest mode and exit to the
> hypervisor.
> >
> On Sun, Feb 17, 2013 at 20:06:18PM +0000, Gleb wrote:
> >>With current generation of CPUs you will have to use IPI to make CPU1
> vmexit and inject interrupt on the next vmentry. Future CPU will allow to
> >>inject interrupt into a running guest without vmexit. On Intel this is
> called "posted interrupts".
> >>
> >>
> Thank you for your prompt reply. According to what you've said, it seems
> impossible to make CPU1 run the corresponding interrupt handler without
> vm-exit.
> I have an idea like this: CPU0 send a message to i/o apic after configuring
> i/o apic and the message is mainly about the interrupt vector of emulated
> NIC. After that, the i/o apic will go around hypervisor and send the
> corresponding interrupt request directly to target CPU1 , considering that
> guest os itself owns the NIC device. Is it possible?
Interrupt delivered by IOAPIC will make CPU to do vmexit. It is possible
to hack around it, but it is not simple. See
http://researcher.ibm.com/files/il-ABELG/eli_asplos12.pdf how it was
done already. Just buy HW that is capable enough to do what you want.
--
Gleb.
next prev parent reply other threads:[~2013-02-17 15:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-17 15:08 kvm running on core1 wants guest os on core2 to execute a pre-defined program zhang zhi
2013-02-17 15:25 ` Gleb Natapov [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-02-17 2:46 zhangzhi
2013-02-17 12:06 ` Gleb Natapov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130217152549.GV9817@redhat.com \
--to=gleb@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=zhangzhi2022@hotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox