[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 08/12] xen/arm: ffa: Fix FFA_FEATURES validation


  • To: Jens Wiklander <jens.wiklander@xxxxxxxxxx>
  • From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • Date: Wed, 11 Feb 2026 11:26:21 +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=Ucqx+nI1hwRHKmub3pZYl/QRigRHgYW7VbMw4rM2yWI=; b=nNSSiIfmgGrZqvU5LzbgTUH5QoOH/RkyLe7WzDaPo/+gGzjjfKPGTb96DZmFaZDzuuTqHHsT/Un1tkz14o0bkHnV+1+Q6dU4t5cd8SAcX1h/ai56roRw+fvvnObW6gcwcHDi4yUcf01K36eimJEr0cwRroODAtP6q9lzAt1adwk7ULeR7m/awimnQfov4cdA78M/mufWZvhaXA2j/V+esiferpOwDrMEvQOMCLx8ov7d6P7tv49/b3AOhywnn2nhD1mLbF5usV6FUqArPXKPw0Xtbwrcv2m+cduNDqNs0O9a4hIRKhsr3d9/rxXt2ylSKQTXjMy4EXE1Y6JIZc0nbA==
  • 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=Ucqx+nI1hwRHKmub3pZYl/QRigRHgYW7VbMw4rM2yWI=; b=kCNqYek3M3y1e6kzVbueeD5XesK6tE3jm8ebP/+3IgJfXoO4BK3PqZFj8r21V4cn8a9k5OSypxObDxNsHnv+EBVoAQX5gJPAGObDLTfAyqrferwCjvAhrNBOShqA23mHlxnXKrrl3PtZamK4KWJERTx8ncjJDsg3P4JY+Xy14x05M7UV/RF7V5eVo2Fzt6t/748BIG2cOwwr7NK6NxegewImmjrpylJQqoPIehKubPi/V2e3dS9VcBCxAS/bo49N6JIBn0ScuQdfL+RHOdOJgg24z26tVoyfKGpi3BoYelseUE62NlZog1IpZmPQUhAOSnjm0d7HDCTcQAA4M3I2lQ==
  • Arc-seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=alH4Db+YCAzufoH8lPw1R4Ch5xKkX5dOFJqAq1+CPxCZqSx9FWoPanhgg+u2ZyEH9RJZ3XnwvTqU6vAsreQn0NR4UBfmA/CHTJ5j2aODJBa++JSPmb+v0L6pSiTVHqBm9rVrfdxpWoWR7jqNTFtPRy99x3Kln3IKq4Qyro/kJUG5r5TQShk81lLW0b7qz+ZmIc5vWXNkCcZEh5XtUKiE+DDRsZQwabALjASBL1ADUPo1PPR8z15mSDk+9yBXiPz1tQhGews7RP5v0CD+F97ChV9VzXi87nfOEBG0A3gBxcc2T9g2aGM2EEZUqt0uK3BS8ToB6mcET6OhHGXBeERyWg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uQexQ1lPwncH0FDZkjuq8ZPEzYoIzYVBhI6QhXlAVwoiT8rISUQeJkD/KTwGe3W/u1PvH9nXcADpSzCAU00RNASXIyErC1+3cX7fy5NrfmQRvUo3yZvcLODqVbqnP/G4IjDcj51nT+vtVnXuac/lOYS0lFs3vLjvjNtUIKKOcogHQ51Gu6AVzU3BxX2rEbOVyfd2FBik+dEmPtbiKmcSjF4DP6M0SfJfXNzjGdn3uPgbBR/6jXIcsCONlamL+tUBFEM1mBIrAbHeQoyzOw29y1RMhKZQej0pux/0367M0/HWCUJbBd2PX2LC/2kG+0prcH4A7gTnGMIW1/Xlj68UEw==
  • 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: Wed, 11 Feb 2026 11:27:39 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Thread-index: AQHclTQCVYzQoM1PdEyfckgwmOVEyLV9M2UAgAA0pYA=
  • Thread-topic: [PATCH 08/12] xen/arm: ffa: Fix FFA_FEATURES validation

Hi Jens,

> On 11 Feb 2026, at 09:17, Jens Wiklander <jens.wiklander@xxxxxxxxxx> wrote:
> 
> Hi Bertrand,
> 
> On Tue, Feb 3, 2026 at 6:38 PM Bertrand Marquis
> <bertrand.marquis@xxxxxxx> wrote:
>> 
>> FFA_FEATURES currently accepts non-zero input properties (w2-w7) from
>> guests and advertises several ABIs unconditionally, even when firmware
>> support is missing or when the ABI is physical-instance-only. This can
>> mislead guests about what Xen can actually provide and violates FF-A
>> calling conventions. Some SPMCs (Hafnium v2.14 or earlier) also fail to
>> report FFA_RX_ACQUIRE despite supporting it.
>> 
>> Update FFA_FEATURES validation to match spec and firmware support:
>> - reject non-zero w2-w7 input properties with INVALID_PARAMETERS
>> - reject 64-bit calling conventions from 32-bit guests with NOT_SUPPORTED
>> - return NOT_SUPPORTED for physical-instance-only ABIs
>> (FFA_NOTIFICATION_BITMAP_{CREATE,DESTROY}, FFA_RX_ACQUIRE)
>> - advertise FFA_INTERRUPT as supported
>> - gate message ABIs on firmware support:
>> - FFA_MSG_SEND_DIRECT_REQ_{32,64}
>> - FFA_MSG_SEND_DIRECT_REQ2 (also requires FF-A 1.2 negotiation)
>> - FFA_MSG_SEND2 (or VM-to-VM enabled)
>> - report MEM_SHARE_{32,64} only when FFA_MEM_SHARE_64 is supported
>> - stop advertising FFA_MSG_YIELD (not implemented)
>> 
>> Update firmware probing: drop FFA_MEM_SHARE_32 checks (deprecated) and
>> add FFA_RX_ACQUIRE to the probed set. If FFA_MSG_SEND2 is reported but
>> FFA_RX_ACQUIRE is not, assume RX_ACQUIRE support and warn to work
>> around the Hafnium bug.
>> 
>> Functional impact: guests now see ABI support that reflects firmware
>> capabilities and Xen implementation status. When SEND2 is present but
>> RX_ACQUIRE is not reported, Xen assumes RX_ACQUIRE support.
>> 
>> Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
>> ---
>> xen/arch/arm/tee/ffa.c | 62 +++++++++++++++++++++++++++++++++++++-----
>> 1 file changed, 55 insertions(+), 7 deletions(-)
>> 
>> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
>> index 6de2b9f8ac8e..e9e020bb0cb3 100644
>> --- a/xen/arch/arm/tee/ffa.c
>> +++ b/xen/arch/arm/tee/ffa.c
>> @@ -91,10 +91,10 @@ static const struct ffa_fw_abi ffa_fw_abi_needed[] = {
>>     FW_ABI(FFA_PARTITION_INFO_GET),
>>     FW_ABI(FFA_NOTIFICATION_INFO_GET_64),
>>     FW_ABI(FFA_NOTIFICATION_GET),
>> +    FW_ABI(FFA_RX_ACQUIRE),
>>     FW_ABI(FFA_RX_RELEASE),
>>     FW_ABI(FFA_RXTX_MAP_64),
>>     FW_ABI(FFA_RXTX_UNMAP),
>> -    FW_ABI(FFA_MEM_SHARE_32),
>>     FW_ABI(FFA_MEM_SHARE_64),
>>     FW_ABI(FFA_MEM_RECLAIM),
>>     FW_ABI(FFA_MSG_SEND_DIRECT_REQ_32),
>> @@ -240,19 +240,39 @@ static void handle_features(struct cpu_user_regs *regs)
>>     struct ffa_ctx *ctx = d->arch.tee;
>>     unsigned int n;
>> 
>> +    /*
>> +     * Xen does not accept any non-zero FFA_FEATURES input properties from
>> +     * VMs. The spec only defines w2 input properties for 
>> FFA_MEM_RETRIEVE_REQ
>> +     * (NS-bit negotiation for SP/SPMC) and FFA_RXTX_MAP (buffer size and
>> +     * alignment), so w2 must be MBZ for our callers.
>> +     */
> 
> The spec (version 1.2) lists them as SBZ, except for w2, which is MBZ,
> for Feature IDs.

Very true, this should only check w2 which is anyway defined as MBZ when
not used.
w3-w7 were MBZ in previous versions of FF-A but are in fact SBZ in 1.2 so
we should ignore them

> However, if we're to return an error, invalid parameters is a better choice.

In fact the spec is actually saying the following:
If the FF-A interface or feature that was queried is not implemented or invalid,
the callee completes this call with an invocation of the FFA_ERROR interface
with the NOT_SUPPORTED error code.

So there is no case for INVALID_PARAMETER.

So in fact i should:
- return NOT_SUPPORTED if w2 is not 0
- ignore w3-w7

Can you confirm that you have the same reading of the spec than me ?

Cheers
Bertrand


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.