History log of /openbsd-current/sys/arch/i386/include/biosvar.h
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.68 04-Aug-2019 kettenis

Cleanup the bios(4)/smbios(4) code a bit. Fix some KNF issues, reduce
differences between the i386 and amd64 versions of the code and
switch to using the standard C integer exact width integer types.

ok deraadt@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.67 23-Aug-2018 jsg

port the amd64 code for loading intel microcode on boot to i386
ok deraadt@ mlarkin@


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.66 20-Jun-2017 tom

Fix a couple of comment typos in amd64 and i386 biosvar.h


# 1.65 19-Jun-2017 deraadt

As early as possible, create a link /bsd.booted to the /bsd kernel we
presume we booted from. If you boot from another kernel, we cannot help
you later with hibernate, sorry -- The kernel does not get a useable
filename from the bootblocks.

In the bootblocks, detect a live hibernate signature and boot from
/bsd.booted instead.

with yasuoka, lots of discussion with mlarkin, ok tom


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.64 03-Sep-2015 deraadt

match amd64; bios_efi_info_t is required here as well, because acpidump
compiles on more than one platform.


Revision tags: OPENBSD_5_8_BASE
# 1.63 17-Jul-2015 mlarkin

Include executable mapping for BIOS32 pages. Fixes a problem where mappings
done in this region using PAE w/NX caused #PFs (as they lacked the exec
permission previously).

Also unmap the region when we're finished. No sense in leaving extra
executable regions lying around.

Fixes non-ACPI uniprocessor i386 machines that have NX/PAE (these would
previously panic in pcibiosattach).

ok deraadt@


# 1.62 12-Apr-2015 mlarkin

Bring PAE code back to life, in a different form. This diff (via bluhm then
to deraadt, then myself) brings the PAE pmap on i386 (not touched in any
significant way for years) closer to the current non-PAE pmap and allows
us to take a big next step toward better i386 W^X in the kernel (similar to
what we did a few months ago on amd64). Unlike the original PAE pmap, this
diff will not be supporting > 4GB physical memory on i386 - this effort is
specifically geared toward providing W^X (via NX) only.

There still seems to be a bug removing certain pmap entries when PAE is
enabled, so I'm leaving PAE mode disabled for the moment until we can
figure out what is going on, but with this diff in the tree hopefully
others can help.

The pmap functions now operate through function pointers, due to the need
to support both non-PAE and PAE forms. My unscientific testing showed
less than 0.3% (a third of a percent) slowdown with this approach during
a base build.

Discussed for months with guenther, kettenis, and deraadt.

ok kettenis@, deraadt@


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.61 02-Nov-2013 kettenis

Cleanup bios_oconsdev_t. Make sure you have a halfway recent bootloader
(at least BOOT 3.20 on amd64 and BOOT 3.18 on i386) or you'll risk losing
your serial console.

ok deraadt@


Revision tags: OPENBSD_5_4_BASE
# 1.60 23-Mar-2013 deraadt

refactor sys/param.h and machine/param.h. A lot of #ifdef _KERNEL is added
to keep definitions our of user space. The MD files now follow a consistant
order -- all namespace intrusion is at the tail can be cleaned up
independently. locore, bootblocks, and libkvm still see enough visibility to
build. Checked on 90% of platforms...


Revision tags: OPENBSD_5_3_BASE
# 1.59 09-Oct-2012 jsing

Allow boot(8) to pass information to the kernel, regarding the softraid
volume that it booted off.


Revision tags: OPENBSD_5_2_BASE
# 1.58 03-Jun-2012 kettenis

Add support for serial consoles at non-standard addresses. This implements
a new "machine comaddr" command that makes it possible to configure the
io port used to access the serial port. This can be used to use serial ports
on a puc(4) device as serial console.


Revision tags: OPENBSD_5_1_BASE
# 1.57 11-Jan-2012 jsing

Pass the DUID of the boot disk via bootduid instead of rootduid, since it
is the DUID that we booted from, which is not always going to be the same
as the DUID that we mount root on.


Revision tags: OPENBSD_5_0_BASE
# 1.56 26-Apr-2011 jsing

Make amd64/i386 boot(8) pass the DUID of the selected boot device to the
kernel so that it can use it to identify the root disk. This will be
needed in order to correctly boot from a softraid volume.

ok deraadt@ marco@ krw@


# 1.55 23-Mar-2011 pirofti

Normalize sentinel. Use _MACHINE_*_H_ and _<ARCH>_*_H_ properly and consitently.

Discussed and okay drahn@. Okay deraadt@.


# 1.54 14-Mar-2011 krw

Clamp BIOS io attempts to < 2 ^28 - 1 sectors (a.k.a. 128GB for
512-byte sectors) as some BIOSen get confused when we ask for sectors
higher up.

Uss u_int throughout the boot code to calculate sector addresses,
since 32 bits is enough to do 28 ^ 1 - 1 arithmetic. Add checks
for wraparound.

I can now install and boot from the 7th extended partition below
128GB.

Much feedback & guidance from deraadt@. Also from weingart@ on
BIOS io.

ok deraadt@ (less a couple of minor tweaks found in testing)


Revision tags: OPENBSD_4_9_BASE
# 1.53 22-Nov-2010 miod

Remove unused (and dummied) bios console routines.


Revision tags: OPENBSD_4_6_BASE OPENBSD_4_7_BASE OPENBSD_4_8_BASE
# 1.52 30-Apr-2009 dlg

add support for passing db_console from the bootloader to the kernel.

based on the same change in amd64.


Revision tags: OPENBSD_4_5_BASE
# 1.51 20-Jan-2009 mlarkin

Install ACPI S3 resume trampoline code in a lowmem page. First part
of ACPI S3 suspend/resume support. This is for i386.

Help/comments from art, toby, marco, jordan, kurt
ok marco@, kurt@


# 1.50 01-Sep-2008 deraadt

Avoid #pragma pack(1) and unify everything towards using __packed.
This requires that structures defined within __packed structures must
independently request that they themselves become __packed, too.
worked on with toby
CVS: ----------------------------------------------------------------------


Revision tags: OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.49 05-Dec-2007 deraadt

Hang acpi(4) below bios(4) instead of mainbus(4). This lets us move acpi(4)
before pcibios(4), and then.... if acpi(4) attaches, skip pcibios(4) since
it messes the machines up. Fixes claudio's HP dl320 G5, and almost assuredly
others.
ok kettenis


Revision tags: OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE
# 1.48 20-May-2006 deraadt

add bios_bootmac_t and BOOTARG_BOOTMAC


# 1.47 09-May-2006 tom

0x0006 is not a good value for a bit flag, so change it to 0x0008.

Spotted by kettenis@

ok mickey@


# 1.46 08-May-2006 gwk

Add smbios support for i386 and amd64, fix ipmi to use this new functionallity,
hook up some sysctls to add system vendor/product/version and UUID reporting.

"get it in" deraadt@


Revision tags: OPENBSD_3_9_BASE
# 1.45 22-Nov-2005 mickey

bios gives 32bit units not paddr/psize; no func change


Revision tags: OPENBSD_3_6_BASE OPENBSD_3_7_BASE OPENBSD_3_8_BASE
# 1.44 23-Jun-2004 tom

Enter cdboot, a CD-specific second-stage bootrap.

Testing krw@ and todd@, thanks.

assistance, testing and ok weingart@


# 1.43 13-Jun-2004 niklas

debranch SMP, have fun


Revision tags: OPENBSD_3_5_BASE SMP_SYNC_A SMP_SYNC_B
# 1.42 27-Nov-2003 espie

This var is volatile. gcc3 complains if the CV qualifiers don't match.
ok toby, mickey


Revision tags: OPENBSD_3_4_BASE
# 1.41 03-Jun-2003 mickey

three four kill


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE UBC_SYNC_A UBC_SYNC_B
# 1.40 14-Mar-2002 millert

First round of __P removal in sys


# 1.39 21-Feb-2002 tdeval

Typo. Ok mickey@


Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.38 28-Feb-2001 mickey

branches: 1.38.6;
scan the isa hole for `optional rom's.
found proms are excluded from the iomem_ex such
that devices cannot map on the same memory.
next step would be for pcic and similar devices
to choose memory windows from unused spots
in the iomem_ex.
currently prom checksum test is not enforced
due to broken stinkpad bioses, which do not
pass the checksum test.
testing from aaron@, fgsch@, fries@, millert@


Revision tags: OPENBSD_2_8_BASE
# 1.37 17-Aug-2000 mickey

pcibios tells us everything, no bios_pciinfo


# 1.36 17-Aug-2000 mickey

pcibios0 at bios0 flags 0x0000
this is now a real device, which looks in flags for disabling
address, interrupt or bus fixup.
bios0's flags are to disable bios32 and pcibios probing.
since boot_config support editing flags, it's posible
to adjust pcibios functionality in the generic kernel
upon boot time. man is coming.


Revision tags: OPENBSD_2_7_BASE
# 1.35 26-Mar-2000 mickey

from netbsd: pci interrupt routing code.
also, change a few pcidevs names to match netbsd (and more descriptive).
tested on a bunch of laptops, helps resolving 'pin X unmapped'
problems for (usually) usb and cardbus cntrollers.


# 1.34 05-Mar-2000 mickey

export bios_pciinfo for the whole _KERNEL, there will be more files to use it


# 1.33 18-Feb-2000 mickey

full support for a serial console.
iface addition: pass serial speed from /boot.
tested on 4 /boot+kernel permutations.
also, niklas@ said he likes it
bugs: any printfs before cninit() will go to the
default console, which is mon/kbd, but are usually
only sorts of debugging messages (like bios_memmap load).


Revision tags: SMP_BASE
# 1.32 03-Feb-2000 mickey

branches: 1.32.2;
remove extraneous spaces and tabs


Revision tags: kame_19991208
# 1.31 26-Oct-1999 mickey

modify bootapiver chekups to use bitwise operations.
factor out /boot options parser from biosattach().
add logic to warn about ancient /boots.
cleanup vanishing cruft.
@niklas ok


Revision tags: OPENBSD_2_6_BASE
# 1.30 25-Aug-1999 mickey

give better support to the bios memory maps.
provide memory maps editing through the machine memory command.
rearrange probing in machdep, so it provides less output,
also giving a shot for apm to fix the memory maps.
changes to kernel are minimal, only that is required due
to the api version bits addition and such cosmetic changes.
tested on all critical kernel,boot combinations; niklas@ ok


# 1.29 09-May-1999 mickey

provide suport for an apm data segemnt in the lower memory bios
data segment area, also calculate the apm segment lenghts.
niklas@ - ok


Revision tags: OPENBSD_2_4_BASE OPENBSD_2_5_BASE
# 1.28 08-Jun-1998 mickey

consdev to come


Revision tags: OPENBSD_2_3_BASE
# 1.27 24-Feb-1998 weingart

First commit of /boot changes/fixes. More to come.
Add BIOS PCI probe stuff.


# 1.26 09-Jan-1998 niklas

Make booting new kernels with old bootblocks moer robust


Revision tags: OPENBSD_2_2_BASE
# 1.25 27-Oct-1997 niklas

A flag added to diskinfo used by the kernel to mark devices already mapped
to BSD dittos.


# 1.24 25-Oct-1997 mickey

define fixed bootarg vector offset, and max len


# 1.23 24-Oct-1997 mickey

map a piece of memory after the msgbuf and copy bootargv there.
pass cksumlen argument, sysctl it
mostly by niklas
me just did slite editing.


# 1.22 24-Oct-1997 mickey

fix the case when data/code segment is not in the ISA memory
hole, so map 'em separatelly (or together if they intersect)
and use that mapped region for segment creations...
must help on some machines to avoid weird apm errors


# 1.21 22-Oct-1997 mickey

support new libsa


# 1.20 20-Oct-1997 mickey

get ready for the fix in memprobe


# 1.19 18-Oct-1997 weingart

Copy in bios_diskinfo array from /boot space.
Add length field for checksum to same.
Start of making /boot deduce bsd dev_t for
all BIOS drives.


# 1.18 17-Oct-1997 weingart

Cleanup, make it all compile.
Move APM stuff to apmprobe.c


# 1.17 17-Oct-1997 weingart

Use BIOS to probe for memory map.
Probe for BIOS supported disks.
Use BIOS to get geometry for supported disks.

All in preparation to passing the whole thing
to the kernel.


# 1.16 14-Oct-1997 weingart

Support for bios memory maps.


# 1.15 12-Oct-1997 mickey

reserve void* at the of BIOS_vars for future use


# 1.14 03-Oct-1997 deraadt

make bios_geometry unsigned to avoid sign extension


# 1.13 29-Sep-1997 mickey

apm0 at bios0
configs will be updated


# 1.12 21-Sep-1997 mickey

branch the bios tree inside the machdep


# 1.11 17-Sep-1997 mickey

pass cnvmem,extmem the old way they were....
don't put 'em in biosvars


# 1.10 04-Sep-1997 mickey

support boot API version number


# 1.9 03-Sep-1997 weingart

2nd part of pretty "machine diskinfo"


# 1.8 22-Aug-1997 mickey

use words for apm functions
define struct of bios/boot vars to be passed to kernel


# 1.7 12-Aug-1997 mickey

call BIOS inline (add struct EDD_cb into biosvar.h)


# 1.6 07-Aug-1997 mickey

right DOINT for C


# 1.5 05-Aug-1997 mickey

kentry proto is in the libsa.h
change var name


# 1.4 02-Aug-1997 mickey

change vars names, add attach_args


# 1.3 28-Jul-1997 mickey

adopt for assym.h


# 1.2 27-Jul-1997 mickey

document bpb media types


# 1.1 17-Jul-1997 mickey

add BIOS definitios/etc


# 1.67 23-Aug-2018 jsg

port the amd64 code for loading intel microcode on boot to i386
ok deraadt@ mlarkin@


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.66 20-Jun-2017 tom

Fix a couple of comment typos in amd64 and i386 biosvar.h


# 1.65 19-Jun-2017 deraadt

As early as possible, create a link /bsd.booted to the /bsd kernel we
presume we booted from. If you boot from another kernel, we cannot help
you later with hibernate, sorry -- The kernel does not get a useable
filename from the bootblocks.

In the bootblocks, detect a live hibernate signature and boot from
/bsd.booted instead.

with yasuoka, lots of discussion with mlarkin, ok tom


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.64 03-Sep-2015 deraadt

match amd64; bios_efi_info_t is required here as well, because acpidump
compiles on more than one platform.


Revision tags: OPENBSD_5_8_BASE
# 1.63 17-Jul-2015 mlarkin

Include executable mapping for BIOS32 pages. Fixes a problem where mappings
done in this region using PAE w/NX caused #PFs (as they lacked the exec
permission previously).

Also unmap the region when we're finished. No sense in leaving extra
executable regions lying around.

Fixes non-ACPI uniprocessor i386 machines that have NX/PAE (these would
previously panic in pcibiosattach).

ok deraadt@


# 1.62 12-Apr-2015 mlarkin

Bring PAE code back to life, in a different form. This diff (via bluhm then
to deraadt, then myself) brings the PAE pmap on i386 (not touched in any
significant way for years) closer to the current non-PAE pmap and allows
us to take a big next step toward better i386 W^X in the kernel (similar to
what we did a few months ago on amd64). Unlike the original PAE pmap, this
diff will not be supporting > 4GB physical memory on i386 - this effort is
specifically geared toward providing W^X (via NX) only.

There still seems to be a bug removing certain pmap entries when PAE is
enabled, so I'm leaving PAE mode disabled for the moment until we can
figure out what is going on, but with this diff in the tree hopefully
others can help.

The pmap functions now operate through function pointers, due to the need
to support both non-PAE and PAE forms. My unscientific testing showed
less than 0.3% (a third of a percent) slowdown with this approach during
a base build.

Discussed for months with guenther, kettenis, and deraadt.

ok kettenis@, deraadt@


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.61 02-Nov-2013 kettenis

Cleanup bios_oconsdev_t. Make sure you have a halfway recent bootloader
(at least BOOT 3.20 on amd64 and BOOT 3.18 on i386) or you'll risk losing
your serial console.

ok deraadt@


Revision tags: OPENBSD_5_4_BASE
# 1.60 23-Mar-2013 deraadt

refactor sys/param.h and machine/param.h. A lot of #ifdef _KERNEL is added
to keep definitions our of user space. The MD files now follow a consistant
order -- all namespace intrusion is at the tail can be cleaned up
independently. locore, bootblocks, and libkvm still see enough visibility to
build. Checked on 90% of platforms...


Revision tags: OPENBSD_5_3_BASE
# 1.59 09-Oct-2012 jsing

Allow boot(8) to pass information to the kernel, regarding the softraid
volume that it booted off.


Revision tags: OPENBSD_5_2_BASE
# 1.58 03-Jun-2012 kettenis

Add support for serial consoles at non-standard addresses. This implements
a new "machine comaddr" command that makes it possible to configure the
io port used to access the serial port. This can be used to use serial ports
on a puc(4) device as serial console.


Revision tags: OPENBSD_5_1_BASE
# 1.57 11-Jan-2012 jsing

Pass the DUID of the boot disk via bootduid instead of rootduid, since it
is the DUID that we booted from, which is not always going to be the same
as the DUID that we mount root on.


Revision tags: OPENBSD_5_0_BASE
# 1.56 26-Apr-2011 jsing

Make amd64/i386 boot(8) pass the DUID of the selected boot device to the
kernel so that it can use it to identify the root disk. This will be
needed in order to correctly boot from a softraid volume.

ok deraadt@ marco@ krw@


# 1.55 23-Mar-2011 pirofti

Normalize sentinel. Use _MACHINE_*_H_ and _<ARCH>_*_H_ properly and consitently.

Discussed and okay drahn@. Okay deraadt@.


# 1.54 14-Mar-2011 krw

Clamp BIOS io attempts to < 2 ^28 - 1 sectors (a.k.a. 128GB for
512-byte sectors) as some BIOSen get confused when we ask for sectors
higher up.

Uss u_int throughout the boot code to calculate sector addresses,
since 32 bits is enough to do 28 ^ 1 - 1 arithmetic. Add checks
for wraparound.

I can now install and boot from the 7th extended partition below
128GB.

Much feedback & guidance from deraadt@. Also from weingart@ on
BIOS io.

ok deraadt@ (less a couple of minor tweaks found in testing)


Revision tags: OPENBSD_4_9_BASE
# 1.53 22-Nov-2010 miod

Remove unused (and dummied) bios console routines.


Revision tags: OPENBSD_4_6_BASE OPENBSD_4_7_BASE OPENBSD_4_8_BASE
# 1.52 30-Apr-2009 dlg

add support for passing db_console from the bootloader to the kernel.

based on the same change in amd64.


Revision tags: OPENBSD_4_5_BASE
# 1.51 20-Jan-2009 mlarkin

Install ACPI S3 resume trampoline code in a lowmem page. First part
of ACPI S3 suspend/resume support. This is for i386.

Help/comments from art, toby, marco, jordan, kurt
ok marco@, kurt@


# 1.50 01-Sep-2008 deraadt

Avoid #pragma pack(1) and unify everything towards using __packed.
This requires that structures defined within __packed structures must
independently request that they themselves become __packed, too.
worked on with toby
CVS: ----------------------------------------------------------------------


Revision tags: OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.49 05-Dec-2007 deraadt

Hang acpi(4) below bios(4) instead of mainbus(4). This lets us move acpi(4)
before pcibios(4), and then.... if acpi(4) attaches, skip pcibios(4) since
it messes the machines up. Fixes claudio's HP dl320 G5, and almost assuredly
others.
ok kettenis


Revision tags: OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE
# 1.48 20-May-2006 deraadt

add bios_bootmac_t and BOOTARG_BOOTMAC


# 1.47 09-May-2006 tom

0x0006 is not a good value for a bit flag, so change it to 0x0008.

Spotted by kettenis@

ok mickey@


# 1.46 08-May-2006 gwk

Add smbios support for i386 and amd64, fix ipmi to use this new functionallity,
hook up some sysctls to add system vendor/product/version and UUID reporting.

"get it in" deraadt@


Revision tags: OPENBSD_3_9_BASE
# 1.45 22-Nov-2005 mickey

bios gives 32bit units not paddr/psize; no func change


Revision tags: OPENBSD_3_6_BASE OPENBSD_3_7_BASE OPENBSD_3_8_BASE
# 1.44 23-Jun-2004 tom

Enter cdboot, a CD-specific second-stage bootrap.

Testing krw@ and todd@, thanks.

assistance, testing and ok weingart@


# 1.43 13-Jun-2004 niklas

debranch SMP, have fun


Revision tags: OPENBSD_3_5_BASE SMP_SYNC_A SMP_SYNC_B
# 1.42 27-Nov-2003 espie

This var is volatile. gcc3 complains if the CV qualifiers don't match.
ok toby, mickey


Revision tags: OPENBSD_3_4_BASE
# 1.41 03-Jun-2003 mickey

three four kill


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE UBC_SYNC_A UBC_SYNC_B
# 1.40 14-Mar-2002 millert

First round of __P removal in sys


# 1.39 21-Feb-2002 tdeval

Typo. Ok mickey@


Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.38 28-Feb-2001 mickey

branches: 1.38.6;
scan the isa hole for `optional rom's.
found proms are excluded from the iomem_ex such
that devices cannot map on the same memory.
next step would be for pcic and similar devices
to choose memory windows from unused spots
in the iomem_ex.
currently prom checksum test is not enforced
due to broken stinkpad bioses, which do not
pass the checksum test.
testing from aaron@, fgsch@, fries@, millert@


Revision tags: OPENBSD_2_8_BASE
# 1.37 17-Aug-2000 mickey

pcibios tells us everything, no bios_pciinfo


# 1.36 17-Aug-2000 mickey

pcibios0 at bios0 flags 0x0000
this is now a real device, which looks in flags for disabling
address, interrupt or bus fixup.
bios0's flags are to disable bios32 and pcibios probing.
since boot_config support editing flags, it's posible
to adjust pcibios functionality in the generic kernel
upon boot time. man is coming.


Revision tags: OPENBSD_2_7_BASE
# 1.35 26-Mar-2000 mickey

from netbsd: pci interrupt routing code.
also, change a few pcidevs names to match netbsd (and more descriptive).
tested on a bunch of laptops, helps resolving 'pin X unmapped'
problems for (usually) usb and cardbus cntrollers.


# 1.34 05-Mar-2000 mickey

export bios_pciinfo for the whole _KERNEL, there will be more files to use it


# 1.33 18-Feb-2000 mickey

full support for a serial console.
iface addition: pass serial speed from /boot.
tested on 4 /boot+kernel permutations.
also, niklas@ said he likes it
bugs: any printfs before cninit() will go to the
default console, which is mon/kbd, but are usually
only sorts of debugging messages (like bios_memmap load).


Revision tags: SMP_BASE
# 1.32 03-Feb-2000 mickey

branches: 1.32.2;
remove extraneous spaces and tabs


Revision tags: kame_19991208
# 1.31 26-Oct-1999 mickey

modify bootapiver chekups to use bitwise operations.
factor out /boot options parser from biosattach().
add logic to warn about ancient /boots.
cleanup vanishing cruft.
@niklas ok


Revision tags: OPENBSD_2_6_BASE
# 1.30 25-Aug-1999 mickey

give better support to the bios memory maps.
provide memory maps editing through the machine memory command.
rearrange probing in machdep, so it provides less output,
also giving a shot for apm to fix the memory maps.
changes to kernel are minimal, only that is required due
to the api version bits addition and such cosmetic changes.
tested on all critical kernel,boot combinations; niklas@ ok


# 1.29 09-May-1999 mickey

provide suport for an apm data segemnt in the lower memory bios
data segment area, also calculate the apm segment lenghts.
niklas@ - ok


Revision tags: OPENBSD_2_4_BASE OPENBSD_2_5_BASE
# 1.28 08-Jun-1998 mickey

consdev to come


Revision tags: OPENBSD_2_3_BASE
# 1.27 24-Feb-1998 weingart

First commit of /boot changes/fixes. More to come.
Add BIOS PCI probe stuff.


# 1.26 09-Jan-1998 niklas

Make booting new kernels with old bootblocks moer robust


Revision tags: OPENBSD_2_2_BASE
# 1.25 27-Oct-1997 niklas

A flag added to diskinfo used by the kernel to mark devices already mapped
to BSD dittos.


# 1.24 25-Oct-1997 mickey

define fixed bootarg vector offset, and max len


# 1.23 24-Oct-1997 mickey

map a piece of memory after the msgbuf and copy bootargv there.
pass cksumlen argument, sysctl it
mostly by niklas
me just did slite editing.


# 1.22 24-Oct-1997 mickey

fix the case when data/code segment is not in the ISA memory
hole, so map 'em separatelly (or together if they intersect)
and use that mapped region for segment creations...
must help on some machines to avoid weird apm errors


# 1.21 22-Oct-1997 mickey

support new libsa


# 1.20 20-Oct-1997 mickey

get ready for the fix in memprobe


# 1.19 18-Oct-1997 weingart

Copy in bios_diskinfo array from /boot space.
Add length field for checksum to same.
Start of making /boot deduce bsd dev_t for
all BIOS drives.


# 1.18 17-Oct-1997 weingart

Cleanup, make it all compile.
Move APM stuff to apmprobe.c


# 1.17 17-Oct-1997 weingart

Use BIOS to probe for memory map.
Probe for BIOS supported disks.
Use BIOS to get geometry for supported disks.

All in preparation to passing the whole thing
to the kernel.


# 1.16 14-Oct-1997 weingart

Support for bios memory maps.


# 1.15 12-Oct-1997 mickey

reserve void* at the of BIOS_vars for future use


# 1.14 03-Oct-1997 deraadt

make bios_geometry unsigned to avoid sign extension


# 1.13 29-Sep-1997 mickey

apm0 at bios0
configs will be updated


# 1.12 21-Sep-1997 mickey

branch the bios tree inside the machdep


# 1.11 17-Sep-1997 mickey

pass cnvmem,extmem the old way they were....
don't put 'em in biosvars


# 1.10 04-Sep-1997 mickey

support boot API version number


# 1.9 03-Sep-1997 weingart

2nd part of pretty "machine diskinfo"


# 1.8 22-Aug-1997 mickey

use words for apm functions
define struct of bios/boot vars to be passed to kernel


# 1.7 12-Aug-1997 mickey

call BIOS inline (add struct EDD_cb into biosvar.h)


# 1.6 07-Aug-1997 mickey

right DOINT for C


# 1.5 05-Aug-1997 mickey

kentry proto is in the libsa.h
change var name


# 1.4 02-Aug-1997 mickey

change vars names, add attach_args


# 1.3 28-Jul-1997 mickey

adopt for assym.h


# 1.2 27-Jul-1997 mickey

document bpb media types


# 1.1 17-Jul-1997 mickey

add BIOS definitios/etc


Revision tags: OPENBSD_6_2_BASE
# 1.66 20-Jun-2017 tom

Fix a couple of comment typos in amd64 and i386 biosvar.h


# 1.65 19-Jun-2017 deraadt

As early as possible, create a link /bsd.booted to the /bsd kernel we
presume we booted from. If you boot from another kernel, we cannot help
you later with hibernate, sorry -- The kernel does not get a useable
filename from the bootblocks.

In the bootblocks, detect a live hibernate signature and boot from
/bsd.booted instead.

with yasuoka, lots of discussion with mlarkin, ok tom


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.64 03-Sep-2015 deraadt

match amd64; bios_efi_info_t is required here as well, because acpidump
compiles on more than one platform.


Revision tags: OPENBSD_5_8_BASE
# 1.63 17-Jul-2015 mlarkin

Include executable mapping for BIOS32 pages. Fixes a problem where mappings
done in this region using PAE w/NX caused #PFs (as they lacked the exec
permission previously).

Also unmap the region when we're finished. No sense in leaving extra
executable regions lying around.

Fixes non-ACPI uniprocessor i386 machines that have NX/PAE (these would
previously panic in pcibiosattach).

ok deraadt@


# 1.62 12-Apr-2015 mlarkin

Bring PAE code back to life, in a different form. This diff (via bluhm then
to deraadt, then myself) brings the PAE pmap on i386 (not touched in any
significant way for years) closer to the current non-PAE pmap and allows
us to take a big next step toward better i386 W^X in the kernel (similar to
what we did a few months ago on amd64). Unlike the original PAE pmap, this
diff will not be supporting > 4GB physical memory on i386 - this effort is
specifically geared toward providing W^X (via NX) only.

There still seems to be a bug removing certain pmap entries when PAE is
enabled, so I'm leaving PAE mode disabled for the moment until we can
figure out what is going on, but with this diff in the tree hopefully
others can help.

The pmap functions now operate through function pointers, due to the need
to support both non-PAE and PAE forms. My unscientific testing showed
less than 0.3% (a third of a percent) slowdown with this approach during
a base build.

Discussed for months with guenther, kettenis, and deraadt.

ok kettenis@, deraadt@


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.61 02-Nov-2013 kettenis

Cleanup bios_oconsdev_t. Make sure you have a halfway recent bootloader
(at least BOOT 3.20 on amd64 and BOOT 3.18 on i386) or you'll risk losing
your serial console.

ok deraadt@


Revision tags: OPENBSD_5_4_BASE
# 1.60 23-Mar-2013 deraadt

refactor sys/param.h and machine/param.h. A lot of #ifdef _KERNEL is added
to keep definitions our of user space. The MD files now follow a consistant
order -- all namespace intrusion is at the tail can be cleaned up
independently. locore, bootblocks, and libkvm still see enough visibility to
build. Checked on 90% of platforms...


Revision tags: OPENBSD_5_3_BASE
# 1.59 09-Oct-2012 jsing

Allow boot(8) to pass information to the kernel, regarding the softraid
volume that it booted off.


Revision tags: OPENBSD_5_2_BASE
# 1.58 03-Jun-2012 kettenis

Add support for serial consoles at non-standard addresses. This implements
a new "machine comaddr" command that makes it possible to configure the
io port used to access the serial port. This can be used to use serial ports
on a puc(4) device as serial console.


Revision tags: OPENBSD_5_1_BASE
# 1.57 11-Jan-2012 jsing

Pass the DUID of the boot disk via bootduid instead of rootduid, since it
is the DUID that we booted from, which is not always going to be the same
as the DUID that we mount root on.


Revision tags: OPENBSD_5_0_BASE
# 1.56 26-Apr-2011 jsing

Make amd64/i386 boot(8) pass the DUID of the selected boot device to the
kernel so that it can use it to identify the root disk. This will be
needed in order to correctly boot from a softraid volume.

ok deraadt@ marco@ krw@


# 1.55 23-Mar-2011 pirofti

Normalize sentinel. Use _MACHINE_*_H_ and _<ARCH>_*_H_ properly and consitently.

Discussed and okay drahn@. Okay deraadt@.


# 1.54 14-Mar-2011 krw

Clamp BIOS io attempts to < 2 ^28 - 1 sectors (a.k.a. 128GB for
512-byte sectors) as some BIOSen get confused when we ask for sectors
higher up.

Uss u_int throughout the boot code to calculate sector addresses,
since 32 bits is enough to do 28 ^ 1 - 1 arithmetic. Add checks
for wraparound.

I can now install and boot from the 7th extended partition below
128GB.

Much feedback & guidance from deraadt@. Also from weingart@ on
BIOS io.

ok deraadt@ (less a couple of minor tweaks found in testing)


Revision tags: OPENBSD_4_9_BASE
# 1.53 22-Nov-2010 miod

Remove unused (and dummied) bios console routines.


Revision tags: OPENBSD_4_6_BASE OPENBSD_4_7_BASE OPENBSD_4_8_BASE
# 1.52 30-Apr-2009 dlg

add support for passing db_console from the bootloader to the kernel.

based on the same change in amd64.


Revision tags: OPENBSD_4_5_BASE
# 1.51 20-Jan-2009 mlarkin

Install ACPI S3 resume trampoline code in a lowmem page. First part
of ACPI S3 suspend/resume support. This is for i386.

Help/comments from art, toby, marco, jordan, kurt
ok marco@, kurt@


# 1.50 01-Sep-2008 deraadt

Avoid #pragma pack(1) and unify everything towards using __packed.
This requires that structures defined within __packed structures must
independently request that they themselves become __packed, too.
worked on with toby
CVS: ----------------------------------------------------------------------


Revision tags: OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.49 05-Dec-2007 deraadt

Hang acpi(4) below bios(4) instead of mainbus(4). This lets us move acpi(4)
before pcibios(4), and then.... if acpi(4) attaches, skip pcibios(4) since
it messes the machines up. Fixes claudio's HP dl320 G5, and almost assuredly
others.
ok kettenis


Revision tags: OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE
# 1.48 20-May-2006 deraadt

add bios_bootmac_t and BOOTARG_BOOTMAC


# 1.47 09-May-2006 tom

0x0006 is not a good value for a bit flag, so change it to 0x0008.

Spotted by kettenis@

ok mickey@


# 1.46 08-May-2006 gwk

Add smbios support for i386 and amd64, fix ipmi to use this new functionallity,
hook up some sysctls to add system vendor/product/version and UUID reporting.

"get it in" deraadt@


Revision tags: OPENBSD_3_9_BASE
# 1.45 22-Nov-2005 mickey

bios gives 32bit units not paddr/psize; no func change


Revision tags: OPENBSD_3_6_BASE OPENBSD_3_7_BASE OPENBSD_3_8_BASE
# 1.44 23-Jun-2004 tom

Enter cdboot, a CD-specific second-stage bootrap.

Testing krw@ and todd@, thanks.

assistance, testing and ok weingart@


# 1.43 13-Jun-2004 niklas

debranch SMP, have fun


Revision tags: OPENBSD_3_5_BASE SMP_SYNC_A SMP_SYNC_B
# 1.42 27-Nov-2003 espie

This var is volatile. gcc3 complains if the CV qualifiers don't match.
ok toby, mickey


Revision tags: OPENBSD_3_4_BASE
# 1.41 03-Jun-2003 mickey

three four kill


Revision tags: OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE UBC_SYNC_A UBC_SYNC_B
# 1.40 14-Mar-2002 millert

First round of __P removal in sys


# 1.39 21-Feb-2002 tdeval

Typo. Ok mickey@


Revision tags: OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.38 28-Feb-2001 mickey

branches: 1.38.6;
scan the isa hole for `optional rom's.
found proms are excluded from the iomem_ex such
that devices cannot map on the same memory.
next step would be for pcic and similar devices
to choose memory windows from unused spots
in the iomem_ex.
currently prom checksum test is not enforced
due to broken stinkpad bioses, which do not
pass the checksum test.
testing from aaron@, fgsch@, fries@, millert@


Revision tags: OPENBSD_2_8_BASE
# 1.37 17-Aug-2000 mickey

pcibios tells us everything, no bios_pciinfo


# 1.36 17-Aug-2000 mickey

pcibios0 at bios0 flags 0x0000
this is now a real device, which looks in flags for disabling
address, interrupt or bus fixup.
bios0's flags are to disable bios32 and pcibios probing.
since boot_config support editing flags, it's posible
to adjust pcibios functionality in the generic kernel
upon boot time. man is coming.


Revision tags: OPENBSD_2_7_BASE
# 1.35 26-Mar-2000 mickey

from netbsd: pci interrupt routing code.
also, change a few pcidevs names to match netbsd (and more descriptive).
tested on a bunch of laptops, helps resolving 'pin X unmapped'
problems for (usually) usb and cardbus cntrollers.


# 1.34 05-Mar-2000 mickey

export bios_pciinfo for the whole _KERNEL, there will be more files to use it


# 1.33 18-Feb-2000 mickey

full support for a serial console.
iface addition: pass serial speed from /boot.
tested on 4 /boot+kernel permutations.
also, niklas@ said he likes it
bugs: any printfs before cninit() will go to the
default console, which is mon/kbd, but are usually
only sorts of debugging messages (like bios_memmap load).


Revision tags: SMP_BASE
# 1.32 03-Feb-2000 mickey

branches: 1.32.2;
remove extraneous spaces and tabs


Revision tags: kame_19991208
# 1.31 26-Oct-1999 mickey

modify bootapiver chekups to use bitwise operations.
factor out /boot options parser from biosattach().
add logic to warn about ancient /boots.
cleanup vanishing cruft.
@niklas ok


Revision tags: OPENBSD_2_6_BASE
# 1.30 25-Aug-1999 mickey

give better support to the bios memory maps.
provide memory maps editing through the machine memory command.
rearrange probing in machdep, so it provides less output,
also giving a shot for apm to fix the memory maps.
changes to kernel are minimal, only that is required due
to the api version bits addition and such cosmetic changes.
tested on all critical kernel,boot combinations; niklas@ ok


# 1.29 09-May-1999 mickey

provide suport for an apm data segemnt in the lower memory bios
data segment area, also calculate the apm segment lenghts.
niklas@ - ok


Revision tags: OPENBSD_2_4_BASE OPENBSD_2_5_BASE
# 1.28 08-Jun-1998 mickey

consdev to come


Revision tags: OPENBSD_2_3_BASE
# 1.27 24-Feb-1998 weingart

First commit of /boot changes/fixes. More to come.
Add BIOS PCI probe stuff.


# 1.26 09-Jan-1998 niklas

Make booting new kernels with old bootblocks moer robust


Revision tags: OPENBSD_2_2_BASE
# 1.25 27-Oct-1997 niklas

A flag added to diskinfo used by the kernel to mark devices already mapped
to BSD dittos.


# 1.24 25-Oct-1997 mickey

define fixed bootarg vector offset, and max len


# 1.23 24-Oct-1997 mickey

map a piece of memory after the msgbuf and copy bootargv there.
pass cksumlen argument, sysctl it
mostly by niklas
me just did slite editing.


# 1.22 24-Oct-1997 mickey

fix the case when data/code segment is not in the ISA memory
hole, so map 'em separatelly (or together if they intersect)
and use that mapped region for segment creations...
must help on some machines to avoid weird apm errors


# 1.21 22-Oct-1997 mickey

support new libsa


# 1.20 20-Oct-1997 mickey

get ready for the fix in memprobe


# 1.19 18-Oct-1997 weingart

Copy in bios_diskinfo array from /boot space.
Add length field for checksum to same.
Start of making /boot deduce bsd dev_t for
all BIOS drives.


# 1.18 17-Oct-1997 weingart

Cleanup, make it all compile.
Move APM stuff to apmprobe.c


# 1.17 17-Oct-1997 weingart

Use BIOS to probe for memory map.
Probe for BIOS supported disks.
Use BIOS to get geometry for supported disks.

All in preparation to passing the whole thing
to the kernel.


# 1.16 14-Oct-1997 weingart

Support for bios memory maps.


# 1.15 12-Oct-1997 mickey

reserve void* at the of BIOS_vars for future use


# 1.14 03-Oct-1997 deraadt

make bios_geometry unsigned to avoid sign extension


# 1.13 29-Sep-1997 mickey

apm0 at bios0
configs will be updated


# 1.12 21-Sep-1997 mickey

branch the bios tree inside the machdep


# 1.11 17-Sep-1997 mickey

pass cnvmem,extmem the old way they were....
don't put 'em in biosvars


# 1.10 04-Sep-1997 mickey

support boot API version number


# 1.9 03-Sep-1997 weingart

2nd part of pretty "machine diskinfo"


# 1.8 22-Aug-1997 mickey

use words for apm functions
define struct of bios/boot vars to be passed to kernel


# 1.7 12-Aug-1997 mickey

call BIOS inline (add struct EDD_cb into biosvar.h)


# 1.6 07-Aug-1997 mickey

right DOINT for C


# 1.5 05-Aug-1997 mickey

kentry proto is in the libsa.h
change var name


# 1.4 02-Aug-1997 mickey

change vars names, add attach_args


# 1.3 28-Jul-1997 mickey

adopt for assym.h


# 1.2 27-Jul-1997 mickey

document bpb media types


# 1.1 17-Jul-1997 mickey

add BIOS definitios/etc