Home | History | Annotate | Download | only in include
History log of /src/sys/arch/x86/include/bootinfo.h
RevisionDateAuthorComments
 1.32  30-Apr-2025  imil Introduce pvh_boot boolean to identify the real hypervisor when booting in PVH
mode.

As of now, sys/arch/x86/x86/identcpu.c / identify_hypervisor() returns in the
case of vm_guest being VM_GUEST_GENPVH, yet this VM type is not an actual
hypervisor but an information recorded in locore.S to drive boot method.
We need to investigate what type of hypervisor is really running the VM in
order to apply specifics, so instead of relying on vm_guest_is_pvh() which only
checks for VM_GUEST_XENPVH || VM_GUEST_GENPVH, pvh_boot informs on the boot
method while allowing to identify the real hypervisor.

Idea ok'd by bouyer@, tested on Xen domU, Xen dom0 with GENERIC PVH and
qemu GENERIC PVH boot.
 1.31  20-Aug-2022  riastradh x86/bootinfo.h: Add include guard.
 1.30  21-Jun-2019  nonaka PR/54147: Increase BOOTINFO_MAXSIZE to 16Kib.

Some systems require a larger bootinfo size for memory descriptors.
 1.29  13-Apr-2018  nonaka branches: 1.29.2;
x86: Increase BOOTINFO_MAXSIZE to 8Kib.

Proposed on port-i386 and port-amd64 with no objections:
http://mail-index.netbsd.org/port-i386/2018/04/11/msg003692.html
http://mail-index.netbsd.org/port-amd64/2018/04/11/msg002697.html
 1.28  09-Nov-2017  christos branches: 1.28.2;
add "prekern" to the string list.
 1.27  07-Oct-2017  maxv Add a new option in libsa, to load dynamic binaries. A separate function
is used, and it does not break in any way the generic static loader. Then,
add a new "pkboot" command in the x86 bootloader, which boots a
GENERIC_KASLR kernel via the prekern. (See thread on tech-kern@.)
 1.26  14-Feb-2017  nonaka branches: 1.26.6;
x86: add e820 memory type.
 1.25  24-Jan-2017  nonaka Initial commit of native amd64 EFI boot loader.
 1.24  28-Jan-2016  christos branches: 1.24.2; 1.24.4;
Add support for grub to find the ACPI root table pointer via a bootinfo entry
from grub.
From: https://mail-index.netbsd.org/tech-kern/2014/05/22/msg017119.html
 1.23  30-Aug-2013  jmcneill branches: 1.23.6;
Add support for using a raw file-system image as memory disk root with
the x86 bootloader.
 1.22  16-May-2013  christos branches: 1.22.2;
Complete the dosparts -> mbrparts conversion. Only x86k new uses dosparts
because it also uses struct dos_partition.
 1.21  16-May-2013  christos Complete the dosparts -> mbrparts conversion. Only x86k new uses dosparts
because it also uses struct dos_partition.
 1.20  16-May-2013  christos Complete the dosparts -> mbrparts conversion. Only x86k new uses dosparts
because it also uses struct dos_partition.
 1.19  28-Nov-2011  tls branches: 1.19.8;

Add support for passing saved entropy (random seed file) to the kernel
from the bootloader. This can fix the problem of poor quality keys
for other kernel modules which call arc4random() early in kernel startup
(NFS startup, in particular, causes this).

We continue to rely on the etc/rc.d/random_seed script to save entropy
to the seed file at shutdown and erase the seed file at startup.

Boot loader support implemented only for i386 and amd64 ports for now but
it should be easy for other ports to do the same or similar.
 1.18  26-May-2011  uebayasi branches: 1.18.4;
Support userconf(4) command in boot(8)/boot.cfg(5) on i386/amd64.

From jmmv@, no objections seen in the proposed thread:

http://mail-index.netbsd.org/tech-kern/2009/01/22/msg004081.html
 1.17  06-Feb-2011  jmcneill add BI_MODULE_IMAGE boot module type
 1.16  24-Aug-2009  jmcneill branches: 1.16.4; 1.16.6; 1.16.8;
Pass the VBE mode number from the bootloader to the kernel, and then
make the ACPI wakecode aware of it. Restore the desired VBE mode on resume
when acpi_vbios_reset=1, so suspend/resume with genfb console will work.
 1.15  16-Feb-2009  jmcneill Kernel-side modifications for framebuffer console support on i386 and amd64.

* New BTINFO_FRAMEBUFFER kernel parameter to pass screen configuration
* Early attach support for framebuffer console
* Pass BTINFO_FRAMEBUFFER parameters to genfb in device_register
* Provide hooks to genfb to set VGA DAC palette in 8bpp mode
 1.14  09-Sep-2008  tron branches: 1.14.2; 1.14.8;
Remove duplicate definition of "bootinfo" structure.
Patch provided by Juan RP in PR kern/39495.
 1.13  02-May-2008  ad branches: 1.13.2; 1.13.6;
- Give x86 BIOS boot the ability to load new style modules and pass them
into the kernel. Based on a patch by jmcneill@, with many fixes and
improvements by me.

- Put MEMORY_DISK_DYNAMIC and MODULAR into the GENERIC kernels, so that
you can load miniroot.kmod from the boot blocks and boot into the
installer!
 1.12  25-Dec-2007  perry branches: 1.12.6; 1.12.8; 1.12.10;
Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.11  03-Feb-2006  jmmv branches: 1.11.46; 1.11.52; 1.11.56; 1.11.60;
Implement support for 'The Multiboot Specification' so that i386 kernels
can be booted directly from Multiboot-compliant boot loaders (e.g. GRUB).
See the added multiboot(8) manual page for more information.

No objections in tech-kern@; only positive comments.
 1.10  30-Dec-2005  jmmv branches: 1.10.2; 1.10.4;
Add a 'struct bootinfo' to represent the bootinfo structure used in the
kernel by x86 platforms (instead of a simple char *). This way, the code
in, e.g., lookup_bootinfo, is a bit easier to understand.

While here, move the lookup_bootinfo function used in x86 platforms (amd64,
i386 and xen) to a common file (x86/x86_machdep.c), as it was exactly the
same in all of them.
 1.9  06-Jul-2005  junyoung branches: 1.9.2;
BIOSDISK_EXT13INFO_V3 -> BIOSDISK_EXTINFO_V3
u_intNN_t -> uintNN_t
u_int -> unsigned int
Remove trailing spaces
 1.8  12-Jun-2005  dyoung Make disklabel(8) and fdisk(8) into "host tools " last step: build
and install ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-disklabel,
${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-fdisk by "reaching over" to
the sources in ${NETBSDSRCDIR}/sbin/{disklabel fdisk}/.

To avoid clashes with a build-host's header files, especially on
*BSD, the host-tools versions of fdisk and disklabel search for
#includes such as disklabel.h, disklabel_acorn.h, disklabel_gpt.h,
and bootinfo.h in a new #includes namespace, nbinclude/. That is,
they #include <nbinclude/sys/disklabel.h>, <nbinclude/machine/disklabel.h>,
<nbinclude/sparc64/disklabel.h>, instead of <sys/disklabel.h> and
such. I have also updated the system headers to #include from
nbinclude/-space when HAVE_NBTOOL_CONFIG_H is #defined.
 1.7  04-Feb-2005  fvdl The bootinfo_wedge structure must be packed, or the 32bit alignments
used by the bootloader don't match the amd64 kernel.
 1.6  23-Oct-2004  thorpej branches: 1.6.4; 1.6.6;
Add support for passing booted wedge information to the kernel.
 1.5  24-Mar-2004  drochner remove license clauses 3 and 4 from my cpoyright notices
 1.4  27-Oct-2003  junyoung Nuke __P().
 1.3  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.2  16-Apr-2003  dsl branches: 1.2.2;
Add definitions (#defined out) to pass the result of the v3.x bios
extended disk information request to the kernel.
Binary compatible with the existing code, disabled because I don't
have a system with a bios that supports the request.
 1.1  26-Feb-2003  fvdl Move some files out of i386 into x86, so that they can be shared with
other ports.
 1.2.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.2.2.5  06-Feb-2005  skrll Sync with HEAD.
 1.2.2.4  02-Nov-2004  skrll Sync with HEAD.
 1.2.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.2.2.1  03-Aug-2004  skrll Sync with HEAD
 1.6.6.1  12-Feb-2005  yamt sync with head.
 1.6.4.1  29-Apr-2005  kent sync with -current
 1.9.2.2  21-Jan-2008  yamt sync with head
 1.9.2.1  21-Jun-2006  yamt sync with head.
 1.10.4.1  09-Sep-2006  rpaulo sync with head
 1.10.2.1  18-Feb-2006  yamt sync with head.
 1.11.60.1  02-Jan-2008  bouyer Sync with HEAD
 1.11.56.1  26-Dec-2007  ad Sync with head.
 1.11.52.1  18-Feb-2008  mjf Sync with HEAD.
 1.11.46.1  09-Jan-2008  matt sync with HEAD
 1.12.10.3  16-Sep-2009  yamt sync with head
 1.12.10.2  04-May-2009  yamt sync with head.
 1.12.10.1  16-May-2008  yamt sync with head.
 1.12.8.1  18-May-2008  yamt sync with head.
 1.12.6.2  28-Sep-2008  mjf Sync with HEAD.
 1.12.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.13.6.1  19-Oct-2008  haad Sync with HEAD.
 1.13.2.1  24-Sep-2008  wrstuden Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.
 1.14.8.4  27-Aug-2011  jym Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.
 1.14.8.3  28-Mar-2011  jym Sync with HEAD. TODO before merge:
- shortcut for suspend code in sysmon, when powerd(8) is not running.
Borrow ``xs_watch'' thread context?
- bug hunting in xbd + xennet resume. Rings are currently thrashed upon
resume, so current implementation force flush them on suspend. It's not
really needed.
 1.14.8.2  01-Nov-2009  jym Sync with HEAD.
 1.14.8.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.14.2.1  03-Mar-2009  skrll Sync with HEAD.
 1.16.8.1  08-Feb-2011  bouyer Sync with HEAD
 1.16.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.16.4.2  31-May-2011  rmind sync with head
 1.16.4.1  05-Mar-2011  rmind sync with head
 1.18.4.2  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.18.4.1  17-Apr-2012  yamt sync with head
 1.19.8.3  03-Dec-2017  jdolecek update from HEAD
 1.19.8.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.19.8.1  23-Jun-2013  tls resync from head
 1.22.2.1  18-May-2014  rmind sync with head
 1.23.6.3  28-Aug-2017  skrll Sync with HEAD
 1.23.6.2  05-Feb-2017  skrll Sync with HEAD
 1.23.6.1  19-Mar-2016  skrll Sync with HEAD
 1.24.4.1  21-Apr-2017  bouyer Sync with HEAD
 1.24.2.1  20-Mar-2017  pgoyette Sync with HEAD
 1.26.6.2  27-Jun-2019  martin Pull up following revision(s) (requested by nonaka in ticket #1282):

sys/arch/x86/include/bootinfo.h: revision 1.30

PR/54147: Increase BOOTINFO_MAXSIZE to 16Kib.

Some systems require a larger bootinfo size for memory descriptors.
 1.26.6.1  14-Apr-2018  martin Pull up following revision(s) (requested by nonaka in ticket #753):

sys/arch/x86/include/bootinfo.h: revision 1.29

x86: Increase BOOTINFO_MAXSIZE to 8Kib.

Proposed on port-i386 and port-amd64 with no objections:
http://mail-index.netbsd.org/port-i386/2018/04/11/msg003692.html
http://mail-index.netbsd.org/port-amd64/2018/04/11/msg002697.html
 1.28.2.1  16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.29.2.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411

RSS XML Feed