diff options
author | Soby Mathew <soby.mathew@arm.com> | 2015-10-27 10:01:06 +0000 |
---|---|---|
committer | Soby Mathew <soby.mathew@arm.com> | 2015-11-26 17:07:32 +0000 |
commit | 5471841870074043dc53f2bd1a52bc48970038e2 (patch) | |
tree | 3f7d8b6b563bc60ba45e45608de12387138970ec /services | |
parent | b39908af748fd273f28991f49c62eec775fce77c (diff) |
Remove the IMF_READ_INTERRUPT_ID build option
The IMF_READ_INTERRUPT_ID build option enables a feature where the interrupt
ID of the highest priority pending interrupt is passed as a parameter to the
interrupt handler registered for that type of interrupt. This additional read
of highest pending interrupt id from GIC is problematic as it is possible that
the original interrupt may get deasserted and another interrupt of different
type maybe become the highest pending interrupt. Hence it is safer to prevent
such behaviour by removing the IMF_READ_INTERRUPT_ID build option.
The `id` parameter of the interrupt handler `interrupt_type_handler_t` is
now made a reserved parameter with this patch. It will always contain
INTR_ID_UNAVAILABLE.
Fixes ARM-software/tf-issues#307
Change-Id: I2173aae1dd37edad7ba6bdfb1a99868635fa34de
Diffstat (limited to 'services')
-rw-r--r-- | services/spd/opteed/opteed_main.c | 5 | ||||
-rw-r--r-- | services/spd/tspd/tspd_main.c | 9 |
2 files changed, 0 insertions, 14 deletions
diff --git a/services/spd/opteed/opteed_main.c b/services/spd/opteed/opteed_main.c index fefc8a75..7796fc4a 100644 --- a/services/spd/opteed/opteed_main.c +++ b/services/spd/opteed/opteed_main.c @@ -85,11 +85,6 @@ static uint64_t opteed_sel1_interrupt_handler(uint32_t id, /* Check the security state when the exception was generated */ assert(get_interrupt_src_ss(flags) == NON_SECURE); -#if IMF_READ_INTERRUPT_ID - /* Check the security status of the interrupt */ - assert(plat_ic_get_interrupt_type(id) == INTR_TYPE_S_EL1); -#endif - /* Sanity check the pointer to this cpu's context */ assert(handle == cm_get_context(NON_SECURE)); diff --git a/services/spd/tspd/tspd_main.c b/services/spd/tspd/tspd_main.c index b8b67fad..62231601 100644 --- a/services/spd/tspd/tspd_main.c +++ b/services/spd/tspd/tspd_main.c @@ -106,11 +106,6 @@ static uint64_t tspd_sel1_interrupt_handler(uint32_t id, /* Check the security state when the exception was generated */ assert(get_interrupt_src_ss(flags) == NON_SECURE); -#if IMF_READ_INTERRUPT_ID - /* Check the security status of the interrupt */ - assert(plat_ic_get_interrupt_type(id) == INTR_TYPE_S_EL1); -#endif - /* Sanity check the pointer to this cpu's context */ assert(handle == cm_get_context(NON_SECURE)); @@ -173,10 +168,6 @@ static uint64_t tspd_ns_interrupt_handler(uint32_t id, /* Check the security state when the exception was generated */ assert(get_interrupt_src_ss(flags) == SECURE); -#if IMF_READ_INTERRUPT_ID - /* Check the security status of the interrupt */ - assert(plat_ic_get_interrupt_type(id) == INTR_TYPE_NS); -#endif /* * Disable the routing of NS interrupts from secure world to EL3 while * interrupted on this core. |