aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2010-07-01 10:00:12 -0400
committerAvi Kivity <avi@redhat.com>2010-08-01 23:39:44 -0400
commit5689cc53fa9d09b5bf41b1b1a7c90bd6c112ab40 (patch)
tree1bfe4bdf8cbad3938e2cd8b76eac10c8023ba04d
parent828554136bbacae6e39fc31b9cd7e7c660ad7530 (diff)
KVM: Use u64 for frame data types
For 32bit machines where the physical address width is larger than the virtual address width the frame number types in KVM may overflow. Fix this by changing them to u64. [sfr: fix build on 32-bit ppc] Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r--arch/powerpc/kvm/44x_tlb.c3
-rw-r--r--include/linux/kvm_types.h4
-rw-r--r--virt/kvm/iommu.c2
3 files changed, 5 insertions, 4 deletions
diff --git a/arch/powerpc/kvm/44x_tlb.c b/arch/powerpc/kvm/44x_tlb.c
index 812312542e50..9b9b5cdea840 100644
--- a/arch/powerpc/kvm/44x_tlb.c
+++ b/arch/powerpc/kvm/44x_tlb.c
@@ -316,7 +316,8 @@ void kvmppc_mmu_map(struct kvm_vcpu *vcpu, u64 gvaddr, gpa_t gpaddr,
316 gfn = gpaddr >> PAGE_SHIFT; 316 gfn = gpaddr >> PAGE_SHIFT;
317 new_page = gfn_to_page(vcpu->kvm, gfn); 317 new_page = gfn_to_page(vcpu->kvm, gfn);
318 if (is_error_page(new_page)) { 318 if (is_error_page(new_page)) {
319 printk(KERN_ERR "Couldn't get guest page for gfn %lx!\n", gfn); 319 printk(KERN_ERR "Couldn't get guest page for gfn %llx!\n",
320 (unsigned long long)gfn);
320 kvm_release_page_clean(new_page); 321 kvm_release_page_clean(new_page);
321 return; 322 return;
322 } 323 }
diff --git a/include/linux/kvm_types.h b/include/linux/kvm_types.h
index fb46efbeabec..7ac0d4eee430 100644
--- a/include/linux/kvm_types.h
+++ b/include/linux/kvm_types.h
@@ -32,11 +32,11 @@
32 32
33typedef unsigned long gva_t; 33typedef unsigned long gva_t;
34typedef u64 gpa_t; 34typedef u64 gpa_t;
35typedef unsigned long gfn_t; 35typedef u64 gfn_t;
36 36
37typedef unsigned long hva_t; 37typedef unsigned long hva_t;
38typedef u64 hpa_t; 38typedef u64 hpa_t;
39typedef unsigned long hfn_t; 39typedef u64 hfn_t;
40 40
41typedef hfn_t pfn_t; 41typedef hfn_t pfn_t;
42 42
diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
index 779559552ce7..62a9caf0563c 100644
--- a/virt/kvm/iommu.c
+++ b/virt/kvm/iommu.c
@@ -108,7 +108,7 @@ int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot)
108 get_order(page_size), flags); 108 get_order(page_size), flags);
109 if (r) { 109 if (r) {
110 printk(KERN_ERR "kvm_iommu_map_address:" 110 printk(KERN_ERR "kvm_iommu_map_address:"
111 "iommu failed to map pfn=%lx\n", pfn); 111 "iommu failed to map pfn=%llx\n", pfn);
112 goto unmap_pages; 112 goto unmap_pages;
113 } 113 }
114 114