On Tue, Oct 3, 2017 at 7:04 AM, Fabio Estevam <feste...@gmail.com> wrote: > On Tue, Oct 3, 2017 at 7:57 AM, Rob Clark <robdcl...@gmail.com> wrote: > >> btw, if I had to take a guess, I'd say that perhaps blksz is smaller >> than 'legacy_mbr', so maybe rather than allocating blksize, it should >> be DIV_ROUND_UP(sizeof(legacy_mbr), dev_desc->blksz).. or I guess that >> could be simplified to not use division if blksz is a power of two > > Yes, it does seem to be size related as we are size constraint in SPL. > > Just tried your suggestion: > > --- a/disk/part_dos.c > +++ b/disk/part_dos.c > @@ -89,7 +89,9 @@ static int test_block_type(unsigned char *buffer) > > static int part_test_dos(struct blk_desc *dev_desc) > { > - ALLOC_CACHE_ALIGN_BUFFER(legacy_mbr, mbr, dev_desc->blksz); > + ALLOC_CACHE_ALIGN_BUFFER(legacy_mbr, mbr, > + DIV_ROUND_UP(sizeof(legacy_mbr), > + dev_desc->blksz)); > > if (blk_dread(dev_desc, 0, 1, (ulong *)mbr) != 1) > return -1; > > and it does work for me :-)
Ok, I guess if blksz can actually be less than the mbr, we probably also need a similar fix in is_gpt_valid() (and also to pass the correct # of blks to blk_dread()).. I'll make a patch in a few.. BR, -R _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot