[PATCH v1 1/1] fpga: zynqmppl: fix fpga loads command for unencrypted use case

Soma, Ashok Reddy ashok.reddy.soma at amd.com
Tue Feb 14 14:25:43 CET 2023


Acked-by: Ashok Reddy Soma <ashok.reddy.soma at amd.com> 

Thanks,
Ashok

> -----Original Message-----
> From: Neal Frager <neal.frager at amd.com>
> Sent: Tuesday, February 14, 2023 6:50 PM
> To: u-boot at lists.denx.de; git-dev (AMD-Xilinx) <git-dev at amd.com>
> Cc: Simek, Michal <michal.simek at amd.com>; Soma, Ashok Reddy
> <ashok.reddy.soma at amd.com>; Manne, Nava kishore
> <nava.kishore.manne at amd.com>; Erkiaga Elorza, Ibai <ibai.erkiaga-
> elorza at amd.com>; Frager, Neal <neal.frager at amd.com>
> Subject: [PATCH v1 1/1] fpga: zynqmppl: fix fpga loads command for
> unencrypted use case
> 
> 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
> --
> 2.17.1



More information about the U-Boot mailing list