RE: [PATCH v5 3/4] KVM: arm64: Report all the KVM/arm64-specific hypercalls
From: Shameerali Kolothum Thodi <hidden>
Date: 2025-01-27 17:27:17
Also in:
kvmarm
-----Original Message----- From: Oliver Upton <redacted> Sent: Monday, January 27, 2025 5:06 PM To: Shameerali Kolothum Thodi <redacted> Cc: kvmarm@lists.linux.dev; maz@kernel.org; catalin.marinas@arm.com; will@kernel.org; mark.rutland@arm.com; cohuck@redhat.com; eric.auger@redhat.com; sebott@redhat.com; yuzenghui [off-list ref]; Wangzhou (B) [off-list ref]; jiangkunkun [off-list ref]; Jonathan Cameron [off-list ref]; Anthony Jebson [off-list ref]; linux-arm-kernel@lists.infradead.org; Linuxarm [off-list ref] Subject: Re: [PATCH v5 3/4] KVM: arm64: Report all the KVM/arm64-specific hypercalls Hi Shameer, On Fri, Jan 24, 2025 at 03:17:31PM +0000, Shameer Kolothum wrote:quoted
Currently ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID returnsthe bitmapquoted
corresponding to KVM_REG_ARM_VENDOR_HYP_BMAP and it onlyreturnsquoted
_KVM_FEATURES_FUNC_ID and _KVM_PTP_FUNC_ID. Change that toreturn allquoted
the KVM/arm64-specific hypercalls exposed by KVM/arm64 to guest operating systems. Signed-off-by: Shameer Kolothum[off-list ref]quoted
--- arch/arm64/kvm/hypercalls.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)diff --git a/arch/arm64/kvm/hypercalls.c b/arch/arm64/kvm/hypercalls.c index 27ce4cb44904..6132cb542200 100644 --- a/arch/arm64/kvm/hypercalls.c +++ b/arch/arm64/kvm/hypercalls.c@@ -359,7 +359,11 @@ int kvm_smccc_call_handler(struct kvm_vcpu*vcpu)quoted
val[3] = ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_3; break; case ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID: - val[0] = smccc_feat->vendor_hyp_bmap; + val[0] = GENMASK(ARM_SMCCC_KVM_FUNC_MMIO_GUARD, + ARM_SMCCC_KVM_FUNC_FEATURES); + /* Function numbers 8-63 are reserved for pKVM for now */ + val[2] =GENMASK((ARM_SMCCC_KVM_FUNC_DISCOVER_IMPL_CPUS - 64),quoted
+(ARM_SMCCC_KVM_FUNC_DISCOVER_IMPL_VER - 64));quoted
break;This isn't right. The pKVM carveout exists for some KVM-internal bookkeeping to (hopefully) avoid breaking guest ABI between what's in the downstream android kernel and what eventually gets accepted upstream. The purpose of this hypercall is for the guest to discover what interfaces are actually implemented by the hypervisor, and we definitely do not implement these upstream at the moment.
Ok. I had some confusion on pKVM ones as I could see the kvm_arm_hyp_service_available() being called with those in arm-pkvm-guest.c. So that explains it. . I will remove the pKVM ones and just add support to report the ones introduced in this series. Thanks, Shameer