freebsd-dev/stand
Warner Losh 39fdad34e2 stand: impose 510,000 byte limit for /boot/loader and /boot/pxeldr
The BIOS method of booting imposes an absolute limit of 640k for the
size of the program being run due to btx. In practice, this means that
programs larger than about 500kiB will fail in odd ways as the stack /
heap will overflow.

Pick 510,000 as the cutoff line semi-arbitrarily. loader_lua is now
almost too big and we want to break the build when it crosses this
threshold. In my experience, below 500,000 always works, above 520,000
always seems to fail with things getting bad somewhere between 512,000
to 515,000. 510,000 is as close to the line as I think we can go, though
experience may dictate we need to lower this in the future.

This is at-best a stop-breakage until we have a better way to subset the
boot loader for BIOS booting to allow better, more fined-tuned
/boot/loaders for the many different environments they have to run
in. This likely means we'll have a graphical loader than understands a
few filesystmes for installation, and a non-graphical loader that
understands the most filesystems possible for everything else in the
future. Our build infrastructure needs some work before we can do that,
however.

At this late date, it likely isn't worth the efforts to move parts of
the loader into high memory. There's a number of assumptions about where
the stack is, where buffers reside, etc that are fulfilled when it lives
in the first 640k that would need bounce buffers and/or other counter
measures if we were to split it up. All BIOS calls are done in 16-bit
mode with SEG:OFF addresses, requiring them to be in the first 640k of
RAM. And nearly all machines in the last decade can boot with UEFI
(though there's some exceptions, so it isn't worth killing outright
yet).

Sponsored by:		Netflix
Reviewed by:		kevans
Differential Revision:	https://reviews.freebsd.org/D36129
2022-08-10 21:29:20 -06:00
..
arm64 stand: Remove extra efi.h include 2022-07-15 12:00:49 -06:00
common stand: Move quit command to common commands 2022-07-30 04:48:35 -06:00
defaults Add support for getting early entropy from UEFI 2022-02-17 13:01:11 -08:00
efi stand: Move quit command to common commands 2022-07-30 04:48:35 -06:00
fdt Remove "All Rights Reserved" from Foundation copyrights 2022-06-30 10:49:09 -04:00
ficl ficl: Fix a typo in a comment 2021-11-30 10:36:29 +01:00
ficl32 Enable veriexec for loader 2019-02-26 06:22:10 +00:00
fonts loader: really use bold font for vga text mode 2021-01-08 01:24:30 +02:00
forth loader.4th(8): Fix a typo in the manual page 2022-04-02 15:11:59 +02:00
i386 stand: impose 510,000 byte limit for /boot/loader and /boot/pxeldr 2022-08-10 21:29:20 -06:00
images loader: implement framebuffer console 2021-01-02 21:41:36 +02:00
kboot kboot: Make console raw when we start 2022-07-28 15:35:42 -06:00
kshim stand/usb: Fix build by declaring missing functions and types. 2022-03-17 15:26:24 +01:00
liblua EFI secure boot VECTX related changes 2021-04-30 12:53:45 -05:00
liblua32
libofw stand: Make sure nobody has a NULL pointer for dv_cleanup 2022-07-27 09:04:13 -06:00
libsa stand: Reduce number of files that need -I${LDRSRC} 2022-08-03 11:24:38 -06:00
libsa32 Enable veriexec for loader 2019-02-26 06:22:10 +00:00
lua Add support for getting early entropy from UEFI 2022-02-17 13:01:11 -08:00
man loader.efi: add cross-reference to loader(8) 2022-05-18 10:33:20 -04:00
powerpc loader: fix powerpc64le ofw loader 2022-07-29 05:13:19 -03:00
uboot stand: Use c99 structure initialization for uboot block device 2022-07-24 16:53:34 -06:00
usb mips: remove saf1761 2022-01-04 16:01:14 -07:00
userboot stand: Make sure nobody has a NULL pointer for dv_cleanup 2022-07-27 09:04:13 -06:00
defs.mk stand: remove mips support 2021-12-10 11:05:31 -07:00
fdt.mk
ficl.mk stand: remove mips support 2021-12-10 11:05:31 -07:00
loader.mk stand: Fix a common typo in source code comments 2022-06-05 09:49:51 +02:00
lua.mk
Makefile stand: Add a helper 'universe' target 2022-07-30 05:01:47 -06:00
Makefile.amd64 stand: properly declare subdir deps or .WAIT, do parallel build 2020-12-31 11:15:45 -06:00
Makefile.inc stand: properly declare subdir deps or .WAIT, do parallel build 2020-12-31 11:15:45 -06:00
veriexec.mk EFI secure boot VECTX related changes 2021-04-30 12:53:45 -05:00