mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
cmd: bcb: fix bcb struct alignment issue
Without this patch the bcb struct could be located at an odd address which resulted in data not being copied to the buffer. Here was the repro steps (from Mattijs): => mmc dev 1 => bcb load 1 misc => bcb dump command 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 => part start mmc 1 misc misc_start => mmc read ${loadaddr} ${misc_start} 4 => bcb load 1 misc => bcb dump command 00000000: 62 6f 6f 74 6f 6e 63 65 2d 62 6f 6f 74 6c 6f 61 00000010: 64 65 72 00 00 00 00 00 00 00 00 00 00 00 00 00 This behavior was observed on an Amlogic A311D (ARM64) platform with a recent GCC toolchain (11.2.0) but is most likely affecting other platforms. To avoid issues the structure is aligned on DMA minimum alignment value as it is passed directly to the read function. Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # on khadas vim3
This commit is contained in:
parent
f8a5cda5ec
commit
18956cd419
1 changed files with 2 additions and 1 deletions
|
@ -12,6 +12,7 @@
|
|||
#include <log.h>
|
||||
#include <part.h>
|
||||
#include <malloc.h>
|
||||
#include <memalign.h>
|
||||
|
||||
enum bcb_cmd {
|
||||
BCB_CMD_LOAD,
|
||||
|
@ -24,7 +25,7 @@ enum bcb_cmd {
|
|||
|
||||
static int bcb_dev = -1;
|
||||
static int bcb_part = -1;
|
||||
static struct bootloader_message bcb = { { 0 } };
|
||||
static struct bootloader_message bcb __aligned(ARCH_DMA_MINALIGN) = { { 0 } };
|
||||
|
||||
static int bcb_cmd_get(char *cmd)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue