Home | History | Annotate | Download | only in lib
History log of /src/sys/arch/i386/stand/lib/bootinfo_biosgeom.c
RevisionDateAuthorComments
 1.24  01-Aug-2019  manu Fix buffer overflow in BIOS disk geometry collect for bootinfo

This spares a boot-time panic on iMac with fusion drive, which
feature both a hard drive and a solid-state drive.
 1.23  24-Jan-2017  nonaka branches: 1.23.6; 1.23.14; 1.23.18;
Initial commit of native amd64 EFI boot loader.
 1.22  16-May-2013  christos branches: 1.22.10; 1.22.14; 1.22.18;
Complete the dosparts -> mbrparts conversion. Only x86k new uses dosparts
because it also uses struct dos_partition.
 1.21  25-Dec-2010  jakllsch branches: 1.21.8; 1.21.18;
Use printf format macros for long longs.
 1.20  20-Nov-2009  dsl branches: 1.20.4;
EXT13_DEVPATH_SIGNATURE should be EXTINFO_DEVPATH_SIGNATURE
 1.19  11-Dec-2005  christos branches: 1.19.78; 1.19.92;
merge ktrace-lwp.
 1.18  29-Jun-2005  junyoung Massive renames for consistency:
biosdiskreset -> biosdisk_reset
biosread -> biosdisk_read
get_diskinfo -> biosdisk_getinfo
int13_extension -> biosdisk_int13ext
biosextread -> biosdisk_extread
int13_getextinfo -> biosdisk_getextinfo
struct biosdisk_ext13info -> biosdisk_extinfo
BIOSDISK_EXT13 -> BIOSDISK_INT13EXT
BIOSDISK_EXT13INFO_V{2,3} -> BIOSDISK_EXTINFO_V{2,3}
EXT13_* -> EXTINFO_*
 1.17  23-Jun-2005  junyoung Define BIOSDISK_DEFAULT_SECSIZE in biosdisk_ll.h and replace BIOSDISK_SECSIZE
with it.
 1.16  22-Jun-2005  junyoung Use get_harddrives().
 1.15  22-Jun-2005  junyoung Add support for cd9660 file system to the i386 BIOS bootloader.
 1.14  21-Jun-2005  junyoung Cosmetic changes.
 1.13  24-Mar-2004  drochner remove license clauses 3 and 4 from my cpoyright notices
 1.12  08-Oct-2003  lukem Overhaul MBR handling (part 1):

<sys/bootblock.h>:
* Added definitions for the Master Boot Record (MBR) used by
a variety of systems (primarily i386), including the format
of the BIOS Parameter Block (BPB).
This information was cribbed from a variety of sources
including <sys/disklabel_mbr.h> which this is a superset of.

As part of this, some data structure elements and #defines
were renamed to be more "namespace friendly" and consistent
with other bootblocks and MBR documentation.
Update all uses of the old names to the new names.

<sys/disklabel_mbr.h>:
* Deprecated in favor of <sys/bootblock.h> (the latter is more
"host tool" friendly).

amd64 & i386:
* Renamed /usr/mdec/bootxx_dosfs to /usr/mdec/bootxx_msdos, to
be consistent with the naming convention of the msdosfs tools.

* Removed /usr/mdec/bootxx_ufs, as it's equivalent to bootxx_ffsv1
and it's confusing to have two functionally equivalent bootblocks,
especially given that "ufs" has multiple meanings (it could be
a synonym for "ffs", or the group of ffs/lfs/ext2fs file systems).

* Rework pbr.S (the first sector of bootxx_*):
+ Ensure that BPB (bytes 11..89) and the partition table
(bytes 446..509) do not contain code.
+ Add support for booting from FAT partitions if BOOT_FROM_FAT
is defined. (Only set for bootxx_msdos).
+ Remove "dummy" partition 3; if people want to installboot(8)
these to the start of the disk they can use fdisk(8) to
create a real MBR partition table...
+ Compile with TERSE_ERROR so it fits because of the above.
Whilst this is less user friendly, I feel it's important
to have a valid partition table and BPB in the MBR/PBR.

* Renamed /usr/mdec/biosboot to /usr/mdec/boot, to be consistent
with other platforms.

* Enable SUPPORT_DOSFS in /usr/mdec/boot (stage2), so that
we can boot off FAT partitions.

* Crank version of /usr/mdec/boot to 3.1, and fix some of the other
entries in the version file.

installboot(8) (i386):
* Read the existing MBR of the filesystem and retain the BIOS
Parameter Block (BPB) in bytes 11..89 and the MBR partition
table in bytes 446..509. (Previously installboot(8) would
trash those two sections of the MBR.)

mbrlabel(8):
* Use sys/lib/libkern/xlat_mbr_fstype.c instead of homegrown code
to map the MBR partition type to the NetBSD disklabel type.


Test built "make release" for i386, and new bootblocks verified to work
(even off FAT!).
 1.11  16-Apr-2003  dsl branches: 1.11.2;
Add code to parse V3.x bios disk information.
This should let NetBSD guarantee to tie together the bios disk numbers
with the physical hardware.
#defined out because I don't have a system with a bios that supports it.
 1.10  01-Feb-2003  dsl Change all .S files to use .code16 and .code32
Support 32bit addresses >64k as valid on bios calls.
Move stack for dosboot and biosboot to >64 so stack doesn't hit data.
Use disk sector number passed by mbr code to select default partition
(the mbr code doesn't do this yet).
NB only biosboot and dosboot have been tested so far.
(changes approved by christos and fvdl)
 1.9  07-Jul-2001  perry branches: 1.9.4;
b*()->mem*()
 1.8  30-Mar-1999  drochner branches: 1.8.22;
adapt to set_geometry change: we don't have to correct the geometry
anymore
 1.7  28-Mar-1999  fvdl Only use the total number of sectors information field from the EDD if
the bit is set that declares the geometry valid. The spec itself says
that this field isn't covered by the "geometry valid" bit, but at
least one BIOS implements it that way.
 1.6  12-Mar-1999  fvdl Clean up the BIOS disk matching code a bit (better naming, one structure
and sysctl to export to userland). Also, only use total number of sectors
given in the extended parameters if the physical chs geometry is
marked invalid. Hopefully fixes a problem where BIOSs would not correctly
fill in this field.
 1.5  11-Mar-1999  fvdl Declare nhd to be unsigned char, as we're only copying one byte to it.
From Matthias Drochner.
 1.4  08-Mar-1999  fvdl * query BIOS geometry information, possibly using the int 13 extensions.
* pass them on to the kernel
* print a message if the 2nd stage bootloader returns (i.e. fails)
instead of just hanging.
 1.3  28-Jan-1999  christos Minor changes to prototypes.
 1.2  27-Jan-1999  thorpej Use the MI <sys/disklabel_mbr.h>, not our own machine-dependent
definitions.
 1.1  17-Sep-1997  drochner branches: 1.1.2;
Function to collect geometry and partitioning information about the
BIOS-known disks in a "bootinfo" structure (still experimental).
 1.1.2.2  22-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.1.2.1  17-Sep-1997  thorpej file bootinfo_biosgeom.c was added on branch marc-pcmcia on 1997-09-22 06:31:25 +0000
 1.8.22.1  24-Aug-2001  nathanw Catch up with -current.
 1.9.4.2  07-Jul-2001  perry b*()->mem*()
 1.9.4.1  07-Jul-2001  perry file bootinfo_biosgeom.c was added on branch sommerfeld_i386mp_1 on 2001-07-07 22:57:58 +0000
 1.11.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.11.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.11.2.1  03-Aug-2004  skrll Sync with HEAD
 1.19.92.2  10-Jan-2011  jym Sync with HEAD
 1.19.92.1  24-Oct-2010  jym Sync with HEAD
 1.19.78.1  11-Mar-2010  yamt sync with head
 1.20.4.1  05-Mar-2011  rmind sync with head
 1.21.18.2  03-Dec-2017  jdolecek update from HEAD
 1.21.18.1  23-Jun-2013  tls resync from head
 1.21.8.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.22.18.1  21-Apr-2017  bouyer Sync with HEAD
 1.22.14.1  20-Mar-2017  pgoyette Sync with HEAD
 1.22.10.1  05-Feb-2017  skrll Sync with HEAD
 1.23.18.1  13-Aug-2019  martin Pull up following revision(s) (requested by manu in ticket #51):

sys/arch/i386/stand/lib/bootinfo_biosgeom.c: revision 1.24

Fix buffer overflow in BIOS disk geometry collect for bootinfo

This spares a boot-time panic on iMac with fusion drive, which
feature both a hard drive and a solid-state drive.
 1.23.14.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.23.6.1  13-Aug-2019  martin Pull up following revision(s) (requested by manu in ticket #1336):

sys/arch/i386/stand/lib/bootinfo_biosgeom.c: revision 1.24

Fix buffer overflow in BIOS disk geometry collect for bootinfo

This spares a boot-time panic on iMac with fusion drive, which
feature both a hard drive and a solid-state drive.

RSS XML Feed