Sorry for the late reply - I wanted to know who kvm hangs in the host kernel context :)

On 07.01.2009, at 14:46, Marcelo Tosatti <mtosa...@redhat.com> wrote:

On Wed, Jan 07, 2009 at 01:32:41PM +0200, Avi Kivity wrote:
Marcelo Tosatti wrote:
Let me shoot at one direction: a shadow page with PGE bit in either
state is created. Later that shadow page is nuked (via mmu notifiers,
for example).

I doubt that mmu notifiers were invoked in this case (the bug would be
very rare); in any case we flush the tlb.

This comment is worrying

       /*
        * FIXME: Tis shouldn't be necessary here, but there is a flush
        * missing in the MMU code. Until we find this bug, flush the
        * complete TLB here on an NPF
        */
       if (npt_enabled)
               svm_flush_tlb(&svm->vcpu);


This is in, because netbench in an npt-guest failed after a few minutes (see Alex W's bug report) and this appeard to fix it.


Alexander, you might want to try this patch, -ENONPT here (and revert the previous
one).

Eh, what?

I have no clue, what else could be causing this?

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 10bdb2a..bf68e5b 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -33,6 +33,7 @@
#include <asm/cmpxchg.h>
#include <asm/io.h>
#include <asm/vmx.h>
+#include <asm/tlbflush.h>

/*
* When setting this variable to true it enables Two-Dimensional- Paging @@ -1850,6 +1851,11 @@ static int __direct_map(struct kvm_vcpu *vcpu, gpa_t v, int write,

       if (*iterator.sptep == shadow_trap_nonpresent_pte) {
pseudo_gfn = (iterator.addr & PT64_DIR_BASE_ADDR_MASK) >> PAGE_SHIFT;
+
+                        kvm_flush_remote_tlbs(vcpu->kvm);
+                        kvm_mmu_flush_tlb(vcpu);
+                        __flush_tlb();
+
           sp = kvm_mmu_get_page(vcpu, pseudo_gfn, iterator.addr,
                         iterator.level - 1,
                         1, ACC_ALL, iterator.sptep);
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to