blob: cd37652d2ceec69ef12a17591818d86edf032907 [file] [log] [blame]
Douglas Raillardd7c21b72017-06-28 15:23:03 +01001Trusted Little Kernel (TLK) Dispatcher
2======================================
3
4TLK dispatcher adds support for NVIDIA's Trusted Little Kernel (TLK) to work
5with the Trusted Firmware. TLK-D can be compiled by including it in the
6platform's makefile. TLK is primarily meant to work with Tegra SoCs, so until
7Trusted Firmware starts supporting Tegra, the dispatcher code can only be
8compiled for other platforms.
9
10In order to compile TLK-D, we need a BL32 image to be present. Since, TLKD
11just needs to compile, any BL32 image would do. To use TLK as the BL32, please
12refer to the "Build TLK" section.
13
14Once a BL32 is ready, TLKD can be included in the image by adding "SPD=tlkd"
15to the build command.
16
17Trusted Little Kernel (TLK)
18===========================
19
20TLK is a Trusted OS running as Secure EL1. It is a Free Open Source Software
21(FOSS) release of the NVIDIA® Trusted Little Kernel (TLK) technology, which
22extends technology made available with the development of the Little Kernel (LK).
23You can download the LK modular embedded preemptive kernel for use on ARM,
24x86, and AVR32 systems from https://github.com/travisg/lk
25
26NVIDIA implemented its Trusted Little Kernel (TLK) technology, designed as a
27free and open-source trusted execution environment (OTE).
28
29TLK features include:
30
31 Small, pre-emptive kernel
32 Supports multi-threading, IPCs, and thread scheduling
33 Added TrustZone features
34 Added Secure Storage
35 Under MIT/FreeBSD license
36
37NVIDIA extensions to Little Kernel (LK) include:
38
39 User mode
40 Address-space separation for TAs
41 TLK Client Application (CA) library
42 TLK TA library
43 Crypto library (encrypt/decrypt, key handling) via OpenSSL
44 Linux kernel driver
45 Cortex A9/A15 support
46 Power Management
47 TrustZone memory carve-out (reconfigurable)
48 Page table management
49 Debugging support over UART (USB planned)
50
51TLK is hosted by NVIDIA on http://nv-tegra.nvidia.com under the
523rdparty/ote\_partner/tlk.git repository. Detailed information about
53TLK and OTE can be found in the Tegra\_BSP\_for\_Android\_TLK\_FOSS\_Reference.pdf
54manual located under the "documentation" directory\_.
55
56Build TLK
57=========
58
59To build and execute TLK, follow the instructions from "Building a TLK Device"
60section from Tegra\_BSP\_for\_Android\_TLK\_FOSS\_Reference.pdf manual.
61
62Input parameters to TLK
63=======================
64
65TLK expects the TZDRAM size and a structure containing the boot arguments. BL2
66passes this information to the EL3 software as members of the bl32\_ep\_info
67struct, where bl32\_ep\_info is part of bl31\_params\_t (passed by BL2 in X0)
68
69Example:
70--------
71
72::
73
74 bl32_ep_info->args.arg0 = TZDRAM size available for BL32
75 bl32_ep_info->args.arg1 = unused (used only on ARMv7)
76 bl32_ep_info->args.arg2 = pointer to boot args