
Hi Simon,
[...]
- always begin with efi_mm_communicate_header.
*/ -struct __packed efi_mm_communicate_header { +struct efi_mm_communicate_header { efi_guid_t header_guid; size_t message_len; u8 data[]; @@ -145,7 +150,7 @@ struct smm_variable_communicate_header {
- Defined in EDK2 as SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE.
*/ -struct smm_variable_access { +struct __packed smm_variable_access {
You are randomly adding and deleting __packed cwin both structs. But you can't do that. Those structs are defined in StandAloneMM. This is the reason each struct description has the corresponding EDK2 definition.
Thanks for the comment.
However, we are not setting randomly the __packed keyword. There is a good reason for that. It has been explained before in this reply [1]. Basically it's because of data padding issues breaking the communication between u-boot and secure world (Optee).
When upgrading Optee to v3.18, no issues anymore.
The __packed changes have been dropped in patchset v6.
That is the Linux mailing list. I cannot see any reason to add __packed to this struct as it is already set up that way.
Also efi_mm_communicate_header is really long. I suggest efi_mm_hdr or efi_mm_comms_hdr
Why are you using SMM on ARM? Isn't that an Intel thing?
This is due to the fact that we run StandAloneMM, which is a specific EDK2 'package' to handle the variables in Arm secure world. There's a really long explanation on how that works here [0] in case you are interested. The naming is a bit unfortunate, but since we have to read it and reason about the EDK2 API in future versions, I suggest keeping it as close to the original as possible. Alternatively we could just add a comment with the EDK2 equivalent, but in any case, the change you are request is out of scope for this patchset.
[0] https://www.linaro.org/blog/protected-uefi-variables-with-u-boot/
Regards /Ilias
[..]
Regards, SImon