Home | History | Annotate | Download | only in include
History log of /src/sys/arch/i386/include/multiboot.h
RevisionDateAuthorComments
 1.11  18-Oct-2019  manu Multiboot2 kernel support for i386

That implementation works either with BIOS or UEFI bootstrap

This requires the following kernel changes:

Add UEFI boot services and I/O method protoypes
src/sys/arch/x86/include/efi.h 1.8 - 1.9

Fix EFI system table mapping in virtual space
src/sys/arch/x86/x86/efi.c 1.19 - 1.20

Make sure no bioscall is issued when booting off UEFI system
src/sys/arch/i386/i386/machdep.c 1.821 - 1.822
src/sys/arch/i386/pci/piixpcib.c 1.22 - 1.23

And the following bootstrap changes:

Add kernel symbols for multiboot1
src/sys/arch/i386/stand/lib/exec_multiboot1.c 1.2 - 1.3
src/sys/arch/i386/stand/lib/libi386.h 1.45 - 1.47

Fix kernel symbols for multiboot2
src/sys/arch/i386/stand/lib/exec_multiboot2.c 1.2 - 1.3
 1.10  13-Nov-2018  mlelstv Framebuffer definitions for multiboot protocol.
 1.9  13-Apr-2018  khorben branches: 1.9.2;
Correct discrepancy with the Multiboot specification

The VBE mode was missing, and the types of the subsequent VBE members
were also wrong. Nothing in NetBSD's base seems to be using this, and
therefore nothing is expected to break as a result of this fix, or any
binary to change for that matter.
The latest specification (as of today) can be found at:
https://www.gnu.org/software/grub/manual/multiboot/multiboot.html

This was already reported in misc/52366, and addresses part of it.

Patch sent to port-i386@. Build-tested on NetBSD/amd64.
 1.8  22-Feb-2009  ahoka branches: 1.8.62;
Add a missing opt_multiboot.h into sys/arch/i386/i386/machdep.c.
Also do the missed rename of multiboot_ksyms_init to
multiboot_ksyms_addsyms_elf to compile with MULTIBOOT set.

This caused a minor and a more serious bug in the past:
- dmesg did not contain the information about the loader
- /dev/ksyms did not work when the kernel was booted with a
multiboot bootloader (grub for example)

Ok by jmcneill, joerg.
 1.7  11-Oct-2008  joerg branches: 1.7.2; 1.7.8;
Add "multiboot" command to boot multiboot compliant kernels like Xen.
Patch provided by Robert Swindell with fixes for the command line
parsing and addition of passing module options from me. The kernel now
always gets the full string for modules like for the command line,
everything before the first space/tab is the path name of the module.
 1.6  28-Apr-2008  martin branches: 1.6.6;
Remove clause 3 and 4 from TNF licenses
 1.5  21-Feb-2007  thorpej branches: 1.5.42; 1.5.44; 1.5.46;
Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
 1.4  25-Oct-2006  jmmv branches: 1.4.4;
Remove the usage of Multiboot's "a.out kludge" to tell the boot loader to
reserve some more space for the BSS section than the binary says. This
trick was used to leave room after the kernel's image to copy the symbol
table following the format required by ksyms_init. (It was also used to
workaround a bug in the physical address fields of the binary, but this has
been long fixed.) Yes, the MULTIBOOT_SYMTAB_SPACE option goes away; yay!

Instead, copy the required data after the kernel in a way that avoids having
to reserve space and use the new ksyms_init_explicit function to avoid the
need to construct a minimal ELF image.

Fixes ksyms when using an "unpatched" GRUB (one that does not contain the
fix to honour the "a.out kludge" for ELF images, even when present) -- i.e.
ddb and lkms. As a side effect, the new code is much clearer to read and
digest.

Closes PR port-i386/32865.
 1.3  04-Feb-2006  jmmv branches: 1.3.2; 1.3.14; 1.3.18; 1.3.20; 1.3.22;
Revert yesterday's change that attempted to fix the detection of the
boot device when using a Multiboot boot loader. It couldn't work because
these boot loaders do not pass a checksum of the disk so matchbiosdisk()
cannot really find any matches. I should have gone to sleep before
commiting...

Found by xtraeme@.
 1.2  03-Feb-2006  jmmv branches: 1.2.2;
When booting an i386 kernel with Multiboot, properly detect the boot device
by looking it up in the x86_alldisks table (instead of trying to match it
to 'wd*' manually).

In order to do this, move the cpu_rootconf function from x86 common code
to amd64 and i386 specific one. This way, i386 can do an extra step (call
the appropriate Multiboot code) in the appropriate place (after
x86_matchbiosdisks and before findroot()).
 1.1  03-Feb-2006  jmmv 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.2.2.1  22-Apr-2006  simonb Sync with head.
 1.3.22.1  10-Dec-2006  yamt sync with head.
 1.3.20.2  09-Sep-2006  rpaulo sync with head
 1.3.20.1  04-Feb-2006  rpaulo file multiboot.h was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:40:14 +0000
 1.3.18.1  18-Nov-2006  ad Sync with head.
 1.3.14.4  26-Feb-2007  yamt sync with head.
 1.3.14.3  30-Dec-2006  yamt sync with head.
 1.3.14.2  21-Jun-2006  yamt sync with head.
 1.3.14.1  04-Feb-2006  yamt file multiboot.h was added on branch yamt-lazymbuf on 2006-06-21 14:52:30 +0000
 1.3.2.2  18-Feb-2006  yamt sync with head.
 1.3.2.1  04-Feb-2006  yamt file multiboot.h was added on branch yamt-uio_vmspace on 2006-02-18 15:38:37 +0000
 1.4.4.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.5.46.2  04-May-2009  yamt sync with head.
 1.5.46.1  16-May-2008  yamt sync with head.
 1.5.44.1  18-May-2008  yamt sync with head.
 1.5.42.2  17-Jan-2009  mjf Sync with HEAD.
 1.5.42.1  02-Jun-2008  mjf Sync with HEAD.
 1.6.6.1  19-Oct-2008  haad Sync with HEAD.
 1.7.8.2  01-Nov-2009  jym Sync with HEAD.
 1.7.8.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.7.2.1  03-Mar-2009  skrll Sync with HEAD.
 1.8.62.2  26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.8.62.1  16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.9.2.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.9.2.1  10-Jun-2019  christos Sync with HEAD

RSS XML Feed