Re: [PATCH v2 08/17] kvm: arm/arm64: Prepare for VM specific stage2 translations

From: Suzuki K Poulose
Date: Fri Apr 27 2018 - 11:22:22 EST


On 26/04/18 14:35, Julien Grall wrote:
Hi Suzuki,

On 27/03/18 14:15, Suzuki K Poulose wrote:
Right now the stage2 page table for a VM is hard coded, assuming
an IPA of 40bits. As we are about to add support for per VM IPA,
prepare the stage2 page table helpers to accept the kvm instance
to make the right decision for the VM. No functional changes.


diff --git a/arch/arm/include/asm/kvm_arm.h b/arch/arm/include/asm/kvm_arm.h
index 3ab8b37..c3f1f9b 100644
--- a/arch/arm/include/asm/kvm_arm.h
+++ b/arch/arm/include/asm/kvm_arm.h
@@ -133,8 +133,7 @@
ÂÂ * space.
ÂÂ */
 #define KVM_PHYS_SHIFT (40)
-#define KVM_PHYS_SIZEÂÂÂ (_AC(1, ULL) << KVM_PHYS_SHIFT)
-#define KVM_PHYS_MASKÂÂÂ (KVM_PHYS_SIZE - _AC(1, ULL))

I assume you are moving them to kvm_mmu.h in order to match the arm64 side, right? If so, would not it make sense to make KVM_PHYS_SHIFT with it?

[...]

I am moving all the macros that depend on the "kvm" instance to kvm_mmu.h.
I will see if I can move the KVM_PHYS_SHIFT without much trouble.


diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
index 7faed6e..594c4e6 100644
--- a/arch/arm64/include/asm/kvm_mmu.h
+++ b/arch/arm64/include/asm/kvm_mmu.h
@@ -134,8 +134,11 @@ static inline unsigned long __kern_hyp_va(unsigned long v)
ÂÂ * We currently only support a 40bit IPA.
ÂÂ */
 #define KVM_PHYS_SHIFT (40)
-#define KVM_PHYS_SIZEÂÂÂ (1UL << KVM_PHYS_SHIFT)
-#define KVM_PHYS_MASKÂÂÂ (KVM_PHYS_SIZE - 1UL)
+
+#define kvm_phys_shift(kvm)ÂÂÂÂÂÂÂ KVM_PHYS_SHIFT
+#define kvm_phys_size(kvm)ÂÂÂÂÂÂÂ (_AC(1, ULL) << kvm_phys_shift(kvm))

NIT: is the _AC(...) necessary? It does not look like this function is going to be usable in assembly.

+#define kvm_phys_mask(kvm)ÂÂÂÂÂÂÂ (kvm_phys_size(kvm) - _AC(1, ULL))

Same here.


Ok, will drop them.

Cheers
Suzuki