From: Suzuki K Poulose <suzuki.poulose@arm.com>
To: kvm@vger.kernel.org, kvmarm@lists.linux.dev
Cc: maz@kernel.org, will@kernel.org, catalin.marinas@arm.com,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, steven.price@arm.com,
aneesh.kumar@kernel.org, oupton@kernel.org, gshan@redhat.com,
joey.gouly@arm.com, tabba@google.com, yuzenghui@huawei.com,
linux-coco@lists.linux.dev, gankulkarni@os.amperecomputing.com,
sdonthineni@nvidia.com, alpergun@google.com,
fj0570is@fujitsu.com, WeiLin.Chang@arm.com,
lpieralisi@kernel.org, enju.kohei@fujitsu.com,
sudeep.holla@arm.com, jonathan.cameron@oss.qualcomm.com,
Suzuki K Poulose <suzuki.poulose@arm.com>
Subject: [PATCH v21 19/23] KVM: arm64: Prevent unsupported vcpu features for VM types
Date: Thu, 1 Oct 2026 22:06:59 +0100 [thread overview]
Message-ID: <20261001210703.1597150-20-suzuki.poulose@arm.com> (raw)
In-Reply-To: <20261001210703.1597150-1-suzuki.poulose@arm.com>
Prevent unsupported VCPU features for the protected VCPUs.
Realms and pVM do not support 32bit EL1 or NV yet.
pKVM doesn't rely on the host vcpu features, but still
block the vcpu init if we detect incompatible features.
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
---
arch/arm64/kvm/arm.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index 106b52e556e20..d43ae985ab1b4 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -1727,11 +1727,12 @@ int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level,
return -EINVAL;
}
-static unsigned long system_supported_vcpu_features(void)
+static unsigned long system_supported_vcpu_features(struct kvm_vcpu *vcpu)
{
unsigned long features = KVM_VCPU_VALID_FEATURES;
- if (!cpus_have_final_cap(ARM64_HAS_32BIT_EL1))
+ if (vcpu_is_protected(vcpu) ||
+ !cpus_have_final_cap(ARM64_HAS_32BIT_EL1))
clear_bit(KVM_ARM_VCPU_EL1_32BIT, &features);
if (!kvm_supports_guest_pmuv3()) {
@@ -1747,7 +1748,8 @@ static unsigned long system_supported_vcpu_features(void)
clear_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, &features);
}
- if (!cpus_have_final_cap(ARM64_HAS_NESTED_VIRT))
+ if (vcpu_is_protected(vcpu) ||
+ !cpus_have_final_cap(ARM64_HAS_NESTED_VIRT))
clear_bit(KVM_ARM_VCPU_HAS_EL2, &features);
return features;
@@ -1767,7 +1769,7 @@ static int kvm_vcpu_init_check_features(struct kvm_vcpu *vcpu,
return -ENOENT;
}
- if (features & ~system_supported_vcpu_features())
+ if (features & ~system_supported_vcpu_features(vcpu))
return -EINVAL;
/*
--
2.43.0
next prev parent reply other threads:[~2026-10-01 21:08 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 21:06 [PATCH v21 00/23] KVM: arm64: CCA: Add basic plumbing for Realms Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 01/23] KVM: arm64: protected VM: Handle user writes to CNTVCT_EL0/CNTPCT_EL0 Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 02/23] KVM: arm64: Disable Steal time accounting for protected guests Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 03/23] KVM: arm64: Include kvm_emulate.h in kvm/arm_psci.h Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 04/23] KVM: arm64: Avoid including linux/kvm_host.h in kvm_pgtable.h Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 05/23] KVM: arm64: Track the type of VM in kvm_arch Suzuki K Poulose
2026-10-02 10:06 ` Fuad Tabba
2026-10-02 12:57 ` Marc Zyngier
2026-10-02 13:05 ` Fuad Tabba
2026-10-02 13:10 ` Suzuki K Poulose
2026-10-02 13:34 ` Marc Zyngier
2026-10-02 14:15 ` Marc Zyngier
2026-10-02 14:37 ` Fuad Tabba
2026-10-02 15:29 ` Marc Zyngier
2026-10-02 15:30 ` Fuad Tabba
2026-10-03 5:53 ` Suzuki K Poulose
2026-10-03 7:07 ` Suzuki K Poulose
2026-10-03 8:45 ` Marc Zyngier
2026-10-02 15:15 ` Suzuki K Poulose
2026-10-02 15:40 ` Marc Zyngier
2026-10-02 15:42 ` Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 06/23] KVM: arm64: Don't call vcpu_set_pauth_traps for pKVM host Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 07/23] KVM: arm64: Refactor the vcpu_load to allow for VM specific callbacks Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 08/23] KVM: arm64: Add vcpu load/put call backs for flavors Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 09/23] KVM: arm64: Reuse kvm_stage2_unmap_range in kvm_unmap_gfn_range Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 10/23] KVM: arm64: Add VM specific callback for S2 MMU operations Suzuki K Poulose
2026-10-02 10:19 ` Fuad Tabba
2026-10-02 10:29 ` Suzuki K Poulose
2026-10-03 9:01 ` Marc Zyngier
2026-10-03 15:30 ` Suzuki K Poulose
2026-10-03 16:12 ` Suzuki K Poulose
2026-10-03 17:32 ` Marc Zyngier
2026-10-01 21:06 ` [PATCH v21 11/23] KVM: arm64: Use a local kvm pointer in kvm_handle_guest_abort() Suzuki K Poulose
2026-10-02 9:14 ` Fuad Tabba
2026-10-01 21:06 ` [PATCH v21 12/23] KVM: arm64: Abstract out memory abort handling Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 13/23] KVM: arm64: Mandate VGIC v3 for pKVM VMs and Realms Suzuki K Poulose
2026-10-02 9:23 ` Fuad Tabba
2026-10-01 21:06 ` [PATCH v21 14/23] KVM: arm64: CCA: Add a new mode for supporting Realm guests Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 15/23] KVM: arm64: CCA: Add VCPU load/put for Realms Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 16/23] KVM: arm64: CCA: Add bare minimal S2 operations for Realm Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 17/23] KVM: arm64: CCA: Introduce Realms Suzuki K Poulose
2026-10-01 21:06 ` [PATCH v21 18/23] KVM: arm64: CCA: Don't expose unsupported capabilities for realm guests Suzuki K Poulose
2026-10-02 9:34 ` Fuad Tabba
2026-10-02 9:36 ` Suzuki K Poulose
2026-10-01 21:06 ` Suzuki K Poulose [this message]
2026-10-01 21:07 ` [PATCH v21 20/23] KVM: arm64: CCA: WARN on injected undef exceptions Suzuki K Poulose
2026-10-01 21:07 ` [PATCH v21 21/23] KVM: arm64: CCA: Support timers in realm RECs Suzuki K Poulose
2026-10-01 21:07 ` [PATCH v21 22/23] KVM: arm64: CCA: Expose SVE VL register before VCPU finalization Suzuki K Poulose
2026-10-01 21:07 ` [PATCH v21 23/23] KVM: arm64: CCA: Control user register access for Realms Suzuki K Poulose
2026-10-01 21:41 ` [PATCH v21 00/23] KVM: arm64: CCA: Add basic plumbing " Gavin Shan
2026-10-02 6:13 ` Suzuki K Poulose
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261001210703.1597150-20-suzuki.poulose@arm.com \
--to=suzuki.poulose@arm.com \
--cc=WeiLin.Chang@arm.com \
--cc=alpergun@google.com \
--cc=aneesh.kumar@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=enju.kohei@fujitsu.com \
--cc=fj0570is@fujitsu.com \
--cc=gankulkarni@os.amperecomputing.com \
--cc=gshan@redhat.com \
--cc=joey.gouly@arm.com \
--cc=jonathan.cameron@oss.qualcomm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=sdonthineni@nvidia.com \
--cc=steven.price@arm.com \
--cc=sudeep.holla@arm.com \
--cc=tabba@google.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox