Commit Graph

87 Commits

Author SHA1 Message Date
riastradh
fedc917302 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
2019-12-18 21:46:03 +00:00
jmcneill
652b35568f Use SMBIOS system vendor and product strings to create a "model" string
for the root node in the fabricated ACPI device tree, when possible.
2019-11-30 13:02:18 +00:00
jakllsch
2bd734055e Increase MI efiboot bootprompt() input buffer from 80 bytes to LINE_MAX.
This allows you to load a kernel from a build directory deep in some file
system after you accidentally boot an old kernel with a new userland and
are otherwise unable to get yourself back to a matching kernel.
2019-09-29 00:52:26 +00:00
jakllsch
98f4c0656e Use roundup2() instead of open coding something almost the same that
truncates 64-bit quantities.

Fixes disk access and booting in bootaa64.efi on SoftIron OverDrive 1000
(which does not have any memory below 4GiB).
2019-09-27 20:10:42 +00:00
jmcneill
1814583a15 Do a full reset of the console at startup 2019-09-26 14:28:14 +00:00
christos
7e81d727bc Consistently use ${RELEASEDIR}/${RELEASEMACHINE} instead of
${RELEASEDIR}/${MACHINE} (Paul Ripke)
2019-09-23 13:42:30 +00:00
jmcneill
d2908378b5 Honour block device's IO alignment requirements.
Patch from Simon South <simon@simonsouth.net> in PR# 54554
2019-09-21 10:19:37 +00:00
jmcneill
08196c9186 Only set #address-cells and #size-cells properties on /chosen if we are
fabricating a devicetree (ACPI mode). Fixes PR# 54494
2019-08-30 00:01:33 +00:00
jmcneill
5b55ec2572 Add full UEFI memory map to the /chosen node. 2019-08-01 13:11:16 +00:00
skrll
581c62fc78 Fix arm build 2019-07-25 11:44:14 +00:00
jmcneill
3cdd75ddb0 Add support for simple framebuffers when booting in ACPI mode. 2019-07-24 11:40:36 +00:00
rin
84899fcd0b Enable us to load kernel image of different byte order. Now, earmv7hf-eb
kernel can successfully boot from EFI bootloader.

XXX
We need to recognize disklabel and filesystem written in opposite byte oder.
2019-07-21 17:01:39 +00:00
thorpej
ffbae842f4 - 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.)
2019-04-21 22:30:41 +00:00
jmcneill
c14f76b6fc ST FirmwareRevision field is in a vendor defined format, so just print the raw value 2019-04-20 11:28:53 +00:00
jmcneill
b43f538702 Skip clearing the screen when efiboot starts, it may end up hiding useful information 2019-04-20 11:23:16 +00:00
skrll
dfb99727ca Print bootargs from the environment
Pass the enironment boot args if none are provided by the boot command
2019-04-10 19:36:04 +00:00
skrll
443282f6c6 Fixup EFIBOT_DEBUG output for non-_LP64 case 2019-04-10 19:11:42 +00:00
jmcneill
d26a1212cd Add support for netbooting with non-PCI network devices. 2019-03-31 22:24:41 +00:00
jmcneill
46cc84dd17 Jump to MARK_ENTRY instead of MARK_START 2019-03-30 17:41:13 +00:00
jmcneill
b9d71da677 Add efiboot support for 32-bit ARM targets. 2019-03-30 12:48:50 +00:00
jmcneill
0ef050d6c0 Build fixes for 32-bit targets. 2019-03-30 12:47:53 +00:00
jmcneill
d64fe86fe7 Workaround a bug with ROCKPro64's U-Boot EFI implementation. The booted
device path when booting from SD card sometimes does not include a
MEDIA_DEVICE_PATH component, so in this case fallback to doing an exact
match on the booted device path with the block device path to detect the
default boot device.
2019-03-09 13:16:42 +00:00
msaitoh
84347dba43 Centralize ETHER_ALIGN into net/if_ether.h. Note that this commit also changes
if_upgt.c's ETHER_ALIGN from 0 to 2.
2019-03-05 08:25:01 +00:00
skrll
8c499c7d34 Add support for "bootargs" environment variable from jmcneill@
Doesn't work with some (all?) u-boots.
2019-01-18 19:41:03 +00:00
jmcneill
a158dd7e2e Add support for loading kernels over NFS. 2018-11-15 23:52:33 +00:00
jmcneill
52f8d5e713 Add a "mem" command to print the EFI memory map. 2018-11-02 01:22:39 +00:00
jmcneill
92efcce76c Add GPT support. 2018-11-01 00:43:38 +00:00
jmcneill
be34f078ca No need to re-print the countdown timer if the number of seconds hasn't changed. 2018-10-31 23:49:34 +00:00
jmcneill
1cd5b4302b Assign VAs for EFI runtime mmio ranges 2018-10-31 13:00:35 +00:00
jmcneill
33c6bbfd0f When building /memory, skip EFI runtime memory ranges 2018-10-31 12:59:43 +00:00
jmcneill
a6043900cb No longer need to delete reserved memory ranges. 2018-10-31 09:13:32 +00:00
mrg
30b672631b avoid sign/unsigned issue and for NUMNAMES to an integer when it is
compared against a value that may be -1.

fixes autoboot when boot-file is set.  (serves me right for removing
code that looked odd when it was tested :-)
2018-10-29 05:15:21 +00:00
jmcneill
24519eb71b Make EFI runtime services available to the kernel. Bump version to 1.5. 2018-10-28 10:17:47 +00:00
mrg
557f10a48f 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@.
2018-10-26 20:56:35 +00:00
jmcneill
ceaa49338b If an SMBIOS3 table is found, pass the address to the kernel via /chosen
"netbsd,smbios-table" property.
2018-10-23 10:12:59 +00:00
jmcneill
b416cffbd4 Enable ACPI support. 2018-10-21 00:57:38 +00:00
jmcneill
733272ebe5 Add ACPI support (enable with -DEFIBOOT_ACPI, currently disabled).
When UEFI reports that ACPI tables are available, generate a DTB with
compatible string "netbsd,generic-acpi" and pass this to the booted
kernel.

The DTB contains a /chosen property "netbsd,acpi-root-table" that contains
the physical address of the ACPI RSDP, along with a special /acpi node
with compatible string "netbsd,acpi" for the kernel to attach an acpi(4)
device driver.
2018-10-12 22:08:04 +00:00
jmcneill
b40f700548 utf8_to_ucs2 second param (nmp) needs to be initialized before calling this function 2018-09-18 19:19:45 +00:00
jmcneill
6b0866fd9b Suppress printing size info when calling loadfile with COUNT_KERNEL 2018-09-15 17:06:32 +00:00
jmcneill
9765cbf3ad Some U-Boot implementations (notably U-Boot) do not implement WaitForKey. Do the same as FreeBSD EFI loader here (I wrote the original patch there as well). 2018-09-15 16:44:15 +00:00
jmcneill
cfb58238e1 Claer the screen at startup 2018-09-15 16:41:57 +00:00
jmcneill
07c1c7887a Only need to ischar() once when polling for input 2018-09-15 16:41:37 +00:00
jakllsch
c9f783e37b MI efiboot: avoid LBA overflow in efi_block_find_partitions_disklabel() 2018-09-14 21:37:03 +00:00
jmcneill
0e6fc3745f Add a reboot command to the bootloader 2018-09-09 18:00:20 +00:00
jmcneill
7f3222e313 Add support for setting environment variables. Currently the following env
vars are supported: "fdtfile", "initrd", and "rootdev".
2018-09-09 17:55:22 +00:00
jmcneill
ec9833499c Add "dtb" command for loading a custom .dtb file. 2018-09-09 13:37:54 +00:00
jmcneill
79c266e70c Add initrd support. 2018-09-07 17:30:58 +00:00
jmcneill
ade8ed4154 Disable MMU and dcache before jumping to the kernel. 2018-09-07 17:30:32 +00:00
jmcneill
96816df74d If the loader is loaded from the network, try to load the kernel from the
same network device.
2018-09-04 21:29:54 +00:00
riastradh
b5d131ffdb Fix some min/max -> uimin/uimax stragglers.
Confirmed by the 2018-09-04T04:40Z autobuild.
2018-09-04 15:08:30 +00:00