From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heinrich Schuchardt Date: Tue, 12 Jan 2021 23:56:56 +0100 Subject: [BUG] ext4: the load command on an EXT4 partitition leads to errors due to unaligned buffers Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de When reading a file using the load command from a FAT file system this works fine irrespective of the alignment. When reading from an EXT4 partition raw sectors are read to unaligned addresses which leads to a failure to load the file => echo $kernel_addr_r 0x40080000 => load mmc 0:3 $kernel_addr_r helloworld.efi 10a1 1 fs/fs_internal.c(76) fs_devread: partition->start 0x400000, sector 0x2, block_len 0x400, log2blksz 0x9, buffer 0x00000000b9f8ea40 fs/fs_internal.c(76) fs_devread: partition->start 0x400000, sector 0x42031, block_len 0xe00, log2blksz 0x9, buffer 0x00000000400801ff ** fs_devread read error - block Failed to load 'helloworld.efi' The problem is in fs_devread() in the part marked as /* Get the read to the beginning of a partition */ Here the wrong assumption is made that variable buf is cache-aligned after advancing it by an odd number of bytes. Valerij first observed the problem when trying to read the EXT4 partition why the EFI_FILE_PROTOCOL on a Pine64 system. I was able to reproduce it on the Pine64 A64 LTS. Best regards Heinrich