]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: KVM: use phys_addr_t instead of unsigned long long for HYP PGDs
authorMarc Zyngier <marc.zyngier@arm.com>
Tue, 14 May 2013 11:11:37 +0000 (12:11 +0100)
committerChristoffer Dall <cdall@cs.columbia.edu>
Tue, 28 May 2013 02:36:09 +0000 (19:36 -0700)
HYP PGDs are passed around as phys_addr_t, except just before calling
into the hypervisor init code, where they are cast to a rather weird
unsigned long long.

Just keep them around as phys_addr_t, which is what makes the most
sense.

Reported-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <cdall@cs.columbia.edu>
arch/arm/include/asm/kvm_host.h
arch/arm/kvm/arm.c

index 57cb786a6203de0d6444d1f265344a59abc0de09..ff491930e013438dadcef67432e5e43905144327 100644 (file)
@@ -190,8 +190,8 @@ int kvm_arm_coproc_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *);
 int handle_exit(struct kvm_vcpu *vcpu, struct kvm_run *run,
                int exception_index);
 
-static inline void __cpu_init_hyp_mode(unsigned long long boot_pgd_ptr,
-                                      unsigned long long pgd_ptr,
+static inline void __cpu_init_hyp_mode(phys_addr_t boot_pgd_ptr,
+                                      phys_addr_t pgd_ptr,
                                       unsigned long hyp_stack_ptr,
                                       unsigned long vector_ptr)
 {
index ef1703b9587b0264c5b7ea8ebb246376dfe76326..741f66a2edbd77bf3ddce5a53c6cb760e491c7fe 100644 (file)
@@ -800,8 +800,8 @@ long kvm_arch_vm_ioctl(struct file *filp,
 
 static void cpu_init_hyp_mode(void *dummy)
 {
-       unsigned long long boot_pgd_ptr;
-       unsigned long long pgd_ptr;
+       phys_addr_t boot_pgd_ptr;
+       phys_addr_t pgd_ptr;
        unsigned long hyp_stack_ptr;
        unsigned long stack_page;
        unsigned long vector_ptr;
@@ -809,8 +809,8 @@ static void cpu_init_hyp_mode(void *dummy)
        /* Switch from the HYP stub to our own HYP init vector */
        __hyp_set_vectors(kvm_get_idmap_vector());
 
-       boot_pgd_ptr = (unsigned long long)kvm_mmu_get_boot_httbr();
-       pgd_ptr = (unsigned long long)kvm_mmu_get_httbr();
+       boot_pgd_ptr = kvm_mmu_get_boot_httbr();
+       pgd_ptr = kvm_mmu_get_httbr();
        stack_page = __get_cpu_var(kvm_arm_hyp_stack_page);
        hyp_stack_ptr = stack_page + PAGE_SIZE;
        vector_ptr = (unsigned long)__kvm_hyp_vector;