Date: Thu, 18 May 95 12:54:06 GMT From: "gj%pcs.dec.com@inet-gw-1.pa.dec.com" <garyj@rks32.pcs.dec.com> To: current%freebsd.org@inet-gw-1.pa.dec.com Subject: bios boot bug ? Message-ID: <m0sC55a-0005PIC@rks32.pcs.dec.com>
next in thread | raw e-mail | index | archive | help
I tried to boot a newly installed system last night using the new bios
boot code (generated on May 13).
No matter what values I used in fdisk I always got
	"partition is out of reach from the bios"
Looking at the code, the following fragment from disk.c appears bogus:
                /* This little trick is for OnTrack DiskManager disks */
                boff = dl->d_partitions[part].p_offset -
                        dl->d_partitions[2].p_offset + sector;
                /* This is a good idea for all disks */
                bsize = dl->d_partitions[part].p_size;
                bend = boff + bsize - 1 ;
                if (bend / spc > 1024) {
                        printf("partition is out of reach from the bios\n");
                        return 1;
                }
spc is sectors per cylinder.
The problem is that the values in the disklabel are byte values, not sector
values. Or has this changed without me noticing ?
When I commented out this fragment, I was at least able to load /kernel (then
I ran into problems with the f*cking disk slice code...grrr).
Seems like this should read
                /* This little trick is for OnTrack DiskManager disks */
                boff = (dl->d_partitions[part].p_offset -
                        dl->d_partitions[2].p_offset) >> 9 + sector;
                /* This is a good idea for all disks */
                bsize = dl->d_partitions[part].p_size;
                bend = boff + (bsize >> 9) - 1 ;
                if (bend / spc > 1024) {
                        printf("partition is out of reach from the bios\n");
                        return 1;
                }
to convert to sectors.
Note that I haven't tried out this change, I'm at work.
Am I totally fubar here ?
Gary J.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0sC55a-0005PIC>
