On Wed, 6 Oct 2021 at 12:45, Jens Wiklander <jens.wiklander@xxxxxxxxxx> wrote: > > Adds a section on notifications used by OP-TEE, synchronous and > asynchronous. > > Acked-by: Marc Zyngier <maz@xxxxxxxxxx> > Signed-off-by: Jens Wiklander <jens.wiklander@xxxxxxxxxx> > --- > Documentation/staging/tee.rst | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > Reviewed-by: Sumit Garg <sumit.garg@xxxxxxxxxx> -Sumit > diff --git a/Documentation/staging/tee.rst b/Documentation/staging/tee.rst > index 4d4b5f889603..3c63d8dcd61e 100644 > --- a/Documentation/staging/tee.rst > +++ b/Documentation/staging/tee.rst > @@ -184,6 +184,36 @@ order to support device enumeration. In other words, OP-TEE driver invokes this > application to retrieve a list of Trusted Applications which can be registered > as devices on the TEE bus. > > +OP-TEE notifications > +-------------------- > + > +There are two kinds of notifications that secure world can use to make > +normal world aware of some event. > + > +1. Synchronous notifications delivered with ``OPTEE_RPC_CMD_NOTIFICATION`` > + using the ``OPTEE_RPC_NOTIFICATION_SEND`` parameter. > +2. Asynchronous notifications delivered with a combination of a non-secure > + edge-triggered interrupt and a fast call from the non-secure interrupt > + handler. > + > +Synchronous notifications are limited by depending on RPC for delivery, > +this is only usable when secure world is entered with a yielding call via > +``OPTEE_SMC_CALL_WITH_ARG``. This excludes such notifications from secure > +world interrupt handlers. > + > +An asynchronous notification is delivered via a non-secure edge-triggered > +interrupt to an interrupt handler registered in the OP-TEE driver. The > +actual notification value are retrieved with the fast call > +``OPTEE_SMC_GET_ASYNC_NOTIF_VALUE``. Note that one interrupt can represent > +multiple notifications. > + > +One notification value ``OPTEE_SMC_ASYNC_NOTIF_VALUE_DO_BOTTOM_HALF`` has a > +special meaning. When this value is received it means that normal world is > +supposed to make a yielding call ``OPTEE_MSG_CMD_DO_BOTTOM_HALF``. This > +call is done from the thread assisting the interrupt handler. This is a > +building block for OP-TEE OS in secure world to implement the top half and > +bottom half style of device drivers. > + > AMD-TEE driver > ============== > > -- > 2.31.1 >