On Fri, Aug 05, 2011 at 12:30:53PM -0300, Marcelo Tosatti wrote:
> On Fri, Aug 05, 2011 at 08:16:42AM +0200, Jan Kiszka wrote:
> > On 2011-08-05 06:02, David Gibson wrote:
> > > At present, an explicit test disallows use of -mem-path when kvm is 
> > > enabled
> > > but KVM_CAP_SYNC_MMU is not set.  In particular, this prevents the user
> > > from using hugetlbfs to back the guest memory.
> > > 
> > > I can see no reason for this check, and when I asked about it previously,
> > > the only theory offered was that this was a limitation of the very early
> > > days of kvm which only happened to match the SYNC_MMU flag by accident.
> > > 
> > > This patch, therefore, removes the check.  This is of particular use to
> > > us on POWER, where we haven't yet implement SYNC_MMU, but where backing
> > > the guest with hugepages is possible, and in fact mandatory (for now).
> > > 
> > > Signed-off-by: David Gibson <da...@gibson.dropbear.id.au>
> > > ---
> > >  exec.c |    5 -----
> > >  1 files changed, 0 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/exec.c b/exec.c
> > > index 476b507..041637c 100644
> > > --- a/exec.c
> > > +++ b/exec.c
> > > @@ -2818,11 +2818,6 @@ static void *file_ram_alloc(RAMBlock *block,
> > >          return NULL;
> > >      }
> > >  
> > > -    if (kvm_enabled() && !kvm_has_sync_mmu()) {
> > > -        fprintf(stderr, "host lacks kvm mmu notifiers, -mem-path 
> > > unsupported\n");
> > > -        return NULL;
> > > -    }
> > > -
> > >      if (asprintf(&filename, "%s/qemu_back_mem.XXXXXX", path) == -1) {
> > >          return NULL;
> > >      }
> > 
> > This is nothing trivial, see ce9a92411d in qemu-kvm or
> > http://thread.gmane.org/gmane.comp.emulators.kvm.devel/27380. And it
> > should rather target uq/master. CCing Avi, Marcelo, and the kvm list.
> > 
> > Jan

Well, sending the patch flushed out the real reason for that check, at
least, as I thought it might.

> Yes, the check cannot be removed because there is the possibility of
> corruption using hugepages without mmu notifiers (described in the 
> archived message above).

Ok, so.  If I understand the archived message correctly.  First, this
check *is* all about hugepages - which is not obvious from the test
itself.

Second, if userspace qemu passing hugepages to kvm can cause (host)
kernel memory corruption, that is clearly a host kernel bug.  So am I
correct in thinking this is basically just a safety feature if qemu is
run on a buggy kernel.  Presumably this bug was corrected at some
point?  Is the presence of the SYNC_MMU feature just being used as a
proxy for "is this kernel recent enough to have the corruption bug
fixed"?

In any case this test sure as hell needs a big comment next to it
explaining this context.

> Why are mmu notifiers not implemented for PPC again?

It's just not done yet; we're working on it.  (That is, mmu notifiers
are certainly present on PPC, it's just they're not wired up to kvm,
yet).

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Reply via email to