[v6 01/12] sandbox: efi_loader: Correct use of addresses as pointers
Heinrich Schuchardt
xypron.glpk at gmx.de
Wed Nov 27 20:38:15 CET 2024
On 27.11.24 19:40, Heinrich Schuchardt wrote:
> On 27.11.24 18:17, Tom Rini wrote:
>> From: Simon Glass <sjg at chromium.org>
>>
>> The cache-flush function is incorrect which causes a crash in the
>> remoteproc tests with arm64.
>>
>> Fix both problems by using map_sysmem() to convert an address to a
>> pointer and map_to_sysmem() to convert a pointer to an address.
>>
>> Also update the image-loader's cache-flushing logic.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> Fixes: 3286d223fd7 ("sandbox: implement invalidate_icache_all()")
>> Acked-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>>
>> Changes in v6:
>> - Re-introduce
>>
>> Changes in v2:
>> - Drop message about EFI_LOADER
>>
>> arch/sandbox/cpu/cache.c | 8 +++++++-
>> drivers/remoteproc/rproc-elf-loader.c | 18 +++++++++++-------
>> lib/efi_loader/efi_image_loader.c | 3 ++-
>> 3 files changed, 20 insertions(+), 9 deletions(-)
>> ---
>> arch/sandbox/cpu/cache.c | 8 +++++++-
>> drivers/remoteproc/rproc-elf-loader.c | 18 +++++++++++-------
>> lib/efi_loader/efi_image_loader.c | 3 ++-
>> 3 files changed, 20 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/sandbox/cpu/cache.c b/arch/sandbox/cpu/cache.c
>> index c8a5e64214b6..96b3da47e8ed 100644
>> --- a/arch/sandbox/cpu/cache.c
>> +++ b/arch/sandbox/cpu/cache.c
>> @@ -4,12 +4,18 @@
>> */
>>
>> #include <cpu_func.h>
>> +#include <mapmem.h>
>> #include <asm/state.h>
>>
>> void flush_cache(unsigned long addr, unsigned long size)
>> {
>> + void *ptr;
>> +
>> + ptr = map_sysmem(addr, size);
>> +
>> /* Clang uses (char *) parameters, GCC (void *) */
>> - __builtin___clear_cache((void *)addr, (void *)(addr + size));
>> + __builtin___clear_cache(map_sysmem(addr, size), ptr + size);
>> + unmap_sysmem(ptr);
>> }
I missed this part when looking at the EFI change.
Reviewed-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
More information about the U-Boot
mailing list