| b05cd886 | 15-Jun-2017 |
Volodymyr Babchuk <vlad.babchuk@gmail.com> |
core: enable non-contiguous temporary reference parameters
Now, when we can pass list of pages between REE and TEE it is possible to use temporary memory references that are not located in a preallo
core: enable non-contiguous temporary reference parameters
Now, when we can pass list of pages between REE and TEE it is possible to use temporary memory references that are not located in a preallocated shared memory area. By employing OPTEE_MSG_ATTR_NONCONTIG parameter attribute, REE can provide own buffer as a temporary memory reference.
Actually, such parameters are indistinguishable from registered shared memory references. So, when OP-TEE spots temporary memory reference with OPTEE_MSG_ATTR_NONCONTIG attribute, it will create `mobj_reg_shm` for it. After call was handled, it will free that mobj.
Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey) Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (FVP, QEMU v7/v8) Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (Juno with and without pager) Tested-by: Volodymyr Babchuk <vlad.babchuk@gmail.com> (Rcar M3)
show more ...
|
| 55d6853c | 15-Jun-2017 |
Volodymyr Babchuk <vlad.babchuk@gmail.com> |
core: add registered shared memory support
Normal world now can call OPTEE_MSG_CMD_REGISTER_SHM and OPTEE_MSG_CMD_UNREGISTER_SHM functions to register/unregister shared memory.
After that, it can u
core: add registered shared memory support
Normal world now can call OPTEE_MSG_CMD_REGISTER_SHM and OPTEE_MSG_CMD_UNREGISTER_SHM functions to register/unregister shared memory.
After that, it can use OPTEE_MSG_ATTR_TYPE_RMEM_* to reference to that registered shared buffers.
Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| 5f4ccb31 | 22-Jun-2017 |
Volodymyr Babchuk <vlad.babchuk@gmail.com> |
entry_std: save parameters attributes into local memory
Normal World can change contents of shared memory at any time. Right now it does not pose any threat. But next patches will rely on attribute
entry_std: save parameters attributes into local memory
Normal World can change contents of shared memory at any time. Right now it does not pose any threat. But next patches will rely on attribute values. Thus, we need to read parameter attributes only once and then use this saved value.
Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| ba70cc90 | 10-Oct-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
ci: shippable: make sure QEMU test runs on the proper commit
There is a bug in the step that prepares a source tree to build and run OP-TEE with QEMU, at the end of the CI script. The idea is, clone
ci: shippable: make sure QEMU test runs on the proper commit
There is a bug in the step that prepares a source tree to build and run OP-TEE with QEMU, at the end of the CI script. The idea is, clone the current project forest using the repo tool, then remove optee_os and replace it with a symbolic link to the one that has been checked out in the CI infrastructure. So that, we are effectively testing the desired pull request or branch. The problem is, the symlink is not removed at the end of the script, so it ends up being cached and restored with the next build. The repo sync command follows the symlink and overwrites the "good" optee_os with the current master branch and at this point we're doomed. Fix that by making sure there is no optee_os symlink leftover from the cache.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| b4121bfb | 09-Oct-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
pl011: prevent putc() and flush() function from blocking indefinitely
It may happen that trace functions are called by OP-TEE when the UART or its clock is disabled by the non-secure OS. In such a c
pl011: prevent putc() and flush() function from blocking indefinitely
It may happen that trace functions are called by OP-TEE when the UART or its clock is disabled by the non-secure OS. In such a case, flush() is likely to loop indefinitely, because the UART status register may never contain the expected value. Make the code more robust by checking if the UART is enabled in the wait loop. If it is not, or if the status bit remains zero due to the clock being turned off, return immediately. By doing so, we allow to drop some output rather than hang the whole system.
Fixes: https://github.com/OP-TEE/optee_os/issues/1863 Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Volodymyr Babchuk <vlad.babchuk@gmail.com> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| e34f3081 | 10-Oct-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Revert "core: core_mmu_v7: core_mmu_get_user_pgdir: remove duplicated code"
This reverts commit 3eb2ba74961b. core_mmu_set_info_table() sets tbl_info->num_entries to NUM_L1_ENTRIES, not NUM_UL1_ENTR
Revert "core: core_mmu_v7: core_mmu_get_user_pgdir: remove duplicated code"
This reverts commit 3eb2ba74961b. core_mmu_set_info_table() sets tbl_info->num_entries to NUM_L1_ENTRIES, not NUM_UL1_ENTRIES. So the removed code was actually not duplicate.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 093fb9c7 | 28-Sep-2017 |
Peng Fan <peng.fan@nxp.com> |
core: imx: implement psci reset
Implement psci reset support.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> |
| 673673db | 28-Sep-2017 |
Peng Fan <peng.fan@nxp.com> |
core: arm: imx set CFG_MMAP_REGIONS
Set CFG_MMAP_REGIONS to 24.
Signed-off-by: Peng Fan <peng.fan@nxp.com> |
| d1ee5145 | 03-Oct-2017 |
Peng Fan <peng.fan@nxp.com> |
core: drivers: add imx wdog support
Introducing the wdog support is for psci reset usage. To i.MX6/7, when `reboot`, need wdog to trigger soc reset or send out signal to pmic through wdog pin to tri
core: drivers: add imx wdog support
Introducing the wdog support is for psci reset usage. To i.MX6/7, when `reboot`, need wdog to trigger soc reset or send out signal to pmic through wdog pin to trigger pmic reset.
In linux device tree, there is a "fsl,ext-reset-output" property, this driver is to check whether the wdog node contains the property or not, then decide how to trigger reset.
We still rely on normal world to initialize wdog and configure pinmux when need to trigger pmic reset.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 75fddfb8 | 03-Oct-2017 |
Peng Fan <peng.fan@nxp.com> |
core: mmu: introduce CFG_MMAP_REGIONS
Introduce CFG_MMAP_REGIONS to replace MAX_MMAP_REGIONS to allow platform specific value.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander
core: mmu: introduce CFG_MMAP_REGIONS
Introduce CFG_MMAP_REGIONS to replace MAX_MMAP_REGIONS to allow platform specific value.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| fe264890 | 04-Oct-2017 |
Peng Fan <peng.fan@nxp.com> |
core: arm: introduce get_dt_blob
Introduce get_dt_blob. This could allow drivers to use device tree.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.or
core: arm: introduce get_dt_blob
Introduce get_dt_blob. This could allow drivers to use device tree.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 34deb103 | 02-Oct-2017 |
Peng Fan <peng.fan@nxp.com> |
core: dt: fix getting address and size
According to ePAPR spec.
" The #address-cells and #size-cells properties may be used in any device node that has children in the device tree hierarchy and des
core: dt: fix getting address and size
According to ePAPR spec.
" The #address-cells and #size-cells properties may be used in any device node that has children in the device tree hierarchy and describes how child device nodes should be addressed. The #address-cells property defines the number of <u32> cells used to encode the address field in a child node’s reg property. The #size-cells property defines the number of <u32> cells used to encode the size field in a child node’s reg property.
The #address-cells and #size-cells properties are not inherited from ancestors in the device tree. They shall be explicitly defined.
An ePAPR-compliant boot program shall supply #address-cells and #size-cells on all nodes that have children.
If missing, a client program should assume a default value of 2 for
An ePAPR-compliant boot program shall supply #address-cells and #size-cells on all nodes that have children. "
So need to use the parent's address-cells and size-cells property.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 50f3b323 | 28-Sep-2017 |
Peng Fan <peng.fan@nxp.com> |
core: dt: introduce dt_have_prop
Introudce dt_have_prop
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> |
| 23b1daf4 | 28-Sep-2017 |
Peng Fan <peng.fan@nxp.com> |
core: dt: typo fix
1. According to ePAPR spec, status should be okay/disabled/fail/fail-sss. To Linux device tree, "okay" and "ok" are both used. Function is_okay also use "okay" and "ok". But
core: dt: typo fix
1. According to ePAPR spec, status should be okay/disabled/fail/fail-sss. To Linux device tree, "okay" and "ok" are both used. Function is_okay also use "okay" and "ok". But "ok" is not defined in spec. Here only correct comments
2. size -> sz
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| af397f92 | 27-Sep-2017 |
Peng Fan <peng.fan@nxp.com> |
core: mmu: typo fix
Typo fix: inseart -> insert
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> |
| 0eae9ceb | 09-Oct-2017 |
Peng Fan <peng.fan@nxp.com> |
core: arm: generic_boot: use TEE_MM_POOL_NO_FLAGS
Use TEE_MM_POOL_NO_FLAGS to replace magic number 0.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.o
core: arm: generic_boot: use TEE_MM_POOL_NO_FLAGS
Use TEE_MM_POOL_NO_FLAGS to replace magic number 0.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 3eb2ba74 | 07-Oct-2017 |
Peng Fan <peng.fan@nxp.com> |
core: core_mmu_v7: core_mmu_get_user_pgdir: remove duplicated code
core_mmu_set_info_table already set num_entries, no need to set it again.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by:
core: core_mmu_v7: core_mmu_get_user_pgdir: remove duplicated code
core_mmu_set_info_table already set num_entries, no need to set it again.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 0e1c6e8e | 29-Sep-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Dump call stack on TA panic
Adds support for dumping the call stack of a user-mode TA when it panics. Stack unwinding happens in kernel mode by re-using abort_print_error() in core/arch/arm/kernel/a
Dump call stack on TA panic
Adds support for dumping the call stack of a user-mode TA when it panics. Stack unwinding happens in kernel mode by re-using abort_print_error() in core/arch/arm/kernel/abort.c. Like for abort dumps, the helper script scripts/symbolize.py may be used to obtain source-level information.
This feature is enabled by default. Set CFG_UNWIND=n to disable it (or CFG_TEE_CORE_DEBUG=n).
In libutee, the utee_panic() syscall wrapper is renamed __utee_panic() and now takes an additional parameters: a stack pointer, in addition to the panic code. utee_panic() is written in assembly and pushes some registers onto the stack before calling __utee_panic(). When it is time to return from syscall_panic(), tee_svc_sys_return_helper() uses the stack pointer to get the information needed to unwind the TA stack. A struct abort_info is created and abort_print_error() is called.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (QEMU) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey 32/64) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (QEMUv8)
show more ...
|
| 821a8785 | 26-Sep-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
libutee: add unwind pseudo-ops to syscall wrappers
It is currently not possible to unwind a call stack from within a syscall wrapper, that is the utee_xxx() functions such as utee_panic() for instan
libutee: add unwind pseudo-ops to syscall wrappers
It is currently not possible to unwind a call stack from within a syscall wrapper, that is the utee_xxx() functions such as utee_panic() for instance. That is because the assembler macro that defines the utee_ functions lacks the proper .fnstart/.save/.fnend pseudo-ops. Add them.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 9b40b6e6 | 25-Sep-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
arm: build user-mode assembler files with -g
$(platform-aflags-generic) is used only in $(core-platform-aflags), not in $(ta_arm32-platform-aflags) or $(ta_arm64-platform-aflags). As a result, only
arm: build user-mode assembler files with -g
$(platform-aflags-generic) is used only in $(core-platform-aflags), not in $(ta_arm32-platform-aflags) or $(ta_arm64-platform-aflags). As a result, only the TEE core is built with -g. The user-mode libraries are not. Fix this so that symbolize.py can correctly find file and line information when it encounters an assembler file in a call stack.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| b00e9a74 | 06-Oct-2017 |
Etienne Carriere <etienne.carriere@linaro.org> |
core:mmu: rename _divide_block into _prepare_small_page_mapping
core_mmu_divide_block() label is misleading.
core_mmu_prepare_small_page_mapping() is used to allocate required mmu table(s) and init
core:mmu: rename _divide_block into _prepare_small_page_mapping
core_mmu_divide_block() label is misleading.
core_mmu_prepare_small_page_mapping() is used to allocate required mmu table(s) and init the mmu to that a full pdgir area can be used the map 4kB small pages from a single table entry (mmu descriptor).
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Volodymyr Babchuk <vlad.babchuk@gmaill.com>
show more ...
|
| f4f8ad33 | 06-Oct-2017 |
Etienne Carriere <etienne.carriere@linaro.org> |
core: fix case core_mmu_divide_block runs out of xlat table
Signed-off-by: Etienne Carriere <etienne.carriere@st.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Volodymyr Babc
core: fix case core_mmu_divide_block runs out of xlat table
Signed-off-by: Etienne Carriere <etienne.carriere@st.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Volodymyr Babchuk <vlad.babchuk@gmaill.com>
show more ...
|
| 42bd73e0 | 06-Oct-2017 |
Etienne Carriere <etienne.carriere@linaro.org> |
core: core_mmu_divide_block shall not unmap memory
Since the function is not expected to unmap anything, it should simply check that nothing is mapped instead of restoring the previous mapping one t
core: core_mmu_divide_block shall not unmap memory
Since the function is not expected to unmap anything, it should simply check that nothing is mapped instead of restoring the previous mapping one the overall pgdir entries.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Tested-by: Etienne Carriere <etienne.carriere@linaro.org> (b2260) Reviewed-by: Volodymyr Babchuk <vlad.babchuk@gmaill.com>
show more ...
|
| 27446d2a | 06-Oct-2017 |
Etienne Carriere <etienne.carriere@linaro.org> |
core: fix core_mmu_divide_block() against 32bit mmu constraint
core_mmu_divide_block() is used to prepare a MMU pgdir mapping table when no pgdir MMU table was previous allocated/filled to map a sma
core: fix core_mmu_divide_block() against 32bit mmu constraint
core_mmu_divide_block() is used to prepare a MMU pgdir mapping table when no pgdir MMU table was previous allocated/filled to map a small page mapped address range.
On non-LPAE (32bit mmu), a pgdir entry cannot be used to map both secure and non-secure pages. The pgdir descriptor defines whether the small pages inside the pgdir range will map secure or non-secure memory. Hence the core_mmu_divide_block() function takes an extra argument: the target secure/non-secure attribute of the pgdir. This argument in unused on LPAE mapping as a pgdir can hold secure as well as non-secure entries.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Volodymyr Babchuk <vlad.babchuk@gmaill.com>
show more ...
|
| 9e483f64 | 06-Oct-2017 |
Etienne Carriere <etienne.carriere@linaro.org> |
core/mmu v7: move code inside core_mmu_divide_block
This change allocates the L2 table only once it is useful. This change allows to eventually exit the function without freeing the L2 is something
core/mmu v7: move code inside core_mmu_divide_block
This change allocates the L2 table only once it is useful. This change allows to eventually exit the function without freeing the L2 is something fails before we are filling the L2 table content.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Volodymyr Babchuk <vlad.babchuk@gmaill.com>
show more ...
|