Hi,
Here's preview 2 of the patchset I'm intending to send as PATCH v4 to
the kernel mailing lists later. I've addressed previous comments applicable
for the scope of this patchset.
Please take a look to see that we're moving in the right direction.
The "arm/arm64: add smccc ARCH32" patch doesn't contain complicated code,
but the usage of Kconfig deserves some extra attention.
OP-TEE patches to work with this in:
https://github.com/jenswi-linaro/optee_client/tree/drv4_wip2
https://github.com/jenswi-linaro/optee_os/tree/drv4_wip2
https://github.com/jenswi-linaro/optee_test/tree/drv4_wip2
The kernel patches are also available at
https://github.com/jenswi-linaro/linux/tree/gen_optee_driver4_wip2
v4 preview 2:
* Redesigned the synchronization around entry exit of normal SMC (again)
* Replaced rwsem with kref and completion since rwsem wasn't intended to
be used in this way
* Replaced semaphores with completions
* Expanded the TEE_IOCTL_PARAM_ATTR_TYPE_MASK to make room for
additional parameter types
* Some RPC cleanup, don't use struct optee_msg_arg::func for instance
* Changed tee_shm_pool_alloc_res_mem() to allow greater flexibility when
defining driver private and dma-buf shared memory
v4 preview 1:
* Documents TEE subsystem and OP-TEE driver
* Replaced TEE_IOC_CMD with TEE_IOC_OPEN_SESSION, TEE_IOC_INVOKE,
TEE_IOC_CANCEL and TEE_IOC_CLOSE_SESSION
* DT bindings in a separate patch
* Assembly parts moved to arch/arm and arch/arm64 respectively, in a
separate patch
* Redesigned the synchronization around entry exit of normal SMC
* Redefined/clarified the meaning of OPTEE_SMC_SHM_CACHED
* Removed CMA usage to limit the scope of the patch set
v3:
* Rebased on 4.1-rc3 (dma_buf_export() API change)
* A couple of small sparse fixes
* Documents bindings for OP-TEE driver
* Updated MAINTAINERS
v2:
* Replaced the stubbed OP-TEE driver with a real OP-TEE driver
* Removed most APIs not needed by OP-TEE in current state
* Update Documentation/ioctl/ioctl-number.txt with correct path to tee.h
* Rename tee_shm_pool_alloc_cma() to tee_shm_pool_alloc()
* Moved tee.h into include/uapi/linux/
* Redefined tee.h IOCTL macros to be directly based on _IOR and friends
* Removed version info on the API to user space, a data blob which
can contain an UUID is left for user space to be able to tell which
protocol to use in TEE_IOC_CMD
* Changed user space exposed structures to only have types with __ prefix
* Dropped THIS_MODULE from tee_fops
* Reworked how the driver is registered and ref counted:
- moved from using an embedded struct miscdevice to an embedded struct
device.
- uses an struct rw_semaphore as synchronization for driver detachment
- uses alloc/register pattern from TPM
Thanks,
Jens
Jens Wiklander (5):
arm/arm64: add smccc ARCH32
dt/bindings: add bindings for optee
tee: generic TEE subsystem
tee: add OP-TEE driver
Documentation: tee subsystem and op-tee driver
Documentation/00-INDEX | 2 +
Documentation/devicetree/bindings/optee/optee.txt | 17 +
.../devicetree/bindings/vendor-prefixes.txt | 1 +
Documentation/ioctl/ioctl-number.txt | 1 +
Documentation/tee.txt | 117 +++
MAINTAINERS | 14 +
arch/arm/Kconfig | 4 +
arch/arm/kernel/Makefile | 2 +
arch/arm/kernel/smccc-call.S | 26 +
arch/arm/kernel/smccc.c | 17 +
arch/arm64/Kconfig | 4 +
arch/arm64/kernel/Makefile | 1 +
arch/arm64/kernel/smccc-call.S | 34 +
arch/arm64/kernel/smccc.c | 17 +
drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/tee/Kconfig | 18 +
drivers/tee/Makefile | 4 +
drivers/tee/optee/Kconfig | 8 +
drivers/tee/optee/Makefile | 5 +
drivers/tee/optee/call.c | 390 ++++++++++
drivers/tee/optee/core.c | 451 +++++++++++
drivers/tee/optee/optee_msg.h | 334 ++++++++
drivers/tee/optee/optee_private.h | 129 ++++
drivers/tee/optee/optee_smc.h | 466 ++++++++++++
drivers/tee/optee/rpc.c | 248 ++++++
drivers/tee/optee/supp.c | 212 ++++++
drivers/tee/tee.c | 839 +++++++++++++++++++++
drivers/tee/tee_private.h | 80 ++
drivers/tee/tee_shm.c | 324 ++++++++
drivers/tee/tee_shm_pool.c | 133 ++++
include/linux/arm-smccc.h | 80 ++
include/linux/tee_drv.h | 306 ++++++++
include/uapi/linux/tee.h | 376 +++++++++
34 files changed, 4663 insertions(+)
create mode 100644 Documentation/devicetree/bindings/optee/optee.txt
create mode 100644 Documentation/tee.txt
create mode 100644 arch/arm/kernel/smccc-call.S
create mode 100644 arch/arm/kernel/smccc.c
create mode 100644 arch/arm64/kernel/smccc-call.S
create mode 100644 arch/arm64/kernel/smccc.c
create mode 100644 drivers/tee/Kconfig
create mode 100644 drivers/tee/Makefile
create mode 100644 drivers/tee/optee/Kconfig
create mode 100644 drivers/tee/optee/Makefile
create mode 100644 drivers/tee/optee/call.c
create mode 100644 drivers/tee/optee/core.c
create mode 100644 drivers/tee/optee/optee_msg.h
create mode 100644 drivers/tee/optee/optee_private.h
create mode 100644 drivers/tee/optee/optee_smc.h
create mode 100644 drivers/tee/optee/rpc.c
create mode 100644 drivers/tee/optee/supp.c
create mode 100644 drivers/tee/tee.c
create mode 100644 drivers/tee/tee_private.h
create mode 100644 drivers/tee/tee_shm.c
create mode 100644 drivers/tee/tee_shm_pool.c
create mode 100644 include/linux/arm-smccc.h
create mode 100644 include/linux/tee_drv.h
create mode 100644 include/uapi/linux/tee.h
--
1.9.1
_______________________________________________
Tee-dev mailing list
Tee-dev@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/tee-dev