Home | History | Annotate | Download | only in efiboot
History log of /src/sys/stand/efiboot/version
RevisionDateAuthorComments
 1.33  07-Dec-2024  jmcneill efiboot: Use 1:1 PA to VA mappings for RT services.

UEFI firmware on Snapdragon X Elite devices crashes when
SetVirtualAddressMap is called with runtime mappings that are not 1:1.
Always do this on arm64 as it won't interfere with KVA and will help us
avoid avoid a very common class of firmware bugs.
 1.32  15-Aug-2024  skrll Allow an MD check in prepare_boot and use it on arm64 (aarch64) to check
that, if a big endian kernel is seen, the CPU is capable of supporting BE
data accesses at EL0 via ID_AA64MMFR0_EL1.BigEnd.
 1.31  02-Apr-2022  skrll branches: 1.31.10;
Update to support EFI runtime outside the kernel virtual address space
by creating an EFI RT pmap that can be activated / deactivated when
required.

Adds support for EFI RT to ARM_MMU_EXTENDED (ASID) 32-bit Arm machines.

On Arm64 the usage of pmapboot_enter is reduced and the mappings are
created much later in the boot process -- now in cpu_startup_hook.
Backward compatiblity for KVA mapped RT from old bootaa64.efi is
maintained.

Adding support to other platforms should be easier as a result.
 1.30  25-Mar-2022  jmcneill efiboot: Add support for 'userconf' command.

Add support for the 'userconf' command at the boot prompt and in boot.cfg,
and for FDT based booting, pass the commands as a string list property
named "netbsd,userconf" on the /chosen node.
 1.29  28-Sep-2021  jmcneill efiboot: Add support for changing the video mode.

Add a new "gop" command that can query the list of available video modes.
With a mode number as argument (eg. "gop 16"), the new display mode will
be selected.

The "version" command prints the current display mode.
 1.28  08-Aug-2021  andvar s/partion/partition/ s/arrray/array/ in comments.
 1.27  21-Jun-2021  jmcneill efiboot: Use disk I/O protocol for block device access.

EFI_DISK_IO_PROTOCOL is a simplified interface to block devices. Use this
instead of EFI_BLOCK_IO_PROTOCOL for accessing block devices to simplify
the code -- we no longer need to worry about the underlying media's block
I/O size and alignment requirements.
 1.26  20-Jun-2021  jmcneill Add support for the boot services watchdog and pet it on every block I/O
access. For slow media (like ISO image redirection on Lenovo HR330A BMC)
this is needed because otherwise the default watchdog timeout fires before
we can finish loading the kernel from install media.
 1.25  27-May-2021  mrg add bi-endian support to the libsa ufs reader and enable it in efiboot.

ffs frontends to "ufs.c" now also define ufs_dinode_swap, ufs_indp_swap,
and FS_MAGIC (moved from ufs.c #if segments.) these are used to call
the right (32/64 bit) ffsv1/v2 version.

ufs.c 'struct file' gains f_swapped member. accessors for d_magic,
d_reclen, and d_ino are introduced (they need to be swapped.) sfter
reading an inode from disk, read_inode() may call ufs_dinode_swap().
indirect block number and caches may be swapped.

error handling in ffs_find_superblock() is cleaned up. (size is slightly
reduced on some ports with this part.)

defaults for new defines added to ufs.c. (XXX: we build ufs.c but i think
all the consumers don't use it, and we can stop building it.)

LFS support is not included.

add a cut-down copy of ffs_bswap.c from the kernel.

also enable bi-endian disklabel support in efiboot.

most ports build and sizes compared for platforms that don't enable this
code and all but one saw reduced code size. booted several platforms with
new boot code.
 1.24  26-May-2021  mrg add basic raidframe support to efiboot.

if raid disklabel or gpt is found, add this partition with
the offset/size adjusted by RF_PROTECTED_SECTORS. note

don't le32toh() the disklabel. if it was wrong-endian, then
getdisklabel() will have swapped it.

ok jmcneill thorpej.
 1.23  21-May-2021  jmcneill Disable ACPI support when booting big endian kernels.
 1.22  18-Oct-2020  tnn branches: 1.22.6; 1.22.8;
efiboot: bump version
 1.21  11-Oct-2020  jmcneill Add ISO9660 support.
 1.20  10-Oct-2020  jmcneill Support EFI runtime and GOP FB for devicetree (non-ACPI) setups.
 1.19  28-Jun-2020  jmcneill Remove support for storing settings in EFI environment variables now that
we have boot.cfg support.
 1.18  26-Jun-2020  thorpej Add dtoverlay command to specify device tree overlays from the boot
loader command line. Add support for specifying device tree overlays
in boot.cfg, with the syntax:

dtoverlay=/path/to/overlay.dtbo
dtoverlay=hd0e:/overlays/example.dtbo

Multiple overlays can be specified, and they are loaded in the order
they appear in boot.cfg.

Remove support for efiboot.plist.
 1.17  21-Jun-2020  jmcneill Add boot.cfg support.
 1.16  21-Jun-2020  jmcneill Add module support.
 1.15  14-May-2020  riastradh Bump efiboot version to note EFI RNG support.
 1.14  18-Dec-2019  riastradh Implement rndseed support in efiboot and fdt arm.

The EFI environment variable `rndseed' specifies the path to the
random seed. It is loaded only for fdt platforms at the moment.

Since the rndseed (an rndsave_t object as defined in <sys/rndio.h>)
is 536 bytes long (for hysterical raisins), and to avoid having to
erase parts of the fdt tree, we load it into a physical page whose
address is passed in the fdt tree, rather than passing the content of
the file as an fdt node directly; the kernel then reserves the page
from uvm, and maps it into kva to call rnd_seed.

For now, the only kernel that does use efiboot with fdt is evbarm,
which knows to handle the rndseed. Any new kernels that use efiboot
with fdt must do the same; otherwise uvm may hand out the page with
the secret key on it for a normal page allocation in the kernel --
which should be OK if there are no kernel memory disclosure bugs, but
would lead to worse consequences than simply loading the seed late in
userland with /etc/rc.d/random_seed otherwise.

ok jmcneill
 1.13  30-Nov-2019  jmcneill Use SMBIOS system vendor and product strings to create a "model" string
for the root node in the fabricated ACPI device tree, when possible.
 1.12  01-Aug-2019  jmcneill Add full UEFI memory map to the /chosen node.
 1.11  24-Jul-2019  jmcneill branches: 1.11.2;
Add support for simple framebuffers when booting in ACPI mode.
 1.10  21-Apr-2019  thorpej branches: 1.10.2;
- Add support for a boot configuration file, defaulting to /etc/efiboot.plist.
- Add support for pre-loading EFI environment variables from efiboot.plist.
- Add support for device tree overlays specified in efiboot.plist.

(Man page for efiboot forthcoming.)
 1.9  18-Jan-2019  skrll Add support for "bootargs" environment variable from jmcneill@

Doesn't work with some (all?) u-boots.
 1.8  15-Nov-2018  jmcneill Add support for loading kernels over NFS.
 1.7  01-Nov-2018  jmcneill Add GPT support.
 1.6  28-Oct-2018  jmcneill Make EFI runtime services available to the kernel. Bump version to 1.5.
 1.5  26-Oct-2018  mrg add "boot-file" support. now one can automatically boot a
non-default kernel with "setenv boot-file host/netbsd".

this is particularly useful with the current net / tftp
kernel boot, so the tftproot does not need a "/netbsd"
visible to all hosts, but some host-specific path.

some minor clean up.

version 1.4.

ok jmcneill@.
 1.4  21-Oct-2018  jmcneill Enable ACPI support.
 1.3  09-Sep-2018  jmcneill Add support for setting environment variables. Currently the following env
vars are supported: "fdtfile", "initrd", and "rootdev".
 1.2  03-Sep-2018  jmcneill branches: 1.2.2;
Add PXE support.
 1.1  24-Aug-2018  jmcneill Add MI EFI bootloader and AArch64 glue.
 1.2.2.5  26-Jan-2019  pgoyette Sync with HEAD
 1.2.2.4  26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.2.2.3  30-Sep-2018  pgoyette Ssync with HEAD
 1.2.2.2  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.2.2.1  03-Sep-2018  pgoyette file version was added on branch pgoyette-compat on 2018-09-06 06:56:47 +0000
 1.10.2.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10.2.2  10-Jun-2019  christos Sync with HEAD
 1.10.2.1  21-Apr-2019  christos file version was added on branch phil-wifi on 2019-06-10 22:09:56 +0000
 1.11.2.3  12-Feb-2020  martin Pull up following revision(s) (requested by riastradh in ticket #705):

sys/arch/aarch64/aarch64/aarch64_machdep.c: revision 1.35
sys/stand/efiboot/efifdt.c: revision 1.20
sys/stand/efiboot/efifdt.h: revision 1.7
sys/arch/aarch64/include/machdep.h: revision 1.9
sys/stand/efiboot/efiboot.h: revision 1.11
sys/arch/arm/arm32/arm32_machdep.c: revision 1.129
sys/arch/arm/include/arm32/machdep.h: revision 1.30
sys/stand/efiboot/exec.c: revision 1.12
sys/arch/evbarm/fdt/fdt_machdep.c: revision 1.65
sys/stand/efiboot/version: revision 1.14
sys/stand/efiboot/boot.c: revision 1.19

New function cpu_startup_hook on arm.

Called at end of cpu_startup. Can be defined in, e.g., evbarm to do
additional stuff after cpu_startup. Defined as a weak alias to a
function that does nothing, so optional.
ok jmcneill

Implement rndseed support in efiboot and fdt arm.

The EFI environment variable `rndseed' specifies the path to the
random seed. It is loaded only for fdt platforms at the moment.
Since the rndseed (an rndsave_t object as defined in <sys/rndio.h>)
is 536 bytes long (for hysterical raisins), and to avoid having to
erase parts of the fdt tree, we load it into a physical page whose
address is passed in the fdt tree, rather than passing the content of
the file as an fdt node directly; the kernel then reserves the page
from uvm, and maps it into kva to call rnd_seed.

For now, the only kernel that does use efiboot with fdt is evbarm,
which knows to handle the rndseed. Any new kernels that use efiboot
with fdt must do the same; otherwise uvm may hand out the page with
the secret key on it for a normal page allocation in the kernel --
which should be OK if there are no kernel memory disclosure bugs, but
would lead to worse consequences than simply loading the seed late in
userland with /etc/rc.d/random_seed otherwise.

ok jmcneill
 1.11.2.2  08-Dec-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #503):

sys/stand/efiboot/Makefile.efiboot: revision 1.9
sys/stand/efiboot/efiacpi.c: revision 1.5
sys/stand/efiboot/version: revision 1.13
sys/stand/efiboot/smbios.h: revision 1.1
sys/stand/efiboot/smbios.c: revision 1.1

Use SMBIOS system vendor and product strings to create a "model" string
for the root node in the fabricated ACPI device tree, when possible.
 1.11.2.1  04-Aug-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #3):

sys/stand/efiboot/efiacpi.c: revision 1.4
sys/stand/efiboot/efifdt.c: revision 1.18
sys/stand/efiboot/version: revision 1.12
sys/arch/arm/acpi/acpi_machdep.c: revision 1.7
sys/arch/arm/acpi/acpi_machdep.c: revision 1.8

Add full UEFI memory map to the /chosen node.

-

acpi_md_OsMapMemory can be used for both normal and device memory. Use the
UEFI memory map to determine how to map a given region.

Always map ACPI table memory as normal memory. Always map device memory as device memory.
 1.22.8.1  31-May-2021  cjep sync with head
 1.22.6.2  01-Aug-2021  thorpej Sync with HEAD.
 1.22.6.1  17-Jun-2021  thorpej Sync w/ HEAD.
 1.31.10.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed