All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
To: Suzuki K Poulose <suzuki.poulose@arm.com>,
	linux-kernel@vger.kernel.org, iommu@lists.linux.dev,
	linux-coco@lists.linux.dev
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	will@kernel.org, maz@kernel.org, tglx@linutronix.de,
	robin.murphy@arm.com, akpm@linux-foundation.org, jgg@ziepe.ca,
	steven.price@arm.com
Subject: Re: [PATCH v2 3/4] coco: host: arm64: Handle hostconf RHI calls in kernel
Date: Mon, 22 Dec 2025 20:07:06 +0530	[thread overview]
Message-ID: <yq5ased2twfh.fsf@kernel.org> (raw)
In-Reply-To: <c40414b5-ade9-4d2f-bd73-2167e923b3d6@arm.com>

Suzuki K Poulose <suzuki.poulose@arm.com> writes:

> On 21/12/2025 16:09, Aneesh Kumar K.V (Arm) wrote:
>>   - Mark hostconf RHI SMC IDs as handled in the SMCCC filter.
>>   - Return version/features plus PAGE_SIZE alignment for guest queries.
>>   - Drop the 4K page-size guard in RMI init now that realm can query IPA
>>     change alignment size via the hostconf RHI
>> 
>> Signed-off-by: Aneesh Kumar K.V (Arm) <aneesh.kumar@kernel.org>
>> ---
>>   arch/arm64/kvm/hypercalls.c | 23 ++++++++++++++++++++++-
>>   arch/arm64/kvm/rmi.c        |  4 ----
>>   2 files changed, 22 insertions(+), 5 deletions(-)
>> 
>> diff --git a/arch/arm64/kvm/hypercalls.c b/arch/arm64/kvm/hypercalls.c
>> index 70ac7971416c..2861ca9063dd 100644
>> --- a/arch/arm64/kvm/hypercalls.c
>> +++ b/arch/arm64/kvm/hypercalls.c
>> @@ -8,6 +8,7 @@
>>   
>>   #include <kvm/arm_hypercalls.h>
>>   #include <kvm/arm_psci.h>
>> +#include <asm/rhi.h>
>>   
>>   #define KVM_ARM_SMCCC_STD_FEATURES				\
>>   	GENMASK(KVM_REG_ARM_STD_BMAP_BIT_COUNT - 1, 0)
>> @@ -77,6 +78,9 @@ static bool kvm_smccc_default_allowed(u32 func_id)
>>   	 */
>>   	case ARM_SMCCC_VERSION_FUNC_ID:
>>   	case ARM_SMCCC_ARCH_FEATURES_FUNC_ID:
>> +	case RHI_HOSTCONF_VERSION:
>> +	case RHI_HOSTCONF_FEATURES:
>> +	case RHI_HOSTCONF_GET_IPA_CHANGE_ALIGNMENT:
>>   		return true;
>>   	default:
>>   		/* PSCI 0.2 and up is in the 0:0x1f range */
>> @@ -157,7 +161,15 @@ static int kvm_smccc_filter_insert_reserved(struct kvm *kvm)
>>   			       GFP_KERNEL_ACCOUNT);
>>   	if (r)
>>   		goto out_destroy;
>> -
>> +	/*
>> +	 * Don't forward RHI_HOST_CONF related RHI calls
>> +	 */
>> +	r = mtree_insert_range(&kvm->arch.smccc_filter,
>> +			       RHI_HOSTCONF_VERSION, RHI_HOSTCONF_GET_IPA_CHANGE_ALIGNMENT,
>> +			       xa_mk_value(KVM_SMCCC_FILTER_HANDLE),
>> +			       GFP_KERNEL_ACCOUNT);
>
> minor nit: this is needed only for the Realms ?
>


That is the kvm forwarding of the RHI hostcalls to VMM. We are updating
smccc filter that the SMCCC FID range [RHI_HOSTCONF_VERSION, RHI_HOSTCONF_GET_IPA_CHANGE_ALIGNMENT]
will be handled by the kernel. This is needed because it is the kernel
that is dropping the below check in kvm_init_rmi().

 	/* Only 4k page size on the host is supported */
	if (PAGE_SIZE != SZ_4K)
 		return;

We want to make sure RHI support and dropping of the above check happens
in the same patch and is part of the kernel. 

>
>> +	if (r)
>> +		goto out_destroy;
>>   	return 0;
>>   out_destroy:
>>   	mtree_destroy(&kvm->arch.smccc_filter);
>> @@ -376,6 +388,15 @@ int kvm_smccc_call_handler(struct kvm_vcpu *vcpu)
>>   	case ARM_SMCCC_TRNG_RND32:
>>   	case ARM_SMCCC_TRNG_RND64:
>>   		return kvm_trng_call(vcpu);
>> +	case RHI_HOSTCONF_VERSION:
>> +		val[0] = RHI_HOSTCONF_VER_1_0;
>> +		break;
>> +	case RHI_HOSTCONF_FEATURES:
>> +		val[0] = __RHI_HOSTCONF_GET_IPA_CHANGE_ALIGNMENT;
>> +		break;
>> +	case RHI_HOSTCONF_GET_IPA_CHANGE_ALIGNMENT:
>> +		val[0] = PAGE_SIZE;
>> +		break;
>>   	default:
>>   		return kvm_psci_call(vcpu);
>>   	}
>> diff --git a/arch/arm64/kvm/rmi.c b/arch/arm64/kvm/rmi.c
>> index 9957a71d21b1..bd345e051a24 100644
>> --- a/arch/arm64/kvm/rmi.c
>> +++ b/arch/arm64/kvm/rmi.c
>> @@ -1935,10 +1935,6 @@ EXPORT_SYMBOL_GPL(kvm_has_da_feature);
>>   
>>   void kvm_init_rmi(void)
>>   {
>> -	/* Only 4k page size on the host is supported */
>> -	if (PAGE_SIZE != SZ_4K)
>> -		return;
>
> For the record, these patches doesn't necessarily solve the Host support
> fully. The KVM still needs to support splitting pages for RMM's 4K.
>

We already delegate RMM granules and setup stage 2 in rmm with
RMM_PAGE_SIZE. ie, the shared patchset can be used to setup a 64K host
with 4K Realm running on a RMM using 4K RMM granule size.

>
> That said, this can be ignored as we rebase the KVM to only support
> RMM v2.0, where the Host can set the RMM's Stage2 page size.
>
> Suzuki
>

-aneesh

  reply	other threads:[~2025-12-22 14:37 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-21 16:09 [PATCH v2 0/4] Enforce host page-size alignment for shared buffers Aneesh Kumar K.V (Arm)
2025-12-21 16:09 ` [PATCH v2 1/4] swiotlb: dma: its: " Aneesh Kumar K.V (Arm)
2025-12-22 14:49   ` Steven Price
2025-12-22 15:42     ` Aneesh Kumar K.V
2026-01-06  1:16   ` Jason Gunthorpe
2026-01-06  6:37     ` Aneesh Kumar K.V
2025-12-21 16:09 ` [PATCH v2 2/4] coco: guest: arm64: Fetch host IPA change alignment via RHI hostconf Aneesh Kumar K.V (Arm)
2025-12-21 16:09 ` [PATCH v2 3/4] coco: host: arm64: Handle hostconf RHI calls in kernel Aneesh Kumar K.V (Arm)
2025-12-21 20:10   ` Suzuki K Poulose
2025-12-22 14:37     ` Aneesh Kumar K.V [this message]
2025-12-23 19:56       ` Suzuki K Poulose
2025-12-21 16:09 ` [PATCH v2 4/4] dma: direct: set decrypted flag for remapped dma allocations Aneesh Kumar K.V (Arm)
2025-12-22 15:05   ` Suzuki K Poulose
2025-12-23  8:18     ` Aneesh Kumar K.V
2025-12-26  8:59       ` Aneesh Kumar K.V
2026-03-11 12:24         ` Mostafa Saleh
2026-01-06  1:11 ` [PATCH v2 0/4] Enforce host page-size alignment for shared buffers Jason Gunthorpe
2026-01-06  6:39   ` Aneesh Kumar K.V

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=yq5ased2twfh.fsf@kernel.org \
    --to=aneesh.kumar@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=catalin.marinas@arm.com \
    --cc=iommu@lists.linux.dev \
    --cc=jgg@ziepe.ca \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=steven.price@arm.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.