You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
It seems in arm32 mode, the abort/svc handlers don't take care of the native interrupt mask (in GICv2, it's FIQ). After the quick check, it seems for the cpu0 it's masked (I guess BL2 did this?) while for the other cpus, it's unmasked.
Can anybody help me to understand if the native interrupt should or should not be masked in these modes?
I'm doing the fix of GICv3 for these modes as the foreign interrupt is FIQ which is not masked by hardware in arm32.
Thanks.
The text was updated successfully, but these errors were encountered:
Foreign interrupts should always be masked before the abort/svc handler is called. The svc handler ('tee_svc_handler()`) will enable them if needed.
Native interrupts can be enabled when the svc handler (tee_svc_handler()) is called. I think it should be OK to have native interrupts enabled for abort handler too.
Since we need to make some changes what do you think about this:
Both native and foreign interrupts are masked before the handler is called. Then the handler itself can decide when they can be unmasked.
So basically adding an unconditional cpsid f at the beginning of thread_und_handler(), thread_svc_handler(), thread_pabort_handler() and thread_dabort_handler() and then a call at the beginning of tee_svc_handler() to re-enable native interrupts.
This issue has been marked as a stale issue because it has been open (more than) 30 days with no activity. Remove the stale label or add a comment saying that you would like to have the label removed otherwise this issue will automatically be closed in 5 days. Note, that you can always re-open a closed issue at any time.
Hi,
It seems in arm32 mode, the abort/svc handlers don't take care of the native interrupt mask (in GICv2, it's FIQ). After the quick check, it seems for the cpu0 it's masked (I guess BL2 did this?) while for the other cpus, it's unmasked.
Can anybody help me to understand if the native interrupt should or should not be masked in these modes?
I'm doing the fix of GICv3 for these modes as the foreign interrupt is FIQ which is not masked by hardware in arm32.
Thanks.
The text was updated successfully, but these errors were encountered: