[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH v10 16/24] xen/arm: ffa: add defines for sharing memory
Hi Jens, > On 17 Jul 2023, at 09:20, Jens Wiklander <jens.wiklander@xxxxxxxxxx> wrote: > > According to DEN0077A version 1.1 REL0 > - Section 10.9.2 Memory region handle, page 167 > - Table 10.18 at page 175 > - Table 10.15 at page 168 > - Section 10.11.4 Flags usage, page 184-187 > add defines needed for sharing using the function FFA_MEM_SHARE and > friends. > > Also add limits for how many shared buffers that a guest can have at > once and how large a shared buffer can be at most. > > Signed-off-by: Jens Wiklander <jens.wiklander@xxxxxxxxxx> > Reviewed-by: Henry Wang <Henry.Wang@xxxxxxx> Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx> Cheers Bertrand > --- > xen/arch/arm/tee/ffa.c | 58 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 58 insertions(+) > > diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c > index d5748b9ce88c..e895e355e620 100644 > --- a/xen/arch/arm/tee/ffa.c > +++ b/xen/arch/arm/tee/ffa.c > @@ -5,6 +5,14 @@ > * Arm Firmware Framework for ARMv8-A (FF-A) mediator > * > * Copyright (C) 2023 Linaro Limited > + * > + * References: > + * FF-A-1.0-REL: FF-A specification version 1.0 available at > + * https://developer.arm.com/documentation/den0077/a > + * FF-A-1.1-REL0: FF-A specification version 1.1 available at > + * https://developer.arm.com/documentation/den0077/e > + * TEEC-1.0C: TEE Client API Specification version 1.0c available at > + * > https://globalplatform.org/specs-library/tee-client-api-specification/ > */ > > #include <xen/bitops.h> > @@ -80,6 +88,56 @@ > */ > #define FFA_MAX_RXTX_PAGE_COUNT 1 > > +/* > + * Limit for shared buffer size. Please note that this define limits > + * number of pages. > + * > + * FF-A doesn't have any direct requirements on GlobalPlatform or vice > + * versa, but an implementation can very well use FF-A in order to provide > + * a GlobalPlatform interface on top. > + * > + * Global Platform specification for TEE requires that any TEE > + * implementation should allow to share buffers with size of at least > + * 512KB, defined in TEEC-1.0C page 24, Table 4-1, > + * TEEC_CONFIG_SHAREDMEM_MAX_SIZE. > + * Due to overhead which can be hard to predict exactly, double this number > + * to give a safe margin. > + */ > +#define FFA_MAX_SHM_PAGE_COUNT (2 * SZ_512K / FFA_PAGE_SIZE) > + > +/* > + * Limits the number of shared buffers that guest can have at once. This > + * is to prevent case, when guests trick XEN into exhausting its own > + * memory by allocating many small buffers. This value has been chosen > + * arbitrarily. > + */ > +#define FFA_MAX_SHM_COUNT 32 > + > +/* FF-A-1.1-REL0 section 10.9.2 Memory region handle, page 167 */ > +#define FFA_HANDLE_HYP_FLAG BIT(63, ULL) > +#define FFA_HANDLE_INVALID 0xffffffffffffffffULL > + > +/* > + * Memory attributes: Normal memory, Write-Back cacheable, Inner shareable > + * Defined in FF-A-1.1-REL0 Table 10.18 at page 175. > + */ > +#define FFA_NORMAL_MEM_REG_ATTR 0x2fU > +/* > + * Memory access permissions: Read-write > + * Defined in FF-A-1.1-REL0 Table 10.15 at page 168. > + */ > +#define FFA_MEM_ACC_RW 0x2U > + > +/* FF-A-1.1-REL0 section 10.11.4 Flags usage, page 184-187 */ > +/* Clear memory before mapping in receiver */ > +#define FFA_MEMORY_REGION_FLAG_CLEAR BIT(0, U) > +/* Relayer may time slice this operation */ > +#define FFA_MEMORY_REGION_FLAG_TIME_SLICE BIT(1, U) > +/* Clear memory after receiver relinquishes it */ > +#define FFA_MEMORY_REGION_FLAG_CLEAR_RELINQUISH BIT(2, U) > +/* Share memory transaction */ > +#define FFA_MEMORY_REGION_TRANSACTION_TYPE_SHARE (1U << 3) > + > /* > * Flags and field values used for the MSG_SEND_DIRECT_REQ/RESP: > * BIT(31): Framework or partition message > -- > 2.34.1 >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |