
Hi Nam,
On Wed, 6 Nov 2024 at 09:34, Nam Cao namcao@linutronix.de wrote:
extlinux_read_bootflow() allocates a buffer to read from file system without any alignment.
But for some block devices which transfer data via DMA, ARCH_DMA_MINALIGN alignment is required. For example, due to misaligned buffer, the below boot failure is observed.
=> boot CACHE: Misaligned operation at range [9efa25f8, 9efa27f8] CACHE: Misaligned operation at range [9efa25f8, 9efa27f8] CACHE: Misaligned operation at range [9efa25f8, 9efa27f8] CACHE: Misaligned operation at range [9efa25f8, 9efa27f8] ** Booting bootflow 'mmc@2194000.bootdev.part_1' with extlinux Ignoring unknown command: �D���D�� Boot failed (err=-14)
Change the alignment to default (which is ARCH_DMA_MINALIGN).
Fixes: 31aefaf89a5b ("bootstd: Add an implementation of distro boot") Signed-off-by: Nam Cao namcao@linutronix.de Tested-by: Javier Fernandez Pastrana javier.pastrana@linutronix.de
boot/bootmeth_extlinux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/boot/bootmeth_extlinux.c b/boot/bootmeth_extlinux.c index ae0ad1d53e3..5424d179bf8 100644 --- a/boot/bootmeth_extlinux.c +++ b/boot/bootmeth_extlinux.c @@ -127,7 +127,7 @@ static int extlinux_read_bootflow(struct udevice *dev, struct bootflow *bflow) return log_msg_ret("try", ret); size = bflow->size;
ret = bootmeth_alloc_file(bflow, 0x10000, 1);
ret = bootmeth_alloc_file(bflow, 0x10000, 0);
Can you please use ARCH_DMA_MINALIGN here? Either that or update bootmeth_script to do the same as here.
if (ret) return log_msg_ret("read", ret);
-- 2.39.5
Regards, Simon