[POC][PATCH 45/83] arm: switch kvm_arm_hyp_stack_page to void *

From: Al Viro
Date: Mon Dec 21 2015 - 19:01:44 EST


From: Al Viro <viro@xxxxxxxxxxxxxxxxxx>

Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
---
arch/arm/include/asm/kvm_host.h | 4 ++--
arch/arm/kvm/arm.c | 13 +++++--------
arch/arm64/include/asm/kvm_host.h | 2 +-
3 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 6692982..20c51e8 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -190,7 +190,7 @@ int handle_exit(struct kvm_vcpu *vcpu, struct kvm_run *run,

static inline void __cpu_init_hyp_mode(phys_addr_t boot_pgd_ptr,
phys_addr_t pgd_ptr,
- unsigned long hyp_stack_ptr,
+ void *hyp_stack_ptr,
unsigned long vector_ptr)
{
/*
@@ -211,7 +211,7 @@ static inline void __cpu_init_hyp_mode(phys_addr_t boot_pgd_ptr,

kvm_call_hyp(NULL, 0, boot_pgd_ptr);

- kvm_call_hyp((void*)hyp_stack_ptr, vector_ptr, pgd_ptr);
+ kvm_call_hyp(hyp_stack_ptr, vector_ptr, pgd_ptr);
}

static inline int kvm_arch_dev_ioctl_check_extension(long ext)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index 08fe183..385bdce 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -49,7 +49,7 @@
__asm__(".arch_extension virt");
#endif

-static DEFINE_PER_CPU(unsigned long, kvm_arm_hyp_stack_page);
+static DEFINE_PER_CPU(void *, kvm_arm_hyp_stack_page);
static kvm_cpu_context_t __percpu *kvm_host_cpu_state;
static unsigned long hyp_default_vectors;

@@ -958,8 +958,7 @@ static void cpu_init_hyp_mode(void *dummy)
{
phys_addr_t boot_pgd_ptr;
phys_addr_t pgd_ptr;
- unsigned long hyp_stack_ptr;
- unsigned long stack_page;
+ void *hyp_stack_ptr, *stack_page;
unsigned long vector_ptr;

/* Switch from the HYP stub to our own HYP init vector */
@@ -1047,9 +1046,7 @@ static int init_hyp_mode(void)
* Allocate stack pages for Hypervisor-mode
*/
for_each_possible_cpu(cpu) {
- unsigned long stack_page;
-
- stack_page = __get_free_page(GFP_KERNEL);
+ void *stack_page = (void *)__get_free_page(GFP_KERNEL);
if (!stack_page) {
err = -ENOMEM;
goto out_free_stack_pages;
@@ -1071,7 +1068,7 @@ static int init_hyp_mode(void)
* Map the Hyp stack pages
*/
for_each_possible_cpu(cpu) {
- char *stack_page = (char *)per_cpu(kvm_arm_hyp_stack_page, cpu);
+ char *stack_page = per_cpu(kvm_arm_hyp_stack_page, cpu);
err = create_hyp_mappings(stack_page, stack_page + PAGE_SIZE);

if (err) {
@@ -1136,7 +1133,7 @@ out_free_mappings:
free_hyp_pgds();
out_free_stack_pages:
for_each_possible_cpu(cpu)
- free_page((void *)per_cpu(kvm_arm_hyp_stack_page, cpu));
+ free_page(per_cpu(kvm_arm_hyp_stack_page, cpu));
out_err:
kvm_err("error initializing Hyp mode: %d\n", err);
return err;
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index a35ce72..e3adc1d 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -236,7 +236,7 @@ struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned long mpidr);

static inline void __cpu_init_hyp_mode(phys_addr_t boot_pgd_ptr,
phys_addr_t pgd_ptr,
- unsigned long hyp_stack_ptr,
+ void *hyp_stack_ptr,
unsigned long vector_ptr)
{
/*
--
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/