arm-trusted-firmware/bl32/tsp
Soby Mathew 63b8440fcc TSP: Allow preemption of synchronous S-EL1 interrupt handling
Earlier the TSP only ever expected to be preempted during Standard SMC
processing. If a S-EL1 interrupt triggered while in the normal world, it
will routed to S-EL1 `synchronously` for handling. The `synchronous` S-EL1
interrupt handler `tsp_sel1_intr_entry` used to panic if this S-EL1 interrupt
was preempted by another higher priority pending interrupt which should be
handled in EL3 e.g. Group0 interrupt in GICv3.

With this patch, the `tsp_sel1_intr_entry` now expects `TSP_PREEMPTED` as the
return code from the `tsp_common_int_handler` in addition to 0 (interrupt
successfully handled) and in both cases it issues an SMC with id
`TSP_HANDLED_S_EL1_INTR`. The TSPD switches the context and returns back
to normal world. In case a higher priority EL3 interrupt was pending, the
execution will be routed to EL3 where interrupt will be handled. On return
back to normal world, the pending S-EL1 interrupt which was preempted will
get routed to S-EL1 to be handled `synchronously` via `tsp_sel1_intr_entry`.

Change-Id: I2087c7fedb37746fbd9200cdda9b6dba93e16201
2015-12-09 09:58:17 +00:00
..
aarch64 TSP: Allow preemption of synchronous S-EL1 interrupt handling 2015-12-09 09:58:17 +00:00
tsp.ld.S Make generic code work in presence of system caches 2015-09-14 22:09:40 +01:00
tsp.mk Allow deeper platform port directory structure 2015-04-28 19:50:48 +01:00
tsp_interrupt.c Enable use of FIQs and IRQs as TSP interrupts 2015-12-04 12:02:12 +00:00
tsp_main.c Pass the target suspend level to SPD suspend hooks 2015-09-10 15:16:45 +01:00
tsp_private.h Enable use of FIQs and IRQs as TSP interrupts 2015-12-04 12:02:12 +00:00
tsp_timer.c PSCI: Migrate SPDs and TSP to the new platform and framework API 2015-08-13 23:48:07 +01:00