seL4/include
JorgeMVP 62c8148268 generic_timer: force timer to de-assert irq
Generic Timer IRQs are level-sensitive, when the CNT_TVAL
is updated the trigger condition is de-asserted and the
change is propagated to the GIC in a finite time to clear
the pending state.

However, we have to make sure the timer deasserts before
EOIR/DIR, otherwise the interrupt happens again. Therefore,
we need an isb() to cause the timer to de-assert before EOIR/DIR.

There is also a chance of spurious IRQ. A spurious IRQ can be
generated, in the case we have a level-sensitive IRQ, and its
pending state is cleared at device-level but not yet propagated
to the GIC. In between the IRQ deactivation and IRQ ack of the
new interrupt if the requested change from the timer gets propagated
then it causes a spurious IRQ.

Signed-off-by: JorgeMVP <jorgepereira89@gmail.com>
2023-05-25 20:42:02 +10:00
..
32/mode replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
64/mode replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
api print value for unknown entry reason 2022-03-16 16:00:42 +11:00
arch Remove VMKernelReadOnly from AArch64 VM rights 2023-05-25 14:48:37 +10:00
benchmark benchmark: config opt. name to enable log buffer 2022-03-31 08:56:06 +11:00
drivers generic_timer: force timer to de-assert irq 2023-05-25 20:42:02 +10:00
fastpath Implemented the vm fault fastpath on aarch64 2023-03-08 17:58:14 +11:00
kernel boot: remove unused return values 2022-10-30 19:54:02 +11:00
machine debug: restructure kernel console handling 2021-05-14 13:13:36 +10:00
model mcs: Create ksIdleSC global variable 2022-01-04 19:00:24 +11:00
object Implemented signal fastpath on AARCH64 (#793) 2023-01-10 10:15:39 +11:00
plat make physBase a static inline function 2023-03-07 14:29:14 +11:00
smp create helper function handle_SysDebugSendIPI() 2022-01-10 11:58:30 +11:00
api.h replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
assert.h trivial: fix typos 2022-02-27 13:10:34 +11:00
basic_types.h boot: document region types 2023-04-12 15:07:02 +10:00
bootinfo.h boot: use helper variable to simplify code 2021-09-06 09:22:04 +10:00
compound_types.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
config.h libsel4: Fix name for AARCH64_VSPACE_S2_START_L1 2021-09-06 08:08:54 +10:00
hardware.h remove unused define KERNEL_ELF_PADDR_TOP 2021-11-17 11:29:36 +11:00
linker.h replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
machine.h re-use existing functions to avoid redundancy 2022-09-15 11:25:04 +02:00
object.h trivial: remove duplicate headers 2022-02-05 15:30:25 +11:00
stdarg.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
stdint.h print 64-bit integers on 32-bits systems fully 2021-11-26 06:01:11 +01:00
string.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
types.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
util.h make macro ARRAY_SIZE() handle corner cases 2022-03-10 18:16:00 +11:00