]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
ARM: stm32: Fix ECDSA authentication with Dcache enabled
authorMarek Vasut <marex@denx.de>
Thu, 12 Jan 2023 17:58:39 +0000 (18:58 +0100)
committerPatrice Chotard <patrice.chotard@foss.st.com>
Fri, 13 Jan 2023 12:46:57 +0000 (13:46 +0100)
In case Dcache is enabled while the ECDSA authentication function is
called via BootROM ROM API, the MMU tables are set up and the BootROM
region is not marked as executable, so an attempt to run code from it
results in a hang. Mark the BootROM region as executable as suggested
by Patrick to prevent the hang.

Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Marek Vasut <marex@denx.de>
arch/arm/mach-stm32mp/ecdsa_romapi.c

index a2f63ff879f2bc0d2c67682c1c52e3622f136663..6156526253cfd68687ccc2da2c3daa29215a6c77 100644 (file)
@@ -81,6 +81,10 @@ static int romapi_ecdsa_verify(struct udevice *dev,
        memcpy(raw_key + 32, pubkey->y, 32);
 
        stm32mp_rom_get_ecdsa_functions(&rom);
+
+       /* Mark BootROM region as executable. */
+       mmu_set_region_dcache_behaviour(0, SZ_2M, DCACHE_DEFAULT_OPTION);
+
        rom_ret = rom.ecdsa_verify_signature(hash, raw_key, signature, algo);
 
        return rom_ret == ROM_API_SUCCESS ? 0 : -EPERM;