Hi

On 8/26/21 11:42 PM, Alexandru Gagniuc wrote:

stm32mp_bsec_probe() was skipped for TFABOOT and SPL_BUILD. The idea
of skipping probe() is that we can't access BSEC from the normal
world. This is true with TFABOOT. However, in SPL, we are in the
secure world, so skipping probe is incorrect. In fact, SPL is not
even built when TFABOOT is selected.

Thus, only skip probe with TFABOOT, but not SPL_BUILD.

Signed-off-by: Alexandru Gagniuc <mr.nuke...@gmail.com>
---
  arch/arm/mach-stm32mp/bsec.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-stm32mp/bsec.c b/arch/arm/mach-stm32mp/bsec.c
index fe39bd80cf..a02d19c1b9 100644
--- a/arch/arm/mach-stm32mp/bsec.c
+++ b/arch/arm/mach-stm32mp/bsec.c
@@ -506,7 +506,7 @@ static int stm32mp_bsec_probe(struct udevice *dev)
         * only executed in U-Boot proper when TF-A is not used
         */
- if (!IS_ENABLED(CONFIG_TFABOOT) && !IS_ENABLED(CONFIG_SPL_BUILD)) {
+       if (!IS_ENABLED(CONFIG_TFABOOT)) {
                plat = dev_get_plat(dev);
for (otp = 57; otp <= BSEC_OTP_MAX_VALUE; otp++)


in this part the dirver don't skip the BSEC probe (still return 0)

BUT the BSEC driver skip only the shadow of the OTP

=> this initialisation is necessary only one time to save time

a/ for TF-A boot it is done in TF-A

b/ for basic boot (SPL + U-Boot) is only done in U-Boot proper (because is not mandatory in SPL

and the U-Boot execution was faster - before the data cache activation in SPL)


With this patch the copy of the OTP in shadow memory is done 2 times

1/ in SPL (BSEC probe) = with CONFIG_SPL_BUILD

2/ in U-Boot (BSEC probe)

see comment:

    /*
     * update unlocked shadow for OTP cleared by the rom code
     * only executed in U-Boot proper when TF-A is not used
     */


but for falcon mode, as the Linux driver expected the OTP are shadowed,

the operation need to be done in SPL and in U-Boot proper

I propose


    /*

     * update unlocked shadow for OTP cleared by the rom code

-     * only executed in U-Boot proper when TF-A is not used

+     * only executed in U-Boot SPL, it is done in TF-A when used

     */

-       if (!IS_ENABLED(CONFIG_TFABOOT) && !IS_ENABLED(CONFIG_SPL_BUILD)) {
+       if (IS_ENABLED(CONFIG_SPL_BUILD)) {


Regards

Patrick

Reply via email to