On Tue, Jul 18, 2023 at 12:02:48PM +0200, Ahmad Fatoum wrote: > Since commit 7e2f6a1ffd64 ("uimage: disable zero page when loading to > SDRAM at address 0x0"), we allow locating images loaded from files at > address zero if that's within the SDRAM. This only applied to images > loaded with file_to_sdram() and images that were already in RAM were > still not allowed to overlap the zero page. > > Fix this by doing in bootm_load_os() as was done in file_to_sdram(), > namely, disabling zero page trapping for the duration of the memcpy. > We need no further zero page handling afterwards, because kernel is > booted after paging is disabled. > > Cc: Michael Tretter <m.tretter@xxxxxxxxxxxxxx> > Reported-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx> > Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > common/bootm.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/common/bootm.c b/common/bootm.c > index 791d6b8fbbf1..4845c40958ae 100644 > --- a/common/bootm.c > +++ b/common/bootm.c > @@ -13,6 +13,7 @@ > #include <linux/stat.h> > #include <magicvar.h> > #include <uncompress.h> > +#include <zero_page.h> > > static LIST_HEAD(handler_list); > > @@ -119,7 +120,7 @@ int bootm_load_os(struct image_data *data, unsigned long load_address) > (unsigned long long)load_address + kernel_size - 1); > return -ENOMEM; > } > - memcpy((void *)load_address, kernel, kernel_size); > + zero_page_memcpy((void *)load_address, kernel, kernel_size); > return 0; > } > > -- This works for me \o/ Tested-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx> Thanks, Steffen -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |