[PATCH v1 1/1] fpga: zynqmppl: fix fpga loads command for unencrypted use case
Michal Simek
michal.simek at amd.com
Thu Feb 16 09:16:11 CET 2023
On 2/14/23 14:19, Neal Frager wrote:
> When using the fpga loads command, the driver is passing the AES encryption
> key address is all cases. However, for the authenticated, but not encrypted
> use case, there is no AES encryption key, and this value is 0.
>
> When AES encryption is not used on the fpga bitstream, the pmufw assumes that
> the AES key address is a bitstream size value like what is used by the
> unsecure fpga load command.
>
> To fix the problem, this patch checks to see if the AES key address is zero.
> If the AES key address is zero, it means that AES is not being used on the
> bitstream and the bitstream size should be passed instead. Thus, matching
> the fpga load functionality.
>
> Signed-off-by: Neal Frager <neal.frager at amd.com>
> ---
> drivers/fpga/zynqmppl.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/fpga/zynqmppl.c b/drivers/fpga/zynqmppl.c
> index 6b394869db..718c04b22c 100644
> --- a/drivers/fpga/zynqmppl.c
> +++ b/drivers/fpga/zynqmppl.c
> @@ -278,10 +278,16 @@ static int zynqmp_loads(xilinx_desc *desc, const void *buf, size_t bsize,
> buf_lo = lower_32_bits((ulong)buf);
> buf_hi = upper_32_bits((ulong)buf);
>
> - ret = xilinx_pm_request(PM_FPGA_LOAD, buf_lo,
> + if ((u32)(uintptr_t)fpga_sec_info->userkey_addr)
> + ret = xilinx_pm_request(PM_FPGA_LOAD, buf_lo,
> buf_hi,
> - (u32)(uintptr_t)fpga_sec_info->userkey_addr,
> - flag, ret_payload);
> + (u32)(uintptr_t)fpga_sec_info->userkey_addr,
> + flag, ret_payload);
> + else
> + ret = xilinx_pm_request(PM_FPGA_LOAD, buf_lo,
> + buf_hi, (u32)bsize,
> + flag, ret_payload);
> +
> if (ret)
> puts("PL FPGA LOAD fail\n");
> else
applied.
M
More information about the U-Boot
mailing list