[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 10/10] xen/arm: ffa: advertise FF-A v1.2
- To: Jens Wiklander <jens.wiklander@xxxxxxxxxx>
- From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
- Date: Thu, 4 Dec 2025 08:52:35 +0000
- Accept-language: en-GB, en-US
- Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=linaro.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com])
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
- Arc-message-signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rDWqyrcgjfAa0KpmzmBNpTdkuFH5QEA9lwuQvK+KgGc=; b=th6jJWRpuQ2yDMMjUaN/OUlN3GqTUEprS/PzwoyfYZ5rHPu8Bnm6HHwat7Pdk3CiHy73vYqbiYi4FybwI5sHuu6rW49PEu08L6/qPlYMDoT+CsHvDDzdH2wHD0/UUUjQhBRRRtVbNXi8Mf5CB56athfeWjJ6wB/6dGIrv2iVgVblRcyr7AyjkCbGVSl3WoFM+og9+7C3Tzk6uDeGlL/fsIGQgFhiVun2E1lpG1Te2H717Wllx9tlrTE+Usjpzf2s5NXEZ4z2WD3S6cZHn/jFsaNHtjQpv1jX7B24ZRyNS0EWC/slZ6zitW6i5CS5sNs5yT4lbRQJvDVoqUPpNqeowg==
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rDWqyrcgjfAa0KpmzmBNpTdkuFH5QEA9lwuQvK+KgGc=; b=gyg1r9U9Kmvt7MscChKVq3BOn46w8m/iVDG9SW6MQZOKMRg93u1fudY/f62SVO2cII+rkWkk10S/vjSBYvyVhnJAkVoRF+TmFhW/VhRgqMDZTLmcnXFRHFVJtAWr52K6VuMAZbLb9n7SJwtaa9OUNcnmQJqU1cBzTNshXFLbJxzfb0n3RS6TPoIWarsw2EtsHPfr6aRsrTgtM35/tgoGNftv1tk8GYoclmVMLONWiJaDHSvEbdiQXdqadwuhuWCi6ed3rEwRYsnkJxYU5qcq9mHFjhf/bZynO4gjAujkXiM3n6L+gn34yqcmq4ftmW/Qb3fiXh3VKKuSZ+R/yBpXSA==
- Arc-seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=ynvbXKl0wBoFpHplPTSL71m0MLNirOzeZ1molteLLN7S1TPAJqeEiQWUaBbTDd7fgBzH6LRfg20mj+rxKpfdps8lq4CczwS0O9juTME4JXEZ26Mb5MgzyZDM8V7978SeeiGkSjE2wBTd51F9wQY9xkR9EYlk6MJKmj2yq838pRWWKJsv1/PJvshqBmM6OvVW8PvUxy5FAdjLoA4uy02Zk+xwmRYWKxrufwStPu3hTjrsfl53Vi8cRfPR1jbujEaEgpkg8nQmUMiq44lsT6IWql+Ynq9Fx15l4+0lYRZEFUCMtLYfVaVm+lydnMRpXOdPkVGylES+KfSeKCyrUVx9oQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ypi5RdjWeaWFNKjX+KxX7eAcpbghMSxxTvXdoymdGeBP8k1Nd32Zbi30z21ck/Ao+z4PEfc7YHCGIW/SJW0OfPd1/pJydP8DsGk5hGvjqpyMbmPl3svpqO/2VjWruuIO7PO0QjuEN8i3TvH+kgW7baAlhVAH37KpfuPU3xXCk9fV65CwVAHpYHkFX1DuhwUdrpbMCVfqjhpfapBh1CtwCWtzbaE17/avHzY3ctev3QviQtlYSN4HDSbHccMuYXv/RP8Wxzm6P+9vQ5EAaAxYOFfykKvfU3eKBTPnG5H8l7Fctb6WlMDKcgEIt10cLgWGtw5Oq3kmVL5+Bh6xoEdW9A==
- Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
- Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>
- Delivery-date: Thu, 04 Dec 2025 08:53:53 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Nodisclaimer: true
- Thread-index: AQHcX7X0Biqt31cxnESztYOGDz/aZLURKIIAgAAOsAA=
- Thread-topic: [PATCH 10/10] xen/arm: ffa: advertise FF-A v1.2
Hi Jens,
> On 4 Dec 2025, at 08:59, Jens Wiklander <jens.wiklander@xxxxxxxxxx> wrote:
>
> Hi Bertrand,
>
> On Thu, Nov 27, 2025 at 4:53 PM Bertrand Marquis
> <bertrand.marquis@xxxxxxx> wrote:
>>
>> Advertise RUN/YIELD/INTERRUPT via FFA_FEATURES now that the runtime
>> helpers are in place, and expose the RX/TX MAP capacity field only once
>> a guest has negotiated FF-A v1.2.
>>
>> While there, drop the stale <asm/tee/ffa.h> include.
>>
>> To comply with the wider v1.2 register ABI, zero registers x8–x17 when
>> responding to a v1.2 VM. The dispatcher also rejects SMCCC64 calls from
>> AArch32 guests.
>>
>> Finally, bump Xen's FF-A version to 1.2.
>>
>> Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
>> ---
>> xen/arch/arm/tee/ffa.c | 25 ++++++++++++++++++++-----
>> xen/arch/arm/tee/ffa_private.h | 28 +++++++++++++++++++---------
>> 2 files changed, 39 insertions(+), 14 deletions(-)
>>
>> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
>> index 8b2f042287fc..c8fe97856d06 100644
>> --- a/xen/arch/arm/tee/ffa.c
>> +++ b/xen/arch/arm/tee/ffa.c
>> @@ -24,9 +24,6 @@
>> * o FFA_MEM_DONATE_* and FFA_MEM_LEND_* - Used when tranferring ownership
>> * or access of a memory region
>> * o FFA_MSG_SEND2 and FFA_MSG_WAIT - Used for indirect messaging
>> - * o FFA_MSG_YIELD
>> - * o FFA_INTERRUPT - Used to report preemption
>> - * o FFA_RUN
>> *
>> * Limitations in the implemented FF-A interfaces:
>> * o FFA_RXTX_MAP_*:
>> @@ -68,7 +65,6 @@
>> #include <asm/event.h>
>> #include <asm/regs.h>
>> #include <asm/smccc.h>
>> -#include <asm/tee/ffa.h>
>> #include <asm/tee/tee.h>
>>
>> #include "ffa_private.h"
>> @@ -262,6 +258,9 @@ static void handle_features(struct cpu_user_regs *regs)
>> case FFA_MSG_SEND_DIRECT_REQ_32:
>> case FFA_MSG_SEND_DIRECT_REQ_64:
>> case FFA_MSG_SEND2:
>> + case FFA_RUN:
>> + case FFA_INTERRUPT:
>> + case FFA_MSG_YIELD:
>> ffa_set_regs_success(regs, 0, 0);
>> break;
>> case FFA_MSG_SEND_DIRECT_REQ2:
>> @@ -290,7 +289,16 @@ static void handle_features(struct cpu_user_regs *regs)
>> * differs from FFA_PAGE_SIZE (SZ_4K).
>> */
>> BUILD_BUG_ON(PAGE_SIZE != FFA_PAGE_SIZE);
>> - ffa_set_regs_success(regs, 0, 0);
>> +
>> + /*
>> + * From FFA v1.2, we can give the maximum number of pages we support
>> + * for the RX/TX buffers.
>> + */
>> + if ( ctx->guest_vers < FFA_VERSION_1_2 )
>> + ffa_set_regs_success(regs, 0, 0);
>> + else
>> + ffa_set_regs_success(regs, FFA_MAX_RXTX_PAGE_COUNT << 16, 0);
>> +
>> break;
>> case FFA_FEATURE_NOTIF_PEND_INTR:
>> ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
>> @@ -323,6 +331,13 @@ static bool ffa_handle_call(struct cpu_user_regs *regs)
>> if ( !ctx )
>> return false;
>>
>> + if ( !is_64bit_domain(d) && smccc_is_conv_64(fid) )
>
> You use ctx->is_64bit in ffa_set_regs() below, but here
> is_64bit_domain(d). Which one do we prefer?
It would definitely be more coherent to use ctx->is_64bit.
I will fix that in next version.
Cheers
Bertrand
|