Re: [PATCH v3 5/5] firmware: imx: adds miscdev

Randy Dunlap
2024-06-18T21:39:15Z

Sorry, I missed one comment here:

On 6/18/24 2:28 PM, Randy Dunlap wrote:
> 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@nxp.com>
>> ---
>> 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@nxp.com, pankaj.gupta@nxp.com
>> +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

Documentation/process/coding-style.rst says not to introduce new uses of the
word "slave":

For symbol names and documentation, avoid introducing new usage of
'master / slave' (or 'slave' independent of 'master') and 'blacklist /
whitelist'.

Recommended replacements for 'master / slave' are:
'{primary,main} / {secondary,replica,subordinate}'
'{initiator,requester} / {target,responder}'
'{controller,host} / {device,worker,proxy}'
'leader / follower'
'director / performer'

>> + - 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