This series updates Xen’s FF-A mediator on Arm to implement the FF-A
v1.2 interface while keeping existing v1.0/v1.1 guests working.

Patches 1–7 rework the low-level plumbing:

  1) add the FF-A v1.2 function IDs and probe the new ABIs
  2) track per-VM FFA_VERSION state and enforce negotiation
  3) Fix is_64bit initialisation
  4) harden RX/TX mapping and validation
  5) rework SPMC RX/TX buffer management so access is serialized and
     RX buffers are always released back to the SPMC
  6) rework VM RX/TX buffer to have generic acquire/release function
     equivalent to SPMC access functions
  7) switch the mediator to spec-compliant signed 32-bit status codes

Patches 8–11 update the data structures and direct-call paths:

  8) add ffa_uuid helpers and rework partition-info handling
  9) add FFA_RUN support
  10) add the v1.1/v1.2 SEND2 header layout
  11) add MSG_SEND_DIRECT_REQ2/RESP2 support and marshal the extended
     register set for v1.2 guests

Patch 12 tightens the dispatcher and advertises FF-A v1.2:

  - reject SMCCC64 calls from AArch32 guests
  - expose RX/TX capacity fields
  - bump Xen's FF-A version to 1.2 once the implementation is complete

v1.0/v1.1 guests continue to use the v1.1 ABI without behaviour changes,
while v1.2 guests can negotiate the wider ABI and use RUN, SEND2, and
DIRECT_REQ2/RESP2 with the extended register set.

This serie was validated through gitlab-ci here:
https://gitlab.com/xen-project/people/bmarquis/xen-ffa-research/-/tree/ffa-v1.2/v1
Build pipeline for the serie:
https://gitlab.com/xen-project/people/bmarquis/xen-ffa-research/-/pipelines/2197856905

Changes since v0:
- Rework version negotiation to prevent concurrency issues
- Introduce patch 3 to fix an init bug
- Introduce patch 5 to make VM RX/TX buffer acquire/release working in
  the same way as SPMC RX/TX buffers
- minor fixes described in each patch changelog

Bertrand Marquis (12):
  xen/arm: ffa: add FF-A v1.2 function IDs
  xen/arm: ffa: per-VM FFA_VERSION negotiation state
  xen/arm: ffa: Fix is_64bit init
  xen/arm: ffa: harden RX/TX mapping
  xen/arm: ffa: rework SPMC RX/TX buffer management
  xen/arm: ffa: rework VM RX/TX buffer management
  xen/arm: ffa: use signed 32-bit status codes
  xen/arm: ffa: add UUID helpers for partition info
  xen/arm: ffa: Add FFA_RUN support
  xen/arm: ffa: add v1.2 SEND2 header layout
  xen/arm: ffa: add MSG_SEND_DIRECT_REQ2 support
  xen/arm: ffa: advertise FF-A v1.2

 xen/arch/arm/include/asm/tee/ffa.h |   3 +-
 xen/arch/arm/tee/ffa.c             | 202 ++++++++++++++++------
 xen/arch/arm/tee/ffa_msg.c         | 232 +++++++++++++++++++------
 xen/arch/arm/tee/ffa_notif.c       |  14 +-
 xen/arch/arm/tee/ffa_partinfo.c    | 263 +++++++++++++++++------------
 xen/arch/arm/tee/ffa_private.h     | 153 +++++++++++------
 xen/arch/arm/tee/ffa_rxtx.c        | 241 +++++++++++++++++++++-----
 xen/arch/arm/tee/ffa_shm.c         |  52 +++---
 8 files changed, 830 insertions(+), 330 deletions(-)

-- 
2.51.2


Reply via email to