+1 for GitHub.
We can have an organization, as it is the case for OP-TEE. It allows multiple gatekeepers, and it looks less attached to someone but to a group of people. Could be "Tee-Dev".

Regards,
Pascal.


On 13 March 2015 at 13:36, Joakim Bech <joakim.bech@linaro.org> wrote:
Thanks Jens,

Even though the code not necessarily has to be stored in a central
repository, we will very soon need to have the code "merged somewhere",
which reflects our common thoughts on the driver and a place where
patches sent on tee-dev mailing list will be merged after having them
discussed.

In principle we need a repository and a gatekeeper/integrator.

We have several options, but I have two suggestions, either ...
  1) Put a tree at git.linaro.org
... or ...
  2) Put a tree at a developer account at GitHub.

git.linaro.org requires some minor setup, but I can fix that. Having it
on a developer account is quick and easy. However I can imagine that not
everyone thinks that this is a good idea. Thoughts?

I just want to once again emphasize that this is just a temporary thing.
As soon as we start to get code upstreamed, the discussions should take
place there instead, likewise with the source code.

The updated patch itself is a good start that I'm OK with (even though I
still want to change a couple of names).

On Fri, Mar 13, 2015 at 11:19:26AM +0100, Jens Wiklander wrote:
> Hi,
>
> Thanks for the input on the previous patch. Here's version two of the
> patch.
>
> Changes:
> * Trimmed struct tee_version to what's needed to identify the specific driver
> * Renamed sechw to sec-hw
> * Added dma_buf stuff to struct tee_mem_share_data
>
> Regards,
> Jens
>
> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
> ---
>  Documentation/ioctl/ioctl-number.txt |   1 +
>  include/linux/sec-hw/tee.h           | 167 +++++++++++++++++++++++++++++++++++
>  2 files changed, 168 insertions(+)
>  create mode 100644 include/linux/sec-hw/tee.h
>
> diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt
> index 8136e1f..3d55d8c 100644
> --- a/Documentation/ioctl/ioctl-number.txt
> +++ b/Documentation/ioctl/ioctl-number.txt
> @@ -301,6 +301,7 @@ Code  Seq#(hex)   Include File            Comments
>  0xA3 80-8F   Port ACL                in development:
>                                       <mailto:tlewis@mindspring.com>
>  0xA3 90-9F   linux/dtlk.h
> +0xA4 00-1F   linux/sec-hw/tee.h      Generic TEE driver
>  0xAB 00-1F   linux/nbd.h
>  0xAC 00-1F   linux/raw.h
>  0xAD 00      Netfilter device        in development:
> diff --git a/include/linux/sec-hw/tee.h b/include/linux/sec-hw/tee.h
> new file mode 100644
> index 0000000..c8e749b
> --- /dev/null
> +++ b/include/linux/sec-hw/tee.h
> @@ -0,0 +1,167 @@
> +/*
> + * Copyright (c) 2015, Linaro Limited
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#ifndef __TEE_H
> +#define __TEE_H
> +
> +#include <linux/ioctl.h>
> +#include <linux/types.h>
> +
> +/*
> + * This file describes the API provided by the generic TEE driver to user
> + * space
> + */
> +
> +#define TEE_GENDRV_VERSION   1
> +
> +/**
> + * struct tee_version - TEE versions
> + * @gen_version:     Generic TEE driver version
> + * @spec_version:    Specific TEE driver version
> + * @uuid:            Specific TEE driver uuid, zero if not used
> + *
> + * Identifies the generic TEE driver, and the specific TEE driver.
> + */
> +struct tee_version {
> +     uint32_t gen_version;
> +     uint32_t spec_version;
> +     uint8_t uuid[16];
> +};
> +
> +/**
> + * struct tee_cmd_data - Opaque command argument
> + * @buf_ptr: A __user pointer to a command buffer
> + * @buf_len: Length of the buffer above
> + *
> + * Opaque command data which is passed on to the specific driver. The command
> + * buffer doesn't have to reside in shared memory.
> + */
> +struct tee_cmd_data {
> +     uint64_t buf_ptr;
> +     uint64_t buf_len;
> +};
> +
> +/**
> + * struct tee_shm_alloc_data - Shared memory allocate argument
> + * @size:    Size of shared memory to allocate
> + * @flags:   Flags to/from allocation, currently zero
> + * @fd:              dma_buf file descriptor of the shared memory
> + */
> +struct tee_shm_alloc_data {
> +     uint64_t size;
> +     uint32_t flags;
> +     int32_t fd;
> +};
> +
> +/**
> + * struct tee_mem_buf - share user space memory with Secure OS
> + * @ptr:     A __user pointer to memory to share
> + * @size:    Size of the memory to share
> + */
> +struct tee_mem_buf {
> +     uint64_t ptr;
> +     uint64_t size;
> +};
> +
> +/**
> + * struct tee_mem_dma_buf - share foreign dma_buf memory
> + * @fd:              dma_buf file descriptor
> + * @pad:     padding, set to zero by caller
> + */
> +struct tee_mem_dma_buf {
> +     int32_t fd;
> +     uint32_t pad;
> +};
> +
> +
> +/*
> + * Bits in struct tee_mem_share_data.flags
> + */
> +#define TEE_MEM_SHARE_FLAG_FOREIGN_BUFFER    0x1     /* use dma_buf field */
> +
> +/**
> + * struct tee_mem_share_data - share memory with Secure OS
> + * @buf:     share user space memory
> + * @dma_buf: share foreign dma_buf memory
> + * @flags:   Flags to/from sharing, unused bits set to zero by caller
> + * @pad:     Padding, set to zero by caller
> + *
> + * If TEE_MEM_SHARE_FLAG_FOREIGN_BUFFER is set use the dma_buf field, else
> + * the buf field in the union.
> + */
> +struct tee_mem_share_data {
> +     union {
> +             struct tee_mem_buf buf;
> +             struct tee_mem_dma_buf dma_buf;
> +     }
> +     uint32_t flags;
> +     uint32_t pad;
> +};
> +
> +#define TEE_IOC_MAGIC        0xa4
> +#define TEE_IOC_BASE 0
> +
> +#define _TEE_IOR(nr, size)   _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + (nr), size)
> +#define _TEE_IOWR(nr, size)  _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + (nr), size)
> +
> +/**
> + * TEE_IOC_VERSION - query version of drivers
> + *
> + * Takes a tee_version struct and returns with the version numbers filled in.
> + */
> +#define TEE_IOC_VERSION              _TEE_IOR(0, struct tee_version)
> +
> +/**
> + * TEE_IOC_CMD - pass a command to the specific TEE driver
> + *
> + * Takes tee_cmd_data struct which is passed to the specific TEE driver.
> + */
> +#define TEE_IOC_CMD          _TEE_IOR(1, struct tee_cmd_data)
> +
> +/**
> + * TEE_IOC_SHM_ALLOC - allocate shared memory
> + *
> + * Allocates shared memory between the user space process and secure OS.
> + * The returned file descriptor is used to map the shared memory into user
> + * space. The shared memory is freed when the descriptor is closed and the
> + * memory is unmapped.
> + */
> +#define TEE_IOC_SHM_ALLOC    _TEE_IOWR(2, struct tee_shm_alloc_data)
> +
> +/**
> + * TEE_IOC_MEM_SHARE - share a portion of user space memory with secure OS
> + *
> + * Shares a portion of user space memory with secure OS.
> + */
> +#define TEE_IOC_MEM_SHARE    _TEE_IOWR(3, struct tee_mem_share_data)
> +
> +/**
> + * TEE_IOC_MEM_UNSHARE - unshares a portion shared user space memory
> + *
> + * Unshares a portion of previously shared user space memory.
> + */
> +#define TEE_IOC_MEM_UNSHARE  _TEE_IOWR(4, struct tee_mem_share_data)
> +
> +/*
> + * Five syscalls are used when communicating with the generic TEE driver.
> + * open(): opens the device associated with the driver
> + * ioctl(): as described above operating on the file descripto from open()
> + * close(): two cases
> + *   - closes the device file descriptor
> + *   - closes a file descriptor connected to allocated shared memory
> + * mmap(): maps shared memory into user space
> + * munmap(): unmaps previously shared memory
> + */
> +
> +#endif /*__TEE_H*/
> --
> 1.9.1
>
>
> _______________________________________________
> Tee-dev mailing list
> Tee-dev@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/tee-dev

--
Regards,
Joakim B

_______________________________________________
Tee-dev mailing list
Tee-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/tee-dev