Committed. On Fri, Mar 21, 2008 at 04:14:46PM +0100, Robert Millan wrote: > > This patch fixes (I think) the grub_biosdisk_rw() CHS limit check, which as > described in http://www.allensmith.net/Storage/HDDlimit/Int13h.htm is slightly > below LBA-24, not LBA-32 as current code assumes. > > -- > Robert Millan > > <GPLv2> I know my rights; I want my phone call! > <DRM> What use is a phone call… if you are unable to speak? > (as seen on /.)
> 2008-03-21 Robert Millan <[EMAIL PROTECTED]> > > * disk/i386/pc/biosdisk.c (grub_biosdisk_rw): Fix CHS limit check, > as per http://www.allensmith.net/Storage/HDDlimit/Int13h.htm > > diff -urp grub2/disk/i386/pc/biosdisk.c tmp/disk/i386/pc/biosdisk.c > --- grub2/disk/i386/pc/biosdisk.c 2008-02-03 09:27:15.000000000 +0100 > +++ tmp/disk/i386/pc/biosdisk.c 2008-03-21 16:11:20.000000000 +0100 > @@ -237,15 +237,17 @@ grub_biosdisk_rw (int cmd, grub_disk_t d > { > unsigned coff, hoff, soff; > unsigned head; > - unsigned real_sector = (unsigned) sector; > > - /* It is impossible to reach over 2TB with the traditional > - CHS access. */ > - if (sector > ~0UL) > + /* It is impossible to reach over 8064 MiB (a bit less than LBA24) with > + the traditional CHS access. */ > + if (sector > > + 1024 /* cylinders */ * > + 256 /* heads */ * > + 63 /* spt */) > return grub_error (GRUB_ERR_OUT_OF_RANGE, "out of disk"); > > - soff = real_sector % data->sectors + 1; > - head = real_sector / data->sectors; > + soff = sector % data->sectors + 1; > + head = sector / data->sectors; > hoff = head % data->heads; > coff = head / data->heads; > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel -- Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What use is a phone call… if you are unable to speak? (as seen on /.) _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel