All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: kvm@vger.kernel.org,
	Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>,
	takuya.yoshikawa@gmail.com
Subject: Re: [PATCH 0/4] Unlocked TLB flush
Date: Tue, 08 May 2012 13:51:26 +0300	[thread overview]
Message-ID: <4FA8FAAE.5030300@redhat.com> (raw)
In-Reply-To: <20120508012741.GA26336@amt.cnet>

On 05/08/2012 04:27 AM, Marcelo Tosatti wrote:
> On Mon, May 07, 2012 at 10:25:34PM -0300, Marcelo Tosatti wrote:
> > On Thu, May 03, 2012 at 02:22:58PM +0300, Avi Kivity wrote:
> > > This patchset implements unlocked TLB flushing for KVM.  An operation that
> > > generates stale TLB entries can mark the TLB as dirty instead of flushing
> > > immediately, and then flush after releasing mmu_lock but before returning
> > > to the guest or the caller.  A few call sites are converted too.
> > > 
> > > Note not all call sites are easily convertible; as an example, sync_page()
> > > must flush before reading the guest page table.
> > 
> > Huh? Are you referring to:
> > 
> >  * Note:
> >  *   We should flush all tlbs if spte is dropped even though guest is
> >  *   responsible for it. Since if we don't,
> >  *   kvm_mmu_notifier_invalidate_page
> >  *   and kvm_mmu_notifier_invalidate_range_start detect the mapping page
> >  *   isn't
> >  *   used by guest then tlbs are not flushed, so guest is allowed to
> >  *   access the
> >  *   freed pages.
> >  *   And we increase kvm->tlbs_dirty to delay tlbs flush in this case.
> > 
> > With an increased dirtied_count the flush can be performed
> > by kvm_mmu_notifier_invalidate_page.
>
> Which is what patch 1 does. Your comment regarding sync_page()
> above is what is outdated, unless i am missing something.

I wasn't referring to that.  sync_page() (and page_fault()) must be sure
the guest page table is write-protected before reading gptes from it. 
(page_fault() reads it before write protection, but verifies it afterwards:

        /*
         * Verify that the gpte in the page we've just write
         * protected is still there.
         */
        if (FNAME(gpte_changed)(vcpu, gw, it.level - 1))
            goto out_gpte_changed;

so we must kvm_cond_flush_remote_tlbs() before calling gpte_changed().

-- 
error compiling committee.c: too many arguments to function


      reply	other threads:[~2012-05-08 10:51 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-03 11:22 [PATCH 0/4] Unlocked TLB flush Avi Kivity
2012-05-03 11:22 ` [PATCH 1/4] KVM: Add APIs for unlocked " Avi Kivity
2012-05-03 13:23   ` Xiao Guangrong
2012-05-03 14:11     ` Avi Kivity
2012-05-07  7:06       ` Xiao Guangrong
2012-05-07  7:59         ` Avi Kivity
2012-05-08  1:55           ` Marcelo Tosatti
2012-05-08  9:09             ` Avi Kivity
2012-05-08 13:50               ` Marcelo Tosatti
2012-05-08  9:09             ` Avi Kivity
2012-05-08  2:25       ` Marcelo Tosatti
2012-05-08 12:39         ` Avi Kivity
2012-05-09 21:03           ` Marcelo Tosatti
2012-05-21 14:45             ` Avi Kivity
2012-05-03 11:23 ` [PATCH 2/4] KVM: Flush TLB in mmu notifier without holding mmu_lock Avi Kivity
2012-05-03 11:23 ` [PATCH 3/4] KVM: Flush TLB in FNAME(invlpg) " Avi Kivity
2012-05-03 11:23 ` [PATCH 4/4] KVM: Flush TLB in change_pte mmu notifier " Avi Kivity
2012-05-08  1:25 ` [PATCH 0/4] Unlocked TLB flush Marcelo Tosatti
2012-05-08  1:27   ` Marcelo Tosatti
2012-05-08 10:51     ` Avi Kivity [this message]

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=4FA8FAAE.5030300@redhat.com \
    --to=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=takuya.yoshikawa@gmail.com \
    --cc=xiaoguangrong@linux.vnet.ibm.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.