Re: [PATCH 16/22] KVM: MMU: Track page fault data in struct vcpu

From: Avi Kivity
Date: Tue Apr 27 2010 - 09:37:50 EST


On 04/27/2010 04:28 PM, Joerg Roedel wrote:

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index d9dfc8c..8426870 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -298,6 +298,9 @@ struct kvm_vcpu_arch {
/* Used for two dimensional paging emulation */
struct kvm_mmu nested_mmu;

+ unsigned long fault_address;
Probably a problem on i386. How does npt handle faults when the
guest is using pae paging and the host (in our case the guest...)
isn't? I see it uses exit_info_2 for the address, which is a u64.
This shouldn't be an issue. If we run on 32bit host with nested paging
the guest can't have more than 4gb of addressable memory because of the
page table limitations (nested page table is always in host format).

But the nested guest can use pae paging and generate a #NPF with exit_info_2 > 4GB. So we need to keep the full fault address; if we truncate, the guest might actually resolve the fault and let the nested guest continue.

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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/