History log of /device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
f4f1ae777b321e5e16ee1ba4591ea9d45845edef 13-Jan-2015 Soby Mathew <soby.mathew@arm.com> Demonstrate model for routing IRQs to EL3

This patch provides an option to specify a interrupt routing model
where non-secure interrupts (IRQs) are routed to EL3 instead of S-EL1.
When such an interrupt occurs, the TSPD arranges a return to
the normal world after saving any necessary context. The interrupt
routing model to route IRQs to EL3 is enabled only during STD SMC
processing. Thus the pre-emption of S-EL1 is disabled during Fast SMC
and Secure Interrupt processing.

A new build option TSPD_ROUTE_NS_INT_EL3 is introduced to change
the non secure interrupt target execution level to EL3.

Fixes ARM-software/tf-issues#225

Change-Id: Ia1e779fbbb6d627091e665c73fa6315637cfdd32
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
50e27dadbcc4b442f1c5ceb343c6d55783afed54 15-Jul-2014 Vikram Kanigiri <vikram.kanigiri@arm.com> Rework the TSPD setup code

There is no mechanism which allows the TSPD to specify what SPSR to
use when entering BL3-2 instead of BL3-3. This patch divides the
responsibility between tspd_setup() and tspd_init() for initializing
the TSPD and TSP to support the alternate BL3-2 initialization flow
where BL3-1 handsover control to BL3-2 instead of BL3-3.
SPSR generated by TSPD for TSP is preserved due the new division of
labour which fixes #174.

This patch also moves the cpu_context initialization code from
tspd_setup() to tspd_init() immediately before entering the TSP.
Instead tspd_setup() updates the BL3-2 entrypoint info structure
with the state required for initializing the TSP later.

Fixes ARM-software/TF-issues#174

Change-Id: Ida0a8a48d466c71d5b07b8c7f2af169b73f96940
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
5f0cdb059d7d5c3a8a834074a7f236b85d014dde 14-May-2014 Dan Handley <dan.handley@arm.com> Split platform.h into separate headers

Previously, platform.h contained many declarations and definitions
used for different purposes. This file has been split so that:

* Platform definitions used by common code that must be defined
by the platform are now in platform_def.h. The exact include
path is exported through $PLAT_INCLUDES in the platform makefile.

* Platform definitions specific to the FVP platform are now in
/plat/fvp/fvp_def.h.

* Platform API declarations specific to the FVP platform are now
in /plat/fvp/fvp_private.h.

* The remaining platform API declarations that must be ported by
each platform are still in platform.h but this file has been
moved to /include/plat/common since this can be shared by all
platforms.

Change-Id: Ieb3bb22fbab3ee8027413c6b39a783534aee474a
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
c6bc071020baebc660fc94390b50bc240e34c0a3 14-May-2014 Dan Handley <dan.handley@arm.com> Remove extern keyword from function declarations

Function declarations implicitly have external linkage so do not
need the extern keyword.

Change-Id: Ia0549786796d8bf5956487e8996450a0b3d79f32
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
399fb08fff2e4a0cad4cd1cf0ece84db6670447f 20-May-2014 Andrew Thoelke <andrew.thoelke@arm.com> Use a vector table for TSP entrypoints

The TSP has a number of entrypoints used by the TSP on different
occasions. These were provided to the TSPD as a table of function
pointers, and required the TSPD to read the entry in the table,
which is in TSP memory, in order to program the exception return
address.

Ideally, the TSPD has no access to the TSP memory.

This patch changes the table of function pointers into a vector
table of single instruction entrypoints. This allows the TSPD to
calculate the entrypoint address instead of read it.

Fixes ARM-software/tf-issues#160

Change-Id: Iec6e055d537ade78a45799fbc6f43765a4725ad3
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
239b04fa31647100c537852b4a3fc8bd47e33aa6 09-May-2014 Soby Mathew <soby.mathew@arm.com> Non-Secure Interrupt support during Standard SMC processing in TSP

Implements support for Non Secure Interrupts preempting the
Standard SMC call in EL1. Whenever an IRQ is trapped in the
Secure world we securely handover to the Normal world
to process the interrupt. The normal world then issues
"resume" smc call to resume the previous interrupted SMC call.
Fixes ARM-software/tf-issues#105

Change-Id: I72b760617dee27438754cdfc9fe9bcf4cc024858
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
b44a4435c9a788293371a3de3f08db7fa3862a1f 09-May-2014 Achin Gupta <achin.gupta@arm.com> Add S-EL1 interrupt handling support in the TSPD

This patch adds support in the TSPD for registering a handler for
S-EL1 interrupts. This handler ferries the interrupts generated in the
non-secure state to the TSP at 'tsp_fiq_entry'. Support has been added
to the smc handler to resume execution in the non-secure state once
interrupt handling has been completed by the TSP.

There is also support for resuming execution in the normal world if
the TSP receives a EL3 interrupt. This code is currently unused.

Change-Id: I816732595a2635e299572965179f11aa0bf93b69
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
3ee8a16402522d6d2959e27520f75c79b1218a2b 04-May-2014 Achin Gupta <achin.gupta@arm.com> Rework 'state' field usage in per-cpu TSP context

This patch lays the foundation for using the per-cpu 'state' field in
the 'tsp_context' structure for other flags apart from the power state
of the TSP.

It allocates 2 bits for the power state, introduces the necessary
macros to manipulate the power state in the 'state' field and
accordingly reworks all use of the TSP_STATE_* states.

It also allocates a flag bit to determine if the TSP is handling a
standard SMC. If this flag is set then the TSP was interrupted due to
non-secure or EL3 interupt depending upon the chosen routing
model. Macros to get, set and clear this flag have been added as
well. This flag will be used by subsequent patches.

Change-Id: Ic6ee80bd5895812c83b35189cf2c3be70a9024a6
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
97043ac98e13a726dbf8b3b41654dca759e3da2c 09-Apr-2014 Dan Handley <dan.handley@arm.com> Reduce deep nesting of header files

Reduce the number of header files included from other header
files as much as possible without splitting the files. Use forward
declarations where possible. This allows removal of some unnecessary
"#ifndef __ASSEMBLY__" statements.

Also, review the .c and .S files for which header files really need
including and reorder the #include statements alphabetically.

Fixes ARM-software/tf-issues#31

Change-Id: Iec92fb976334c77453e010b60bcf56f3be72bd3e
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
fb037bfb7cbf7b404c069b4ebac5a10059d948b1 10-Apr-2014 Dan Handley <dan.handley@arm.com> Always use named structs in header files

Add tag names to all unnamed structs in header files. This
allows forward declaration of structs, which is necessary to
reduce header file nesting (to be implemented in a subsequent
commit).

Also change the typedef names across the codebase to use the _t
suffix to be more conformant with the Linux coding style. The
coding style actually prefers us not to use typedefs at all but
this is considered a step too far for Trusted Firmware.

Also change the IO framework structs defintions to use typedef'd
structs to be consistent with the rest of the codebase.

Change-Id: I722b2c86fc0d92e4da3b15e5cab20373dd26786f
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
bdbfc3c298b4cdc36412d6abd55a4fe79e643b44 17-Apr-2014 Dan Handley <dan.handley@arm.com> Separate out CASSERT macro into own header

Separate out the CASSERT macro out of bl_common.h into its own
header to allow more efficient header inclusion.

Change-Id: I291be0b6b8f9879645e839a8f0dd1ec9b3db9639
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
7f36660559a7d4786e9a30de6c5af74338ed9469 20-Feb-2014 Jeenu Viswambharan <jeenu.viswambharan@arm.com> Implement late binding for runtime hooks

At present SPD power management hooks and BL3-2 entry are implemented
using weak references. This would have the handlers bound and registered
with the core framework at build time, but leaves them dangling if a
service fails to initialize at runtime.

This patch replaces implementation by requiring runtime handlers to
register power management and deferred initialization hooks with the
core framework at runtime. The runtime services are to register the
hooks only as the last step, after having all states successfully
initialized.

Change-Id: Ibe788a2a381ef39aec1d4af5ba02376e67269782
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h
375f538a797a89a5f49aab1be70e86df4511c05a 18-Feb-2014 Achin Gupta <achin.gupta@arm.com> Add Test Secure Payload Dispatcher (TSPD) service

This patch adds the TSPD service which is responsible for managing
communication between the non-secure state and the Test Secure Payload
(TSP) executing in S-EL1.

The TSPD does the following:

1. Determines the location of the TSP (BL3-2) image and passes control
to it for initialization. This is done by exporting the 'bl32_init()'
function.

2. Receives a structure containing the various entry points into the TSP
image as a response to being initialized. The TSPD uses this
information to determine how the TSP should be entered depending on
the type of operation.

3. Implements a synchronous mechanism for entering into and returning
from the TSP image. This mechanism saves the current C runtime
context on top of the current stack and jumps to the TSP through an
ERET instruction. The TSP issues an SMC to indicate completion of the
previous request. The TSPD restores the saved C runtime context and
resumes TSP execution.

This patch also introduces a Make variable 'SPD' to choose the specific
SPD to include in the build. By default, no SPDs are included in the
build.

Change-Id: I124da5695cdc510999b859a1bf007f4d049e04f3
Co-authored-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
/device/linaro/bootloader/arm-trusted-firmware/services/spd/tspd/tspd_private.h