Hi-- On 6/17/24 12:29 AM, Pankaj Gupta wrote: > Adds the driver for communication interface to secure-enclave, > for exchanging messages with NXP secure enclave HW IP(s) like > EdgeLock Enclave from: > - User-Space Applications via character driver. > > ABI documentation for the NXP secure-enclave driver. > > User-space library using this driver: > - i.MX Secure Enclave library: > -- URL: https://github.com/nxp-imx/imx-secure-enclave.git, > - i.MX Secure Middle-Ware: > -- URL: https://github.com/nxp-imx/imx-smw.git > > Signed-off-by: Pankaj Gupta <pankaj.gupta@xxxxxxx> > --- > Documentation/ABI/testing/se-cdev | 42 +++ > drivers/firmware/imx/ele_common.c | 153 ++++++++- > drivers/firmware/imx/ele_common.h | 4 + > drivers/firmware/imx/se_ctrl.c | 694 ++++++++++++++++++++++++++++++++++++++ > drivers/firmware/imx/se_ctrl.h | 49 +++ > include/uapi/linux/se_ioctl.h | 94 ++++++ > 6 files changed, 1034 insertions(+), 2 deletions(-) > > diff --git a/Documentation/ABI/testing/se-cdev b/Documentation/ABI/testing/se-cdev > new file mode 100644 > index 000000000000..699525af6b86 > --- /dev/null > +++ b/Documentation/ABI/testing/se-cdev > @@ -0,0 +1,42 @@ > +What: /dev/<se>_mu[0-9]+_ch[0-9]+ > +Date: May 2024 > +KernelVersion: 6.8 > +Contact: linux-imx@xxxxxxx, pankaj.gupta@xxxxxxx > +Description: > + NXP offers multiple hardware IP(s) for secure-enclaves like EdgeLock- for secure enclaves > + Enclave(ELE), SECO. The character device file-descriptors file descriptors and what is SECO? > + /dev/<se>_mu*_ch* are the interface between user-space NXP's secure- userspace secure > + enclave shared-library and the kernel driver. shared library > + > + The ioctl(2)-based ABI is defined and documented in > + [include]<linux/firmware/imx/ele_mu_ioctl.h> > + ioctl(s) are used primarily for: > + - shared memory management > + - allocation of I/O buffers > + - get mu info - getting mu info > + - setting a dev-ctx as receiver that is slave to fw > + - get SoC info - getting SoC info > + > + The following file operations are supported: > + > + open(2) > + Currently the only useful flags are O_RDWR. > + > + read(2) > + Every read() from the opened character device context is waiting on > + wakeup_intruptible, that gets set by the registered mailbox callback typo in that name? or is it something that this patch series introduces? > + function; indicating a message received from the firmware on message- function, > + unit. > + > + write(2) > + Every write() to the opened character device context needs to acquire > + mailbox_lock, before sending message on to the message unit. mailbox_lock before > + > + close(2) > + Stops and free up the I/O contexts that was associated frees up that were associated > + with the file descriptor. > + > +Users: https://github.com/nxp-imx/imx-secure-enclave.git, > + https://github.com/nxp-imx/imx-smw.git > + crypto/skcipher, > + drivers/nvmem/imx-ocotp-ele.c -- ~Randy