All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <mtosatti@redhat.com>
To: Hu Yaohui <loki2441@gmail.com>
Cc: Chen Fan <chen.fan.fnst@cn.fujitsu.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	kvm <kvm@vger.kernel.org>,
	gleb@redhat.com, pbonzini@redhat.com
Subject: Re: [PATCH] kvm: x86: Fix debug typo error in lapic
Date: Thu, 9 Jan 2014 16:46:16 -0200	[thread overview]
Message-ID: <20140109184616.GA2309@amt.cnet> (raw)
In-Reply-To: <CAHqbYQu0rYfviVMJhgeEnBKYri5OVMA7XEp2ZCVGpvsiTYRJGg@mail.gmail.com>

On Wed, Jan 08, 2014 at 06:35:00PM -0500, Hu Yaohui wrote:
> Thanks a lot Marcelo!
> 
> On Wed, Jan 8, 2014 at 6:25 PM, Marcelo Tosatti <mtosatti@redhat.com> wrote:
> > On Wed, Jan 08, 2014 at 06:14:15PM -0500, Hu Yaohui wrote:
> >> Hi guys,
> >> I think you should be pretty familiar with lapic. I would really
> >> appreciate it if someone could shed some lights on my problem
> >> regarding Guest TLB flush IPI.
> >> Supposed we get two vcpus 0 and 1.
> >> When vcpu#0 wants to invalidate the tlb entry on vcpu#1. An IPI will
> >> be generated by lapic on vcpu#0 by writing to ICR which will cause a
> >> vmexit.
> >> apic_send_ipi->kvm_irq_delivery_to_apic->kvm_apic_set_irq->__apic_accept_irq
> >> In __apic_accept_irq, it will call kvm_make_request, kvm_vcpu_kick.
> >> If vcpu#1 in guest mode, how can it receives this IPI immediately, or
> >> the stale tlb entry could be accessed. Thanks for your time!
> >
> I am using kvm-kmod-3.2
> > Two possibilities:
> >
> > 2) Hardware does not support APIC virtualization: kvm_vcpu_kick sends an
> > host-IPI to the remote vcpu, and if that vcpu is in guest mode, a VM-exit
> > (exit reason: external interrupt) will be triggered due to the host-IPI.
> > Then on VM-entry (inject_pending_event) the guest-IPI is injected.
> >
> if vcpu#1 is not on the same pcpu as the vcpu#0, a host-IPI will be sent.

Yes.

> But if they are on the same pcpu, if vcpu#1 is in guest mode. 

If vcpu#0 and vcpu#1 are on the same pcpu, then either one of them 
is guest mode at one given moment, but not both.

> Then the
> guest tlb flush IPI
> will wait until the next vcpu#1 vmexit. If that's the case. they are
> some time that the tlb entry has been
> invalidated in vcpu#0, but the corresponding entry in vcpu#1 could
> still been accessed, which seems cause some problem.

The TLB flush is performed synchronously, see the effect of the wait
parameter to the smp_call_function_many function, and how that function
is called at arch/x86/mm/tlb.c.

> > 2) Host CPU supports APIC virtualization (see commit 83d4c286931c and
> > Intel's documentation):
> > A bit is set in the posted interrupt section, and a special host-IPI is
> > delivered to the target cpu where the guest vcpu is scheduled
> > (vmx_deliver_posted_interrupt) which causes the hardware to
> > inject the vector (without VM-exit).
> >
> >
> I did not find this function (vmx_deliver_posted_interrupt) in my kvm
> kernel module.
> Does that mean my hardware doesn't support APIC virtualization?

No, it means the kvm codebase you are looking at does not support it.

> Thanks for your time!
> 
> Best Wishes,
> Yaohui Hu
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2014-01-09 18:46 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-02  9:14 [PATCH] kvm: x86: Fix debug typo error in lapic Chen Fan
2014-01-08 21:10 ` Marcelo Tosatti
2014-01-08 23:14   ` Hu Yaohui
2014-01-08 23:25     ` Marcelo Tosatti
2014-01-08 23:35       ` Hu Yaohui
2014-01-09 16:28         ` Hu Yaohui
     [not found]           ` <20140109184711.GB2309@amt.cnet>
2014-01-09 20:08             ` Hu Yaohui
2014-01-11 12:27               ` Marcelo Tosatti
2014-01-12 19:40                 ` Hu Yaohui
2014-01-09 18:46         ` Marcelo Tosatti [this message]
2014-01-09 18:58           ` Hu Yaohui

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=20140109184616.GA2309@amt.cnet \
    --to=mtosatti@redhat.com \
    --cc=chen.fan.fnst@cn.fujitsu.com \
    --cc=gleb@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=loki2441@gmail.com \
    --cc=pbonzini@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.