|
@@ -191,6 +191,8 @@ enum {
|
|
#define PFERR_RSVD_BIT 3
|
|
#define PFERR_RSVD_BIT 3
|
|
#define PFERR_FETCH_BIT 4
|
|
#define PFERR_FETCH_BIT 4
|
|
#define PFERR_PK_BIT 5
|
|
#define PFERR_PK_BIT 5
|
|
|
|
+#define PFERR_GUEST_FINAL_BIT 32
|
|
|
|
+#define PFERR_GUEST_PAGE_BIT 33
|
|
|
|
|
|
#define PFERR_PRESENT_MASK (1U << PFERR_PRESENT_BIT)
|
|
#define PFERR_PRESENT_MASK (1U << PFERR_PRESENT_BIT)
|
|
#define PFERR_WRITE_MASK (1U << PFERR_WRITE_BIT)
|
|
#define PFERR_WRITE_MASK (1U << PFERR_WRITE_BIT)
|
|
@@ -198,6 +200,13 @@ enum {
|
|
#define PFERR_RSVD_MASK (1U << PFERR_RSVD_BIT)
|
|
#define PFERR_RSVD_MASK (1U << PFERR_RSVD_BIT)
|
|
#define PFERR_FETCH_MASK (1U << PFERR_FETCH_BIT)
|
|
#define PFERR_FETCH_MASK (1U << PFERR_FETCH_BIT)
|
|
#define PFERR_PK_MASK (1U << PFERR_PK_BIT)
|
|
#define PFERR_PK_MASK (1U << PFERR_PK_BIT)
|
|
|
|
+#define PFERR_GUEST_FINAL_MASK (1ULL << PFERR_GUEST_FINAL_BIT)
|
|
|
|
+#define PFERR_GUEST_PAGE_MASK (1ULL << PFERR_GUEST_PAGE_BIT)
|
|
|
|
+
|
|
|
|
+#define PFERR_NESTED_GUEST_PAGE (PFERR_GUEST_PAGE_MASK | \
|
|
|
|
+ PFERR_USER_MASK | \
|
|
|
|
+ PFERR_WRITE_MASK | \
|
|
|
|
+ PFERR_PRESENT_MASK)
|
|
|
|
|
|
/* apic attention bits */
|
|
/* apic attention bits */
|
|
#define KVM_APIC_CHECK_VAPIC 0
|
|
#define KVM_APIC_CHECK_VAPIC 0
|
|
@@ -1203,7 +1212,7 @@ void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu);
|
|
|
|
|
|
int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
|
|
int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
|
|
|
|
|
|
-int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t gva, u32 error_code,
|
|
|
|
|
|
+int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t gva, u64 error_code,
|
|
void *insn, int insn_len);
|
|
void *insn, int insn_len);
|
|
void kvm_mmu_invlpg(struct kvm_vcpu *vcpu, gva_t gva);
|
|
void kvm_mmu_invlpg(struct kvm_vcpu *vcpu, gva_t gva);
|
|
void kvm_mmu_new_cr3(struct kvm_vcpu *vcpu);
|
|
void kvm_mmu_new_cr3(struct kvm_vcpu *vcpu);
|