Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tee: optee: making OPTEE_SHM_NUM_PRIV_PAGES configurable via Kconfig #62

Open
wants to merge 57 commits into
base: optee
Choose a base branch
from

Commits on Apr 4, 2018

  1. [v4.14] tee: optee: fix uninitialized symbol 'parg'

    Fixes the static checker warning in optee_release().
    error: uninitialized symbol 'parg'.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    aea09b8 View commit details
    Browse the repository at this point in the history
  2. [v4.14] tee: add forward declaration for struct device

    tee_drv.h references struct device, but does not include device.h nor
    platform_device.h. Therefore, if tee_drv.h is included by some file
    that does not pull device.h nor platform_device.h beforehand, we have a
    compile warning. Fix this by adding a forward declaration.
    
    Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jforissier authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    371a714 View commit details
    Browse the repository at this point in the history
  3. [v4.14] tee: tee_shm: Constify dma_buf_ops structures.

    dma_buf_ops are not supposed to change at runtime. All functions
    working with dma_buf_ops provided by <linux/dma-buf.h> work with
    const dma_buf_ops. So mark the non-const structs as const.
    
    File size before:
       text	   data	    bss	    dec	    hex	filename
       2026	    112	      0	   2138	    85a	drivers/tee/tee_shm.o
    
    File size After adding 'const':
       text	   data	    bss	    dec	    hex	filename
       2138	      0	      0	   2138	    85a	drivers/tee/tee_shm.o
    
    Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    ArvindYadavCs authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    2cecc25 View commit details
    Browse the repository at this point in the history
  4. [v4.14] tee: optee: add const to tee_driver_ops and tee_desc structures

    Add const to tee_desc structures as they are only passed as an argument
    to the function tee_device_alloc. This argument is of type const, so
    declare these structures as const too.
    Add const to tee_driver_ops structures as they are only stored in the
    ops field of a tee_desc structure. This field is of type const, so
    declare these structure types as const.
    
    Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    goyalbhumika authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    8830318 View commit details
    Browse the repository at this point in the history
  5. [v4.14] tee: optee: interruptible RPC sleep

    Prior to this patch RPC sleep was uninterruptible since msleep() is
    uninterruptible. Change to use msleep_interruptible() instead.
    
    Signed-off-by: Tiger Yu <tigeryu99@hotmail.com>
    Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
    Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    tiger-yu99 authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    dbc1a44 View commit details
    Browse the repository at this point in the history
  6. [v4.14] tee: indicate privileged dev in gen_caps

    Mirrors the TEE_DESC_PRIVILEGED bit of struct tee_desc:flags into struct
    tee_ioctl_version_data:gen_caps as TEE_GEN_CAP_PRIVILEGED in
    tee_ioctl_version()
    
    Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    dec5f33 View commit details
    Browse the repository at this point in the history
  7. [v4.14] tee: optee: sync with new naming of interrupts

    In the latest changes of optee_os, the interrupts' names are
    changed to "native" and "foreign" interrupts.
    
    Signed-off-by: David Wang <david.wang@arm.com>
    Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    David Wang authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    481ebd2 View commit details
    Browse the repository at this point in the history
  8. [v4.15] optee: fix invalid of_node_put() in optee_driver_init()

    The first node supplied to of_find_matching_node() has its reference
    counter decreased as part of call to that function. In optee_driver_init()
    after calling of_find_matching_node() it's invalid to call of_node_put() on
    the supplied node again.
    
    So remove the invalid call to of_node_put().
    
    Reported-by: Alex Shi <alex.shi@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    cb4b3c0 View commit details
    Browse the repository at this point in the history
  9. [v4.16] tee: add tee_param_is_memref() for driver use

    Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    ca554c6 View commit details
    Browse the repository at this point in the history
  10. [v4.16] tee: add TEE_IOCTL_PARAM_ATTR_META

    Adds TEE_IOCTL_PARAM_ATTR_META which can be used to indicate meta
    parameters when communicating with user space. These meta parameters can
    be used by supplicant support multiple parallel requests at a time.
    
    Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    e7f9de6 View commit details
    Browse the repository at this point in the history
  11. [v4.16] optee: support asynchronous supplicant requests

    Adds support for asynchronous supplicant requests, meaning that the
    supplicant can process several requests in parallel or block in a
    request for some time.
    
    Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
    Tested-by: Etienne Carriere <etienne.carriere@linaro.org> (b2260 pager=y/n)
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    acd2bed View commit details
    Browse the repository at this point in the history
  12. [v4.16] tee: flexible shared memory pool creation

    Makes creation of shm pools more flexible by adding new more primitive
    functions to allocate a shm pool. This makes it easier to add driver
    specific shm pool management.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    fabaadf View commit details
    Browse the repository at this point in the history
  13. [v4.16] tee: add register user memory

    Added new ioctl to allow users register own buffers as a shared memory.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    [jw: moved tee_shm_is_registered() declaration]
    [jw: added space after __tee_shm_alloc() implementation]
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    1ee9189 View commit details
    Browse the repository at this point in the history
  14. [v4.16] tee: shm: add accessors for buffer size and page offset

    These two function will be needed for shared memory registration in OP-TEE
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    d5cb8b6 View commit details
    Browse the repository at this point in the history
  15. [v4.16] tee: shm: add page accessor functions

    In order to register a shared buffer in TEE, we need accessor
    function that return list of pages for that buffer.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    b641b08 View commit details
    Browse the repository at this point in the history
  16. [v4.16] tee: optee: Update protocol definitions

    There were changes in REE<->OP-TEE ABI recently.
    Now ABI allows us to pass non-contiguous memory buffers as list of
    pages to OP-TEE. This can be achieved by using new parameter attribute
    OPTEE_MSG_ATTR_NONCONTIG.
    
    OP-TEE also is able to use all non-secure RAM for shared buffers. This
    new capability is enabled with OPTEE_SMC_SEC_CAP_DYNAMIC_SHM flag.
    
    This patch adds necessary definitions to the protocol definition files at
    Linux side.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    229153c View commit details
    Browse the repository at this point in the history
  17. [v4.16] tee: optee: add page list manipulation functions

    These functions will be used to pass information about shared
    buffers to OP-TEE. ABI between Linux and OP-TEE is defined
    in optee_msg.h and optee_smc.h.
    
    optee_msg.h defines OPTEE_MSG_ATTR_NONCONTIG attribute
    for shared memory references and describes how such references
    should be passed. Note that it uses 64-bit page addresses even
    on 32 bit systems. This is done to support LPAE and to unify
    interface.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    [jw: replacing uint64_t with u64 in optee_fill_pages_list()]
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    0390364 View commit details
    Browse the repository at this point in the history
  18. [v4.16] tee: optee: add shared buffer registration functions

    This change adds ops for shm_(un)register functions in tee interface.
    Client application can use these functions to (un)register an own shared
    buffer in OP-TEE address space. This allows zero copy data sharing between
    Normal and Secure Worlds.
    
    Please note that while those functions were added to optee code,
    it does not report to userspace that those functions are available.
    OP-TEE code does not set TEE_GEN_CAP_REG_MEM flag. This flag will be
    enabled only after all other features of dynamic shared memory will be
    implemented in subsequent patches. Of course user can ignore presence of
    TEE_GEN_CAP_REG_MEM flag and try do call those functions. This is okay,
    driver will register shared buffer in OP-TEE, but any attempts to use
    this shared buffer will fail.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    c9b5a0e View commit details
    Browse the repository at this point in the history
  19. [v4.16] tee: optee: add registered shared parameters handling

    Now, when client applications can register own shared buffers in OP-TEE,
    we need to extend ABI for parameter passing to/from OP-TEE.
    
    So, if OP-TEE core detects that parameter belongs to registered shared
    memory, it will use corresponding parameter attribute.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    fda1b53 View commit details
    Browse the repository at this point in the history
  20. [v4.16] tee: optee: add registered buffers handling into RPC calls

    With latest changes to OP-TEE we can use any buffers as a shared memory.
    Thus, it is possible for supplicant to provide part of own memory
    when OP-TEE asks to allocate a shared buffer.
    
    This patch adds support for such feature into RPC handling code.
    Now when OP-TEE asks supplicant to allocate shared buffer, supplicant
    can use TEE_IOC_SHM_REGISTER to provide such buffer. RPC handler is
    aware of this, so it will pass list of allocated pages to OP-TEE.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    [jw: fix parenthesis alignment in free_pages_list()]
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    7357af4 View commit details
    Browse the repository at this point in the history
  21. [v4.16] tee: optee: store OP-TEE capabilities in private data

    Those capabilities will be used in subsequent patches.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    a2f3da6 View commit details
    Browse the repository at this point in the history
  22. [v4.16] tee: optee: add optee-specific shared pool implementation

    This is simple pool that uses kernel page allocator. This pool can be
    used in case OP-TEE supports dynamic shared memory.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    7cb2a5d View commit details
    Browse the repository at this point in the history
  23. [v4.16] tee: optee: enable dynamic SHM support

    Previous patches added various features that are needed for dynamic SHM.
    Dynamic SHM allows Normal World to share any buffers with OP-TEE.
    While original design suggested to use pre-allocated region (usually of
    1M to 2M of size), this new approach allows to use all non-secure RAM for
    command buffers, RPC allocations and TA parameters.
    
    This patch checks capability OPTEE_SMC_SEC_CAP_DYNAMIC_SHM. If it was set
    by OP-TEE, then kernel part of OP-TEE will use kernel page allocator
    to allocate command buffers. Also it will set TEE_GEN_CAP_REG_MEM
    capability to tell userspace that it supports shared memory registration.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    69afa66 View commit details
    Browse the repository at this point in the history
  24. [v4.16] tee: use reference counting for tee_context

    We need to ensure that tee_context is present until last
    shared buffer will be freed.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    0987f08 View commit details
    Browse the repository at this point in the history
  25. [v4.16] tee: shm: inline tee_shm_get_id()

    Now, when struct tee_shm is defined in public header,
    we can inline small getter functions like this one.
    
    Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    lorc authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    e454275 View commit details
    Browse the repository at this point in the history
  26. [v4.16] tee: optee: fix header dependencies

    The optee driver includes the header files in an unusual order,
    with asm/pgtable.h before the linux/*.h headers. For some reason
    this seems to trigger a build failure:
    
    drivers/tee/optee/call.c: In function 'optee_fill_pages_list':
    include/asm-generic/memory_model.h:64:14: error: implicit declaration of function 'page_to_section'; did you mean '__nr_to_section'? [-Werror=implicit-function-declaration]
      int __sec = page_to_section(__pg);   \
    drivers/tee/optee/call.c:494:15: note: in expansion of macro 'page_to_phys'
      optee_page = page_to_phys(*pages) +
    
    Let's just include linux/mm.h, which will then get the other
    header implicitly.
    
    Fixes: 3bb48ba ("tee: optee: add page list manipulation functions")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    arndb authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    fd76ad9 View commit details
    Browse the repository at this point in the history
  27. [v4.16] tee: add start argument to shm_register callback

    Adds a start argument to the shm_register callback to allow the callback
    to check memory type of the passed pages.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    ab4a37e View commit details
    Browse the repository at this point in the history
  28. [v4.16] tee: optee: check type of registered shared memory

    Checks the memory type of the pages to be registered as shared memory.
    Only normal cached memory is allowed.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    130df49 View commit details
    Browse the repository at this point in the history
  29. [v4.16] tee: shm: make function __tee_shm_alloc static

    The function __tee_shm_alloc is local to the source and does
    not need to be in global scope, so make it static.
    
    Cleans up sparse warning:
    symbol '__tee_shm_alloc' was not declared. Should it be static?
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Colin Ian King authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    1be3dd5 View commit details
    Browse the repository at this point in the history
  30. [v4.16] tee: shm: don't put_page on null shm->pages

    In the case that shm->pages fails to allocate, the current exit
    error path will try to put_page on a null shm->pages and cause
    a null pointer dereference when accessing shm->pages[n]. Fix this
    by only performing the put_page and kfree on shm->pages if it
    is not null.
    
    Detected by CoverityScan, CID#1463283 ("Dereference after null check")
    
    Fixes: 033ddf1 ("tee: add register user memory")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Colin Ian King authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    d02a71b View commit details
    Browse the repository at this point in the history
  31. [v4.16] tee: shm: Potential NULL dereference calling tee_shm_register()

    get_user_pages_fast() can return zero in certain error paths.  We should
    handle that or else it means we accidentally return ERR_PTR(0) which is
    NULL instead of an error pointer.  The callers are not expecting that
    and will crash with a NULL dereference.
    
    Fixes: 033ddf1 ("tee: add register user memory")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Dan Carpenter authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    6064770 View commit details
    Browse the repository at this point in the history
  32. [v4.16] arm/arm64: smccc: Make function identifiers an unsigned quantity

    Function identifiers are a 32bit, unsigned quantity. But we never
    tell so to the compiler, resulting in the following:
    
     4ac:   b26187e0        mov     x0, #0xffffffff80000001
    
    We thus rely on the firmware narrowing it for us, which is not
    always a reasonable expectation.
    
    Cc: stable@vger.kernel.org
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Reviewed-by: Robin Murphy <robin.murphy@arm.com>
    Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Marc Zyngier authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    6434551 View commit details
    Browse the repository at this point in the history
  33. Add upstream-tee-subsys-patches.txt

    Adds upstream-tee-subsys-patches.txt describing all upstream patches
    related to the TEE subsystem.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    26cc3f4 View commit details
    Browse the repository at this point in the history
  34. tee: add kernel internal client interface

    Adds a kernel internal TEE client interface to be used by other drivers.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    9762697 View commit details
    Browse the repository at this point in the history
  35. tee: new ioctl to a register tee_shm from a dmabuf file descriptor

    This change allows userland to create a tee_shm object that refers
    to a dmabuf reference.
    
    Userland provides a dmabuf file descriptor as buffer reference.
    The created tee_shm object exported as a brand new dmabuf reference
    used to provide a clean fd to userland. Userland shall closed this new
    fd to release the tee_shm object resources. The initial dmabuf resources
    are tracked independently through original dmabuf file descriptor.
    
    Once the buffer is registered and until it is released, TEE driver
    keeps a refcount on the registered dmabuf structure.
    
    This change only support dmabuf references that relates to physically
    contiguous memory buffers.
    
    New tee_shm flag to identify tee_shm objects built from a registered
    dmabuf: TEE_SHM_EXT_DMA_BUF. Such tee_shm structures are flagged both
    TEE_SHM_DMA_BUF and TEE_SHM_EXT_DMA_BUF.
    
    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
    etienne-lms authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    28f2ad9 View commit details
    Browse the repository at this point in the history
  36. arm64: dt: Remove timer from mt8173 **not for mainline**

    From the commit below, the mt8173-evb failed to boot to console due to
    changes in the mt8173 device tree files.
    
      commit c0d6fe2
      Merge: b44a3d2 3e4dda7
      Author: Linus Torvalds <torvalds@linux-foundation.org>
      Date:   Tue Nov 10 15:06:26 2015 -0800
    
          Merge tag 'armsoc-dt' of
          git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
    
    Until properly solved, let's just remove the section in the device tree
    blob that causes this.
    
    Signed-off-by: Joakim Bech <joakim.bech@linaro.org>
    Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
    jbech-linaro authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    82c82e9 View commit details
    Browse the repository at this point in the history
  37. arm64: dt: PSCI for foundation-v8 **not for mainline**

    Enables use of PSCI for foundation-v8.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    55a8faf View commit details
    Browse the repository at this point in the history
  38. arm64: dt: use GICv2 for foundation-v8 **not for mainline**

    Uses GICv2 for foundation-v8.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    659108f View commit details
    Browse the repository at this point in the history
  39. arm64: dt: OP-TEE for foundation-v8 **not for mainline**

    Configures foundation-v8 with OP-TEE.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    4875c69 View commit details
    Browse the repository at this point in the history
  40. arm64: dt: OP-TEE for Juno **not for mainline**

    Configures Juno with OP-TEE.
    
    Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    7cd3bd8 View commit details
    Browse the repository at this point in the history
  41. arm64: dt: Add no-map to the reserved-memory node for OP-TEE for foun…

    …dation-v8 **not for mainline**
    
    All the platforms that reserve memory for OP-TEE statically via the
    DT (i.e., not those that reserve it via UEFI or that patch the DT
    dynamically thanks to OP-TEE's CFG_DT option) have to mark it 'no-map'
    so that only the TEE driver may map it.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    6ee6b1a View commit details
    Browse the repository at this point in the history
  42. arm64: dt: Add no-map to the reserved-memory node for OP-TEE for juno…

    … **not for mainline**
    
    All the platforms that reserve memory for OP-TEE statically via the
    DT (i.e., not those that reserve it via UEFI or that patch the DT
    dynamically thanks to OP-TEE's CFG_DT option) have to mark it 'no-map'
    so that only the TEE driver may map it.
    
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    dbea9a5 View commit details
    Browse the repository at this point in the history
  43. arm64: dt: Add OP-TEE firmware to mt8173 **not for mainline**

    Signed-off-by: Joakim Bech <joakim.bech@linaro.org>
    Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
    Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
    jbech-linaro authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    08e5864 View commit details
    Browse the repository at this point in the history
  44. OP-TEE Benchmark **not for mainline**

    Add Benchmark support
    
    Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
    Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
    Igor Opaniuk authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    b447ecb View commit details
    Browse the repository at this point in the history
  45. tee: optee: optee_bench.h: remove useless include **not for mainline**

    <linux/tee_drv.h> is not used by the benchmark code and happens to
    introduce a compile warning if it is included without
    <linux/platform_device.h> (or, more exactly, <linux/device.h>).
    
    In file included from drivers/tee/optee/optee_bench.h:19:0,
                     from drivers/tee/optee/bench.c:15:
    ./include/linux/tee_drv.h:127:16: warning: 'struct device' declared inside parameter list will not be visible outside of this definition or declaration
             struct device *dev,
                    ^~~~~~
    
    Fixes: 4867f93 ("OP-TEE Benchmark **not for mainline**")
    Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
    Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
    Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
    jforissier authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    9f9806e View commit details
    Browse the repository at this point in the history
  46. staging/ion: add Allwinner ION "secure" heap

    Dumped from:
      https://github.com/loboris/OrangePI-Kernel/tree/master/linux-3.4
      0cc8d855adb457d1860d6e25cb93b6cc75d5a09d
      Author: Sunny <sunny@allwinnertech.com> for Allwinner.
    
    Changes made on original "secure heap" implementation:
    - minor coding style: fix includes, empty lines and overlong lines,
      indentation, comment layout.
    - Original path modified the ion uapi. We do not attempt to modify
      uapi/ion.h. "secure" (or "domain") heaps are under ID
      ION_HEAP_TYPE_CUSTOM + 1 (legacy 'secure heap type' value).
    
    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    etienne-lms authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    1af7f79 View commit details
    Browse the repository at this point in the history
  47. ion: "unmapped" heap for secure data path

    OP-TEE/SDP (Secure Data Path) memory pools are created through ION
    secure type heap" from Allwinner. This change renames "secure" into
    "unmapped" as, from Linux point of view, the heap constraint is
    manipulating unampped memory pools/buffers.
    
    "Unmapped" heap support is integrated in ION UAPI (actually this was
    the Allwinner initial proposal) and ION DT parsing support.
    
    Based in work from Sunny <sunny@allwinnertech.com> for Allwinner.
    
    Changes:
    - rename "secure_heap" into "unmapped_heap"
    - define ION_HEAP_TYPE_UNMAPPED in ION UAPI (sic!)
    - add structure "struct unmapped_buffer_priv" to hold allocated buffer
      private data (currently only the buffer physical address.
    - adapt to recent ION (i.e ion_phys_addr_t => phys_addr_t)
    - Support dummy heap configuration: one can hard code into the Linux
      kernel configuration the location of a "unmapped heap". It will be
      created during ION device inits: see CONFIG_ION_DUMMY_UNMAPPED_HEAP.
    
    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    etienne-lms authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    ffcd4cc View commit details
    Browse the repository at this point in the history
  48. staging/ion: condition unmapped heap to supported architectures

    Condition ION unmapped heap implementation to architectures that
    currently support it. ARM is one of these.
    
    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
    etienne-lms authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    ee589e6 View commit details
    Browse the repository at this point in the history
  49. staging/ion: ARM64 supports ION_UNMAPPED_HEAP

    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    etienne-lms authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    16843e5 View commit details
    Browse the repository at this point in the history
  50. staging:ion: add a no-map property to ion dmabuf attachment

    Ion unmapped heap aims at not being mapped. This change prevents
    Ion from calling dma-mapping support on dma_buf_attach for buffers
    in an unmapped heap.
    
    This change is a bit intrusive in the Ion driver. Maybe there is
    another way to deal with the dma-mapping resources used for the
    unmapped heap.
    
    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    etienne-lms authored and jenswi-linaro committed Apr 4, 2018
    Configuration menu
    Copy the full SHA
    0b488c9 View commit details
    Browse the repository at this point in the history

Commits on Apr 5, 2018

  1. tee: correct max value for id allocation

    The privileged dev id range is [TEE_NUM_DEVICES / 2, TEE_NUM_DEVICES).
    The non-privileged dev id range is [0, TEE_NUM_DEVICES / 2).
    
    So when finding a slot for them, need to use different max value.
    
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    MrVan authored and jenswi-linaro committed Apr 5, 2018
    Configuration menu
    Copy the full SHA
    5f263e9 View commit details
    Browse the repository at this point in the history
  2. tee: optee: GET_OS_REVISION: document a2 as a build identifier

    In the OPTEE_SMC_CALL_GET_OS_REVISION request, the previously reserved
    parameter a2 is now documented as being an optional build identifier
    (such as an SCM revision or commit ID, for instance).
    
    A new structure optee_smc_call_get_os_revision_result is introduced to
    be used when querying the secure OS version, instead of re-using the
    struct defined for OPTEE_SMC_CALLS_REVISION.
    
    Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
    Reviewed-by: Matthias Brugger <mbruger@suse.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jforissier authored and jenswi-linaro committed Apr 5, 2018
    Configuration menu
    Copy the full SHA
    886746b View commit details
    Browse the repository at this point in the history
  3. tee: optee: report OP-TEE revision information

    When the driver initializes, report the following information
    about the OP-TEE OS:
    - major and minor version,
    - build identifier (if available).
    
    Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
    Reviewed-by: Matthias Brugger <mbruger@suse.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    jforissier authored and jenswi-linaro committed Apr 5, 2018
    Configuration menu
    Copy the full SHA
    bfbafe0 View commit details
    Browse the repository at this point in the history

Commits on Apr 12, 2018

  1. tee: optee: log message if dynamic shm is enabled

    Suggested-by: Jerome Forissier <jerome.forissier@linaro.org>
    Signed-off-by: Victor Chong <victor.chong@linaro.org>
    Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
    Victor Chong authored and jenswi-linaro committed Apr 12, 2018
    Configuration menu
    Copy the full SHA
    3ed4ce4 View commit details
    Browse the repository at this point in the history

Commits on Apr 16, 2018

  1. tee: fix unbalanced context refcount in register shm from fd

    Successful registration of a memory reference in the scope of a
    TEE content must increase the context refcount. This change
    adds this missing refcount increase.
    
    The context refcount is already decremented when such shm reference
    is freed by its owner, in tee_shm_release(), hence current unbalance
    refcount before this path is applied.
    
    Fixes: 9f9806e ("tee: new ioctl to a register tee_shm from a dmabuf file descriptor")
    
    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    Tested-by: Etienne Carriere <etienne.carriere@linaro.org> (Qemu armv7/v8)
    Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
    etienne-lms authored and jforissier committed Apr 16, 2018
    1 Configuration menu
    Copy the full SHA
    94c2f2e View commit details
    Browse the repository at this point in the history

Commits on Apr 23, 2018

  1. optee: check shm reference are consistent in offset/size

    This change prevents userland from referencing TEE shared memory
    outside the area initially allocated by its owner. Prior this change an
    application could not reference or access memory it did not own but
    it could reference memory not explicitly allocated by owner but still
    allocated to the owner due to the memory allocation granule.
    
    Reported-by: Alexandre Jutras <alexandre.jutras@nxp.com>
    Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
    Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
    etienne-lms authored and jforissier committed Apr 23, 2018
    Configuration menu
    Copy the full SHA
    f5d5641 View commit details
    Browse the repository at this point in the history

Commits on Jun 6, 2018

  1. tee: optee: making OPTEE_SHM_NUM_PRIV_PAGES configurable via Kconfig

    This change adds KCONFIG option to set number of pages out of
    whole shared memory to be used for OP-TEE driver private data
    structures.
    
    Signed-off-by: Sahil Malhotra <sahil.malhotra@nxp.com>
    sahilnxp committed Jun 6, 2018
    Configuration menu
    Copy the full SHA
    b64d471 View commit details
    Browse the repository at this point in the history