Thread (190 messages) 190 messages, 17 authors, 2024-03-18

[RFC kvmtool 10/31] arm64: Create a realm virtual machine

From: Suzuki K Poulose <suzuki.poulose@arm.com>
Date: 2023-01-27 11:41:37
Also in: kvm, kvmarm, linux-coco, lkml
Subsystem: the rest · Maintainer: Linus Torvalds

From: Christoffer Dall <redacted>

Set the machine type to realm when creating a VM via the KVM_CREATE_VM
ioctl.

Signed-off-by: Christoffer Dall <redacted>
[ Alex E: Reworked patch, split the command line option into a different
          patch ]
Signed-off-by: Alexandru Elisei <redacted>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
---
 arm/aarch64/kvm.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/arm/aarch64/kvm.c b/arm/aarch64/kvm.c
index 25be2f2d..5db4c572 100644
--- a/arm/aarch64/kvm.c
+++ b/arm/aarch64/kvm.c
@@ -131,12 +131,15 @@ int kvm__arch_get_ipa_limit(struct kvm *kvm)
 int kvm__get_vm_type(struct kvm *kvm)
 {
 	unsigned int ipa_bits, max_ipa_bits;
-	unsigned long max_ipa;
+	unsigned long max_ipa, vm_type;
 
-	/* If we're running on an old kernel, use 0 as the VM type */
+	vm_type = kvm->cfg.arch.is_realm ? \
+		  KVM_VM_TYPE_ARM_REALM : KVM_VM_TYPE_ARM_NORMAL;
+
+	/* If we're running on an old kernel, use 0 as the IPA bits */
 	max_ipa_bits = kvm__arch_get_ipa_limit(kvm);
 	if (!max_ipa_bits)
-		return 0;
+		return vm_type;
 
 	/* Otherwise, compute the minimal required IPA size */
 	max_ipa = kvm->cfg.ram_addr + kvm->cfg.ram_size - 1;
@@ -147,7 +150,8 @@ int kvm__get_vm_type(struct kvm *kvm)
 	if (ipa_bits > max_ipa_bits)
 		die("Memory too large for this system (needs %d bits, %d available)", ipa_bits, max_ipa_bits);
 
-	return KVM_VM_TYPE_ARM_IPA_SIZE(ipa_bits);
+	vm_type |= KVM_VM_TYPE_ARM_IPA_SIZE(ipa_bits);
+	return vm_type;
 }
 
 void kvm__arch_enable_mte(struct kvm *kvm)
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help