Home | History | Annotate | Download | only in efiboot
History log of /src/sys/stand/efiboot/efifdt.c
RevisionDateAuthorComments
 1.38  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.37  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.36  15-Aug-2024  skrll Rename some symbols for consistency with the style used elsewhere
in efiboot.

NFCI.
 1.35  14-Aug-2022  jmcneill Align output of "version" command.
 1.34  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.33  06-Nov-2021  jmcneill Revert part of previous commit that broke DT booting.
 1.32  03-Nov-2021  skrll Provide the ablity to ignore ACPI with an 'acpi' command:

acpi [{on|off}]
 1.31  06-Oct-2021  jmcneill Fix bootarm build.
 1.30  06-Oct-2021  jmcneill efiboot: Make FDT support optional on a per-arch basis.
 1.29  21-May-2021  jmcneill Disable ACPI support when booting big endian kernels.
 1.28  19-Dec-2020  skrll branches: 1.28.4; 1.28.6;
Various clean ups
- cache node where possible
- remove a compiler warning
- improve a comment (the round_page might not be needed)
 1.27  22-Oct-2020  jmcneill branches: 1.27.2;
Fix previous.
 1.26  22-Oct-2020  jmcneill If the framebuffer node already exists, we don't need to create one
 1.25  10-Oct-2020  jmcneill Support EFI runtime and GOP FB for devicetree (non-ACPI) setups.
 1.24  21-Jun-2020  jmcneill Add module support.
 1.23  14-May-2020  riastradh Deduplicate lazy /chosen node creation logic.
 1.22  14-May-2020  riastradh Pass EFI RNG output via /chosen/netbsd,efirng-{start,end}.

This is separate from /chosen/netbsd,rndseed-{start,end}, which
specifies NetBSD's persistent on-disk seed; efirng is the firmware's
RNG device.
 1.21  03-Jan-2020  skrll Fix EFIBOOT_DEBUG build on arm
 1.20  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.19  30-Aug-2019  jmcneill Only set #address-cells and #size-cells properties on /chosen if we are
fabricating a devicetree (ACPI mode). Fixes PR# 54494
 1.18  01-Aug-2019  jmcneill Add full UEFI memory map to the /chosen node.
 1.17  25-Jul-2019  skrll branches: 1.17.2;
Fix arm build
 1.16  24-Jul-2019  jmcneill Add support for simple framebuffers when booting in ACPI mode.
 1.15  21-Apr-2019  thorpej branches: 1.15.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.14  15-Nov-2018  jmcneill Add support for loading kernels over NFS.
 1.13  02-Nov-2018  jmcneill Add a "mem" command to print the EFI memory map.
 1.12  01-Nov-2018  jmcneill Add GPT support.
 1.11  31-Oct-2018  jmcneill When building /memory, skip EFI runtime memory ranges
 1.10  31-Oct-2018  jmcneill No longer need to delete reserved memory ranges.
 1.9  09-Sep-2018  jmcneill Add "dtb" command for loading a custom .dtb file.
 1.8  07-Sep-2018  jmcneill Add initrd support.
 1.7  03-Sep-2018  jmcneill branches: 1.7.2;
Print FDT model and compatible strings with "version" command
 1.6  02-Sep-2018  jmcneill Dump memory map if EFI_MEMORY_DEBUG is defined
 1.5  28-Aug-2018  jmcneill Remove call to fdt_pack, it is causing problems with memory detection
 1.4  27-Aug-2018  alnsn Fix typo in a panic string.
 1.3  27-Aug-2018  jmcneill Pass a hash of the MBR and the booted partition to the kernel.
 1.2  24-Aug-2018  jmcneill Sanitize the memory map passed to the kernel.
 1.1  24-Aug-2018  jmcneill Add MI EFI bootloader and AArch64 glue.
 1.7.2.4  26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.7.2.3  30-Sep-2018  pgoyette Ssync with HEAD
 1.7.2.2  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.7.2.1  03-Sep-2018  pgoyette file efifdt.c was added on branch pgoyette-compat on 2018-09-06 06:56:47 +0000
 1.15.2.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.15.2.2  10-Jun-2019  christos Sync with HEAD
 1.15.2.1  21-Apr-2019  christos file efifdt.c was added on branch phil-wifi on 2019-06-10 22:09:56 +0000
 1.17.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.17.2.2  01-Sep-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #142):

sys/stand/efiboot/efifdt.c: revision 1.19

Only set #address-cells and #size-cells properties on /chosen if we are
fabricating a devicetree (ACPI mode). Fixes PR# 54494
 1.17.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.27.2.1  03-Jan-2021  thorpej Sync w/ HEAD.
 1.28.6.1  31-May-2021  cjep sync with head
 1.28.4.1  17-Jun-2021  thorpej Sync w/ HEAD.

RSS XML Feed