Le 13/06/2013 15:21, Albert ARIBAUD a écrit :

> > I guess CONFIG_LBA48 is also broken in common/cmd_ide.c :
> > 
> > ulong ide_write(int device, ulong blknr, lbaint_t blkcnt, const void
> > *buffer)
> > {
> >     ulong n = 0;
> >     unsigned char c;
> > 
> > #ifdef CONFIG_LBA48
> >     unsigned char lba48 = 0;
> > 
> >     if (blknr & 0x0000fffff0000000ULL) {                          <= issue
> >         /* more than 28 bits used, use 48bit mode */
> >         lba48 = 1;
> >     }
> > #endif
>
> How is this broken exactly, and what is the fix?

If you have a device with 0x100000000 blocks and a target architecture
with sizeof(ulong)=32, then it will fail to switch to lba48.
The right thing to do is to use lbaint_t instead of ulong blknr.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to