lkml.org 
[lkml]   [2023]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC kvmtool 10/31] arm64: Create a realm virtual machine
Date
From: Christoffer Dall <christoffer.dall@arm.com>

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

Signed-off-by: Christoffer Dall <christoffer.dall@arm.com>
[ Alex E: Reworked patch, split the command line option into a different
patch ]
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
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
\
 
 \ /
  Last update: 2023-03-26 23:58    [W:0.969 / U:0.280 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site