| 30999126 | 25-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
scripts/symbolize.py: print ELF sections after MMU region information
When processing a user TA abort dump, list the ELF sections that are mapped in each MMU region. For example (the lines modified
scripts/symbolize.py: print ELF sections after MMU region information
When processing a user TA abort dump, list the ELF sections that are mapped in each MMU region. For example (the lines modified by this patch are prefixed with >>):
User TA undef-abort at address 0x10574e fsr 0x00000000 ttbr0 0x0e07a06a ttbr1 0x0e07406a cidr 0x1 cpu #0 cpsr 0x60000030 r0 0x20000013 r4 0x0013a6bc r8 0x00000000 r12 0x0e07dd88 r1 0x00000033 r5 0x00121fd3 r9 0x00000000 sp 0x001026cc r2 0x0010581f r6 0x00102590 r10 0x00000000 lr 0x00105823 r3 0x00000043 r7 0x001026cc r11 0x00000000 pc 0x0010574e Status of TA 5b9e0e40-2636-11e1-ad9e-0002a5d5c51b (0xe073b70) (active) arch: arm load address: 0x103000 ctx-idr: 1 stack: 0x100000 10240 region 0: va 0x100000 pa 0xe21e000 size 0x3000 flags rw- >> region 1: va 0x103000 pa 0xe100000 size 0x2e000 flags r-x .ta_head .text .rodata >> region 2: va 0x131000 pa 0xe12e000 size 0xa000 flags r-- .rodata .ARM.extab .ARM.exidx .got .dynsym .rel.got .dynamic .dynstr .hash .rel.dyn >> region 3: va 0x13b000 pa 0xe138000 size 0xe6000 flags rw- .data .bss region 4: va 0 pa 0 size 0 flags --- region 5: va 0 pa 0 size 0 flags --- region 6: va 0 pa 0 size 0 flags --- region 7: va 0 pa 0 size 0 flags --- User TA undef-abort at address 0x10574e undef_instr+6 .text+10030 Call stack: 0x0010574e undef_instr at optee_test/ta/os_test/os_test.c:880 0x00105823 ta_entry_bad_mem_access at optee_test/ta/os_test/os_test.c:917 0x00105e75 TA_InvokeCommandEntryPoint at optee_test/ta/os_test/ta_entry.c:101 0x00121fb7 entry_invoke_command at optee_os/lib/libutee/arch/arm/user_ta_entry.c:207 0x00122013 __utee_entry at optee_os/lib/libutee/arch/arm/user_ta_entry.c:235
Suggested-by: Zeng Tao <prime.zeng@hisilicon.com> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| d720431c | 04-Sep-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
scripts/symbolize.py: get binary architecture from ELF file
Instead of making a fragile assumption, that we have a 64-bit TEE core if we encounter 64-bit registers in the dump, read the architecture
scripts/symbolize.py: get binary architecture from ELF file
Instead of making a fragile assumption, that we have a 64-bit TEE core if we encounter 64-bit registers in the dump, read the architecture from the ELF file itself. This allows to correctly parse 32- and 64-bit TEE core call stacks without any context but the string "Call stack:" at the beginning. Therefore, the helper script can now be used on core panics.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 157e6213 | 24-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
scripts/symbolize.py: accept -d <ELF_file> in addition to -d <dir>
The -d option of symbolize.py normally expects one or more directories, where the script will look for ELF files (TEE or TA, depend
scripts/symbolize.py: accept -d <ELF_file> in addition to -d <dir>
The -d option of symbolize.py normally expects one or more directories, where the script will look for ELF files (TEE or TA, depending on the input dump). For convenience, let's also accept paths to the actual ELF files. Previously, the script would just ignore file arguments and silently fail to resolve stack traces.
Reported-by: Lijianhui <airbak.li@hisilicon.com> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| 142c5ccc | 24-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
scripts/symbolize.py: try to resolve abort address to symbol/section[+offset]
Use nm and objdump to find the symbol and ELF section that match the address reported in the the abort line. This can he
scripts/symbolize.py: try to resolve abort address to symbol/section[+offset]
Use nm and objdump to find the symbol and ELF section that match the address reported in the the abort line. This can help debug writes to read-only data or unaligned accesses to global data, for example.
If the address can be resolved to a symbol plus some offset and/or a section plus some offset, the abort line is printed again just before the call stack with the symbolic information added. Not that the translation cannot be done immediately when the abort line is seen because at this point we don't know the architecture, and we don't have the load address of the TA.
Here is an example (the line added by this patch is marked with >>):
User TA data-abort at address 0x1314d0 (write permission fault) fsr 0x0000080f ttbr0 0x0e07a06a ttbr1 0x0e07406a cidr 0x1 cpu #0 cpsr 0x60000030 r0 0x00000001 r4 0x00102780 r8 0x00000000 r12 0xb736e358 r1 0x00102724 r5 0x00121e4f r9 0x00000000 sp 0x001026e0 r2 0x00000001 r6 0x001026dc r10 0x00000000 lr 0x00105cf1 r3 0x001314d0 r7 0x001026e0 r11 0x00000000 pc 0x00105790 Status of TA 5b9e0e40-2636-11e1-ad9e-0002a5d5c51b (0xe073b70) (active) arch: arm load address: 0x103000 ctx-idr: 1 stack: 0x100000 10240 region 0: va 0x100000 pa 0xe21e000 size 0x3000 region 1: va 0x103000 pa 0xe100000 size 0x2e000 region 2: va 0x131000 pa 0xe12e000 size 0xa000 region 3: va 0x13b000 pa 0xe138000 size 0xe6000 region 4: va 0 pa 0 size 0 region 5: va 0 pa 0 size 0 region 6: va 0 pa 0 size 0 region 7: va 0 pa 0 size 0 >> User TA data-abort at address 0x1314d0 const_val+4 .rodata+4452 (write permission fault) Call stack: 0x00105790 ta_entry_bad_mem_access at optee_test/ta/os_test/os_test.c:917 0x00105cf1 TA_InvokeCommandEntryPoint at optee_test/ta/os_test/ta_entry.c:101 0x00121e33 entry_invoke_command at optee_os/lib/libutee/arch/arm/user_ta_entry.c:207 0x00121e8f __utee_entry at optee_os/lib/libutee/arch/arm/user_ta_entry.c:235
The test TA does the following:
const int const_val[3] = { 1, }; /* ... */ ((int *)const_val)[1] = 2;
Suggested-by: Zeng Tao <prime.zeng@hisilicon.com> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| fd5d0622 | 30-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
scripts/symbolize.py: use base-16 when converting hex strings
When converting a hex string formatted as '0x<hex>', a value of 0 may be given for base and Python will automatically assume a base-16 l
scripts/symbolize.py: use base-16 when converting hex strings
When converting a hex string formatted as '0x<hex>', a value of 0 may be given for base and Python will automatically assume a base-16 literal. However, since we're always dealing with hex strings (with or without a 0x prefix), it is more convenient to specify base-16 everywhere.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| 509a9802 | 01-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Add support for compressed early TAs
Add decompression code to the early TA loader and update the Python script accordingly. The compression algorithm is "deflate", which is used by zlib and gzip in
Add support for compressed early TAs
Add decompression code to the early TA loader and update the Python script accordingly. The compression algorithm is "deflate", which is used by zlib and gzip in particular. It allows for compression ratios comprised between 3 (for bigger TAs) and 4.7 (for smaller ones). Those numbers were observed with 32-bit TAs (QEMU).
On QEMU (armv7), the code size overhead when CFG_EARLY_TA=y, including the decompressor, is 12K when DEBUG=0 or 20K when DEBUG=1. The decompressor allocates about 39K of heap.
Another library compatible with zlib was tried for comparison [1]. The code size overhead with miniz was 8K (DEBUG=0) or 16K (DEBUG=1). On the other hand, the dynamic allocation was about 43K, so the total memory required was about same. Speed was not compared. In the end, zlib was preferred for licensing reasons and because it is widely used.
Link: [1] https://github.com/richgel999/miniz Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (QEMU) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (QEMUv8, pager) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (D02 32/64 bits) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (D02 32/64 bits, pager) Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| b3be2f66 | 02-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Import zlib v1.2.11
Import the decompression code from zlib v1.2.11. From the project's README:
"zlib 1.2.11 is a general purpose data compression library. [...] The data format used by the zlib li
Import zlib v1.2.11
Import the decompression code from zlib v1.2.11. From the project's README:
"zlib 1.2.11 is a general purpose data compression library. [...] The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format)."
This code will be used in a later commit to decompress early TAs. Only the inflate() function is needed, and the library is configured without gzip support. The source files that are not required for inflate() are left aside.
The library is licensed under a permissive license, see `zlib.h`.
Link: http://tools.ietf.org/html/rfc1950 Link: http://tools.ietf.org/html/rfc1951 Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| d0c63614 | 25-Jul-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Add support for early Trusted Applications
Early TAs are user-mode Trusted Applications that are embedded at link time in the TEE binary. A special read-only data section is used to store them (.rod
Add support for early Trusted Applications
Early TAs are user-mode Trusted Applications that are embedded at link time in the TEE binary. A special read-only data section is used to store them (.rodata.early_ta). A Python script takes care of converting the TAs into a C source file with the proper linker section attribute.
The feature is disabled by default. To enable it, the paths to the TA binaries have to be given in $(EARLY_TA_PATHS). They should be ELF files. Typical build steps: $ make ... CFG_EARLY_TA=y ta_dev_kit # (1) $ # ... build the TAs ... # (2) $ make ... EARLY_TA_PATHS=path/to/<uuid>.stripped.elf # (3) Notes: - Setting CFG_EARLY_TA=y during the first step (1) is not necessary, but it will avoid rebuilding libraries during the third step (3) - CFG_EARLY_TA is automatically enabled when EARLY_TA_PATHS is non-empty in step (3) - Several TAs may be given in $(EARLY_TA_PATHS) (3)
Early TAs are given a higher load priority than REE FS TAs, since they should be available even before tee-supplicant is ready.
Suggested-by: Zeng Tao <prime.zeng@hisilicon.com> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| ac3cc6cf | 18-Apr-2017 |
Summer Qin <summer.qin@arm.com> |
Generate binaries for loaders supporting separate binary loading
Generate three binaries tee-header_v2.bin, tee-pager_v2.bin and tee-pageable_v2.bin for loaders supporting separate binary loading. T
Generate binaries for loaders supporting separate binary loading
Generate three binaries tee-header_v2.bin, tee-pager_v2.bin and tee-pageable_v2.bin for loaders supporting separate binary loading. This kind of loader loads and parses header binary first and then loads rest two binaries under specified manners header information implies. Generic loaders who don't support separate binary loading just ignore these binaries; and this change will not affect all existing design.
Signed-off-by: Summer Qin <summer.qin@arm.com> Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 5976a0a5 | 25-May-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: avoid incremental linking with -gc
The AArch64 linkers seems to have occasional problems with incremental linking (-i) in combination with garbage collect of sections (-gc). The way we're orga
core: avoid incremental linking with -gc
The AArch64 linkers seems to have occasional problems with incremental linking (-i) in combination with garbage collect of sections (-gc). The way we're organizing the layout of the binary used for paging depends on -gc to build the different dependency trees for unpaged and initialization code.
The problem in the linker is tracked in https://bugs.linaro.org/show_bug.cgi?id=3006 and https://sourceware.org/bugzilla/show_bug.cgi?id=21524
The problem typically manifests itself by: aarch64-toolchain/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ld: BFD (Linaro_Binutils-2017.02) 2.27.0.20161019 assertion fail /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/aarch64-linux-gnu/snapshots/binutils-gdb.git~linaro_binutils-2_27-branch/bfd/elflink.c:8380 core/arch/arm/kernel/link.mk:90: recipe for target 'out/arm-plat-vexpress/core/init.o' failed make: *** [out/arm-plat-vexpress/core/init.o] Error 1
With this patch we replace the incremental linking with a full link using a special link script. With a full link we can't have undefined symbols so some dummy symbols are provided by the link script when some object files are skipped when reducing the dependency tree. To completely get rid of those dummy symbols the script that gathers the sections is replaced by a python script that skips listed sections (if provided).
In terms of features in the resulting binary, nothing is changed in this commit.
Reviewed-by: Volodymyr Babchuk <vlad.babchuk@gmail.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 733a15f2 | 19-May-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
scripts: add symbolize.py
Add a helper script to decode call stacks shown in abort messages. The script relies on addr2line to convert virtual addresses to debug information: 'function at file:line'
scripts: add symbolize.py
Add a helper script to decode call stacks shown in abort messages. The script relies on addr2line to convert virtual addresses to debug information: 'function at file:line'.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
show more ...
|
| c1d47bcf | 15-May-2017 |
Etienne Carriere <etienne.carriere@linaro.org> |
checkpatch: support tools not supporting argument --typedefsfile
If one relies on a checkpatch tool that does not support argument --typedefsfile, the script will fail whereas it could simply run wi
checkpatch: support tools not supporting argument --typedefsfile
If one relies on a checkpatch tool that does not support argument --typedefsfile, the script will fail whereas it could simply run without this extra feature.
Fixes: 1472c996cca6 ("Take some GP types into account when running patch check tool") Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 1472c996 | 10-May-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Take some GP types into account when running patch check tool
When running checkpatch on the OP-TEE code, for instance during the Travis checks, it happens that we get false warnings and errors caus
Take some GP types into account when running patch check tool
When running checkpatch on the OP-TEE code, for instance during the Travis checks, it happens that we get false warnings and errors caused by the use of GlobalPlatform typedefs. In the following example, the patch introduces pointers to functions returning TEE_Result, but checkpatch won't accept it as a valid type:
$ ./scripts/checkpatch.sh d776721 | tail -1 total: 1 errors, 5 warnings, 555 lines checked
To address such issues, declare our custom types in a local file (typedefs.checkpatch) and use the new --typedefsfile option provided by checkpatch.pl.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 38f23772 | 21-Feb-2017 |
Andrew F. Davis <afd@ti.com> |
plat-ti: Add AM43xx platform services
The AM43xx ROM has a different monitor API set than DRA7xx/AM57xx devices, implement these services here.
Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-
plat-ti: Add AM43xx platform services
The AM43xx ROM has a different monitor API set than DRA7xx/AM57xx devices, implement these services here.
Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
show more ...
|
| d7d52b01 | 21-Feb-2017 |
Andrew F. Davis <afd@ti.com> |
plat-ti: Cleanup platform configuration
Reorganize platform configuration to assist in addition of new platforms. No functional changes.
Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Joa
plat-ti: Cleanup platform configuration
Reorganize platform configuration to assist in addition of new platforms. No functional changes.
Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
show more ...
|
| 849b17bd | 22-Feb-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
checkpatch: accept several commits
If several commit IDs are passed to the script, process them in order. This helps check several commits in a development branch, for instance: ./scripts/checkpat
checkpatch: accept several commits
If several commit IDs are passed to the script, process them in order. This helps check several commits in a development branch, for instance: ./scripts/checkpatch.sh `git rev-list master..HEAD`
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| 5849875f | 19-Aug-2015 |
Andrew F. Davis <afd@ti.com> |
monitor: Add support for platform services
Add the capability for a platform to plugin its own services, often legacy services for compatibility purposes.
Add these services for the dra7xx platform
monitor: Add support for platform services
Add the capability for a platform to plugin its own services, often legacy services for compatibility purposes.
Add these services for the dra7xx platform.
The file 'api_monitor_index.h' is synced to a an out-of-tree file and so we should ignore formatting. Add this exeption to checkpatch.
Signed-off-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Daniel Allred <d-allred@ti.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 5392ae31 | 15-Nov-2016 |
Andrew F. Davis <afd@ti.com> |
scripts: Allow overwriting the checkpatch.pl location
Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Igor Opaniuk <igor.opaniuk@lina
scripts: Allow overwriting the checkpatch.pl location
Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org> [Rebase on top of master] Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 1c93c2b5 | 03-Nov-2016 |
Igor Opaniuk <igor.opaniuk@linaro.org> |
scripts: add wrapper script for checkpatch
Add auxilary wrapper for convenient check of commit/ changes in staging area/multiple commits with checkpatch.pl Put common functions for .travis.yml and c
scripts: add wrapper script for checkpatch
Add auxilary wrapper for convenient check of commit/ changes in staging area/multiple commits with checkpatch.pl Put common functions for .travis.yml and checkpatch.sh into a separate file
Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 09871a7a | 29-Jul-2016 |
Joakim Bech <joakim.bech@linaro.org> |
scripts: Add tee_bin_parser.py
Signed-off-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> |
| 47805ee4 | 29-Jul-2016 |
Joakim Bech <joakim.bech@linaro.org> |
scripts: gen_hashed_bin.py Python 3.x support
Signed-off-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> |
| ba4f1fc6 | 29-Jul-2016 |
Joakim Bech <joakim.bech@linaro.org> |
scripts: render_font.py for Python 2.x and 3.x
Verified that the output is identical on Python 2.7.12 and Python 3.5.2.
Signed-off-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jerome Foris
scripts: render_font.py for Python 2.x and 3.x
Verified that the output is identical on Python 2.7.12 and Python 3.5.2.
Signed-off-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| d9b94641 | 07-Jun-2016 |
Jerome Forissier <jerome.forissier@linaro.org> |
scripts/render_font.py: suppress console output
Don't print "Writing <file>" by default. Add --verbose option for this.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Je
scripts/render_font.py: suppress console output
Don't print "Writing <file>" by default. Add --verbose option for this.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| f789aa08 | 14-Apr-2016 |
Jens Wiklander <jens.wiklander@linaro.org> |
libutee: add text rendering routines
* Adds routines to render text from raw bitmap fonts * Adds script to render raw bitmap fonts from True Type Fonts * Adds rendered raw bitmaps of the Amble TTF
libutee: add text rendering routines
* Adds routines to render text from raw bitmap fonts * Adds script to render raw bitmap fonts from True Type Fonts * Adds rendered raw bitmaps of the Amble TTF
Needed by Trusted UI.
Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| a1db73f6 | 30-Mar-2016 |
Jens Wiklander <jens.wiklander@linaro.org> |
Update Juno documentation
Updates Juno documentation and removes obsolete scripts and patches.
Reviewed-by: Pascal Brand <pascal.brand@linaro.org> Reviewed-by: Cedric Chaumont <cedric.chaumont@lina
Update Juno documentation
Updates Juno documentation and removes obsolete scripts and patches.
Reviewed-by: Pascal Brand <pascal.brand@linaro.org> Reviewed-by: Cedric Chaumont <cedric.chaumont@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|