Hi
There seem to be scheduling bug we have found in SPM.
This bug is related to
handling of interrupts that arrives during SVC call and assert signed for partition.
Steps to reproduce:
i. Mailbox IRQ and pendSV are both pending
i. Signal is asserted thus spm_handle_interrupt in thrd_next calls query_state_cb which
returns THRD_STATE_RET_VAL_AVAIL and thus tfm_arch_set_context_ret_code is called
ii. tfm_arch_set_context_ret_code sets return code using OLD value of partition PSP
(as it was never updated, as it is updated in PendSV)
i. Mailbox partition has 0 as signal because return value was written to wrong location
is stack
Patch I have attached to the mail solves this problem for us BUT it seems more like a workaround than a proper fix(
Anyways it would be nice to have this problem review by SPM experts and have proper fix (maybe we have other places with same problem…)
Regards,
Bohdan Hunko
Cypress Semiconductor Ukraine
Engineer
CSUKR CSS ICW SW FW
Mobile: +38099 50 19 714
Bohdan.Hunko@infineon.com