Re: [PATCH v3 1/1] bloblist: Fix bloblist convention checking.

2024-07-10 Thread Yeo Reum Yun
HI. Raymond.

> Please remove the "FIXME" on top of your changes.
> It was a reminder for the bug of the FW handoff spec.
> We don't need it anymore once your patch is merged.

> BTW, you might need to resend the patch with a new
> subject "[PATCH v2 ]" instead of following the original
> topic when you send a new version.

Thanks for your review. I'll remove the FIXME and resend with v4.

Thanks!


From: Raymond Mao 
Sent: 10 July 2024 14:45
To: Yeo Reum Yun
Cc: tr...@konsulko.com; s...@chromium.org; ilias.apalodimas; 
bmeng...@gmail.com; nd; u-boot@lists.denx.de
Subject: Re: [PATCH v3 1/1] bloblist: Fix bloblist convention checking.

Hi Levi,

On Tue, 9 Jul 2024 at 16:21, Levi Yun 
mailto:yeoreum@arm.com>> wrote:
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 range 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]).

This patch fix 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.

[1] https://github.com/FirmwareHandoff/firmware_handoff
[2] https://github.com/FirmwareHandoff/firmware_handoff/issues/32
[3] 
https://github.com/FirmwareHandoff/firmware_handoff/commit/5aa7aa1d3a1db75213e458d392b751f0707de027

Signed-off-by: Levi Yun mailto:yeoreum@arm.com>>
---
v3:
  - Restore arch/arm/lib/xferlist.c.

v2:
  - Modify commit message.
  - Remove wrong swaping check in xferlist_from_boot_arg().

 common/bloblist.c  | 11 ++-
 include/bloblist.h |  5 -
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/common/bloblist.c b/common/bloblist.c
index 11d6422b69..2008ab4d25 100644
--- a/common/bloblist.c
+++ b/common/bloblist.c
@@ -576,7 +576,16 @@ int bloblist_maybe_init(void)

 int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig)
 {
-   if (rzero || rsig != (BLOBLIST_MAGIC | BLOBLIST_REGCONV_VER) ||
+   ulong version = BLOBLIST_REGCONV_VER;
+   ulong sigval;
+
+   sigval = (IS_ENABLED(CONFIG_64BIT)) ?
+   ((BLOBLIST_MAGIC & ((1UL << BLOBLIST_REGCONV_SHIFT_64) 
- 1)) |
+((version  & BLOBLIST_REGCONV_MASK) << 
BLOBLIST_REGCONV_SHIFT_64)) :
+   ((BLOBLIST_MAGIC & ((1UL << BLOBLIST_REGCONV_SHIFT_32) 
- 1)) |
+((version  & BLOBLIST_REGCONV_MASK) << 
BLOBLIST_REGCONV_SHIFT_32));
+
+   if (rzero || rsig != sigval ||
rfdt != (ulong)bloblist_find(BLOBLISTT_CONTROL_FDT, 0)) {
gd->bloblist = NULL;  /* Reset the gd bloblist pointer */
return -EIO;
diff --git a/include/bloblist.h b/include/bloblist.h
index 7fbdd622bc..f4849f22a0 100644
--- a/include/bloblist.h
+++ b/include/bloblist.h
@@ -83,7 +83,10 @@ enum {
 * Register convention version should be placed into a higher byte
 * https://github.com/FirmwareHandoff/firmware_handoff/issues/32
 */
-   BLOBLIST_REGCONV_VER= 1 << 24,
+   BLOBLIST_REGCONV_SHIFT_64 = 32,
+   BLOBLIST_REGCONV_SHIFT_32 = 24,
+   BLOBLIST_REGCONV_MASK = 0xff,
+   BLOBLIST_REGCONV_VER = 1,

Please remove the "FIXME" on top of your changes.
It was a reminder for the bug of the FW handoff spec.
We don't need it anymore once your patch is merged.

BTW, you might need to resend the patch with a new
subject "[PATCH v2 ]" instead of following the original
topic when you send a new version.

Regards,
Raymond


Re: [PATCH] bloblist: Fix bloblist convention checking.

2024-07-09 Thread Yeo Reum Yun
Hi. Raymond.

> I think you don't even need to change the order.
> The FW handoff must fulfill two conditions at the same time (A valid TL plus 
> and proper register
> conventions).
> Both conditions are essential with the same priority and which one should be 
> proceeded first
> is fully arbitrary.

okay. then I'll restore xferlist.c.

and send patch v3.
Please ignore patch v2.

Thanks!


From: Raymond Mao 
Sent: 09 July 2024 20:26
To: Yeo Reum Yun
Cc: tr...@konsulko.com; s...@chromium.org; ilias.apalodimas; n-ja...@ti.com; 
bmeng...@gmail.com; u-boot@lists.denx.de
Subject: Re: [PATCH] bloblist: Fix bloblist convention checking.

Hi Levi,

On Tue, 9 Jul 2024 at 13:16, Yeo Reum Yun 
mailto:yeoreum@arm.com>> wrote:
Hi Raymond!


> The handoff of armv7 will break if you swap arg[0] and arg[2] here.
> The args are already aligned in the correct order via the assembly code.
> Please see the 'save_boot_params' function in start.S of armv7.

Thanks to let me know. I couldn't see that code.
But I think before checking transfer_list, It would be good to check convention 
first.

So, I'll change order only.

I think you don't even need to change the order.
The FW handoff must fulfill two conditions at the same time (A valid TL plus 
and proper register
conventions).
Both conditions are essential with the same priority and which one should be 
proceeded first
is fully arbitrary.

Regards,
Raymond
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.


Re: [PATCH] bloblist: Fix bloblist convention checking.

2024-07-09 Thread Yeo Reum Yun
Hi Raymond!


> The handoff of armv7 will break if you swap arg[0] and arg[2] here.
> The args are already aligned in the correct order via the assembly code.
> Please see the 'save_boot_params' function in start.S of armv7.

Thanks to let me know. I couldn't see that code.
But I think before checking transfer_list, It would be good to check convention 
first.

So, I'll change order only.

Thanks!
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.