]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - include/asm-x86/kvm_host.h
KVM: MMU: large page support
[mirror_ubuntu-bionic-kernel.git] / include / asm-x86 / kvm_host.h
index 623249890a0b86da5396855b37091a1d7a02848c..95473ef5a906f9d8f039e7a82baf8057c403a76d 100644 (file)
 #define INVALID_PAGE (~(hpa_t)0)
 #define UNMAPPED_GVA (~(gpa_t)0)
 
+/* shadow tables are PAE even on non-PAE hosts */
+#define KVM_HPAGE_SHIFT 21
+#define KVM_HPAGE_SIZE (1UL << KVM_HPAGE_SHIFT)
+#define KVM_HPAGE_MASK (~(KVM_HPAGE_SIZE - 1))
+
+#define KVM_PAGES_PER_HPAGE (KVM_HPAGE_SIZE / PAGE_SIZE)
+
 #define DE_VECTOR 0
 #define UD_VECTOR 6
 #define NM_VECTOR 7
@@ -141,6 +148,7 @@ union kvm_mmu_page_role {
                unsigned pad_for_nice_hex_output:6;
                unsigned metaphysical:1;
                unsigned access:3;
+               unsigned invalid:1;
        };
 };
 
@@ -229,6 +237,7 @@ struct kvm_vcpu_arch {
        struct {
                gfn_t gfn;          /* presumed gfn during guest pte update */
                struct page *page;  /* page corresponding to that gfn */
+               int largepage;
        } update_pte;
 
        struct i387_fxsave_struct host_fx_image;
@@ -262,6 +271,11 @@ struct kvm_vcpu_arch {
        /* emulate context */
 
        struct x86_emulate_ctxt emulate_ctxt;
+
+       gpa_t time;
+       struct kvm_vcpu_time_info hv_clock;
+       unsigned int time_offset;
+       struct page *time_page;
 };
 
 struct kvm_mem_alias {
@@ -288,6 +302,8 @@ struct kvm_arch{
        int round_robin_prev_vcpu;
        unsigned int tss_addr;
        struct page *apic_access_page;
+
+       gpa_t wall_clock;
 };
 
 struct kvm_vm_stat {
@@ -299,6 +315,7 @@ struct kvm_vm_stat {
        u32 mmu_recycled;
        u32 mmu_cache_miss;
        u32 remote_tlb_flush;
+       u32 lpages;
 };
 
 struct kvm_vcpu_stat {
@@ -321,6 +338,7 @@ struct kvm_vcpu_stat {
        u32 fpu_reload;
        u32 insn_emulation;
        u32 insn_emulation_fail;
+       u32 hypercalls;
 };
 
 struct descriptor_table {