Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
core: kernel: Fix checking register convention r1/x1 value of transfe…
…r_list According to recently firmware handsoff spec [1]'s "Register usage at handoff boundary", Transfer List's signature value was changed from 0x40_b10b (3 bytes) to 4a0f_b10b (4 bytes). As updating of TL's signature, register value of x1/r1 should be: In aarch32's r1 value should be R1[23:0]: set to the TL signature (4a0f_b10b->masked value: 0f_b10b) R1[31:24]: version of the register convention == 1 and In aarch64's x1 value should be X1[31:0]: set to the TL signature (4a0f_b10b) X1[39:32]: version of the register convention == 1 X1[63:40]: MBZ (See the [2] and [3]). Therefore, it requires to separate mask and shift value for register convention version field when checking each r1/x1 value. This patch fix two problems: 1. breaking X1 value with updated specification in aarch64 - change of length of signature field. 2. previous error value set in R1 in arm32. - length of signature should be 24, but it uses 32bit signature. This patch is a breaking change. It works only TF-A is updated. Link: https://github.com/FirmwareHandoff/firmware_handoff [1] Link: FirmwareHandoff/firmware_handoff#32 [2] Link: FirmwareHandoff/firmware_handoff@5aa7aa1 [3] Fixes: 508e247 ("core: update transfer list header and signature") Signed-off-by: Levi Yun <[email protected]> Reviewed-by: Jens Wiklander <[email protected]>
- Loading branch information