On Mon, Oct 09, 2017 at 05:19:53PM +1100, Jonathan Gray wrote: > On Sun, Oct 08, 2017 at 11:12:28PM -0400, Tom Rini wrote: > > On Sun, Oct 08, 2017 at 10:56:26PM -0300, Fabio Estevam wrote: > > > On Sun, Oct 8, 2017 at 11:04 AM, Jonathan Gray <j...@jsg.id.au> wrote: > > > > > > > It turns out to be > > > > > > > > commit 2460098cffacd18729262e3ed36656e6943783ed > > > > Author: Tom Rini <tr...@konsulko.com> > > > > Date: Fri Sep 22 07:37:43 2017 -0400 > > > > > > > > fs/fat: Reduce stack usage > > > > > > > > We have limited stack in SPL builds. Drop itrblock and move to > > > > malloc/free of itr to move this off of the stack. As part of this > > > > fix a > > > > double-free issue in fat_size(). > > > > > > > > Signed-off-by: Tom Rini <tr...@konsulko.com> > > > > --- > > > > Rework to use malloc/free as moving this to a global overflows some > > > > SH > > > > targets. > > > > > > > > fs/fat/fat.c | 14 ++++++++++---- > > > > 1 file changed, 10 insertions(+), 4 deletions(-) > > > > > > > > With that reverted I just get the efi loader problem, no alignment > > > > errors. > > > > > > Thanks for doing the bisect. > > > > > > Tom, can you prepare a fix for this? > > > > No, this is a required fix for other platforms. Why is this failing in > > the particular case that it's failing in? > > Switching the malloc calls for malloc_cache_aligned also avoids the problem.
Ah, good one. Can you please submit this as a proper patch? Thanks! > > U-Boot SPL 2017.11-rc1-00026-g14b55fc833 (Oct 05 2017 - 15:17:47) > Trying to boot from MMC1 > > > U-Boot 2017.11-rc1-00026-g14b55fc833 (Oct 05 2017 - 15:17:47 +1100) > > CPU: Freescale i.MX6Q rev1.5 996 MHz (running at 792 MHz) > CPU: Extended Commercial temperature grade (-20C to 105C) at 34C > Reset cause: WDOG > Board: MX6 Cubox-i > DRAM: 2 GiB > MMC: FSL_SDHC: 0 > *** Warning - bad CRC, using default environment > > No panel detected: default to HDMI > Display: HDMI (1024x768) > In: serial > Out: serial > Err: serial > Net: FEC > Hit any key to stop autoboot: 0 > switch to partitions #0, OK > mmc0 is current device > Scanning mmc 0:1... > CACHE: Misaligned operation at range [8f89da30, 8f89e230] > CACHE: Misaligned operation at range [8f89da30, 8f89e230] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89da30 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e230 > CACHE: Misaligned operation at range [8f89da30, 8f89e230] > CACHE: Misaligned operation at range [8f89da30, 8f89e230] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89da30 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e230 > CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0] > CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0] > CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0] > CACHE: Misaligned operation at range [8f89dca0, 8f89e4a0] > CACHE: Misaligned operation at range [8f89dc68, 8f89e468] > CACHE: Misaligned operation at range [8f89dc68, 8f89e468] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dc68 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e468 > CACHE: Misaligned operation at range [8f89dc68, 8f89e468] > CACHE: Misaligned operation at range [8f89dc68, 8f89e468] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dc68 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e468 > CACHE: Misaligned operation at range [8f89dab0, 8f89e2b0] > CACHE: Misaligned operation at range [8f89dab0, 8f89e2b0] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dab0 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e2b0 > CACHE: Misaligned operation at range [8f89dab0, 8f89e2b0] > CACHE: Misaligned operation at range [8f89dab0, 8f89e2b0] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dab0 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e2b0 > CACHE: Misaligned operation at range [8f89dca8, 8f89e4a8] > CACHE: Misaligned operation at range [8f89dca8, 8f89e4a8] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dca8 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e4a8 > CACHE: Misaligned operation at range [8f89dca8, 8f89e4a8] > CACHE: Misaligned operation at range [8f89dca8, 8f89e4a8] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dca8 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e4a8 > CACHE: Misaligned operation at range [8f89dc70, 8f89e470] > CACHE: Misaligned operation at range [8f89dc70, 8f89e470] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dc70 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e470 > CACHE: Misaligned operation at range [8f89dc70, 8f89e470] > CACHE: Misaligned operation at range [8f89dc70, 8f89e470] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89dc70 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89e470 > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e488 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec88 > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e488 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec88 > CACHE: Misaligned operation at range [8f89e470, 8f89ec70] > CACHE: Misaligned operation at range [8f89e470, 8f89ec70] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e470 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec70 > CACHE: Misaligned operation at range [8f89e470, 8f89ec70] > CACHE: Misaligned operation at range [8f89e470, 8f89ec70] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e470 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec70 > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e488 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec88 > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > CACHE: Misaligned operation at range [8f89e488, 8f89ec88] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e488 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec88 > CACHE: Misaligned operation at range [8f89e438, 8f89ec38] > CACHE: Misaligned operation at range [8f89e438, 8f89ec38] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e438 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec38 > CACHE: Misaligned operation at range [8f89e438, 8f89ec38] > CACHE: Misaligned operation at range [8f89e438, 8f89ec38] > ERROR: v7_outer_cache_inval_range - start address is not aligned - 0x8f89e438 > ERROR: v7_outer_cache_inval_range - stop address is not aligned - 0x8f89ec38 > AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode > flags: ncq stag pm led clo only pmp pio slum part > No port device detected! > > Device 0: Model: Firm: Ser#: > Type: Hard Disk > Capacity: not available > ... is now current device > ** Bad device size - sata 0 ** > starting USB... > USB0: Port not available. > USB1: USB EHCI 1.00 > scanning bus 1 for devices... 1 USB Device(s) found > scanning usb for storage devices... 0 Storage Device(s) found > > Device 0: device type unknown > ... is now current device > ** Bad device usb 0 ** > ** Bad device usb 0 ** > > U-Boot SPL 2017.11-rc1-00111-g3e161bd647-dirty (Oct 09 2017 - 17:03:13) > Trying to boot from MMC1 > > > U-Boot 2017.11-rc1-00111-g3e161bd647-dirty (Oct 09 2017 - 17:03:13 +1100) > > CPU: Freescale i.MX6Q rev1.5 996 MHz (running at 792 MHz) > CPU: Extended Commercial temperature grade (-20C to 105C) at 48C > Reset cause: POR > Board: MX6 Cubox-i > DRAM: 2 GiB > MMC: FSL_SDHC: 0 > No panel detected: default to HDMI > Display: HDMI (1024x768) > In: serial > Out: serial > Err: serial > Net: FEC > Hit any key to stop autoboot: 0 > switch to partitions #0, OK > mmc0 is current device > Scanning mmc 0:1... > reading /imx6q-cubox-i.dtb > 37669 bytes read in 20 ms (1.8 MiB/s) > Found EFI removable media binary efi/boot/bootarm.efi > Scanning disks on usb... > Scanning disks on mmc... > MMC Device 1 not found > MMC Device 2 not found > MMC Device 3 not found > Scanning disks on sata... > Found 6 disks > reading efi/boot/bootarm.efi > 67372 bytes read in 31 ms (2.1 MiB/s) > ## Starting EFI application at 12000000 ... > >> OpenBSD/armv7 BOOTARM 1.0 > boot> > booting sd0a:/bsd: 3926840+164812+561396|[283058+90+521360+245040]=0x571a54 > Writing to MMC(0)... done > > OpenBSD/armv7 booting ... > arg0 0xc0871a54 arg1 0x0 arg2 0x18000000 > Allocating page tables > freestart = 0x10872000, free_pages = 522126 (0x0007f78e) > IRQ stack: p0x108a0000 v0xc08a0000 > ABT stack: p0x108a1000 v0xc08a1000 > UND stack: p0x108a2000 v0xc08a2000 > SVC stack: p0x108a3000 v0xc08a3000 > Creating L1 page table at 0x10874000 > Mapping kernel > Constructing L2 page tables > undefined page pmap [ using 1050004 bytes of bsd ELF symbol table ] > board type: 0 > Copyright (c) 1982, 1986, 1989, 1991, 1993 > The Regents of the University of California. All rights reserved. > Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org > ... > > diff --git a/fs/fat/fat.c b/fs/fat/fat.c > index 3d3e17e8fa..d299f317a9 100644 > --- a/fs/fat/fat.c > +++ b/fs/fat/fat.c > @@ -1038,7 +1038,7 @@ int fat_exists(const char *filename) > fat_itr *itr; > int ret; > > - itr = malloc(sizeof(fat_itr)); > + itr = malloc_cache_aligned(sizeof(fat_itr)); > ret = fat_itr_root(itr, &fsdata); > if (ret) > return 0; > @@ -1055,7 +1055,7 @@ int fat_size(const char *filename, loff_t *size) > fat_itr *itr; > int ret; > > - itr = malloc(sizeof(fat_itr)); > + itr = malloc_cache_aligned(sizeof(fat_itr)); > ret = fat_itr_root(itr, &fsdata); > if (ret) > return ret; > @@ -1089,7 +1089,7 @@ int file_fat_read_at(const char *filename, loff_t pos, > void *buffer, > fat_itr *itr; > int ret; > > - itr = malloc(sizeof(fat_itr)); > + itr = malloc_cache_aligned(sizeof(fat_itr)); > ret = fat_itr_root(itr, &fsdata); > if (ret) > return ret; -- Tom
signature.asc
Description: PGP signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot