KVM: Allocate userspace memory for older userspace
[safe/jmp/linux-2.6] / drivers / kvm / kvm.h
index 1edf8a5..eb006ed 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include <linux/types.h>
+#include <linux/hardirq.h>
 #include <linux/list.h>
 #include <linux/mutex.h>
 #include <linux/spinlock.h>
@@ -67,7 +68,7 @@
 /*
  * vcpu->requests bit members
  */
-#define KVM_TLB_FLUSH 0
+#define KVM_REQ_TLB_FLUSH          0
 
 /*
  * Address types:
@@ -405,10 +406,9 @@ struct kvm_memory_slot {
        gfn_t base_gfn;
        unsigned long npages;
        unsigned long flags;
-       struct page **phys_mem;
        unsigned long *rmap;
        unsigned long *dirty_bitmap;
-       int user_alloc; /* user allocated memory */
+       unsigned long userspace_addr;
 };
 
 struct kvm {
@@ -565,10 +565,12 @@ static inline int is_error_hpa(hpa_t hpa) { return hpa >> HPA_MSB; }
 hpa_t gva_to_hpa(struct kvm_vcpu *vcpu, gva_t gva);
 struct page *gva_to_page(struct kvm_vcpu *vcpu, gva_t gva);
 
-extern hpa_t bad_page_address;
+extern struct page *bad_page;
 
+int is_error_page(struct page *page);
 gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn);
 struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn);
+void kvm_release_page(struct page *page);
 int kvm_read_guest_page(struct kvm *kvm, gfn_t gfn, void *data, int offset,
                        int len);
 int kvm_read_guest(struct kvm *kvm, gpa_t gpa, void *data, unsigned long len);
@@ -668,11 +670,13 @@ __init void kvm_arch_init(void);
 
 static inline void kvm_guest_enter(void)
 {
+       account_system_vtime(current);
        current->flags |= PF_VCPU;
 }
 
 static inline void kvm_guest_exit(void)
 {
+       account_system_vtime(current);
        current->flags &= ~PF_VCPU;
 }