From: Gleb Natapov <gleb@redhat.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: avi@redhat.com, marcelo@redhat.com, kvm@vger.kernel.org
Subject: Re: [PATCH] do not free active mmu pages in free_mmu_pages()
Date: Mon, 16 Mar 2009 23:20:10 +0200 [thread overview]
Message-ID: <20090316212010.GC7898@redhat.com> (raw)
In-Reply-To: <20090316210152.GA5077@amt.cnet>
On Mon, Mar 16, 2009 at 06:01:52PM -0300, Marcelo Tosatti wrote:
> On Mon, Mar 16, 2009 at 10:34:01PM +0200, Gleb Natapov wrote:
> > > Doesnt the vm shutdown path rely on the while loop you removed to free
> > > all shadow pages before freeing the mmu kmem caches, if mmu notifiers
> > > is disabled?
> > >
> > Shouldn't mmu_free_roots() on all vcpus clear all mmu pages?
>
> No. It only zaps the present root on every vcpu, but not
> the children.
>
> > > And how harmful is that loop? Zaps the entire cache on cpu hotunplug?
> > >
> > KVM doesn't support vcpu destruction, but destruction is called anyway
> > on various error conditions. The one that easy to trigger is to create
> > vcpu with the same id simultaneously from two threads. The result is
> > OOPs in random places.
>
> mmu_lock should be held there, and apparently it is not.
>
Yeah, my first solution was to add mmu_lock, but why function that gets
vcpu as an input should destroy data structure that is global for the VM.
There is kvm_mmu_zap_all() that does same thing (well almost) and also does
proper locking. Shouldn't it be called during VM destruction instead?
--
Gleb.
next prev parent reply other threads:[~2009-03-16 21:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-11 10:07 [PATCH] do not free active mmu pages in free_mmu_pages() Gleb Natapov
2009-03-15 12:59 ` Avi Kivity
2009-03-16 20:15 ` Marcelo Tosatti
2009-03-16 20:34 ` Gleb Natapov
2009-03-16 21:01 ` Marcelo Tosatti
2009-03-16 21:20 ` Gleb Natapov [this message]
2009-03-16 21:33 ` Marcelo Tosatti
2009-03-16 21:32 ` 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=20090316212010.GC7898@redhat.com \
--to=gleb@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=marcelo@redhat.com \
--cc=mtosatti@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox