History log of /freebsd-11-stable/sys/boot/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
332010 04-Apr-2018 mmel

MFC (cherry pick)r306197,r306327,r306328,r308390,r308391,r310600,r314703:

cherry pick from r306197:
Nvidia Tegra 124 and Jetson TK1 related DTS.
r306327:
Update AHCI driver to match new dts tree
r306328:
Update PCI driver to match new dts tree
r308390:
Rework NVIDIA Tegra124 XUSBPAD driver.
- Adapt it for new, incompatible, DT bindings introduced by r306197. -
Add support for USB super speed pads/ports.
r308391:
Add NVIDIA Tegra XHCI driver and coresponding firmware blob.
r310600:
Implement drivers for NVIDIA tegra124 display controller, HDMI source and
host1x module. Unfortunately, tegra124 SoC doesn't have 2D acceleration
engine and 3D requires not yet started nouveau driver.
r314703:
Add support for card detect and write protect gpio pins to Tegra SDHCI.

331897 02-Apr-2018 gonzo

MFC r314672, r315967, r324184, r325768

r314672:
[rpi] rpi3 should use the same cpufreq logic as rpi2, not rpi-b

RPi3 cpufreq is more like that on RPi2. Setting arm frequency
above min (say, "sysctl hw.cpufreq.arm_freq=600000001") turns on
turbo mode, and the firmware automatically raises voltage, sets
frequency to max 1200MHz, and throttle when overheat, etc.

Swap if/else parts and use SOC_BCM2835 def so RPi3 can share the
same cpufreq logic as RPi2, instead of falling to that for RPi.

Submitted by: Jia-Shiun Li <jiashiun@gmail.com>
Differential Revision: https://reviews.freebsd.org/D9640

r315967:
[rpi] Use compatibility string from upstream DTB for I2C controller

FreeBSD uses upstream DTB for RPi3 build and compatibility string for
i2c device is different there. Add this new string to compatibility data.

Reported by: Karl Denninger

r324184 by ian:
Allow Raspberry Pi platform and drivers to be configured with upstream DTBs.

- Added more compatibility strings to drivers not yet converted
- Added new RPI platform code compatibility string to match the ones used
upstream
- Adapted RPI and RPI2 DTS to match the new platform code compatibility
string

The goal is to use the upstream DTBs as a replacement for our custom one.
This is now possible with these changes.

Additionally, as the RPI firmware automatically chooses the right DTB for
us, this would allow to have one common armv6 kernel for RPI0 and RPI1
(BCM2835-based), and one common armv7 kernel for RPI2 v1.1 (BCM2836-based),
and RPI2 v1.2 / RPI3 (BCM2837-based).

Submitted by: Sylvain Garrigues <sylgar@gmail.com>
Differential Revision: https://reviews.freebsd.org/D12360

r325768 by manu:
arm: rpi2: Fix cpufreq(4)

Since r324184 the root node compatible for rpi2 is "brcm,bcm2836", add
it to the compatible list of bcm2835_cpufreq.

Tested On: RPI2 v1.1 RPI2 v1.2

Reported by: many on freebsd-arm@

331889 02-Apr-2018 gonzo

MFC r303035 by markm:

Random bit generator (RBG) driver for RPi and RPi2.

Summary:
This driver supports the following methods to trigger gathering random bits from the hardware:
1. interrupt when the FIFO is full (default) fed into the harvest queue
2. callout (when BCM2835_RNG_USE_CALLOUT is defined) every second if hz is less than 100, otherwise hz / 100, feeding the random bits into the harvest queue

If the kernel is booted with verbose enabled, the contents of the registers will be dumped after the RBG is started during the attach routine.

Author: hackagadget_gmail.com (Stephen J. Kiernan)

Test Plan: Built RPI2 kernel and booted on board. Tested the different methods to feed the harvest queue (callout, interrupt) and the interrupt driven approach seems best. However, keeping the other method for people to be able to experiment with.

Reviewed By: adrian, delphij, markm

Differential Revision: https://reviews.freebsd.org/D6888

329145 12-Feb-2018 kevans

MFC r325834,r325997,326502: Move sys/boot to stand/

This is effectively a direct commit to stable/11, due to differences between
stable/11 and head. Changes to DTS in sys/boot/fdt/dts were often
accompanied by kernel changes. Many of these were also risc-v updates that
likely had many more dependencies to MFC.

Because of this, sys/boot/fdt/dts remains as-is while everything else in
sys/boot relocates to stand/.

r325834: Move sys/boot to stand. Fix all references to new location

r325997: Remove empty directories.

r326502: Document the sys/boot -> stand move in hier.7 and the top-level README.


/freebsd-11-stable/MAINTAINERS
/freebsd-11-stable/Makefile.inc1
/freebsd-11-stable/README
/freebsd-11-stable/lib/libefivar/Makefile
/freebsd-11-stable/release/powerpc/generate-hfs.sh
/freebsd-11-stable/release/tools/vmimage.subr
/freebsd-11-stable/share/examples/bootforth/README
/freebsd-11-stable/share/examples/etc/make.conf
/freebsd-11-stable/share/man/man5/make.conf.5
/freebsd-11-stable/share/man/man7/hier.7
/freebsd-11-stable/share/man/man8/diskless.8
/freebsd-11-stable/stand
/freebsd-11-stable/stand/Makefile
/freebsd-11-stable/stand/Makefile.amd64
/freebsd-11-stable/stand/Makefile.arm
/freebsd-11-stable/stand/Makefile.arm64
/freebsd-11-stable/stand/Makefile.i386
/freebsd-11-stable/stand/Makefile.inc
/freebsd-11-stable/stand/Makefile.mips
/freebsd-11-stable/stand/Makefile.pc98
/freebsd-11-stable/stand/Makefile.powerpc
/freebsd-11-stable/stand/Makefile.sparc64
/freebsd-11-stable/stand/arm
/freebsd-11-stable/stand/arm64
/freebsd-11-stable/stand/common
/freebsd-11-stable/stand/defs.mk
/freebsd-11-stable/stand/efi
/freebsd-11-stable/stand/fdt
/freebsd-11-stable/stand/fdt.mk
/freebsd-11-stable/stand/fdt/Makefile
/freebsd-11-stable/stand/fdt/Makefile.depend
/freebsd-11-stable/stand/fdt/fdt_loader_cmd.c
/freebsd-11-stable/stand/fdt/fdt_platform.h
/freebsd-11-stable/stand/fdt/help.fdt
/freebsd-11-stable/stand/ficl
/freebsd-11-stable/stand/ficl.mk
/freebsd-11-stable/stand/ficl32
/freebsd-11-stable/stand/forth
/freebsd-11-stable/stand/forth/pnp.4th
/freebsd-11-stable/stand/forth/support.4th
/freebsd-11-stable/stand/geli
/freebsd-11-stable/stand/i386
/freebsd-11-stable/stand/i386/Makefile.inc
/freebsd-11-stable/stand/kshim
/freebsd-11-stable/stand/libsa
/freebsd-11-stable/stand/libsa32
/freebsd-11-stable/stand/loader.mk
/freebsd-11-stable/stand/man
/freebsd-11-stable/stand/mips
/freebsd-11-stable/stand/ofw
/freebsd-11-stable/stand/pc98
/freebsd-11-stable/stand/pc98/Makefile.inc
/freebsd-11-stable/stand/powerpc
/freebsd-11-stable/stand/sparc64
/freebsd-11-stable/stand/uboot
/freebsd-11-stable/stand/uboot.mk
/freebsd-11-stable/stand/usb
/freebsd-11-stable/stand/userboot
/freebsd-11-stable/stand/userboot/ficl
/freebsd-11-stable/stand/userboot/libstand
/freebsd-11-stable/stand/userboot/zfs
/freebsd-11-stable/stand/zfs
/freebsd-11-stable/stand/zfs32
/freebsd-11-stable/sys/Makefile
Makefile
Makefile.amd64
Makefile.arm
Makefile.arm64
Makefile.i386
Makefile.inc
Makefile.mips
Makefile.pc98
Makefile.powerpc
Makefile.sparc64
arm
arm64
common
defs.mk
efi
fdt.mk
fdt/Makefile
fdt/Makefile.depend
fdt/fdt_loader_cmd.c
fdt/fdt_platform.h
fdt/help.fdt
ficl
ficl.mk
ficl32
forth
geli
i386
kshim
libsa
libsa32
loader.mk
man
mips
ofw
pc98
powerpc
sparc64
uboot
uboot.mk
usb
userboot
zfs
zfs32
/freebsd-11-stable/sys/contrib/dev/acpica/acpica_prep.sh
/freebsd-11-stable/tools/boot/universe.sh
/freebsd-11-stable/tools/tools/bootparttest/Makefile
/freebsd-11-stable/tools/tools/zfsboottest/Makefile
/freebsd-11-stable/usr.sbin/bhyveload/Makefile
329144 11-Feb-2018 kevans

Re-sync loader.mk and ficl.mk to where they should be

This is a direct commit to stable/11 due to changes lost during an MFC of a
move.

329143 11-Feb-2018 kevans

Correct check: BOOT_FORTH is MK_FORTH in makefiles.

This is a direct commit to stable/11.

329140 11-Feb-2018 kevans

MFC Loader Fixes 2017q4p6: r324649,r324650,r324651,r324652,r324653,r324654,
r324700,r324702,r324709,r324717,r324719,r324841,r324842,r324843,r324845,
r324850,r324876,r324877,r324878,r324879,r324880,r324881,r324883,r324980,
r324981,r324982,r324995,r325014,r325093,r325094,r325114,r325170,r325171,
r325172,r325173,r325174,r325175,r325176,r325248,r325286,r325310,r325332,
r325338,r325339,r325376,r325377,r325379,r325380,r325382,r325478,r325479,
r325480,r325482,r325483,r325484,r325485,r325556,r325641,r325681,r325685,
r325686,r325687,r325688,r325689,r325690,r325691,r325692,r325693,r325694,
r325743,r325744,r325748,r325775,r325779,r325780

r324649: Move common/Makefile.inc to sys/boot/loader.mk.

r324650: tweak style

r324651: create defs.mk for common definitions

r324652: Move all the ficl common code into ficl.mk

r324653: LOADER_foo_SUPPORTED

r324654: Explicitly inlcude SYSDIR in the include path

r324700: loader: initialize dv_cleanup in md.c to eliminate clang warning

r324702: We need to include disk.o in libuboot.a when we're building with
support for disk access.

r324709: Revert "Unify boot1 with loader" change r324646

r324717: libsa/ip.c: misplaced comment, ip_v is half char, not ip_p

r324719: libsa/ip: stop read loop on bad fragments

r324841: Use BOOTDIR more consistently in defs.mk rather than repeat
sys/boot.

r324842: Introduce BOOTOBJ: The top level object directory for the boot tree

r324843: Stopgap fix to the mistmatch between LOADER_GELI_SUPPORT and
LOADER_NO_GELI_SUPPORT.

r324845: Use BOOTOBJ and BOOTDIR to find geli includes and libraries.

r324850: Define LIBSA32 to LIBSA on i386 to fix build.

r324876: Move fdt and uboot defines into common uboot.mk.

r324877: End source directories with SRC rather than a hodgepodge of names

r324878: Make at91 boot loader compile again.

r324879: Prefer SRCTOP paths for bits we're grabbing from libc.

r324880: Use BOOTSRC here.

r324881: Use SYSDIR instead of ${.CURDIR}/../..<etc>/sys.

r324883: Use preferred defined paths, rather than relative paths in fdt.

r324980: Use BOOTDIR consistently.

r324981: Move BINDIR definition to defs.mk, and override where it isn't
/boot

r324982: Remove sys/boot/arm/at91 and ixp425

r324995: loader.efi: Make framebuffer commands available for arm64

r325014: Add a 'place holder' arm struct efi_fb until a real one comes

r325093: Define new EFI variables

r325094: Cleanup non-arch Makefiles

r325114: Use defs.mk defins in most MD code

r325170: Use defs.mk values for userboot

r325171: Use defs.mk name and prefer bsd.init.mk

r325172: Remove the -nostdlib stuff I added. Instead, fix LDFLAGS to be
honored correctly with the new Makefile.inc include order.

r325173: We don't need to build a special ficl for userboot.

r325174: Minor cleanup

r325175: For amd64, compile both zfs and zfs32 libraries.

r325176: Actually add zfs32/Makefile

r325248: loader ptblread() is broken with >512B sectors

r325286: efipart_strategy is using wrong offset with >512B sectors

r325310: zfs.c:vdev_read() needs to be careful about large sectors

r325332: loader: re-enable gzip support for x86

r325338: loader: fix BOOTSRC -> BOOTOBJ in a library path

r325339: This used to have bzip2 support too.

r325376: WIP: centralize machine links

r325377: mostly libsa

r325379: Revert "mostly libsa"

r325380: Revert "WIP: centralize machine links"

r325382: Cleanup stray libstand names to be libsa names.

r325478: Powerpc is a 32-bit boot loader.

r325479: Define LIBFICL32 to be libficl.a on i386 and libficl32.a on amd64.

r325480: Use DO32 for all the places that we need to flag we're building a
32-bit version of a library.

r325482: Move machine and other link creation to defs.mk

r325483: MACHINE can never be powerpc64, so cleanup code that thinks it can.

r325484: Prefer bsd.init.mk to src.opts.mk

r325485: Centralize all 32-bit builds on 64-bit platform stuff.

r325556: loader: set options before including bsd.init.mk

r325641: loader.efi: efi_devpath_is_prefix should return bool

r325681: boot1: avoid using NULL device path

r325685: libsa32 isn't needed for i386. It's already a 32-bit platform.

r325686: Simplify this if to a direct assignment.

r325687: Remove all the empty help files from the powerpc build.

r325688: FDT support doesn't make sense for ps3, remove it.

r325689: Remove LOADER_FDT_SUPPORT as a Makefile variable.

r325690: Remove LOADER_ZFS_SUPPORT as a Makefile variable

r325691: Remove useless PNP define here.

r325692: Replace LOADER_FIREWIRE_SUPPORT variable

r325693: Move LOADER_{NO,}_GELI_SUPPORT to MK_LOADER_GELI

r325694: Install the 4th files in sys/boot/forth instead of each loader

r325743: Make sure the proper loader.rc gets installed.

r325744: boot1: also check for NULL device

r325748: Use proper include file.

r325775: Add loader.conf to the list of files that are MD.

r325779: Add /boot/dts to the list of default modules.

r325780: Don't add /boot/dt*s* but /boot/dt*b*. Stupid think-o.


/freebsd-11-stable/UPDATING
/freebsd-11-stable/share/mk/src.opts.mk
/freebsd-11-stable/sys/arm/include/metadata.h
/freebsd-11-stable/sys/arm64/include/metadata.h
Makefile
Makefile.amd64
Makefile.arm
Makefile.arm64
Makefile.i386
Makefile.inc
Makefile.powerpc
Makefile.sparc64
arm/at91/Makefile
arm/at91/Makefile.inc
arm/at91/boot0/Makefile
arm/at91/boot0/README
arm/at91/boot0/linker.cfg
arm/at91/boot0/main.c
arm/at91/boot0iic/Makefile
arm/at91/boot0iic/main.c
arm/at91/boot0spi/Makefile
arm/at91/boot0spi/main.c
arm/at91/boot2/Makefile
arm/at91/boot2/board.h
arm/at91/boot2/boot2.c
arm/at91/boot2/bwct_board.c
arm/at91/boot2/centipad_board.c
arm/at91/boot2/kb920x_board.c
arm/at91/bootiic/Makefile
arm/at91/bootiic/README
arm/at91/bootiic/env_vars.c
arm/at91/bootiic/env_vars.h
arm/at91/bootiic/loader_prompt.c
arm/at91/bootiic/loader_prompt.h
arm/at91/bootiic/main.c
arm/at91/bootspi/Makefile
arm/at91/bootspi/README
arm/at91/bootspi/ee.c
arm/at91/bootspi/ee.h
arm/at91/bootspi/env_vars.c
arm/at91/bootspi/env_vars.h
arm/at91/bootspi/loader_prompt.c
arm/at91/bootspi/loader_prompt.h
arm/at91/bootspi/main.c
arm/at91/libat91/Makefile
arm/at91/libat91/arm_init.S
arm/at91/libat91/at91rm9200.h
arm/at91/libat91/at91rm9200_lowlevel.c
arm/at91/libat91/at91rm9200_lowlevel.h
arm/at91/libat91/delay.c
arm/at91/libat91/eeprom.c
arm/at91/libat91/emac.c
arm/at91/libat91/emac.h
arm/at91/libat91/emac_init.c
arm/at91/libat91/getc.c
arm/at91/libat91/lib.h
arm/at91/libat91/lib_AT91RM9200.h
arm/at91/libat91/mci_device.h
arm/at91/libat91/memcmp.c
arm/at91/libat91/memcpy.c
arm/at91/libat91/memset.c
arm/at91/libat91/p_string.c
arm/at91/libat91/printf.c
arm/at91/libat91/putchar.c
arm/at91/libat91/reset.c
arm/at91/libat91/sd-card.c
arm/at91/libat91/sd-card.h
arm/at91/libat91/spi_flash.c
arm/at91/libat91/spi_flash.h
arm/at91/libat91/strcmp.c
arm/at91/libat91/strcpy.c
arm/at91/libat91/strcvt.c
arm/at91/libat91/strlen.c
arm/at91/libat91/tag_list.c
arm/at91/libat91/tag_list.h
arm/at91/libat91/xmodem.c
arm/at91/linker.cfg
arm/ixp425/Makefile.inc
arm/ixp425/boot2/Makefile
arm/ixp425/boot2/arm_init.S
arm/ixp425/boot2/boot2.c
arm/ixp425/boot2/cf_ata.h
arm/ixp425/boot2/ixp425_board.c
arm/ixp425/boot2/lib.h
arm/loader
arm/loader/loader.conf
arm/uboot/Makefile
arm/uboot/loader.conf
common/Makefile.inc
common/disk.c
common/md.c
defs.mk
efi/Makefile
efi/Makefile.inc
efi/boot1/Makefile
efi/boot1/boot1.c
efi/boot1/boot_module.h
efi/boot1/ufs_module.c
efi/boot1/zfs_module.c
efi/fdt/Makefile
efi/include/efilib.h
efi/libefi/Makefile
efi/libefi/devpath.c
efi/libefi/efi_main.c
efi/libefi/efipart.c
efi/loader/Makefile
efi/loader/arch/amd64/Makefile.inc
efi/loader/arch/amd64/framebuffer.c
efi/loader/arch/amd64/framebuffer.h
efi/loader/arch/arm/Makefile.inc
efi/loader/arch/arm64/Makefile.inc
efi/loader/arch/i386/Makefile.inc
efi/loader/bootinfo.c
efi/loader/efi_main.c
efi/loader/framebuffer.c
efi/loader/framebuffer.h
fdt.mk
fdt/Makefile
ficl.mk
ficl/Makefile
ficl32/Makefile
forth/Makefile
forth/Makefile.inc
forth/loader.conf
geli/Makefile
i386/Makefile
i386/Makefile.inc
i386/boot0/Makefile
i386/boot2/Makefile
i386/btx/btx/Makefile
i386/btx/btxldr/Makefile
i386/btx/lib/Makefile
i386/cdboot/Makefile
i386/gptboot/Makefile
i386/gptzfsboot/Makefile
i386/kgzldr/Makefile
i386/libfirewire/Makefile
i386/libi386/Makefile
i386/loader/Makefile
i386/mbr/Makefile
i386/pmbr/Makefile
i386/pxeldr/Makefile
i386/zfsboot/Makefile
i386/zfsloader/Makefile
libsa/Makefile
libsa/ip.c
libsa32/Makefile
loader.mk
man/Makefile
mips/beri/Makefile.inc
mips/beri/boot2/Makefile
mips/beri/loader/Makefile
mips/uboot/Makefile
ofw/Makefile.inc
ofw/libofw/Makefile
powerpc/Makefile
powerpc/Makefile.inc
powerpc/boot1.chrp/Makefile
powerpc/kboot/Makefile
powerpc/kboot/help.kboot
powerpc/ofw/Makefile
powerpc/ofw/help.ofw
powerpc/ps3/Makefile
powerpc/ps3/help.ps3
powerpc/uboot/Makefile
powerpc/uboot/help.uboot
sparc64/Makefile
sparc64/Makefile.inc
sparc64/boot1/Makefile
sparc64/loader/Makefile
sparc64/zfsloader/Makefile
uboot.mk
uboot/Makefile
uboot/Makefile.inc
uboot/common/Makefile.inc
uboot/fdt/Makefile
uboot/lib/Makefile
userboot/Makefile
userboot/ficl/Makefile
userboot/ficl/Makefile.depend
userboot/test/Makefile
userboot/test/test.c
userboot/userboot/Makefile
userboot/zfs/Makefile
userboot/zfs/Makefile.depend
zfs/Makefile
zfs/zfs.c
zfs32
zfs32/Makefile
/freebsd-11-stable/tools/boot/universe.sh
/freebsd-11-stable/tools/build/options/WITHOUT_LOADER_GEIL
/freebsd-11-stable/tools/build/options/WITH_LOADER_FIREWIRE
329138 11-Feb-2018 kevans

Fix paths after r329132

This is a direct commit to stable/11 due to svn's handling of merging this
move being less than ideal.

329136 11-Feb-2018 kevans

MFC r324648: Rename top level Makefile.ficl to ficl.mk.

329135 11-Feb-2018 kevans

MFC Loader Fixes 2017q4p5: r324557,r324558,r324559,r324646,r324647

r324557: Rename exit to efi_exit to avoid clashing with libsa exit
definition

r324558: Define prototype for exit and ensure references

r324559: Move panic back into libsa. It's documented in libstand(3) to
belong there.

r324646: Unify boot1 with loader.

r324647: Move orphaned man pages into new man directory from common.

329134 11-Feb-2018 kevans

MFC Loader Fixes 2017q4p4: r324552,r324553,r324554,r324555,r324556

r324552: Kill the userboot copy of libstand.

r324553: Rename libstand.a to libsa.a and libstand32.a to libsa32.a

r324554: Move crc32.c, util.c and gpt.c over to libsa.

r324555: Honor CFLAGS modifications in Makefile.inc by using += here.

r324556: Move ufsread.c

329132 11-Feb-2018 kevans

MFC r324551: Move lib/libstand to sys/boot/libsa

329131 11-Feb-2018 kevans

MFC Loader Fixes 2017q4p3: r324460,r324471

r324460: Rather than laying whack-a-mole with including the path to stand.h,
always include it.

r324471: Fix typos: `stand alon{e,g}` should be spelled like `standalone`

329130 11-Feb-2018 kevans

MFC Loader Fixes 2017q4p2: r324453, r324454

r324453: Create sys/boot/libsa and build libstand.a there

r324454: Disconnect libstand from the build.

329129 11-Feb-2018 kevans

MFC Loader Fixes 2017q4p1: r324321,r324359,r324360,r324388,r324449,r324450,
r324451,r324452

r324321: This README file was quite relevant for FreeBSD 3 or 4. No more.

r324359: Add efi_devpath_is_prefix

r324360: Encapsulate ZFS preferences into efi_zfs_is_preferred

r324388: Unbreak building efiboot with MK_ZFS == no

r324449: Prefer ${LIBSTAND} to -lstand

r324450: Define SASRC and use it

r324451: Add missing -I${SASRC} in a couple of places so that stand.h
doesn't accidentally come in via host pollution.

r324452: Define LIBSA* and use them instead of overloaded LIBSTAND

329118 11-Feb-2018 kevans

Back out MFC r324558: Define prototype for exit and ensure references

This went terribly wrong

329114 11-Feb-2018 kevans

MFC Loader Fixes 2017q3: r320547,r320553,r321621,r321844,r321969,r321991,
r322037,r322038,r322039,r322040,r322056,r322074,r322542,r322592,r322593,
r322896,r322923,r323671,r322930,r322931,r322932,r322933,r322934,r322935,
r322936,r322937,r322938,r322939,r322941,r323062,r323063,r323064,r323065,
r323100,r323131,r323174,r323258,r323261,r323272,r323367,r323379,r323389,
r323407,r323428,r323436,r323494,r323496,r323497,r323541,r323554,r323589,
r323707,r323867,r323885,r323886,r323895,r323896,r323897,r323905,r323906,
r323907,r323908,r323909,r323952,r323991,r324099,r324558,r326445,r326609,
r326610

This batch includes a special kludge to fix powerpc loader build; <stdlib.h>
was included after <stand.h> there, causing problems with DEBUG_MALLOC bits.
Include <stdlib.h> a little bit earlier to fix the build with the intention
of removing this when eventually libsa silently replaces stdlib.h with
stand.h.

r320547: Link EFI/uboot loaders with -znotext

r320553: Integer underflow in efipart_realstrategy when I/O starts after end
of disk

r321621: Always set the receive mask in loader.efi.

r321844: Clean up style in print_state(..) and pager_printf(..)

r321969: Fix the return types for printf and putchar to match their libc

r321991: Revert r321969

r322037: Add stpcpy and stpncpy to libstand

r322038: Add definitions and utilities for EFI drivers

r322039: Move EFI ZFS functions to libefi

r322040: Add EFI utility functions to libefi

r322056: Move EFI fmtdev functionality to libefi

r322074: libefi/time.c cstyle cleanup

r322542: loader.efi: repace XXX with real comments in trap.c

r322592: Remove unused defines.

r322593: Define proposed GUID for FreeBSD boot loader variables.

r322896: Make spinconsole platform independent and hook it up into EFI
loader

r322923: Hide length of geli passphrase during boot.

r323671: Fix language used in the r322923.

r322930: Move efi_main into efi/loader

r322931: Cleanup efi_main return type

r322932: Use the loader.efi conventions for the various EFI tables.

r322933: No need for MK_ZFS around these: they are by their nature only
active when MK_ZFS is true.

r322934: _STAND is sometimes defined on the command line. Make the define
here match.

r322935: Fix warnings due to type mismatch.

r322936: Remove useless 'static' for an enum definition.

r322937: Forward declare struct dsk to avoid warnings when building libi386.

r322938: Link in libefi for boot1

r322939: Use efi_devpath_str for debug path info.

r322941: Eliminate redunant device path matching.

r323062: Make efichar.c routines available to libefi.

r323063: boot1.efi: print more info about where boot1.efi is loaded from

r323064: Exit rather than panic for most errors.

r323065: Save where we're booted from

r323100: libstand: nfs_readlink() should return proper return code

r323131: Revert r322941: Eliminate redundant device matching functions

r323174: Fix loader bug causing too many pages allocation when bootloader
is U-Boot

r323258: ucs2len

r323261: Fix armv6 build

r323272: Be consistent and do return (1);

r323367: Mark init_chroot and init_script variables as deprecated.

r323379: It's been pointed out that init_script at least is useful w/o

r323389: loader.efi: chain loader should provide proper device handle

r323407: boot1 generate-fat: generate all templates at once

r323428: r323389 breaks the kernel build when WITHOUT_ZFS is defined in
src.conf

r323436: boot1: remove BOOT1_MAXSIZE default value

r323494: loader should support large_dnode

r323496: libstand: tftp_open() can leak pkt on error

r323497: libefi: efipart_open should check the status from disk_open

r323541: libefi: efipart_realstrategy rsize pointer may be NULL

r323554: Increase EFI boot file size frok 128k to 384k

r323589: loader: biosmem.c cstyle cleanup

r323707: loader: biosmem allocate heap just below 4GB

r323867: libefi: devicename.c cleanups

r323885: libefi: efi_devpath_match() should return bool

r323886: libefi: efipart.c should use calloc()

r323895: libefi: efi_devpath_match local len should be unsigned

r323896: r323885 did miss efilib.h update

r323897: efilib.h: typo in structure member description

r323905: libefi: pdinfo_t pd_unit and pd_open should be unsigned

r323906: libefi: efipart_strategy() should return ENXIO when there is no
media

r323907: libefi: efipart.c cstyle fix for efipart_print_common()

r323908: libefi: efipart_hdinfo_add_filepath should check strtol result

r323909: libefi: define EISA PNP constants

r323952: After the r317886 support for TFTP and NFS can be enable
simultaneously.

r323991: libefi: efipart_floppy() will should not pass acpi pointer if the
HID test fails

r324099: Compile loader as Little-Endian on PPC64/POWER8

r324558: Define prototype for exit and ensure references

r326445: Fix random() and srandom() prototypes to match the standard.

r326609: Make putenv and getenv match the userland definition

r326610: Fix random() prototype to match the system.

PR: 219000 221001 222215
Relnotes: yes ("The length of the geli passphrase is hidden during boot")


/freebsd-11-stable/UPDATING
/freebsd-11-stable/lib/libstand/Makefile
/freebsd-11-stable/lib/libstand/environment.c
/freebsd-11-stable/lib/libstand/libstand.3
/freebsd-11-stable/lib/libstand/nfs.c
/freebsd-11-stable/lib/libstand/random.c
/freebsd-11-stable/lib/libstand/stand.h
/freebsd-11-stable/lib/libstand/tftp.c
/freebsd-11-stable/sbin/geom/class/eli/geli.8
/freebsd-11-stable/sbin/geom/class/eli/geom_eli.c
/freebsd-11-stable/share/mk/src.opts.mk
Makefile.inc
arm/uboot/Makefile
arm/uboot/conf.c
common/loader.8
efi/boot1/Makefile
efi/boot1/Makefile.fat
efi/boot1/boot1.c
efi/boot1/boot_module.h
efi/boot1/fat-amd64.tmpl.bz2.uu
efi/boot1/fat-amd64.tmpl.xz
efi/boot1/fat-arm.tmpl.bz2.uu
efi/boot1/fat-arm.tmpl.xz
efi/boot1/fat-arm64.tmpl.bz2.uu
efi/boot1/fat-arm64.tmpl.xz
efi/boot1/fat-i386.tmpl.bz2.uu
efi/boot1/fat-i386.tmpl.xz
efi/boot1/generate-fat.sh
efi/boot1/ufs_module.c
efi/boot1/zfs_module.c
efi/include/efi.h
efi/include/efi_driver_utils.h
efi/include/efi_drivers.h
efi/include/efiapi.h
efi/include/efichar.h
efi/include/efidevp.h
efi/include/efilib.h
efi/include/efiprot.h
efi/include/efizfs.h
efi/libefi/Makefile
efi/libefi/devicename.c
efi/libefi/devpath.c
efi/libefi/efi_driver_utils.c
efi/libefi/efichar.c
efi/libefi/efinet.c
efi/libefi/efipart.c
efi/libefi/efizfs.c
efi/libefi/errno.c
efi/libefi/libefi.c
efi/libefi/time.c
efi/loader/Makefile
efi/loader/arch/amd64/Makefile.inc
efi/loader/arch/amd64/trap.c
efi/loader/arch/i386/Makefile.inc
efi/loader/bootinfo.c
efi/loader/conf.c
efi/loader/devicename.c
efi/loader/efi_main.c
efi/loader/loader_efi.h
efi/loader/main.c
geli/geliboot.c
geli/geliboot.h
geli/geliboot_crypto.c
geli/geliboot_internal.h
geli/pwgets.c
i386/libi386/Makefile
i386/libi386/biosdisk.c
i386/libi386/biosmem.c
i386/libi386/spinconsole.c
mips/uboot/conf.c
powerpc/ofw/conf.c
powerpc/ofw/ofwfdt.c
powerpc/uboot/conf.c
userboot/test/test.c
userboot/userboot.h
userboot/userboot/main.c
zfs/zfsimpl.c
/freebsd-11-stable/sys/cddl/boot/zfs/zfsimpl.h
/freebsd-11-stable/sys/geom/eli/g_eli.c
/freebsd-11-stable/sys/geom/eli/g_eli.h
/freebsd-11-stable/sys/geom/eli/g_eli_ctl.c
/freebsd-11-stable/usr.sbin/bhyveload/bhyveload.c
329100 10-Feb-2018 kevans

MFC Loader Fixes 2017q2: r316437,r316577,r316578,r316585,r316590,r316612,
r316625,r316628,r316654,r316682,r316704,r316771,r317092,r317097,r317099,
r317652,r317785,r317886,r317887,r318142,r318320,r318356,r318678,r318754,
r318982,r318986,r318987,r318988,r318989,r318990,r318991,r318992,r318993,
r318994,r318999,r319083,r319084,r319085,r320011,r320234,r320288,r320304,
r320467,r320482

r316437: Small cleanup to make i386/loader match efi/loader boot environment
code

r316577: loader: part.c cstyle cleanup

r316578: loader: want mechanism to avoid RA with bcache

r316585: loader: zfs reader should check all labels

r316590: libstand/dosfs: cache FAT32 in 128 Kb blocks to save loader memory

r316612: In r298230 the value of HEAP_MIN was changed from 3MB to 64MB.
Correct a comment.

r316625: Do not use -msoft-float with intention of disabling FP on aarch64

r316628: Silence GCC warning by initializing the local variable.

r316654: loader: r316585 did miss userboot update

r316682: loader: r316585 did miss sparc/ofw

r316704: loader.efi: only fetch zfs pool guid for the actual boot device

r316771: loader: Avoid possible overflow via environment variable

r317092: loader: zfs reader vdev_probe should check for minimum device size

r317097: loader: F_READ/F_WRITE should be checked against masked flag

r317099: loader: uboot disk ioctl should call disk_ioctl

r317652: loader.efi: ResetSystem does not use data with EFI_SUCCESS

r317785: zfsboot: drvsize() may be unusable on some systems

r317886: distinguish NFS versus TFTP boot by rootpath

r317887: loader: network read rework

r318142: libstand: NULL pointer dereference in rarp

r318320: loader: add ip layer code into libstand

r318356: libstand: increase nfs max read size to 16k

r318678: Replacing iterating over rootpath by strsep(3).

r318754: Pass -N directly to ld via -Wl rather than passing it to the
compiler driver.

r318982: Pass a "FREEBSD" user-class in PXE dhcp request

r318986: add a comment on vendor index 19 and 20 to avoid confusion

r318987: Support URI scheme for root-path in netbooting

r318988: Always build tftpfs support along with nfs for pxeboot

r318989: Always issue the pxe request

r318990: Partially revert r314948

r318991: Document recent changes on pxeboot

r318992: Capitalize DHCP

r318993: Use the usual FreeBSD spelling for the DHCP user class

r318994: Catch with the change in the user class

r318999: Update the comments concerning net_parse_rootpath to reflect what
it is now

r319083: Followup on the user-class changes

r319084: Small cleanup in dev_net.c

r319085: use the same option list for dhcp discovery and request

r320011: Add chain loader support for loader

r320234: Make structure padding explicit in EFI_MEMORY_DESCRIPTOR

r320288: Allow Clang's integrated assembler to assemble boot0

r320304: loader.efi: Disable smbios for arm

r320467: loader: chain load relocate data declaration is bad

r320482: As with arm64 mark the EFI PE header as allocated on arm.

PR: 218473


/freebsd-11-stable/lib/libstand/Makefile
/freebsd-11-stable/lib/libstand/arp.c
/freebsd-11-stable/lib/libstand/bootp.c
/freebsd-11-stable/lib/libstand/bootp.h
/freebsd-11-stable/lib/libstand/bootparam.c
/freebsd-11-stable/lib/libstand/dosfs.c
/freebsd-11-stable/lib/libstand/dosfs.h
/freebsd-11-stable/lib/libstand/ether.c
/freebsd-11-stable/lib/libstand/globals.c
/freebsd-11-stable/lib/libstand/ip.c
/freebsd-11-stable/lib/libstand/net.c
/freebsd-11-stable/lib/libstand/net.h
/freebsd-11-stable/lib/libstand/netif.c
/freebsd-11-stable/lib/libstand/netif.h
/freebsd-11-stable/lib/libstand/nfs.c
/freebsd-11-stable/lib/libstand/rarp.c
/freebsd-11-stable/lib/libstand/rpc.c
/freebsd-11-stable/lib/libstand/rpc.h
/freebsd-11-stable/lib/libstand/stand.h
/freebsd-11-stable/lib/libstand/tftp.c
/freebsd-11-stable/lib/libstand/udp.c
/freebsd-11-stable/share/mk/bsd.stand.mk
common/bcache.c
common/commands.c
common/dev_net.c
common/disk.c
common/md.c
common/part.c
efi/Makefile.inc
efi/boot1/Makefile
efi/boot1/boot1.c
efi/boot1/zfs_module.c
efi/fdt/Makefile
efi/include/efidef.h
efi/libefi/Makefile
efi/libefi/efinet.c
efi/libefi/efipart.c
efi/libefi/time.c
efi/loader/Makefile
efi/loader/arch/arm/start.S
efi/loader/arch/arm64/Makefile.inc
efi/loader/main.c
forth/menu.rc
i386/boot0/Makefile
i386/common/drv.h
i386/libi386/Makefile
i386/libi386/bioscd.c
i386/libi386/biosdisk.c
i386/libi386/biosmem.c
i386/libi386/libi386.h
i386/libi386/pxe.c
i386/libi386/pxe.h
i386/libi386/relocater_tramp.S
i386/loader/Makefile
i386/loader/chain.c
i386/loader/help.i386
i386/loader/main.c
i386/pxeldr/pxeboot.8
i386/zfsboot/zfsboot.c
mips/beri/boot2/Makefile
mips/beri/loader/beri_disk_cfi.c
mips/beri/loader/beri_disk_sdcard.c
ofw/libofw/ofw_disk.c
ofw/libofw/ofw_net.c
ofw/libofw/openfirm.c
ofw/libofw/openfirm.h
powerpc/ps3/ps3cdrom.c
powerpc/ps3/ps3disk.c
sparc64/loader/main.c
uboot/lib/disk.c
uboot/lib/net.c
usb/storage/umass_loader.c
userboot/userboot/main.c
userboot/userboot/userboot_disk.c
zfs/libzfs.h
zfs/zfsimpl.c
329099 10-Feb-2018 kevans

MFC Loader Fixes 2017q1: r311458,r312237,r312314,r312374,r312947,r313042,
r313047,r313166,r313328,r313332,r313333,r313337,r313348,r313349,r313389,
r313442,r313451,r313575,r313645,r313710,r314114,r314213,r314275,r314945,
r314948,r315008,r315408,r315427,r315645,r315646,r315648,r315653,r315850,
r316064,r316078,r316079,r316100,r316104,r316111,r316112,r316171,r316279,
r316280,r316287,r316311,r316343,r316424,r316436

r311458: Use compiler driver to link BERI boot loaders

r312237: loader.efi: find_currdev() can leak memory

r312314: loader: move device path definitions to include/efidevp.h

r312374: loader: efi devpath api usage should be more aware of NULL pointers

r312947: Remove "-Xassembler -G0" from CFLAGS.

r313042: loader.efi environment related cleanups

r313047: loader: disk/part api needs to use uint64_t offsets

r313166: loader: libefi/env.c warnings in arm build

r313328: loader: Implement disk_ioctl() to support DIOCGSECTORSIZE and
DIOCGMEDIASIZE.

r313332: loader: bcache read ahead block count should take account the large
sectors

r313333: loader: Replace EFI part devices.

r313337: loader: 313329 missed ZFS guard in loader/main.c

r313348: loader: biosdisk fix for 2+TB disks

r313349: loader: disk io should not use alloca()

r313389: efipart is also using the '%S' printf format, add -Wno-format for
it.

r313442: loader: possible NULL pointer dereference in efipart.c

r313451: loader: possible NULL pointer dereference in bcache.c

r313575: makefs: make the buffer functions look exactly like the kernel ones

r313645: loader: implement MEDIA_FILEPATH_DP support in efipart

r313710: loader: cstyle fixes and DIOCGMEDIASIZE should use uint64_t

r314114: Use LDFLAGS with CC instead of _LDFLAGS.

r314213: Remove control+r handling from geliboot's pwgets()

r314275: Remove unused macro from common/drv.c.

r314945: Some style(9) fixes. No functional changes.

r314948: Try to extract the RFC1048 data from PXE.

r315008: r314948 seems to be missing a variable or two that will break

r315408: loader: remove open_disk cache

r315427: loader: biosdisk should report IO error from INT13

r315645: loader: disk_cleanup was left in userboot_disk.c

r315646: loader: pxe.h constants have wrong values

r315648: libstand: verify value provided by nfs.read_size

r315653: loader: verify the value from dhcp.interface-mtu and use snprintf
o set mtu

r315850: The original author abused Nd (one-line description, used by
makewhatis)

r316064: Fix build with path names with 'align' or 'nop' in them.

r316078: gpt*boot: Save a bit more memory when LOADER_NO_GELI_SUPPORT is
specified

r316079: Simply retire the sedification of the boot2.s file.

r316100: Remove -fno-guess-branch-probability and -fno-unit-at-a-time.

r316104: Use `NO_WCAST_ALIGN` instead of spelling it out as -Wno-cast-align
in CFLAGS

r316111: loader: move bios getsecs into time.c

r316112: loader: ls command should display file types properly

r316171: xfsread inlined uses more space, so remove the inline tag.

r316279: loader: efipart should check disk size from partition table

r316280: loader: simplify efi_zfs_probe and avoid double probing for zfs.

r316287: Remove OLD_NFSV2 from loader and libstand

r316311: Add explicit_bzero() to libstand, and switch GELIBoot to using it

r316343: Implement boot-time encryption key passing (keybuf)

r316424: Fix sparc64 build broken by r316343 and r316076

r316436: Restore EFI boot environment functionality broken in r313333

PR: 216940 217298 217935


/freebsd-11-stable/lib/libstand/Makefile
/freebsd-11-stable/lib/libstand/bootp.c
/freebsd-11-stable/lib/libstand/bootp.h
/freebsd-11-stable/lib/libstand/nfs.c
/freebsd-11-stable/lib/libstand/nfsv2.h
/freebsd-11-stable/lib/libstand/stand.h
common/bcache.c
common/bootstrap.h
common/dev_net.c
common/disk.c
common/disk.h
common/ls.c
common/part.c
common/part.h
efi/include/efidevp.h
efi/include/efilib.h
efi/libefi/Makefile
efi/libefi/devpath.c
efi/libefi/efinet.c
efi/libefi/efipart.c
efi/libefi/env.c
efi/libefi/wchar.c
efi/loader/conf.c
efi/loader/devicename.c
efi/loader/main.c
forth/beastie.4th.8
forth/loader.4th
geli/Makefile
geli/geliboot.c
geli/geliboot.h
geli/geliboot_crypto.c
geli/geliboot_internal.h
geli/pwgets.c
i386/boot2/Makefile
i386/boot2/boot2.c
i386/btx/lib/btxv86.h
i386/common/bootargs.h
i386/common/drv.c
i386/gptboot/Makefile
i386/gptboot/gptboot.c
i386/gptzfsboot/Makefile
i386/libi386/bioscd.c
i386/libi386/biosdisk.c
i386/libi386/bootinfo32.c
i386/libi386/bootinfo64.c
i386/libi386/pxe.c
i386/libi386/pxe.h
i386/libi386/time.c
i386/loader/Makefile
i386/loader/main.c
i386/zfsboot/zfsboot.c
mips/beri/boot2/Makefile
mips/beri/common/common.ldscript
mips/beri/loader/beri_disk_cfi.c
mips/beri/loader/beri_disk_sdcard.c
mips/beri/loader/loader.ldscript
sparc64/loader/Makefile
uboot/lib/disk.c
usb/storage/umass_loader.c
userboot/userboot/userboot_disk.c
zfs/libzfs.h
zfs/zfs.c
/freebsd-11-stable/sys/crypto/intake.h
/freebsd-11-stable/sys/geom/eli/g_eli.c
/freebsd-11-stable/sys/geom/eli/g_eli.h
/freebsd-11-stable/sys/opencrypto/crypto.c
/freebsd-11-stable/sys/sys/linker.h
/freebsd-11-stable/usr.sbin/makefs/ffs.c
/freebsd-11-stable/usr.sbin/makefs/ffs/buf.c
/freebsd-11-stable/usr.sbin/makefs/ffs/buf.h
/freebsd-11-stable/usr.sbin/makefs/ffs/ffs_alloc.c
/freebsd-11-stable/usr.sbin/makefs/ffs/ffs_balloc.c
329070 09-Feb-2018 kevans

MFC r327606: Handle misconfigured/nonexistent pcidev for comconsole instead
of BTX panic.

[This is effectively a direct commit to stable/11 due to path restructuring
in head. Diffs have simply been applied to previous location]

PR: 203319

329011 08-Feb-2018 kevans

MFC r307322,r307323,r307324,r307326,r307327,r307338,r307879,r307908,r307911,
r307942,r307950,r307951,r307954,r307955,r308125,r308195,r308476,r308534,
r308535,r308776,r308843,r310236,r310726: Loader fixes, 2016q4

r307322: Remove /boot/boot.conf, deprecated for 16 years

r307323: Remove fetching of pInterp.

r307324: Create a new linker set, Xficl_compile_set which contains a list of
functions to call to register new forth words.

r307326: In UEFI mode expose the SMBIOS anchor base address via kenv

r307327: Update i386 build of loader.efi (but leave it disabled) so that we
at least build it now.

r307338: Create a pcibios-version environment FORTH word.

r307879: Preliminary support for EFI in boot loader.

r307908: Fix the build on both arm64 and when WITHOUT_FORTH is defined.

r307911: Add better comment...

r307942: Really make WITHOUT_FORTH (MK_FORTH==no) work.

r307950: Add it (Makefile.ficl) to the right place

r307951: Fix two backwards tests.

r307954: Back out the move to the loader script from -N.

r307955: LIBSTAND goes last, so put it last here too.

r308125: In loader.efi, instead of exiting directly, try to fallback.

r308195: efinet_dev_print should honor verbose option.

r308476: boot/forth spelling issue in forth word

r308534: The file_loadraw function grew an argument, update install function

r308535: Add support for LOADER_RC setting in the pkgfs manifes

r308776: loader: zfs toplevel vdev must have spa set.

r308843: loader: smbios version check is not correct

r310236: Renumber license clauses to avoid skipping #3

r310726: cdboot: add explict suffix to ambiguous or instruction

PR: 214375

329010 08-Feb-2018 kevans

MFC r303555,r303556,r303936,r303962,r304317,r304532,r305026,r305107,r305132,
r305178,r305353,r305814,r306159,r306380,r306504: Loader fixes, 2016q3

r303555: bcache should support reads shorter than sector size

r303556: Improve boot loader quote parsing

r303936: Add kernel environment variables under smbios.system

r303962: Add the missing space between .asciz directive and opening quote
for some lines with #ifdef BTXLDR_VERBOSE/#endif

r304317: boot1.efi Free() should check for NULL to provide consistent
behavior

r304532: Replace sprintf -> snprintf for command_errbuf provisioned from
dynamic content.

r305026: Emulate efi_cons_poll when WaitForKey is not available

r305107: Create a hook 'post-initialize' for people that want to define
something to read in .conf files after all other .conf files for the purpose
of overriding.

r305132: Remove accidentally committed stray comment.

r305178: bd_int13probe() should check extended info if sector info is bad

r305353: Don't use -N to set the OMAGIC with data and text writeable and
data not page aligned.

r305814: ufsread: Do not cast struct direct from void *

r306159: Consistently declare getsecs(void) with proper return type and void
when no arguments are present.

r306380: loader command interpreter should reset command_errmsg

r306504: Fix a cluster of bugs in list EFI environment variables

PR: 204602, 211958, 211958
Relnotes: yes ("Improve boot loader quote parsing")

328941 06-Feb-2018 kevans

MFC r308774: loader: beri_sdcard_disk_print() needs to return int.

r308434 did change the return type for dv_print callbacks, but the return
type for beri_sdcard_disk_print() was left unchanged, causing compile errors.

328889 05-Feb-2018 kevans

MFC r308434, 308827

MFC r308434: Loader paged/pageable data is not always paged.
MFC r308827: lsdev device name section headers should be printed by dv_print
callback.

328866 05-Feb-2018 kevans

MFC r304321,304753,304754,306751,316077,316110:
SHA512, skein, large block support for loader zfs

MFC r304321: Add SHA512, skein, large blocks support for loader zfs.
MFC r304753: loader: zio_checksum_verify() must test spa for NULL pointer
MFC r304754: r304321 broken bhyve zvol VM bhyveload hang 100% WCPU
MFC r306751: Disable loop unrolling in skein for sys/boot
MFC r316077: Unbreak compilation with gcc 4.2.1
MFC r316110: Use `-Wno-missing-declarations` with CWARNFLAGS for skein.c

328836 04-Feb-2018 emaste

Remove now-unused variable after r328809

328809 02-Feb-2018 kevans

MFC r328504: stand/fdt: Consolidate overlay handling a little further

[This is effectively a direct commit to stable/11 due to path restructuring
in HEAD. The diff against HEAD has simply been applied to the old path]

This should have been done as part of r327350, but due to lack of foresight
it came later. In the different places we apply overlays, we duplicate the
bits that check for fdt_overlays in the environment and supplement that with
any other places we need to check for overlays to load. These "other places"
will be loader specific and are not candidates for consolidation.

Provide an fdt_load_dtb_overlays to capture the common logic, allow passing
in an additional list of overlays to be loaded. This additional list of
overlays is used in practice for ubldr to pull in any fdt_overlays passed to
it from U-Boot environment, but it can be used for any other source of
overlays.

These additional overlays supplement loader.conf(5) fdt_overlays, rather
than replace, so that we're not restricted to specifying overlays in only
one place. This is a change from previous behavior where loader.conf(5)
supplied fdt_overlays would cause us to ignore U-Boot environment, and this
seems nonsensical- user should have sufficient control over both of these
aspects, or lack of control for good reasons.

A knob could be considered in the future to ignore U-Boot supplied overlays,
but the supplemental treatment seems like a good start.

328778 02-Feb-2018 kevans

MFC r328584: stand/fdt: Remove unused write-only new_fdtp, correct comment

This is effectively a direct commit to stable/11 due to path restructuring
in HEAD. The diff against HEAD has simply been applied to the old path.

328601 30-Jan-2018 kevans

MFC r328293: stand/fdt: Fallback to `name` + .dtbo if we fail to load `name`

[This is a direct commit to stable/11 due to path restructuring in -HEAD;
diffs have been applied to their old locations]

This behavior also matches a Linux-ism by allowing fdt_overlays to specify
names of overlays without an extension, e.g. fdt-overlays="sunxi-h3-h5-emac"

If we fail to load the file given by a name in fdt_overlays, try again with
".dtbo" appended to it. This still allows overlays to lack .dtbo extension
if user prefers it and just adds a fallback cushion.

Future work could move this from a hard-coded ".dtbo" to a loader.conf(5)
configuration option.

328499 27-Jan-2018 kevans

MFC (conceptually) r328107: Add /boot/overlays

This is a direct commit to stable/11, due to path changes in HEAD. Diffs
have been applied on top of stable/11, with exception to the change to
forth/loader.conf. forth/loader.conf has seen additional changes in HEAD
mthat are not being MFC'd to stable/11, so the addition of /boot/overlays to
its module_path is not necessary.

MFC r328107: stand: Add /boot/overlays for separation of overlays from DTB

This matches directory structure used commonly in Linux-land, and it's
cleaner than mixing overlays into the existing module paths. Overlays are
still mixed in by specifying fdt_overlays in loader.conf(5).

328459 27-Jan-2018 kevans

MFC (conceptually) r328106: libfdt: Update to 1.4.6, use libfdt for overlays

This is a direct commit to stable/11 due to path changes in HEAD. Diffs have
been applied on top of their previous locations, with one minor adjustment
as per the "MFC" note below: a <stdlib.h> include in libfdt_env.h h as been
wrapped in an `#ifndef _STANDALONE` block to prevent build failures when
built in the bootloader context. These issues are not present in HEAD, thus
this differs from HEAD.

libfdt highlights since 1.4.3:

- fdt_property_placeholder added to create a property without specifying its
value at creation time
- stringlist helper functions added to libfdt
- Improved overlay support
- Various internal cleanup

Also switch stand/fdt over to using libfdt for overlay support with this
update. Our current overlay implementation works only for limited use cases
with overlays generated only by some specific versions of our dtc(1). Swap
it out for the libfdt implementation, which supports any properly generated
overlay being applied to a properly generated base.

This will be followed up fairly soon with an update to dtc(1) in tree to
properly generate overlays.

MFC note: the <stdlib.h> include this update introduces in libfdt_env.h is
apparently not necessary in the context we use this in. It's not immediately
clear to me the motivation for it being introduced, but it came in with
overlay support. I've left it in for the sake of accuracy and because it's
not harmful here on HEAD, but MFC'ing this to stable/11 will require
wrapping the #include in an `#ifndef _STANDALONE` block or else it will
cause build failures.

328451 26-Jan-2018 kevans

MFC (conceptually) r327991, r328009: Don't clobber FDT enroute to the kernel

This is a direct commit to stable/11 due to path changes that have occured
in HEAD. The diffs remain the same, but rebased against their old locations.

MFC r327991: stand/fdt: don't send clobbered FDT to the kernel

If fdt_overlay_apply fails at some stage to apply the overlay to the base,
both the base and overlay may be in an inconsistent state (some fixups
applied, some phandles adjusted, some symbols merged). These can be bad for
a number of reasons, to include user frustration if some fixups applied and
not others. Fail a little safer by making a clean copy of the base FDT for
every overlay that we can simply discard if things go awry.

This also allows us the luxury of simply discarding overlays if we hit some
kind of memory limit or if they're malformed and extremely large for some
reason. We'll now leave a nice error message indicating that some overlays
could not be applied due to size restrictions and we apply what we can.

I note that our overlay implementation has some flaws that might still leave
your system in an unbootable state even if an overlay applies correctly;
please exercise caution in using overlays until we can swap it out for
libfdt's implementation.

MFC r328009: stand/fdt: Don't leak next_fdtp if we fail to open overlay

328125 18-Jan-2018 kib

MFC r327822:
Skip IRELATIVE relocations when loader processes ELF files.

327945 13-Jan-2018 kevans

MFC (conceptually) r327376, r327416: Improve libfdt compatibility

This is a direct commit to stable/11 due to restructuring of sys/boot =>
stand in -HEAD. The diff remains the same and it is simply applied to the
previous location.

MFC r327376: stand/fdt: Swap libfdt include order

libfdt.h should be included before fdt.h, as hinted at by all of libfdt/;
standard include order being libfdt.h, libfdt_env.h, fdt.h.

The current include order also causes problems when libfdt gets updated, as
fdt.h requires some definitions from libfdt.h.

MFC r327416: stand/fdt: Make fdt_overlay_apply signature-compatible with
libfdt

libfdt will assume a writable fdt overlay blob has been passed in, so make
ours compatible to allow easier review when we try to drop libfdt into
place. overlay from the calling context is writable, making it safe to
simply rip out everything related to copying the overlay blob in
fdt_overlay_apply.

I note here that we still have problems: fdt_overlay_apply, both our version
and libfdt's, may fail and have already clobbered the base fdt to some
extent. Future work will make sure we don't apply a potentially bogus fdt,
instead discarding the base fdt if we had an error.

327944 13-Jan-2018 kevans

MFC (conceptually) r327350: Consistently apply fdt_overlays

This is a direct commit to stable/11 due to restructuring of sys/boot =>
stand in -HEAD. The diff remains the same and it is simply applied to the
previous location.

MFC r327350: stand/fdt: Consistently apply fdt_overlays

Overlays were previously not applied when U-Boot provides FDT or EFI
provides FDT, only when we load FDT from /boot/dtb given name from U-Boot.

Make all three paths lead to loading fdt_overlays and applying them, so that
fdt_overlays can be expected to Just Work.

327942 13-Jan-2018 kevans

MFC (conceptually) r327298, r327299: Fix overlay application behavior

This is a direct commit to stable/11 due to restructuring of sys/boot =>
stand in -HEAD. The diff remains the same and it simply applied to the
previous location.

MFC r327298: stand/fdt: Fix loading of multiple fdt_overlays

fdt_load_dtb_overlays was written to unload previous overlay when a new
valid one is come across. fdt_apply_overlays further down is written to
iterate over all .dtbo's currently loaded and apply them one-by-one. Correct
fdt_load_dtb_overlays to stop dropping valid overlays that were previously
loaded and match expectations.

MFC r327299: stand/fdt: Avoid bailout when dtbo has no fixups

In the case of a simple dtbo where fragment uses target-path and the overlay
contains no references, /__fixups__ will not be included by either our dtc
or dtc from ports, but the file still has valid fragments to be applied.

Additional testing found that /__symbols__ might also be omitted if it's
empty, which is not necessarily an error.

327856 12-Jan-2018 asomers

MFC r313962, r313972-r313973, r315230

r313962 by allanjude:
improve PBKDF2 performance

The PBKDF2 in sys/geom/eli/pkcs5v2.c is around half the speed it could be

GELI's PBKDF2 uses a simple benchmark to determine a number of iterations
that will takes approximately 2 seconds. The security provided is actually
half what is expected, because an attacker could use the optimized
algorithm to brute force the key in half the expected time.

With this change, all newly generated GELI keys will be approximately 2x
as strong. Previously generated keys will talk half as long to calculate,
resulting in faster mounting of encrypted volumes. Users may choose to
rekey, to generate a new key with the larger default number of iterations
using the geli(8) setkey command.

Security of existing data is not compromised, as ~1 second per brute force
attempt is still a very high threshold.

PR: 202365
Original Research: https://jbp.io/2015/08/11/pbkdf2-performance-matters/
Submitted by: Joe Pixton <jpixton@gmail.com> (Original Version), jmg (Later Version)
Reviewed by: ed, pjd, delphij
Approved by: secteam, pjd (maintainer)
Differential Revision: https://reviews.freebsd.org/D8236

r313972 by ngie:
Unbreak the build when "make obj" is executed beforehand

Using relative paths imply working directory (in this case .OBJDIR), whereas the
sources live in the .CURDIR-relative path.

X-MFC with: r313962
Pointyhat to: allanjude
Sponsored by: Dell EMC Isilon

r313973 by ngie:
A forced commit to note other portion of the Makefile change accidentally
committed in r313972

The code committed in r313962 implicitly relies on python 2.x to generate
testvect.h . There are a handful of issues with this approach:

- python is not an explicit build dependency for FreeBSD
- python 2.x is deprecated and will be removed sometime in the future
(potentially before 11.x's EOL), and the script does not function with
python 3.5 (it uses deprecated idioms and incompatible function calls).
- python(1) (by default) lives in /usr/local/bin (${LOCALBASE}/bin) and
gentestvect.py is a dependency of testvect.h (prior to r313972) which
means that if the mtime of the generator script was newer than the
mtime of the test vector, it could cause a spurious build failure in
build time or at install time.

A better solution using C/C++ should be devised.

Discussed with: allanjude
X-MFC with: r313962, r313972
Sponsored by: Dell EMC Isilon

r315230 by ngie:
Move .../sys/geom/eli/pbkdf2... to .../sys/geom/class/eli/...

This change moves the tests added in r313962 to an existing directory
structure used by the geli TAP tests. It also, renames the test from
pbkdf2 to pbkdf2_test .

The changes to ObsoleteFiles.inc are being committed separately as they
aren't needed for the MFC to ^/stable/11, etc, if the MFC for the tests
is done all in one commit.

X-MFC with: r313962, r313972-r313973
Reviewed by: allanjude
Sponsored by: Dell EMC Isilon
Differential Revision: D9985

326951 18-Dec-2017 manu

MFC r312914, r322694

r312914 by imp:
Honor LINKS=x y in dtb modules. We need this for compatibility links
for old, FreeBSD names.

r322694:
RPI DTS: Add value previously set by VideoCore and DTB links

Using latest U-Boot for RPI 1 or 2 the DTB loaded by the firmware is discarded.
The DTB was previously patched by the firmware to contain the DMA channel mask.
DTB provided by the rpi firmware or DTS in the Linux tree contain the raw value
directly. Do the same for our DTS as we cannot switch to the upstream ones yet.
Not having the DMA channel mask setup properly cause mmc not to be detected
(and probably other problems on driver using DMA).

Also, add links for rpi dtb to the name used by u-boot. This way the dtb can be
loaded by ubldr using the U-Boot env variable fdtfile.

Tested On: RPI B Rev2, RPI Zero, RPI 2 v1.1 RPI 2 v1.2

Thanks to Sylvain Garrigues <sylvain@sylvaingarrigues.com> for the help.

PR: 218344

326934 18-Dec-2017 ian

MFC (conceptually) r326752, r326754:

This is a direct commit to 11-stable, because the code has moved and
the directories have been restructured in 12-current, but it just hand-
applies the same patches to the corresponding files in their old locations.

r326752:
Save and restore r9 register in arm ubldr. In old gcc 4.2, r9 was a callee-
saved register, but in arm EABI it may be either callee-saved or dedicated
to some special purpose (such as a TLS pointer). It appears clang does not
treat it as a callee-saved register (instead using it as another work
register, similar to r12).

Another important side effect of these changes is that saving an extra
register in the push/pop statements keeps the stack aligned to an 8-byte
boundary during the self_reloc() call, as it always should have been.

As stated in the PR...

Essentially the important caller-saved registers are pushed (r0, r1, r9, lr)
before the relocation call, and popped after. Then r8/r9 are saved as usual
for the syscall trampoline, and lr is stored in r8 (now free) as a
callee-saved value before calling into `main`.

The call to `main` can no longer be a tail call because we must restore r9
especially after main returns (although since we have used r8 to hold lr we
must also restore this).

r326754:
When building for arm arches, set PKTALIGN to the max cache line size
supported by the arch, to meet u-boot's requirement that I/O be done
in cache-aligned chunks.

PR: 223977 224008

326431 01-Dec-2017 emaste

MFC r324703: loader.mk: clean md.o even if MD_IMAGE_SIZE not defined

We don't normally provide special handling for optionally-included src
files, but md.o depends on both md.c and the value of ${MD_IMAGE_SIZE}.
Previously if one built with MD_IMAGE_SIZE, executed "make clean", and
then built with a different MD_IMAGE_SIZE md.o would not be rebuilt.

Reported by: Zakary Nafziger
Sponsored by: The FreeBSD Foundation

323485 12-Sep-2017 rlibby

MFC r316119 (by ngie):

self_reloc.c: Pass -Wno-error=maybe-uninitialized to gcc versions
greater than 4.2.1

323484 12-Sep-2017 rlibby

MFC r303723 (by markj):

Fix a few cosmetic issues in boot1.efi.

323409 11-Sep-2017 ian

MFC r316374, r316377:

Preserve the registers containing argc, argv, and return address values
passed in from u-boot across the call to self_reloc and any other early-init
code, and restore them before calling main().

Correct a comment... the stack used by ubldr is the same stack u-boot was
running on when it jumped to the ubldr entry point. None of the arches
that use this code set up a different stack in their start.S routines.

323403 10-Sep-2017 ian

MFC r315574, r315576, r315577:

Convert the imx5 interrupt controller driver to INTRNG.

Add INTRNG option to EFIKA_MX config, it is an imx5-based platform.

Delete our local imx53-qsb.dts file; the code now runs fine using the
standard vendor-supplied file in sys/gnu/dts/arm.

323256 07-Sep-2017 rlibby

MFC r322329:

i386/boot2: -fno-asynchronous-unwind-tables for gcc

323050 31-Aug-2017 oleg

MFC r322628: Fix BSD label partition end sector calculation.

Differential Revision: https://reviews.freebsd.org/D12066

322216 08-Aug-2017 ngie

MFC r321851:

Standardize paths on SRCTOP instead of .CURDIR-relative paths

322087 05-Aug-2017 trasz

MFC r319798:

Switch the example name for variables controlling loading memory images
in /boot/defaults/loader.conf to something that's actually commonly used,
"mdroot". It's arbitrary, but it's easier to find this way.

321683 29-Jul-2017 mav

MFC r314504 (by tsoome):
loader: r314112 did introduce dereference freed pointer entry

CID: 1371675
Reported by: Coverity
Differential Revision: https://reviews.freebsd.org/D9846

321680 29-Jul-2017 mav

MFC r307865 (by tsoome): loader should boot pre-feature flags pools.

The feature flags chek is missing the corner case where we have valid pool
version, but feature flags are not enabled - as for example plain v28 pool.

This update does fix the boot support for such pools.

Differential Revision: https://reviews.freebsd.org/D8331

PR: 221084

321660 28-Jul-2017 dim

MFC r321305:

Fix printf format warning in zfs_module.c

Clang 5.0.0 got better warnings about print format strings using %zd,
and this leads to the following -Werror warning on e.g. arm:

sys/boot/efi/boot1/zfs_module.c:186:18: error: format specifies type 'ssize_t' (aka 'int') but the argument has type 'off_t' (aka 'long long') [-Werror,-Wformat]
"(%lu)\n", st.st_size, spa->spa_name, filepath, EFI_ERROR_CODE(status));
^~~~~~~~~~

Fix this by casting off_t arguments to intmax_t, and using %jd instead.

Reviewed by: tsoome
Differential Revision: https://reviews.freebsd.org/D11678

321526 26-Jul-2017 mav

Fix mismerge in r321525.

321525 26-Jul-2017 mav

MFC r314112 (by tsoome): loader: update symlink support in zfs reader

As the current zfs file system is providing symlink via system attributes,
need to update the code accordingly.

Note, as the zfsboot code does not free the memory at this time, the
object list will put some stress on the boot2 heap, eventually we should
address the issue.

Differential Revision: https://reviews.freebsd.org/D9706

321519 26-Jul-2017 mav

MFC r303630 (by allanjude):
Make boot code and loader check for unsupported ZFS feature flags

OpenZFS uses feature flags instead of a zpool version number to track
features since the split from Oracle. In addition to avoiding confusion
on ZFS vs OpenZFS version numbers, this also allows features to be added
to different operating systems that use OpenZFS in different order.

The previous zfs boot code (gptzfsboot) and loader (zfsloader) blindly
tries to read the pool, and if failed provided only a vague error message.

With this change, both the boot code and loader check the MOS features
list in the ZFS label and compare it against the list of features that
the loader supports. If any unsupported feature is active, the pool is
not considered as a candidate for booting, and a helpful diagnostic
message is printed to the screen. Features that are merely enabled via
zpool upgrade, but not in use, do not block booting from the pool.

Submitted by: Toomas Soome <tsoome@me.com>
Reviewed by: delphij, mav
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D6857

321264 20-Jul-2017 ngie

MFC r316102:

Wrap bootcamp DEBUG statement with curly braces

This fixes a -Wempty-body warning with gcc 6.3.0 when PART_DEBUG is undefined.

Tested with: amd64-gcc-6.3.0 (devel/amd64-xtoolchain-gcc)

321232 19-Jul-2017 ngie

MFC r316076:

sys/boot/common: Make geli(4) support optional in MI sources

This saves a negligible amount of memory for non-geli enabled
bootloaders.

319024 28-May-2017 ngie

MFC r309412,r316109,r316132:

r309412 (by imp):

dd is currently a bootstrap tool. It really doesn't have any business
being a bootstrap tool. However, for reproducible build output,
FreeBSD added dd status=none because it was otherwise difficult to
suppress the status information, but retain any errors that might
happen. There's no real reason that dd has to be a build tool, other
than we use status=none unconditional. Remove dd from a bootstrap tool
entirely by only using status=none when available. This may also help
efforts to build the system on non-FreeBSD hosts as well.

r316109:

Don't hardcode input files for stage 1/2 bootloaders; use .ALLSRC instead

This is a better pattern to follow when creating the bootloaders and doing
the relevant space checks to make sure that the sizes aren't exceeded (and
thus, copy-pasting is a bit less error prone).

r316132:

Parameterize out 7680 (15 * 512) as BOOT2SIZE, similar to sys/boot/i386/zfsboot/...

This is being done to make it easier to change in the future--this action might be
needed sooner rather than later because of gcc 6.3.0 bailing, stating that there
is negative free space left (deficit) in the boot2 bootloader.

318625 22-May-2017 ngie

MFC r316103:

Remove redundant declarations

They're already defined in libstand.h

318576 20-May-2017 kib

MFC efivar(8) (by imp):

List of revisions merged:
r307070
r307071
r307072
r307074
r307189
r307224
r307339
r307390
r307391
r309776
r314231
r314232
r314615
r314616
r314617
r314618
r314619
r314620
r314621
r314623
r314890
r314925
r314926
r314927
r314928
r315770
r315771

Discussed with: gjb (re), imp
Sponsored by: The FreeBSD Foundation


/freebsd-11-stable/lib/Makefile
/freebsd-11-stable/lib/libefi
/freebsd-11-stable/lib/libefivar
/freebsd-11-stable/lib/libefivar/FreeBSD-update
/freebsd-11-stable/lib/libefivar/Makefile
/freebsd-11-stable/lib/libefivar/ProcessorBind.h
/freebsd-11-stable/lib/libefivar/efi-osdep.h
/freebsd-11-stable/lib/libefivar/efivar-dp-format.c
/freebsd-11-stable/lib/libefivar/efivar-dp-parse.c
/freebsd-11-stable/lib/libefivar/efivar-dp.h
/freebsd-11-stable/lib/libefivar/efivar.c
/freebsd-11-stable/lib/libefivar/efivar.h
/freebsd-11-stable/lib/libefivar/libefivar.c
/freebsd-11-stable/lib/libefivar/libefivar_int.h
/freebsd-11-stable/lib/libefivar/uefi-dplib.h
/freebsd-11-stable/lib/libefivar/uefi-dputil.c
/freebsd-11-stable/lib/libefivar/uefi-guid.c
/freebsd-11-stable/lib/libefivar/uefi-guid.dat
/freebsd-11-stable/share/mk/bsd.libnames.mk
/freebsd-11-stable/share/mk/src.libnames.mk
/freebsd-11-stable/share/mk/src.opts.mk
/freebsd-11-stable/sys/amd64/amd64/efirt.c
/freebsd-11-stable/sys/arm/include/efi.h
/freebsd-11-stable/sys/arm64/include/efi.h
efi/include/efichar.h
efi/libefi/efichar.c
/freebsd-11-stable/sys/conf/files
/freebsd-11-stable/sys/contrib/edk2
/freebsd-11-stable/sys/dev/efidev
/freebsd-11-stable/sys/dev/efidev/efidev.c
/freebsd-11-stable/sys/i386/include/efi.h
/freebsd-11-stable/sys/mips/include/efi.h
/freebsd-11-stable/sys/modules/efirt/Makefile
/freebsd-11-stable/sys/pc98/include/efi.h
/freebsd-11-stable/sys/powerpc/include/efi.h
/freebsd-11-stable/sys/riscv/include/efi.h
/freebsd-11-stable/sys/sparc64/include/efi.h
/freebsd-11-stable/sys/sys/efiio.h
/freebsd-11-stable/usr.sbin/Makefile
/freebsd-11-stable/usr.sbin/efidp
/freebsd-11-stable/usr.sbin/efivar
/freebsd-11-stable/usr.sbin/efivar/efivar.8
/freebsd-11-stable/usr.sbin/efivar/efivar.c
318480 18-May-2017 markj

MFC r318193:
Set the right variable when overriding the default console speed.

318019 09-May-2017 royger

MFC r316754: loader/multiboot: fix multiboot loading

Sponsored by: Citrix Systems R&D

317994 09-May-2017 gonzo

MFC r315019:

[loader][fdt] Fix applying overlays without __local_fixups__ node

Do not return error if __local_fixups__ node is missing in DTB overlay
because local fixup data is optional.

Reported by: Manuel Stuhn

317145 19-Apr-2017 emaste

MFC r303442, r305343: remove CONSTRUCTORS from linker scripts

r303442: remove CONSTRUCTORS from kernel linker scripts

r305343: remove CONSTRUCTORS from MIPS uboot linker script

The linker script CONSTRUCTORS keyword is only meaningful "when linking
object file formats which do not support arbitrary sections, such as
ECOFF and XCOFF"[1] and is ignored for other object file formats.

LLVM's lld does not yet accept (and ignore) CONSTRUCTORS, so just remove
CONSTRUCTORS from the linker script as it has no effect.

[1] https://sourceware.org/binutils/docs/ld/Output-Section-Keywords.html

Reported by: andrew
Sponsored by: The FreeBSD Foundation

317140 19-Apr-2017 andrew

Fix the arm64 userland building with lld:

MFC 308124:
On arm64 build the efi loader with -fPIC. Without this clang 3.9 will
generate relocation in the self relocation code.

MFC 316608:
Add -fPIC to the standalone build flags on arm64. This is needed as
loader.efi is position independend, however we were not building it as
such causing a build failure when building with lld.

MFC 315452:
Mark the EFI PE header as allocated. While ld.bfd doesn't seem to care
about not having this flag ld.lld fails to link without it.

316322 31-Mar-2017 ngie

MFC r316106:

Don't shadow read(2) definition with `read` argument in vdev_{create,probe}

This fixes several -Wshadow warnings introduced in r192194, but now errors
with gcc 6.3.0.

316320 31-Mar-2017 ngie

MFC r316107:

Remove redundant declaration for `zfs_crc64_table`

zfssubr.c already defines this statically. Besides, zfsimpl.c defined it, but
didn't use it.

This fixes a -Wredundant-decls warning.

316318 31-Mar-2017 ngie

MFC r316108:

Remove -Wunused-but-set variable, `tail` in `ls_getdir(..)`

This variable has been unused since its inception in r40106.

316282 30-Mar-2017 tsoome

boot1.efi: can't boot from ZFS on 4kn HDD

The boot1.efi immediate issue from PR216964 is that we are reading into
too small buffer, from UEFI spec 2.6:

The size of the Buffer in bytes. This must be a multiple of the intrinsic block size of the device.

The secondary issue is that LBA calculation does not check reminder from
division.

This fix does check the provided buffer size and if we read less than
media sector size or the read offset is not aligned to sector boundary,
we allocate bounce buffer and perform the read by single sector.

PR: 216964
Reported by: Sergey Kozlov
Reviewed by: allanjude, Sergey Kozlov
Approved by: allanjude (mentor)
Differential Revision: https://reviews.freebsd.org/D9870

316272 30-Mar-2017 dexuan

MFC: 314547, 314770, 314828, 314891, 314956, 314962, 315235

r314547
loader.efi: reduce the size of the staging area if necessary

The loader assumes physical memory in [2MB, 2MB + EFI_STAGING_SIZE)
is Conventional Memory, but actually it may not, e.g. in the case
of Hyper-V Generation-2 VM (i.e. UEFI VM) running on Windows
Server 2012 R2 host, there is a BootServiceData memory block at
the address 47.449MB and the memory is not writable.

Without the patch, the loader will crash in efi_copy_finish():
see PR 211746.

The patch verifies the end of the staging area, and reduces its
size if necessary. This way, the loader will not try to write into
the BootServiceData memory any longer.

Thank Marcel Moolenaar for helping me on this issue!

The patch also allocates the staging area in the first 1GB memory.
See the comment in the patch for this.

PR: 211746
Reviewed by: marcel, kib, sephe
Approved by: sephe (mentor)
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D9686

r314770
loader.efi: fix recent UEFI-boot regression on physical machines

This patch fixes my recent patch
"loader.efi: reduce the size of the staging area if necessary", which
causes EFI-boot failure on physical machines since Mar 2:
on the host there is a 1MB LoaderData memory range, which splits
the big Conventional Memory range into a small one (15MB) and a
big one: the small one is too small to hold the staging area.

We can actually use the LoaderData range safely, because when
amd64_tramp -> efi_copy_finish() starts to run, we're almost at
the very end of the efi loader code and we're going to "return"
to the kernel entry, so we're pretty sure we won't access any loader
data any more.

For people who are interested in the details: please see
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211746#c22

PS, some people also reported the regression happened to FreeBSD VM
running on Bhyve in EFI mode. This patch should resolve it too,
though I don't have such a setup to test.

Reviewed by: sephe
Approved by: sephe (mentor)
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D9904

r314828
loader.efi: fix an off-by-one bug in efi_verify_staging_size()

Also remove the warning message: it may not be unusual to see
the memory range containing 2MB is not of EfiConventionalMemory.

Sponsored by: Microsoft

r314891
loader.efi: finally fix the off-by-one bug in efi_verify_staging_size()

r314828(loader.efi: fix an off-by-one bug in efi_verify_staging_size())
doesn't really fix the bug and this patch adds the missing part.

It's a shame that I didn't make everything correct at the very beginning...

Sponsored by: Microsoft

r314956
loader.efi: only reduce the size of the staging area on Hyper-V

Doing this on physical hosts turns out to be problematic, e.g. see comment
24 and 28 in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211746.

To fix the real underlying issue correctly & thoroughly, IMO we need
a relocatable kernel, but that would require a lot of complicated long
term work: https://reviews.freebsd.org/D9686?id=25414#inline-56969

For now, let's only apply efi_verify_staging_size() to VMs running on
Hyper-V, and restore the old behavior on physical machines since that
has been working for people for a long period of time, though that's
potentially unsafe...

Sponsored by: Microsoft

r314962
loader.efi: only include the machine/ header files on x86

The 2 files may not exist on other archs like aarch64 and hence we
can have a build failure there.

Reported by: lwhsu
Sponsored by: Microsoft

r315235
loader.efi: use stricter check for Hyper-V

Some other hypervisors like Xen can pretend to be Hyper-V but obviously
they can't implement all Hyper-V features. Let's make sure we're genuine
Hyper-V here.

Also fix some minor coding style issues.

PR: 211746
Sponsored by: Microsoft

PR: 211746

316129 29-Mar-2017 ngie

MFC r315738:

Document some more 10GbE+ network drivers in loader.conf

- if_cxgbe
- if_ixl
- if_ixlv
- sfxge

315221 14-Mar-2017 pfg

MFC r313982, r314068:
sys: Replace zero with NULL for pointers.

Found with: devel/coccinelle


/freebsd-11-stable/sys/amd64/amd64/db_disasm.c
/freebsd-11-stable/sys/amd64/amd64/pmap.c
common/md.c
efi/libefi/efinet.c
fdt/fdt_overlay.c
ficl/ficl.c
kshim/bsd_kernel.c
ofw/libofw/ofw_memory.c
sparc64/loader/main.c
userboot/userboot/userboot_disk.c
zfs/zfs.c
zfs/zfsimpl.c
/freebsd-11-stable/sys/dev/agp/agp.c
/freebsd-11-stable/sys/dev/an/if_an.c
/freebsd-11-stable/sys/dev/arcmsr/arcmsr.c
/freebsd-11-stable/sys/dev/bce/if_bce.c
/freebsd-11-stable/sys/dev/beri/virtio/virtio_block.c
/freebsd-11-stable/sys/dev/buslogic/bt_pci.c
/freebsd-11-stable/sys/dev/ce/if_ce.c
/freebsd-11-stable/sys/dev/cm/smc90cx6.c
/freebsd-11-stable/sys/dev/cp/if_cp.c
/freebsd-11-stable/sys/dev/ctau/ctddk.c
/freebsd-11-stable/sys/dev/ctau/if_ct.c
/freebsd-11-stable/sys/dev/cx/cxddk.c
/freebsd-11-stable/sys/dev/cx/if_cx.c
/freebsd-11-stable/sys/dev/de/if_de.c
/freebsd-11-stable/sys/dev/ed/if_ed.c
/freebsd-11-stable/sys/dev/fatm/if_fatm.c
/freebsd-11-stable/sys/dev/fe/if_fe.c
/freebsd-11-stable/sys/dev/firewire/if_fwip.c
/freebsd-11-stable/sys/dev/hptiop/hptiop.c
/freebsd-11-stable/sys/dev/hptmv/entry.c
/freebsd-11-stable/sys/dev/hptmv/gui_lib.c
/freebsd-11-stable/sys/dev/hptmv/hptproc.c
/freebsd-11-stable/sys/dev/hptmv/ioctl.c
/freebsd-11-stable/sys/dev/iicbus/if_ic.c
/freebsd-11-stable/sys/dev/isp/isp_pci.c
/freebsd-11-stable/sys/dev/le/am7990.c
/freebsd-11-stable/sys/dev/le/am79900.c
/freebsd-11-stable/sys/dev/le/lance.c
/freebsd-11-stable/sys/dev/md/md.c
/freebsd-11-stable/sys/dev/ncr/ncr.c
/freebsd-11-stable/sys/dev/ofw/ofw_bus_subr.c
/freebsd-11-stable/sys/dev/patm/if_patm_tx.c
/freebsd-11-stable/sys/dev/pccard/pccard.c
/freebsd-11-stable/sys/dev/pms/RefTisa/sallsdk/spc/sainit.c
/freebsd-11-stable/sys/dev/pms/RefTisa/tisa/sassata/common/tdioctl.c
/freebsd-11-stable/sys/dev/pms/freebsd/driver/ini/src/agtiapi.c
/freebsd-11-stable/sys/dev/ppbus/if_plip.c
/freebsd-11-stable/sys/dev/ppbus/ppbconf.c
/freebsd-11-stable/sys/dev/ppc/ppc.c
/freebsd-11-stable/sys/dev/sbni/if_sbni_isa.c
/freebsd-11-stable/sys/dev/sn/if_sn.c
/freebsd-11-stable/sys/dev/sym/sym_hipd.c
/freebsd-11-stable/sys/dev/vx/if_vx.c
/freebsd-11-stable/sys/libkern/iconv_xlat16.c
/freebsd-11-stable/sys/net/if_fddisubr.c
/freebsd-11-stable/sys/net/if_iso88025subr.c
/freebsd-11-stable/sys/net/iflib.c
/freebsd-11-stable/sys/netpfil/ipfw/ip_fw_sockopt.c
314921 08-Mar-2017 pfg

MFC r314505:
Split the ficl CFLAGS when they refer to an arch-specific include path.

This is a minimal attempt to keep consistency in the Makefiles so that
moving ficl to somwehere like contrib will be less error prone.

314522 01-Mar-2017 ian

MFC r309195:

Add an ethernet0 alias pointing to the /aix/usb/hub/ethernet node. This
is required for u-boot to locate the ethernet node when it's doing fixup
of the mac-address property when the user has overridden the default addr.

313355 06-Feb-2017 tsoome

MFC r309369,310850,310853:

libstand: dosfs cstyle cleanup for return keyword.
dosfs support in libstand is broken since r298230

PR: 214423
Submitted by: Mikhail Kupchik
Reported by: Mikhail Kupchik
Approved by: imp (mentor)

313353 06-Feb-2017 tsoome

MFC r310845: boot2 will deadlock if extended keys are used on text input

Approved by: imp (mentor)
Differential Revision: https://reviews.freebsd.org/D8608

313183 04-Feb-2017 gonzo

MFC r310124 (by andrew):

Add -fPIC to the ubldr build. Without this the self relocation code will
try to use an absolute address in a switch statement, jumping to an invalid
memory location.

Sponsored by: ABT Systems Ltd

PR: 216504

312772 25-Jan-2017 dim

MFC r311932:

Make EFI_RESERVED_SERVICE a proper prototype

With clang 4.0.0, the EFI API header causes the following warning:

In file included from sys/boot/efi/loader/bootinfo.c:43:
In file included from sys/boot/efi/loader/../include/efi.h:52:
sys/boot/efi/include/efiapi.h:534:32: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
(EFIAPI *EFI_RESERVED_SERVICE) (
^

Add VOID to make it into a real prototype.

Reviewed by: imp, emaste, tsoome
Differential Revision: https://reviews.freebsd.org/D9132

312771 25-Jan-2017 dim

MFC r311929:

Don't include <errno.h> in reloc_elf.c, as it includes <stand.h> just
after it, which has a conflicting definition of errno. This leads to
the following warning with clang 4.0.0:

In file included from sys/boot/common/reloc_elf32.c:6:
In file included from sys/boot/common/reloc_elf.c:37:
/usr/obj/usr/src/tmp/usr/include/stand.h:155:12: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
extern int errno;
^
sys/sys/errno.h:46:26: note: expanded from macro 'errno'
#define errno (* __error())
^

312769 25-Jan-2017 dim

MFC r311933:

Use proper prototypes in struct boot_module_t

With clang 4.0.0, we are getting the following warnings about struct
boot_module_t in efi's boot_module.h:

In file included from sys/boot/efi/boot1/ufs_module.c:41:
sys/boot/efi/boot1/boot_module.h:67:14: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
void (*init)();
^
void
sys/boot/efi/boot1/boot_module.h:92:16: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
void (*status)();
^
void
sys/boot/efi/boot1/boot_module.h:95:24: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
dev_info_t *(*devices)();
^
void
3 errors generated.

Fix this by adding 'void' to the parameter lists. No functional change.

Reviewed by: emaste, imp, smh
Differential Revision: https://reviews.freebsd.org/D9144

312756 25-Jan-2017 loos

MFC r308458, r311157 and r312347:

Add the DTS for the Netgate SG-1000 (micro-Firewall).

Remove a GPL licensed DTS.

The micro-Firewall DTS is now a single BSD licensed file.

The write-protect is not wired on uFW, disable it to allow writes to SD
card.

Obtained from: pfSense
Sponsored by: Rubicon Communications, LLC (Netgate)

312730 25-Jan-2017 emaste

Add WITH_REPRODUCIBLE_BUILD src.conf(5) knob

MFC r310128: Add WITH_REPRODUCIBLE_BUILD src.conf(5) knob to disable kernel
metadata

The kernel builds reproducibly, except for the time, date, user, and
hostname baked into the kernel (reported at startup and via the
kern.version sysctl for uname). Add a build knob to disable the
inclusion of this metadata.

MFC r310268: Build loaders reproducibly when WITH_REPRODUCIBLE_BUILD

When WITH_REPRODUCIBLE_BUILD=yes is set in src.conf(5), eliminate the
time, user, and host from the loader's version information. This allows
builds to produce bit-for-bit identical output.

312620 22-Jan-2017 jmcneill

MFC r310854, r310972

r310854:
Add missing reg property to usbphy node.

r310972:
Fix a typo in the third address of the reg property for the usbphy node.

312556 20-Jan-2017 emaste

MFC r310267: Deduplicate loader vers.c Makefile rules

The Makefile rule to create vers.c for loader version info was
previously duplicated in each of the various loader Makefiles.
Instead, share a common rule in Makefile.inc.

Sponsored by: The FreeBSD Foundation

312415 19-Jan-2017 asomers

MFC r310417

Add a dumpdev example to /boot/defaults/loader.conf

312349 17-Jan-2017 gonzo

MFC r311888, r311890-r311891

r311888:
[efi] Fix off-by-one error in ARM .bss zeroing code in loader's _start

__bss_end should not be included in .bss zeroing code. Otherwise first 4
bytes of the section that follows .bss (in loader's case it's .sdata) are
overwritten by zero.

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D9108

r311890:
[efi] Fix .rel.data.* being erroneously merged into .data on ARM

Fix section pattern code to exclude .rel.data.* sections from being
merged into .data. Otherwise relocations in those sections are lost
in final binary

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D9108

r311891:
[efi] Build EFI bits with -fPIC on ARM

clang 3.9.0 without -fPIC generates absolute jump table for
switch/case statement which trips boot1.efi and loader.efi
on ARM platform.

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D9108

312318 17-Jan-2017 emaste

MFC r310225: Reduce boot loader version string duplication

Instead of repeating "%s, Revision %s" "(%s %s)" in each loader, just
create the full version string in vers.c

311908 11-Jan-2017 emaste

MFC r310702: btxldr: process all PT_LOAD segments, not just the first two

With default settings GNU ld generates two PT_LOADs for loader.sym while
LLD generates three, because it creates a rodata segment. Previously
btxldr terminated phdr processing after two PT_LOADs. Remove the early
termination to process all PT_LOADs.

Sponsored by: The FreeBSD Foundation

311220 04-Jan-2017 emaste

MFC r310661: loader: use strip -o instead of cp and strip in place

It is simpler and cleaner to have strip produce the stripped output
directly than copying the input to the output first.

310827 30-Dec-2016 emaste

MFC r306264: Use 32-bit value for .text padding, for linker portability

GNU ld interprets the padding value as a variable-length byte string,
while GNU gold and LLVM lld interpret it as a 32-bit value.

310825 30-Dec-2016 emaste

MFC r305854: Use arch-specific .text padding fill value in EFI loaders

The fill pattern was previously an ia64 instruction sequence. Presumably
ia64's linker script was copied as a starting point.

310725 28-Dec-2016 emaste

Fix EFI self relocation code for rela architectures

MFC r306812 (andrew):

The bootloader self relocation code was slightly wrong for the
R_AARCH64_RELATIVE relocation found on arm64. It would try to add the
contents of the memory location being relocated to the base address and
the relocation addend. This worked when the contents was zero, however
this now seems to be set to the value of the addend so we add this twice.
Fix this by just setting the memory to the computed value.

MFC r309360: EFI loaders: parse rela relocations on amd64

Prior to this change the loader self relocation code interpreted amd64's
rela relocations as if they were rel relocations, discarding the addend.
This "works" because GNU ld 2.17.50 stores the addend value in both the
r_addend field of the relocation (as expected) and at the target of the
relocation.

Other linkers, and possibly other versions of GNU ld, won't have this
behaviour, so interpret the relocations correctly.

309377 01-Dec-2016 shurd

MFC r308696, r308729, r308787, r308813, r309028, r309073, r309078:

r308696:
New driver for Broadcom NetXtreme-C and NetXtreme-E devices.

r308729:
Add bnxt(4) to the hardware notes.

r308787:
Add missing newline in error mesage

r308813:
Check link status after init

r309028:
Add missing break to switch statement

r309073:
Fix version string

r309078:
Add new device IDs

Approved by: sbruno
Relnotes: yes
Sponsored by: Broadcom Limited

309370 01-Dec-2016 tsoome

Backing out r309368 as it got commited prematurely as we still do not
provide skein feature support in boot loader.

Approved by: allanjude (mentor)

309368 01-Dec-2016 tsoome

MFC r308776

loader: zfs toplevel vdev must have spa set.

PR: 214375
Reported by: lstewart
Reviewed by: allanjude, imp
Approved by: allanjude (mentor), imp (mentor)
Differential Revision: https://reviews.freebsd.org/D8487

308914 21-Nov-2016 avg

MFC r308089: zfsbootcfg: a simple tool to set next boot (one time)
options for zfsboot

308722 16-Nov-2016 bapt

MFC r308477:

make pxeboot consistent with common/dev_net.c

Always define boot.netif.server in kenv in pxeboot
Add "boot.tftproot.server" to kenv when pxeboot uses tftpfs
Change the code order when setting env for TFTP or NFS to be the same as
common/dev_net.c

Reported by: tsoome

308719 16-Nov-2016 bapt

MFC r307238:

Stop closing the network device when netbooting for loaders using the common
dev_net.c code.

The NETIF_OPEN_CLOSE_ONCE flag was added in r201932 to prevent that behaviour
on some architectures (sparc64 and powerpc64) the default was left to always
open and close the device for each open and close of a file by the loader
because it was necessary for u-boot on arm.

Since it has been added, the flag was turned on for every arches including the
u-boot loader for arm.

This also fixes netbooting on RPi3 (tested by gonzo@)

For the loader.efi it greatly speeds up netbooting

Reviewed by: emaste, gonzo, tsoome
Approved by: gonzo
MFC after: 1 month
Sponsored by: Gandi.net
Differential Revision: https://reviews.freebsd.org/D8230

308401 07-Nov-2016 hselasky

MFC r307518:
Fix device delete child function.

When detaching device trees parent devices must be detached prior to
detaching its children. This is because parent devices can have
pointers to the child devices in their softcs which are not
invalidated by device_delete_child(). This can cause use after free
issues and panic().

Device drivers implementing trees, must ensure its detach function
detaches or deletes all its children before returning.

While at it remove now redundant device_detach() calls before
device_delete_child() and device_delete_children(), mostly in
the USB controller drivers.

Tested by: Jan Henrik Sylvester <me@janh.de>
Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D8070


/freebsd-11-stable/sys/arm/allwinner/a10_ehci.c
/freebsd-11-stable/sys/arm/at91/at91_ohci.c
/freebsd-11-stable/sys/arm/at91/at91_ohci_fdt.c
/freebsd-11-stable/sys/arm/cavium/cns11xx/ehci_ebus.c
/freebsd-11-stable/sys/arm/cavium/cns11xx/ohci_ec.c
/freebsd-11-stable/sys/arm/samsung/exynos/exynos5_xhci.c
/freebsd-11-stable/sys/arm/ti/am335x/am335x_musb.c
/freebsd-11-stable/sys/arm/ti/usb/omap_ehci.c
/freebsd-11-stable/sys/arm/xilinx/zy7_ehci.c
kshim/bsd_kernel.c
/freebsd-11-stable/sys/dev/puc/puc.c
/freebsd-11-stable/sys/dev/usb/controller/at91dci_atmelarm.c
/freebsd-11-stable/sys/dev/usb/controller/at91dci_fdt.c
/freebsd-11-stable/sys/dev/usb/controller/atmegadci_atmelarm.c
/freebsd-11-stable/sys/dev/usb/controller/dwc_otg_fdt.c
/freebsd-11-stable/sys/dev/usb/controller/ehci_ixp4xx.c
/freebsd-11-stable/sys/dev/usb/controller/ehci_mv.c
/freebsd-11-stable/sys/dev/usb/controller/ehci_pci.c
/freebsd-11-stable/sys/dev/usb/controller/generic_ehci.c
/freebsd-11-stable/sys/dev/usb/controller/generic_ohci.c
/freebsd-11-stable/sys/dev/usb/controller/musb_otg_atmelarm.c
/freebsd-11-stable/sys/dev/usb/controller/ohci_pci.c
/freebsd-11-stable/sys/dev/usb/controller/ohci_s3c24x0.c
/freebsd-11-stable/sys/dev/usb/controller/saf1761_otg_boot.c
/freebsd-11-stable/sys/dev/usb/controller/saf1761_otg_fdt.c
/freebsd-11-stable/sys/dev/usb/controller/uhci_pci.c
/freebsd-11-stable/sys/dev/usb/controller/uss820dci_atmelarm.c
/freebsd-11-stable/sys/dev/usb/controller/xhci_mv.c
/freebsd-11-stable/sys/dev/usb/controller/xhci_pci.c
/freebsd-11-stable/sys/dev/usb/usb_device.c
/freebsd-11-stable/sys/dev/usb/video/udl.c
/freebsd-11-stable/sys/kern/subr_bus.c
/freebsd-11-stable/sys/mips/atheros/ar71xx_ehci.c
/freebsd-11-stable/sys/mips/atheros/ar71xx_ohci.c
/freebsd-11-stable/sys/mips/cavium/usb/octusb_octeon.c
/freebsd-11-stable/sys/mips/mediatek/mtk_dotg.c
/freebsd-11-stable/sys/mips/mediatek/mtk_ehci.c
/freebsd-11-stable/sys/mips/mediatek/mtk_ohci.c
/freebsd-11-stable/sys/mips/mediatek/mtk_xhci.c
/freebsd-11-stable/sys/mips/rmi/xls_ehci.c
/freebsd-11-stable/sys/mips/rt305x/rt305x_dotg.c
/freebsd-11-stable/sys/mips/rt305x/rt305x_ehci.c
/freebsd-11-stable/sys/mips/rt305x/rt305x_ohci.c
308271 04-Nov-2016 manu

MFC r304291:

Remove pullup settings for MMC pins, this is not needed since r304290

307916 25-Oct-2016 bapt

MFC r307787:

Fix typo in the COMPILER_VERSION check

PR: 213120
Submitted by: Yuta Satoh <nigoro.dev@gmail.com>

307767 22-Oct-2016 gonzo

MFC r306430

Add touchscreen support for the official 7" RPi touch display

Technically touchscreen chip is FT5406 but all hardware
communication is performed by VideCore and only final results
are presented to ARM part through memory region shared between
VC and ARM.

evdev is used as userland interface. FT5406 supports up to
10 touchpoints, but for now driver emulates single touch device
because I do not have GUI bits to test this functionality.

Driver is not enabled in default config for RPI and RPI2

Tested with: evdev-dump, tslib

307725 21-Oct-2016 bapt

MFC: r307316

Fix build WITHOUT_FORTH

Sponsored by: Gandi.net

307632 19-Oct-2016 bapt

MFC: 304677, 304680, 305125, 305770, 305769

r304677:
Add tftpfs support for the EFI loader

Allow netbooting on efi without having to setup any NFS server by rebuilding the
loader with LOADER_TFTP_SUPPORT like for the i386 pxeloader

r305125:
Netboot: allow both tftpfs and nfs in both pxeboot and loader.efi

Add a new 'netproto' variable which can be set for now to
NET_TFTP or NET_NFS (default to NET_NONE)

From the dhcp options if one sets the root-path option to:
"ip:path", the loader will consider it is booting over NFS
(meaning same behaviour as the default current behaviour)

if the dhcp option "tftp server address" is set (option 150)
the loader will consider it is booting over tftpfs, it will then
consider the root-path options with 2 possible case
1. "path" then the IP of the tftp server will be the one passed by
the option 150, and the files will be retrieved under "path" on the tftp
server
2. "ip:path" then the IP of the tftp server will be the one passed in
the option "overwritting the IP from the option 150.

We could not "abuse" the rootpath option in the form or tftp://ip:path because
this is already used for other purpose by iPXE preventing any chainload from
iPXE to the FreeBSD loader.

Given at each open(), the loader loops over all available filesystems and keep
the "best" error, we needed to prevent tftpfs to fallback on nfs and vice versa.
the tftpfs and nfs implementation in libstand now return EINVAL early if
'netproto' for that purpose.

Relnotes: yes
Sponsored by: Gandi.net

307527 17-Oct-2016 gonzo

MFC r302465:

Remove extra 0x before %p format strings introduced by r296182

307505 17-Oct-2016 sephe

MFC 305588

pxeboot: Add nfs.read_size tunable.

Increase this tunable improves kernel loading speed.

Submitted by: Jun Su <junsu microsoft com>
Reviewed by: rpokala, wblock (previous version)
Obtained from: DragonFlyBSD
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7756

306834 08-Oct-2016 allanjude

MFC: r306677

GELIBoot may attempt to read past the end of the disk

PR: 213196
Relnotes: yes
Sponsored by: ScaleEngine Inc.

306738 05-Oct-2016 kib

MFC r306090:
Simple post-mortem reporter for amd64 loader.efi.

306317 25-Sep-2016 kib

MFC r305943:
Utilize pmap.h names.

306315 25-Sep-2016 kib

MFC r305941:
Add double-inclusion protection.

MFC r305947:
Add comment for the closing guard.

306255 23-Sep-2016 hselasky

MFC r305804:
Make the callout structure in the boot loader's kernel shim more
similar to the kernel one.

305901 17-Sep-2016 jhibbits

MFC r305894:

Increase the boot1 file size on the HFS boot image.

The boot1.elf is too fat for 30k, it's now 32k on powerpc64, and 34k on powerpc.
Without this, boot1 will fail with odd behaviors.

305845 15-Sep-2016 emaste

MFC r305160: Set UEFI boot loader PE/COFF timestamps to known value for reproducible builds

Sponsored by: The FreeBSD Foundation

305779 13-Sep-2016 will

MFC r305484:

loader.efi: Bump the staging size to 64M.

This is required on my system, which loads nvidia, vmm, and zfs, and 48M is
no longer enough for that. nvidia-driver's recent update increased its size
by several megabytes.

305614 08-Sep-2016 pfg

MFC r303891, r303892:
sys: replace comma with semicolon when pertinent.

Uses of commas instead of a semicolons can easily go undetected. The comma
can serve as a statement separator but this shouldn't be abused when
statements are meant to be standalone.

305537 07-Sep-2016 andrew

MFC 304801:
Don't set *dev in the zfs root case, it may be NULL and will correctly be
set later in the function. This fixes a potential NULL pointer dereference
found on arm64.

Obtained from: ABT Systems Ltd
Sponsored by: The FreeBSD Foundation

305457 06-Sep-2016 avg

MFC r303738: report sector size and number of sectors in lsdev output
for bios disks

305377 04-Sep-2016 manu

MFC 304222

Only use WaitForKeys event if it exists, this is not the case in u-boot efi implementation.

305376 04-Sep-2016 manu

MFC 304221 and 304271

Use %ju modifier for u_int64_t and %jd modifier for off_t.
off_t is long long on arm32 and long on amd64

Correctly print and cast u_int64_t and off_t.

305249 01-Sep-2016 nwhitehorn

MFC r305036:
Some versions of SLOF do not append the partition number to the boot
device argument to the stage-1 bootloader. In such cases, boot1 would
only try to read the entire device rather than checking for partitions.
Instead of panic'ing, fall back to reading the partitions as normal in
such situations. This was preventing boot of installed systems on some
versions of PowerKVM.

PR: kern/211599

305232 01-Sep-2016 gjb

MFC r304966 (peter):
The read-ahead code from r298230 made it likely the boot code would read
beyond the end of disk. r298900 added code to prevent this. Some BIOSes
cause significant delays if asked to read past end-of-disk.

We never trusted the BIOS to accurately report the sectorsize of disks
before and this set of changes. Unfortuately they interact badly with
the infamous >2TB wraparound bugs. We have a number of relatively-recent
machines in the FreeBSD.org cluster where the BIOS reports 3TB disks as 1TB.

With pre-r298900 they work just fine. After r298900 they stop working if
the boot environment attempts to access anything outside the first 1TB on
the disk. 'ZFS: I/O error, all block copies unavailable' etc. It affects
both UFS and ZFS if they try to boot from large volumes.

This change replaces the blind trust of the BIOS end-of-disk reporting
with a read-ahead clip to prevent reads crossing the of end-of-disk
boundary. Since 2^32 (2TB) size reporting truncation is not uncommon,
the clipping is done on 2TB aliases of the reported end-of-disk.
ie: a 3TB disk reported as 1TB has readahead clipped at 1TB, 3TB, 5TB, ...
as one of them is likely to be the real end-of-disk.

This should make the loader on these broken machines behave the same as
traditional pre-r298900 loader behavior, without disabling read-ahead.

PR: 212139
Sponsored by: The FreeBSD Foundation

304507 19-Aug-2016 jhb

MFC 304018: Add defines needed to export SMBIOS serial numbers

Some defines needed for exporting serial numbers from the SMBIOS were
missed during integration of SMBIOS support in the EFI boot loader (r281138).
This is needed for getting the hostid set from the system hardware UUID.

PR: 206031

304215 16-Aug-2016 manu

MFC r303974:
ename pcduino3b.dts to pcduino3.dts
The only difference between 3 and 3B is the size of the RJ45 port.
And now we have a uboot port that expect pcduino3.dts to be present.

Reported by: imp

303839 08-Aug-2016 gonzo

MFC r303726

Fix EHCI driver by excluding first 512K from available memory

On Zynq 256K-512K memory region is not accessible by all bus masters.
EHCI driver fails when trying to use it for DMA transfers. Patching
memory node does not help because ubldr overrides values there with
the ones obtained from u-boot. So as a workaround we just mark first
512K as reserved.

PR: 211484
Submitted by: Thomas Skibo <thoma555-bsd@yahoo.com>
Approved by: re (gjb)

303333 26-Jul-2016 manu

MFC: r303039

Do not use TERM_EMU on arm and arm64 as it doesn't behave
well with serial console.

Approved by: re (gjb)

302408 08-Jul-2016 gjb

Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle.
Prune svn:mergeinfo from the new branch, as nothing has been merged
here.

Additional commits post-branch will follow.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


/freebsd-11-stable/MAINTAINERS
/freebsd-11-stable/cddl
/freebsd-11-stable/cddl/contrib/opensolaris
/freebsd-11-stable/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print
/freebsd-11-stable/cddl/contrib/opensolaris/cmd/zfs
/freebsd-11-stable/cddl/contrib/opensolaris/lib/libzfs
/freebsd-11-stable/contrib/amd
/freebsd-11-stable/contrib/apr
/freebsd-11-stable/contrib/apr-util
/freebsd-11-stable/contrib/atf
/freebsd-11-stable/contrib/binutils
/freebsd-11-stable/contrib/bmake
/freebsd-11-stable/contrib/byacc
/freebsd-11-stable/contrib/bzip2
/freebsd-11-stable/contrib/com_err
/freebsd-11-stable/contrib/compiler-rt
/freebsd-11-stable/contrib/dialog
/freebsd-11-stable/contrib/dma
/freebsd-11-stable/contrib/dtc
/freebsd-11-stable/contrib/ee
/freebsd-11-stable/contrib/elftoolchain
/freebsd-11-stable/contrib/elftoolchain/ar
/freebsd-11-stable/contrib/elftoolchain/brandelf
/freebsd-11-stable/contrib/elftoolchain/elfdump
/freebsd-11-stable/contrib/expat
/freebsd-11-stable/contrib/file
/freebsd-11-stable/contrib/gcc
/freebsd-11-stable/contrib/gcclibs/libgomp
/freebsd-11-stable/contrib/gdb
/freebsd-11-stable/contrib/gdtoa
/freebsd-11-stable/contrib/groff
/freebsd-11-stable/contrib/ipfilter
/freebsd-11-stable/contrib/ldns
/freebsd-11-stable/contrib/ldns-host
/freebsd-11-stable/contrib/less
/freebsd-11-stable/contrib/libarchive
/freebsd-11-stable/contrib/libarchive/cpio
/freebsd-11-stable/contrib/libarchive/libarchive
/freebsd-11-stable/contrib/libarchive/libarchive_fe
/freebsd-11-stable/contrib/libarchive/tar
/freebsd-11-stable/contrib/libc++
/freebsd-11-stable/contrib/libc-vis
/freebsd-11-stable/contrib/libcxxrt
/freebsd-11-stable/contrib/libexecinfo
/freebsd-11-stable/contrib/libpcap
/freebsd-11-stable/contrib/libstdc++
/freebsd-11-stable/contrib/libucl
/freebsd-11-stable/contrib/libxo
/freebsd-11-stable/contrib/llvm
/freebsd-11-stable/contrib/llvm/projects/libunwind
/freebsd-11-stable/contrib/llvm/tools/clang
/freebsd-11-stable/contrib/llvm/tools/lldb
/freebsd-11-stable/contrib/llvm/tools/llvm-dwarfdump
/freebsd-11-stable/contrib/llvm/tools/llvm-lto
/freebsd-11-stable/contrib/mdocml
/freebsd-11-stable/contrib/mtree
/freebsd-11-stable/contrib/ncurses
/freebsd-11-stable/contrib/netcat
/freebsd-11-stable/contrib/ntp
/freebsd-11-stable/contrib/nvi
/freebsd-11-stable/contrib/one-true-awk
/freebsd-11-stable/contrib/openbsm
/freebsd-11-stable/contrib/openpam
/freebsd-11-stable/contrib/openresolv
/freebsd-11-stable/contrib/pf
/freebsd-11-stable/contrib/sendmail
/freebsd-11-stable/contrib/serf
/freebsd-11-stable/contrib/sqlite3
/freebsd-11-stable/contrib/subversion
/freebsd-11-stable/contrib/tcpdump
/freebsd-11-stable/contrib/tcsh
/freebsd-11-stable/contrib/tnftp
/freebsd-11-stable/contrib/top
/freebsd-11-stable/contrib/top/install-sh
/freebsd-11-stable/contrib/tzcode/stdtime
/freebsd-11-stable/contrib/tzcode/zic
/freebsd-11-stable/contrib/tzdata
/freebsd-11-stable/contrib/unbound
/freebsd-11-stable/contrib/vis
/freebsd-11-stable/contrib/wpa
/freebsd-11-stable/contrib/xz
/freebsd-11-stable/crypto/heimdal
/freebsd-11-stable/crypto/openssh
/freebsd-11-stable/crypto/openssl
/freebsd-11-stable/gnu/lib
/freebsd-11-stable/gnu/usr.bin/binutils
/freebsd-11-stable/gnu/usr.bin/cc/cc_tools
/freebsd-11-stable/gnu/usr.bin/gdb
/freebsd-11-stable/lib/libc/locale/ascii.c
/freebsd-11-stable/sys/cddl/contrib/opensolaris
/freebsd-11-stable/sys/contrib/dev/acpica
/freebsd-11-stable/sys/contrib/ipfilter
/freebsd-11-stable/sys/contrib/libfdt
/freebsd-11-stable/sys/contrib/octeon-sdk
/freebsd-11-stable/sys/contrib/x86emu
/freebsd-11-stable/sys/contrib/xz-embedded
/freebsd-11-stable/usr.sbin/bhyve/atkbdc.h
/freebsd-11-stable/usr.sbin/bhyve/bhyvegc.c
/freebsd-11-stable/usr.sbin/bhyve/bhyvegc.h
/freebsd-11-stable/usr.sbin/bhyve/console.c
/freebsd-11-stable/usr.sbin/bhyve/console.h
/freebsd-11-stable/usr.sbin/bhyve/pci_fbuf.c
/freebsd-11-stable/usr.sbin/bhyve/pci_xhci.c
/freebsd-11-stable/usr.sbin/bhyve/pci_xhci.h
/freebsd-11-stable/usr.sbin/bhyve/ps2kbd.c
/freebsd-11-stable/usr.sbin/bhyve/ps2kbd.h
/freebsd-11-stable/usr.sbin/bhyve/ps2mouse.c
/freebsd-11-stable/usr.sbin/bhyve/ps2mouse.h
/freebsd-11-stable/usr.sbin/bhyve/rfb.c
/freebsd-11-stable/usr.sbin/bhyve/rfb.h
/freebsd-11-stable/usr.sbin/bhyve/sockstream.c
/freebsd-11-stable/usr.sbin/bhyve/sockstream.h
/freebsd-11-stable/usr.sbin/bhyve/usb_emul.c
/freebsd-11-stable/usr.sbin/bhyve/usb_emul.h
/freebsd-11-stable/usr.sbin/bhyve/usb_mouse.c
/freebsd-11-stable/usr.sbin/bhyve/vga.c
/freebsd-11-stable/usr.sbin/bhyve/vga.h
302335 04-Jul-2016 emaste

boot1.efi: fix assignment / comparison expression

PR: 210706
Submitted by: David Binderman <dcb314@hotmail.com>
Approved by: re (kib)
MFC after: 1 week


302312 01-Jul-2016 nwhitehorn

Clean up some FDT-related code in the PowerPC bootloader, improving error
checking and robustness. Prevents errors and crashes in FDT commands on
PowerMac G5 systems.

Approved by: re (gjb)


301995 17-Jun-2016 manu

Print a message when disks are found but no logical partition are
reported by EFI implementation. This address comment on r301714.

Approved by: re (gjb), andrew (mentor)
Differential Revision: https://reviews.freebsd.org/D6787


301955 16-Jun-2016 avg

fix a zfs boot regression introduced in r300117 by accident

There is no reason to return non-zero value from zfs_probe_partition()
as that causes following partitions to not be probed for ZFS vdevs.
A particular scenario that I encountered is a GPT partitioned disk
where several partitions have freebsd-zfs type. A partition with a lower
index is used as a cache (l2arc) vdev and in that case case zfs_probe()
returned a non-zero status. That status was returned to ptable_iterate()
and caused it to abort the iteration. Because of that the subsequent
partitions were not probed and a root pool was not discovered resulting
in a boot failure.

While there fix the style for nearby return statements.

Approved by: re (kib)


301747 09-Jun-2016 manu

Add PCDuino3b dts. It uses the pcduino3 dts from upstream and adds the hdmi node, axp gpio and changes the phy mode to rgmii.

Approved by: andrew (mentor)
Differential Revision: https://reviews.freebsd.org/D6775


301714 09-Jun-2016 manu

Print a message when the efi disk isn't a logical partition.

Approved by: andrew (mentor)
Differential Revision: https://reviews.freebsd.org/D6782


301706 08-Jun-2016 andrew

Also set -fshort-wchar on arm64, this fixes parsing strings from UEFI,
e.g. on the command line.

Sponsored by: ABT Systems Ltd


301703 08-Jun-2016 andrew

Print the newline character along with the carriage return when TERM_EMU is
disabled. Without this we print all lines over top of each other.

Sponsored by: ABT Systems Ltd


301702 08-Jun-2016 andrew

Allow libefi to be built with TERM_EMU undefined. There were a few places
where we assumed TERM_EMU was defined but didn't check. Fix these by also
including them under the ifdefs.

As HO is called from loader we need a null implementation so loader.efi
doesn't need to know which version of libefi it is building against.

Sponsored by: ABT Systems Ltd


301306 04-Jun-2016 andrew

Use the UEFI event timer to update the time on arm and arm64. The current
code uses the GetTime function from the Runtime Service, however this has
been shown to not return a useable time on many arm64 UEFI implementations.

Reviewed by: jhb, smh
Sponsored by: ABT Systems Ltd
Differential Revision: https://reviews.freebsd.org/D6709


301225 02-Jun-2016 zbb

Add support for CESA on Armada38x

Changes:
- added new SoC ID in CESA attach
- allowed crypto driver IDs other than 0
- added CESA nodes to Armada38x .dts files
- enabled required devices in kernconf

Submitted by: Michal Stanek <mst@semihalf.com>
Obtained from: Semihalf
Sponsored by: Stormshield
Differential revision: https://reviews.freebsd.org/D6220


301222 02-Jun-2016 zbb

Split CESA memory resource into TDMA and CESA regs

TDMA and CESA registers are placed in different ranges of memory. Split
memory resource in DTS to reflect that. This change is needed to support
multiple CESA nodes as otherwise the ranges of different nodes would
overlap.

In consequence, CESA_WRITE and CESA_READ macros have been split depending
on which range of registers is accessed. Offsets for CESA registers have
been modified as the base address has changed.

Submitted by: Michal Stanek <mst@semihalf.com>
Obtained from: Semihalf
Sponsored by: Stormshield
Differential revision: https://reviews.freebsd.org/D6217


301218 02-Jun-2016 zbb

Revert part of r294418 ("Correct ranges...")

Commit was temporary fix due to rman_res_t defined as 32-bit u_long.
After redefining it as 64-bit variable workaround is not needed and
was removed.

Submitted by: Bartosz Szczepanek <bsz@semihalf.com>
Obtained from: Semihalf
Sponsored by: Stormshield
Differential revision: https://reviews.freebsd.org/D6214


301023 31-May-2016 ngie

Add missing libc includes to fix -Wimplicit-function-declaration warnings

MFC after: 2 weeks
Reported by: clang
Sponsored by: EMC / Isilon Storage Division


300866 27-May-2016 ambrisko

If the I/O offset and length is multiple of the media size then
directly pass the request otherwise use a buffer that is a
multiple of the media size. This speeds up I/O quite a bit
when using large transfer sizes on 4Kn disks etc.

MFC after: 1 week


300810 26-May-2016 jhb

Fix unit number of EFI net interfaces and ignore psuedo network interfaces.

In r277943, the efinet_match() routine was changed to use an off by one
when matching network interfaces. The effect was that using "net1"
actually used the device attached to "net0".

Digging into the hardware that needed this workaround more, I found that
UEFI was creating two simple network protocol devices for each physical
NIC. The first device was a "raw" Ethernet device and the second device
was a "IP" device that used the IP protocol on top of the underlying
"raw" device. The PXE code in the firmware used the "IP" device to pull
across the loader.efi, so currdev was set to "net1" when booting from the
physical interface "net0". (The loaded image's device handle referenced
the "IP" device that "net1" claimed.)

However, the IP device isn't suitable for doing raw packet I/O (and the
current code to open devices exclusively actually turns the "IP" devices
off on these systems).

To fix, change the efinet driver to only attach to "raw" devices. This
is determined by fetching the DEVICE_PATH for each handle which supports
the simple network protocol and examining the last node in the path. If
the last node in the path is a MAC address, the device is assumed to be
a "raw" device and is added as a 'netX' device. If the last node is not
a MAC address, the device is ignored.

However, this causes a new problem as the device handle associated with
the loaded image no longer matches any of the handles enumerated by
efinet for systems that load the image via the "IP" device. To handle
this case, expand the logic that resolves currdev from the loaded image
in main(). First, the existing logic of looking for a handle that
matches the loaded image's handle is tried. If that fails, the device
path of the handle that loaded the loaded image is fetched via
efi_lookup_image_devpath(). This device path is then walked from the
end up to the beginning using efi_handle_lookup() to fetch the handle
associated with a path. If the handle is found and is a known handle,
then that is used as currdev. The effect for machines that load the
image via the "IP" device is that the first lookup fails (the handle
for the "IP" device isn't claimed by efinet), but walking up the
image's device path finds the handle of the raw MAC device which is used
as currdev.

With these fixes in place, the hack to subtract 1 from the unit can now
be removed, so that setting currdev to 'net0' actually uses 'net0'.

PR: 202097
Tested by: ambrisko
Sponsored by: Cisco Systems


300791 26-May-2016 jhb

Use a unique error message if we fail to find the simple network protocol.

While here, fix the various net driver callbacks to return early instead
of crashing if this fails. (The 'init' callback from the netif interface
doesn't return an error if the protocol lookup fails.)

Sponsored by: Cisco Systems


300790 26-May-2016 jhb

Apply the printf %S band-aid for efinet.c to fix the arm64 build.


300789 26-May-2016 jhb

Remove second copy of the -Wno-format band-aid for printf %S.


300785 26-May-2016 jhb

Use routines from the recently added devpath.c.

These efipart layer did several devpath related operations inline. This
just switches it over to using shared code for working with device paths.

Sponsored by: Cisco Systems


300782 26-May-2016 jhb

Output the device path description for EFI network devices.

Lookup the DEVICE_PATH for each EFI network device handle and output the
string description using printf with '%S'. To honor the pager, the newline
at the end of each line is still output with pager_output().

Sponsored by: Cisco Systems


300780 26-May-2016 jhb

Add some routines for working with EFI DEVICE_PATH objects.

- efi_lookup_devpath() uses the DEVICE_PATH_PROTOCOL to obtain the
DEVICE_PATH for a given EFI handle.
- efi_lookup_image_devpath() uses the LOADED_IMAGE_DEVICE_PATH_PROTOCOL
to lookup the device path of the device used to load a loaded image.
- efi_devpath_name() uses the DEVICE_PATH_TO_TEXT_PROTOCOL to generate
a string description of a device path. The returned string is a CHAR16
string that can be printed via the recently added '%S' format in
libstand's printf(). Note that the returned string is returned in
allocated storage that should be freed by calling
efi_free_devpath_name().
- efi_devpath_last_node() walks a DEVICE_PATH returning a pointer to the
final node in the path (not counting the terminating node). That is,
it returns a pointer to the last meaninful node in a DEVICE_PATH.
- efi_devpath_trim() generates a new DEVICE_PATH from an existing
DEVICE_PATH. The new DEVICE_PATH does not include the last
non-terminating node in the original path. If the original DEVICE_PATH
only contains the terminating node, this function returns NULL.
The caller is responsible for freeing the returned DEVICE_PATH via
free().
- efi_devpath_handle() attempts to find a handle that corresponds to a
given device path. However, if nodes at the end of the device path do
not have valid handles associated with them, this function will return
a handle that matches a node earlier in the device path. In particular,
this function returns a handle for the node closest to the end of the
device path which has a valid handle.

Sponsored by: Cisco Systems


300777 26-May-2016 manu

Add support for interrupts, sensors and GPIO for AXP209 PMIC.
Pressing the PEK (power enable key) will shutdown the board.
Some events are reported to devd via system "PMU" and subsystem
"Battery", "AC" and "USB" such as connected/disconnected.
Some sensors values (power source voltage/current) are reported via
sysctl (dev.axp209_pmu.X.)
It also expose a gpioc node usable in kernel and userland. Only 3 of
the 4 GPIO are exposed (The GPIO3 is different and mostly unused on
boards). Most popular boards uses GPIO1 as a sense pin for OTG power.
Add a dtsi file that adds gpio-controller capability to the device as
upstream doesn't defined it and include it in our custom DTS.

Reviewed by: jmcneill
Approved by: cognet (mentor)
Differential Revision: https://reviews.freebsd.org/D6135


300634 25-May-2016 cem

efi loader: Match format string to EFI_ERROR_CODE()

Silence a format specifier warning.

Sponsored by: EMC / Isilon Storage Division


300330 20-May-2016 imp

Large improvements to efi-show (though some weird problems
linger). We now print only printable characters for the
values and we print ascii strings as strings.


300329 20-May-2016 imp

Implement efi-set and efi-unset


300328 20-May-2016 imp

Cleanup to use %S.


300257 20-May-2016 allanjude

Fixup the geliboot sector rounding code

Replace all rounding with the round{up,down}2 macros
a missing set of braces caused the previous code to be incorrect

replace alloca() with malloc() because alloca() can return an allocation
that is actually invalid, causing boot to fail

Reviewed by: emaste, ed
Thanks To: peter
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D6213


300230 19-May-2016 gonzo

Fixed memory leak in FDT overlay handling code

Free both overlay and new fdt before returning after fdt_open_into error
PR: 209634
Submitted by: David Binderman


300216 19-May-2016 imp

Fix logic error so UEFI variables are reported correctly
without error at the end.


300156 18-May-2016 imp

Fix typo.

Spotted by: Matteo Riondato


300150 18-May-2016 pfg

Minor spelling fixes.


300146 18-May-2016 imp

Also add comment about the bug I comments in the forth.


300117 18-May-2016 imp

Fix several instances where the boot loader ignored pager_output
return value when it could return 1 (indicating we should stop).
Fix a few instances of pager_open() / pager_close() not being called.
Actually use these routines for the environment variable printing code
I just committed.


300116 18-May-2016 imp

Fix build breakage on arm64 by papering over the problem. We implement
a slightly non-standard %S that's more useful in the UEFI environment,
so ignore printf errors. There's no good cast to use. We'll need to
revisit this in the future.


300115 18-May-2016 imp

Explain why extra sutff always outputs even when it shouldn't for the
'?' command. Wasted a bunch of time tracking it down tonight.


300081 17-May-2016 imp

Implement UEFI set environment variable, as well as exporting the EFI
version. This is also scriptable, though additional scripting will be
needed.

Differential Review: https://reviews.freebsd.org/D4494
MFC After: 3 days


300080 17-May-2016 imp

Implement uuid-to-string and uuid-from-string. uuid-from-string takes
a string, interprets it as a standard UUID, and returns a binary from
of the UUID. uuid-to-string does the reverse. The binary UUID is in
allocated memory, so you'll need to free it with 'free' after you are
done using it. It won't be automatically garbage collected. Likewise
with the string...

MFC After: 3 days


300071 17-May-2016 jhb

Remove the reiserfs(5) manpage and an example of loading the kernel module.


300056 17-May-2016 imp

It sure would be nice to use printf with wide strings. Implement %S to
do that. The C_WIDEOUT flag indicates that the console supports
it. Mark the EFI console as supporting this.

MFC After: 3 days


300055 17-May-2016 imp

Minor space tweak to make things consistent.

MFC After: 3 days


300014 17-May-2016 sgalabov

Add proper PCIe init for MT7628/MT7688 SoCs

PCIe PHY needs different initialization on MT7628/MT7688 SoCs than it does
on MT7620.
However, LEDE (and OpenWRT) dts files have the PCIe node for MT7628/MT7688
as compatible with mt7620-pci.
We already can handle this properly in our driver, so we just need to add
compat strings to fbsd-mt7628an.dtsi and the PCIe driver.

Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D6395


300013 17-May-2016 sgalabov

Import LEDE dts files for Ralink/Mediatek

This is an import of the reworked LEDE dts files. Besides other things
they make it easier for us to reuse.

The only diffs left are for the following SoCs:
MT7620A (fbsd-mt7620a.dtsi)
MT7621 (fbsd-mt7621.dtsi)
MT7628 (fbsd-mt7628an.dtsi)
RT3883 (fbsd-rt3883.dtsi)

So we include the fbsd-*.dtsi files at the end of the original LEDE dtsi
files, using '#include "fbsd-xxxx.dtsi"'.
For example, for MT7621, the LEDE dtsi file is mt7621.dtsi. At the end of
it we add:
#include "fbsd-mt7621.dtsi"

Approved by: adrian (mentor)
Obtained from: LEDE project
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D6394


299997 17-May-2016 peter

Attempt to fix r299660:
slba is used only for the GPT case.
elba is used if either GPT or LOADER_GELI_SUPPORT is enabled.


299972 16-May-2016 pfg

libefi: Tag an unreachable switch default.

Coverity reports an uninitialized "len" in case the switch defaults
without hitting any case. Respect the original intent and quell the
false positive with the relatively new __unreachable() builtin.

CID: 1347796


299871 15-May-2016 jmcneill

Add Allwinner A83T thermal sensor controller support.

The A83T thermal sensor controller has three sensors. Sensor 0 corresponds
to CPU cluster 0, sensor 1 to CPU cluster 1, and sensor 2 to the GPU. This
driver exports the temperature sensor readings via sysctl.

Calibration data is obtained from SRAM found in the Secure ID module.

Reviewed by: manu
Differential Revision: https://reviews.freebsd.org/D6378


299863 15-May-2016 jmcneill

Enable SATA power regulator at boot on Sinovoip BananaPi BPI-M3.


299861 15-May-2016 jmcneill

Add gpio-leds for Sinovoip BananaPi BPI-M3.

The green LED on the board is wired to AXP813 GPIO0 and the blue
LED is wired to AXP813 GPIO1.


299789 14-May-2016 jmcneill

Add pmic (AXP813) child node to r_rsb for Sinovoip BananaPi BPI-M3.


299779 14-May-2016 jmcneill

Add node for A83T NMI interrupt controller.


299748 14-May-2016 jmcneill

Add DTS files for the Allwinner A83T SoC and the Sinovoip BananaPi BPI-M3
development board.


299662 13-May-2016 ngie

Fix a -Wformat warning by using %d, not %ld for md_iterations

md_iterations is int32_t, not long.

Reported by: clang
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


299661 13-May-2016 ngie

Add geliboot_crypt(..) definition to geliboot.h to mute a -Wimplicit-function-declaration
warning

Reported by: clang
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


299660 13-May-2016 ngie

Put slba and elba under LOADER_GELI_SUPPORT ifdef to mute warning about them being
unused in the non-GELI case

MFC after: 1 week
Reported by: clang
Sponsored by: EMC / Isilon Storage Division


299659 13-May-2016 ngie

Remove unused const variable

MFC after: 1 week
Reported by: clang
Sponsored by: EMC / Isilon Storage Division


299655 13-May-2016 ngie

Add missing prototype for getchar(..)

MFC after: 1 week
Reported by: clang
Sponsored by: EMC / Isilon Storage Division


299499 12-May-2016 pfg

sys/boot/common: use of spaces vs. TAB.

No functional change.


299098 05-May-2016 cem

efipart: Support an arbitrary number of partitions

Don't crash if the user has more than 31 of them. A follow-up to
r298230.

Reviewed by: allanjude
Relnotes: maybe
Sponsored by: EMC / Isilon Storage Division
Differential Revision: https://reviews.freebsd.org/D6212


298949 03-May-2016 peter

Change a rounding operation that had missing braces into a roundup2()
macro. Adjust the buffer clipping code to work as expected.

This prevented a number of machines in the FreeBSD.org cluster from
booting due to "ZFS: i/o error - all block copies unavailable"
after an unclean shutdown.


298900 01-May-2016 allanjude

bcache read ahead may attempt to read past end of disk

The new bcache code does not know the size of the disk, and therefore may attempt to read past the end of the disk while trying to fill its read-ahead cache.

This is usually not an issue, it fails gracefully on all of my machines, but some BIOSes seem to retry the reads for up to 30 seconds each, resulting in a long stall during boot

Submitted by: Toomas Soome <tsoome@me.com>
Reviewed by: jhb, np
Differential Revision: https://reviews.freebsd.org/D6109


298831 30-Apr-2016 pfg

boot/forth: spelling fixes.

Reviewed by: dteske
MFC after: 2 weeks


298826 30-Apr-2016 pfg

sys/boot: spelling fixes in comments.

No functional change.


298821 29-Apr-2016 gonzo

Add FDT overlays support to ubldr

FDT overlays is de-facto standard for describing expansion boards like
Beaglebone capes or Raspberry Pi shields. The ides is to have basic
DTB for base board and overlays DTB for shields/capes and to construct
final DTB either using human-readable configuration or some
self-discovery mechanism. I believe this approach can also be expanded
to support dynamically loadable FPGA bitstreams on systems like
Zedboard/Zybo.

Overlaying process is simmilar to executable link process for
binaries: each DTB has "exported" symbols and "undefined" symbols, the
latter are resolved using information for the former obtained from
base DTB or one of the overlays applied earlier (more rare case).

This symbols information is not generated by standard dtc that FreeBSD
has in base system, patched[1] version required to produces
overlay-compatible blobs. So although DTB files generated by
buildkernel do not support overlays there are enough
vendor/community-provided DTB blobs ciruclating around to justify
committing this change to ubldr.

This commit introduces handler for "fdt_overlays" variable that can be
defined either as a loader env variable or U-Boot env variable.
fdt_overlays is comma-separated list of .dtbo files located in
/boot/dtb/ directory along with base .dtb. ubldr loads files and
applies them one-by-one to base .dtb and then passes result blob to
the kernel.

[1] https://github.com/RobertCNelson/dtc/commit/dd6a0533e846e8d5e690a618fa35cc15a6103efb

Differential Revision: https://reviews.freebsd.org/D3180


298674 26-Apr-2016 gonzo

Refactor DTS files for Zynq-based SoCs

- Factor out common part to zynq-7000.dtsi
- Fix problem with Zynq interrupts by using interrupt "triples"
in .dtsi file to differentiate between edge-triggered and
level-triggered interrupts
- cgem driver now recognizes "status" property

Submitted by: Thomas Skibo <thomasskibo@yahoo.com>
Differential Revision: https://reviews.freebsd.org/D6095


298650 26-Apr-2016 hselasky

Build fix. Add howmany() and nitems() macros to bootloader kernel shim.


298647 26-Apr-2016 hselasky

Add function needed for linking USB test application.


298645 26-Apr-2016 pfg

sys/boot: make use of the howmany() macro when available.

We have a howmany() macro in the <sys/param.h> header that is
convenient to re-use as it makes things easier to read.


298638 26-Apr-2016 br

o Add device tree files and kernel configuration files
for RISC-V cpus synthesized on FPGA hardware.
o Include new files to the build.


298500 23-Apr-2016 sgalabov

Reduce the FreeBSD specific DTS files for Mediatek/Ralink

The introduction of palmbus and previous work allows us to cut the
differences between FreeBSD and OpenWRT DTS files a bit further.

Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D6043


298478 22-Apr-2016 allanjude

Fix more pc98 build issues re: bcache change

Reported by: bz, emaste


298433 21-Apr-2016 pfg

sys: use our roundup2/rounddown2() macros when param.h is available.

rounddown2 tends to produce longer lines than the original code
and when the code has a high indentation level it was not really
advantageous to do the replacement.

This tries to strike a balance between readability using the macros
and flexibility of having the expressions, so not everything is
converted.


298422 21-Apr-2016 jmcneill

Replace the A20 kernel config with a generic ALLWINNER kernel config that
supports A20, A31, and A31S. Adds support for the BananaPi M2 (A31S) board.

Submitted by: Emmanuel Vadot <manu@bidouilliste.com>
Reviewed by: jmcneill
Differential Revision: https://reviews.freebsd.org/D5580


298418 21-Apr-2016 allanjude

Add more guards to disable GELIBOOT by defining LOADER_NO_GELI_SUPPORT

Reviewed by: cem
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D6049


298346 20-Apr-2016 sgalabov

Include resets and clocks properties for PCI in FreeBSD RT3883 dtsi file

This change is required so that RT3662/RT3883 PCI can function correctly

Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D6028


298309 19-Apr-2016 pfg

sys/boot: use our nitems() macro when it is available through param.h.

No functional change, only trivial cases are done in this sweep,

Discussed in: freebsd-current


298298 19-Apr-2016 allanjude

Link bcache into userboot.so, was not added in r298230

This should help speed up bhyve boots too

Reviewed by: olivier


298275 19-Apr-2016 allanjude

Fix pc98 build error introduced in r298230

Submitted by: Toomas Soome <tsoome@me.com>
Spotted by: bz
Differential Revision: https://reviews.freebsd.org/D6002


298230 18-Apr-2016 allanjude

A new implementation of the loader block cache

The block cache implementation in loader has proven to be almost useless, and in worst case even slowing down the disk reads due to insufficient cache size and extra memory copy.
Also the current cache implementation does not cache reads from CDs, or work with zfs built on top of multiple disks.
Instead of an LRU, this code uses a simple hash (O(1) read from cache), and instead of a single global cache, a separate cache per block device.
The cache also implements limited read-ahead to increase performance.
To simplify read ahead management, the read ahead will not wrap over bcache end, so in worst case, single block physical read will be performed to fill the last block in bcache.

Booting from a virtual CD over IPMI:
0ms latency, before: 27 second, after: 7 seconds
60ms latency, before: over 12 minutes, after: under 5 minutes.

Submitted by: Toomas Soome <tsoome@me.com>
Reviewed by: delphij (previous version), emaste (previous version)
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D4713


298107 16-Apr-2016 gjb

Merge the projects/release-pkg branch to head.

This allows packaging the base system with pkg(8), including
but not limited to providing the ability to provide upstream
binary update possibilities for non-tier-1 architectures.

This merge is a requirement of the 11.0-RELEASE, and as such,
thank you to everyone that has tested the project branch.

Documentation in build(7) etc. is still somewhat sparse, but
updates to those parts will follow.

Sponsored by: The FreeBSD Foundation


298096 16-Apr-2016 gjb

Prune bogus svn:mergeinfo from directores on which it should not ever
be present.

Sponsored by: The FreeBSD Foundation


298062 15-Apr-2016 sgalabov

Import Mediatek/Ralink dtsi patches against OpenWRT dtsi files

This revision suggests dtsi patches to be used with the original OpenWRT
dtsi files so we can re-use what has already been done in OpenWRT for the
Mediatek/Ralink SoCs.

The only thing that is required after importing this revision should be
the following:
1. Import OpenWRT dts/dtsi files into sys/gnu/dts/mips
2. Run the following script in sys/gnu/dts/mips:
for f in `ls [mr]t*.dtsi`; do
printf "\n#include <fbsd-$f>\n" > $f
done

This will apply our dtsi patches to OpenWRT's dtsi files and will allow us
to re-use dts/dtsi files for ~170 Mediatek/Ralink boards.

Currently our drivers are not 100% compatible with OpenWRT's dts files, but
they're compatible enough.
We can add more functionality in the future that would better leverage the
OpenWRT work as well.

Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D5965


297954 14-Apr-2016 imp

Deprecate using hints.acpi.0.rsdp to communicate the RSDP to the
system. This uses the hints mechnanism. This mostly works today
because when there's no static hints (the default), this value can be
fetched from the hint. When there is a static hints file, the hint
passed from the boot loader to the kernel is ignored, but for the BIOS
case we're able to find it anyway. However, with UEFI, the fallback
doesn't work, so we get a panic instead.

Switch to acpi.rsdp and use TUNABLE_ULONG_FETCH instead. Continue to
generate the old values to allow for transitions. In addition, fall
back to the old method if the new method isn't present.

Add comments about all this.

Differential Revision: https://reviews.freebsd.org/D5866


297872 12-Apr-2016 emaste

boot1: regenerate FAT templates after r297871

Sponsored by: The FreeBSD Foundation


297871 12-Apr-2016 emaste

boot1.efifat: provide a fallback startup.nsh

In case the firmware falls through to executing startup.sh, populate it
with the name of our boot loader. In normal operation this should not be
necessary but may allow the system to boot if it would otherwise just
remain at a shell prompt.

Reviewed by: andrew, imp, smh
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D5878


297793 10-Apr-2016 pfg

Cleanup unnecessary semicolons from the kernel.

Found with devel/coccinelle.


297758 09-Apr-2016 ian

Align the start of the text segment to an 8-byte boundary. This fixes
alignment aborts in ubldr.bin for RPi that started happening with clang 3.8
(earlier clang apparently didn't generate strd instructions that trigger
the alignment fault). The abort happened in ubldr.bin and not ubldr (elf
version) because the elf headers are 0xf4 bytes long, and stripping them
off left everything 4-byte aligned.

While here, also stop aligning the data segment to a page boundary, align
it to 8 bytes instead (aligning to a page just needlessly makes the file
bigger); pointed out by andrew@.


297702 08-Apr-2016 kib

Use the ABI-prescribed name for SHT_X86_64_UNWIND in the loader and
kernel linker, after the r297686.

Sponsored by: The FreeBSD Foundation


297692 08-Apr-2016 allanjude

GELIBoot should only prompt for the GELI passphrase if the provider has the G_ELI_FLAG_GELIBOOT set

PR: 208251
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D5870


297690 08-Apr-2016 sobomax

Document vfs.root.mountfrom.

Reviewed by: imp, wblock
Differential Revision: https://reviews.freebsd.org/D5332


297629 06-Apr-2016 allanjude

Fix GELIBoot support for GELI sector size is > 512

Add support for 4k sector GELI encrypted partitions to the bootloader
This is the default created by the installer

Because the IV is different for each sector, and the XTS tweak carries forward you can not decrypt a partial sector if the starting offset is not 0

Make boot2 and the loader read in 4k aligned chunks

Reviewed by: ed, oshogbo
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D5820


297627 06-Apr-2016 jmcneill

Convert Allwinner port to extres clk/hwreset/regulator APIs.

Reviewed by: andrew, gonzo, Emmanuel Vadot <manu@bidouilliste.com>
Approved by: gonzo (mentor)
Differential Revision: https://reviews.freebsd.org/D5752


297582 05-Apr-2016 skra

Rework BCM283x gpio interrupt controller for INTRNG. It's used on RPI-B
and RPI2 where INTRNG is already enabled by default.

Differential Revision: https://reviews.freebsd.org/D5810


297545 04-Apr-2016 skra

Define local-intc for BCM2836 platform (RPI2) and make BCM2835 intc
a child of it. This is done in conformity with Linux dts files and
as preparation for rework of BCM2836 interrupt controller for INTRNG.

Reviewed by: gonzo
Differential Revision: https://reviews.freebsd.org/D5807


297426 30-Mar-2016 loos

Enable SPI1 on Beaglebone Black.

SPI1 was chosen because SPI0 shares the gpio pins with I2C1.

Sponsored by: Rubicon Communications (Netgate)


297425 30-Mar-2016 loos

Use the AM33XX_IOPAD() MACRO which is easier to read (uses the same offset
of TRM).

While here remove i2c2_pins, it is already defined in
am335x-bone-common.dtsi.

Sponsored by: Rubicon Communications (Netgate)


297293 26-Mar-2016 allanjude

Do not prompt for GELI passphrase is encrypted with keys only

PR: 208251
Submitted by: Fabian Keil <fk@fabiankeil.de>
Sponsored by: ScaleEngine Inc.


297283 26-Mar-2016 bdrewery

Implement (ACFLAGS|CFLAGS|CXXFLAGS).SRC globally.

Sponsored by: EMC / Isilon Storage Division


297154 21-Mar-2016 bdrewery

DIRDEPS_BUILD: Update dependencies.

Sponsored by: EMC / Isilon Storage Division


297151 21-Mar-2016 ian

If the dhcp server provided an interface-mtu option, transcribe the value
to the boot.netif.mtu env var, which will be picked up by pre-existing code
in nfs_mountroot() and used to configure the interface accordingly.

This should bring the same functionality when the bootp/dhcp work is done
by loader(8) as r297150 does for the in-kernel BOOTP case.


296963 16-Mar-2016 allanjude

Implement GELI (AES-XTS and AES-CBC only) in gptboot and gptzfsboot

Allows booting from a GELI encrypted root file system, via UFS or ZFS

Reviewed by: gnn, smh (previous version), delphij (previous version)
Relnotes: yes
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D4593


296936 16-Mar-2016 mmel

Import basic support for Nvidia Jetson TK1 board and tegra124 SoC.
The following pheripherals are supported: UART, MMC, AHCI, EHCI, PCIe, I2C,
PMIC, GPIO, CPU temperature and clock.

Note: The PCIe driver is pure mash at this moment. It will be reworked
immediately when both D5237 and D2579 enter the current tree.


296892 15-Mar-2016 imp

ms_abi is supported with gcc 4.5 or newer, so build it with gcc if it
is 4.5 or newer.


296825 14-Mar-2016 wma

Make MPIC compatible with ARM_INTRNG

After ARM_INTRNG introduction, MPIC code needed several modifications:
- IRQ resource and its handler added
- several DEVMETHODs of INTRNG interface implemented
- defines enhanced to ensure code compiles as well for AXP as for A38X
- added dummy MSI_IRQ, ERR_IRQ defines for Armada38x
- MPIC driver was added to files.armada38x, ARM_INTRNG option enabled in
kernconf file and regs of MPIC corrected in dts file.

Instead of modifying Armada38X DTS, offsets to CPU registers defined in
driver were changed. That required restoring 'reg' property of mpic node
in ArmadaXP to state compliant with Linux DTS.

Additionally, required ARM_INTRNG definitions were added to mv_common.c.

Submitted by: Bartosz Szczepanek <bsz@semihalf.com>
Obtained from: Semihalf
Sponsored by: Stormshield
Reviewed by: adrian, andrew, ian, skra
Approved by: cognet (mentor)
Differential Revision: https://reviews.freebsd.org/D5030


296790 13-Mar-2016 jmcneill

Add HDMI device nodes to Banana Pi dts.

PR: 207912
Approved by: gonzo (mentor)


296769 12-Mar-2016 emaste

boot/efi: Prefer nm to objdump

Both objdump and nm are equally capable of reporting undefined symbols.

This gets us a step closer to building without binutils as we have an nm
implementation from ELF Tool Chain.

Reviewed by: bdrewery
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D5613


296713 12-Mar-2016 andrew

Print the correct size of loader.efi when failing to load it into memory.

Obtained from: AsiaBSDCon
Sponsored by: ABT Systems Ltd


296706 11-Mar-2016 bdrewery

Add more .NOMETA missed in r291320

Sponsored by: EMC / Isilon Storage Division


296705 11-Mar-2016 bdrewery

Revert r269030. CLEANFILES is already added to .NOPATH since r241298.

Sponsored by: EMC / Isilon Storage Division


296564 09-Mar-2016 sgalabov

Improve U-Boot API detection

Until now, ubldr has been trying to locate the U-Boot API using a hint
address (U-Boot's current stack pointer), aligning it to 1MiB and going
over a 3MiB (or 1MiB in case of MIPS) memory region searching for a
valid API signature.

This change introduces an alternative way of doing this, namely the
following:
- both U-Boot's bootelf and go commands actually pass argc and argv to
the entry point (e.g., ubldr's start function, but they should also
be passed over to main() transparently)
- so, instead of trying to go and look for a valid API signature, we
look at the parameters passed to main()
- if there's an option '-a' with argument, which is a valid hexadecimal
unsigned long number (x), we try to verify whether we have a valid
API signature at address x. If so - we use it. If not - we fallback
to the original way of locating the API signature.

The U-Boot change, which causes the API structure address to be
exported as an environment variable, was committed to mainline U-Boot
as commit 22aa61f707574dd569296f521fcfc46a05f51c48

Reviewed by: andrew, adrian
Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D5492


296517 08-Mar-2016 emaste

boot1.efi: use += to append to LDFLAGS

This is for consistency with loader.efi's Makefile and simplifies some
out-of-tree experimentation.


296428 06-Mar-2016 dim

Since kernel modules can now contain sections of type SHT_AMD64_UNWIND,
the boot loader should not skip over these anymore while loading images.
Otherwise the kernel can still panic when it doesn't find the .eh_frame
section belonging to the .rela.eh_frame section.

Unfortunately this will require installing boot loaders from sys/boot
before attempting to boot with a new kernel.

Reviewed by: kib
MFC after: 2 weeks
X-MFC-With: r296419


296417 05-Mar-2016 dim

Upgrade our copies of clang, llvm, lldb and compiler-rt to 3.8.0
release.

Please note that from 3.5.0 onwards, clang, llvm and lldb require C++11
support to build; see UPDATING for more information.

Release notes for llvm and clang will soon be available here:
<http://llvm.org/releases/3.8.0/docs/ReleaseNotes.html>
<http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html>

Thanks to Ed Maste, Roman Divacky, Davide Italiano and Antoine Brodin
for their help.

Relnotes: yes


296378 04-Mar-2016 sgalabov

Fix ubldr build failure on mipsn32 and mipsn32el targets.

Approved by: adrian (mentor)


296216 29-Feb-2016 emaste

userboot: use MK_CTF=no to disable CTF

The NO_ form (e.g. NO_CTF) is deprecated.


296186 29-Feb-2016 sgalabov

Fix build failure introduced by r296182

Approved by: adrian (mentor)


296183 29-Feb-2016 sgalabov

This review aims at introducing ubldr (loader with U-Boot interface) for MIPS
(32 and 64-bit, LE and BE).
The changes were tested with QEMU's 'mips' target.

Most of the implementation was lifted from the ARM version, the appropriate
MIPS-specific things were implemented.

With these changes I am able to go all the way through the u-boot->ubldr->kernel
boot chain in QEMU on all combinations of bit-ness and endian-ness.

For the tests I've used FAT32 disk images (as FAT32 is supported by U-boot),
which include /boot/kernel/kernel and /boot/kernel/ubldr.bin

In U-boot I do:
fatload ide 0 <LOAD_ADDR> /boot/kernel/ubldr.bin; go <LOAD_ADDR>
where LOAD_ADDR is 80800000 for 32-bit and ffffffff80800000 for 64-bit

Then it's the usual ubldr that takes over and loads and starts a kernel.

Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D5313


296182 29-Feb-2016 sgalabov

These changes attempt to put things in order before the introduction of MIPS
ubldr.

The changes are mostly dealing with removing unnecessary casts from the U-Boot
API (we're passing only pointers, no obvious reason to cast them to uint32_t),
cleaning up some compiler warnings and using the proper printf format
specifiers in order to be able to compile cleanly for both 32-bit and 64-bit
MIPS targets.

Reviewed by: imp
Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D5312


296099 26-Feb-2016 marcel

Add vm_set_register() and vm_set_desc() callbacks. These callbacks
translate directly into calls to their namesake API functions in
libvmmapi.

It is an improvement over the existing setreg(), setmsr(), setcr()
setgdt() and exec() callbacks in that the new additions give full
control and don't assume we're booting FreeBSD, like exec() and
don't assume one only wants to set the value of RSP, like setreg().


296097 26-Feb-2016 marcel

Check that the userboot version is at least 3, rather than
3 exactly. The structure may be of a newer version and as
long as it is backward compatible with 3, we can work with
it.

While here: whitespace nits.


296080 26-Feb-2016 sgalabov

So far bsd.stand.mk wasn't included in the following files:
sys/boot/fdt/Makefile
sys/boot/uboot/fdt/Makefile
sys/boot/uboot/lib/Makefile

This causes compilation issues on MIPS due to trying to link PIC with non-PIC
code. This revision includes bsd.stand.mk in the above files.

Reviewed by: imp
Approved by: adrian (mentor)
Sponsored by: Smartcom - Bulgaria AD
Differential Revision: https://reviews.freebsd.org/D5311


296079 26-Feb-2016 sgalabov

Currently BERI's loader is including the 32-bit version of the FICL MIPS sysdep.h (sys/boot/ficl/mips/sysdep.h) instead of the 64-bit version (sys/boot/ficl/mips64/sysdep.h).

Although this may not be an issue in practice, it would be more correct if the 64-bit version was used. Also, using the 64-bit version would make it easier to add support for 64-bit ubldr on MIPS.

Approved by: adrian (mentor)
Differential Revision: https://reviews.freebsd.org/D5310


296064 25-Feb-2016 jmcneill

Add Allwinner A20 HDMI support.

The HDMI driver will attach a framebuffer device when a display is
connected. If the EDID can be read and contains a preferred mode, it
will be used. Otherwise the framebuffer will default to 800x600.

In addition, if the EDID contains a CEA-861 extension block and the
"basic audio" flag is set, audio playback at 48kHz 16-bit stereo is
enabled on the controller.

Reviewed by: andrew
Approved by: gonzo (mentor)
Differential Revision: https://reviews.freebsd.org/D5383


295989 24-Feb-2016 bdrewery

DIRDEPS_BUILD: Regenerate without local dependencies.

These are no longer needed after the recent 'beforebuild: depend' changes
and hooking DIRDEPS_BUILD into a subset of FAST_DEPEND which supports
skipping 'make depend'.

Sponsored by: EMC / Isilon Storage Division


295972 24-Feb-2016 br

Add support for symmetric multiprocessing (SMP).

Tested on Spike simulator with 2 and 16 cores (tlb enabled),
so set MAXCPU to 16 at this time.

This uses FDT data to get information about CPUs
(code based on arm64 mp_machdep).

Invalidate entire TLB cache as it is the only way yet.

Sponsored by: DARPA, AFRL
Sponsored by: HEIF5


295945 24-Feb-2016 sobomax

Obsolete mkulzma(8) and geom_uncompress(4), their functionality
is now provided by mkuzip(8) and geom_uzip(4) respectively.

MFC after: 1 month


295921 23-Feb-2016 br

o Grab physical memory regions information from the device tree.
o Increase memory size.


295895 22-Feb-2016 ian

If the user has set a u-boot env var named rootpath, automatically
import it into the loader(8) env as dhcp.root-path, so that it overrides
any dhcp/bootp server-provided path.

Now if you have a dhcp server available you can easily net-boot a u-boot
system even if you don't control the dhcp server config, by setting just
two variables in the u-boot env:

loaderdev=net
rootpath=<nfsserverip>:<pathname>

Previously you had to either accept all the dhcp parameters from the
server without the ability to locally provide the rootpath, or you had
to forego dhcp and set more vars (ipaddr, netmask, serverip, rootpath).


295869 21-Feb-2016 andrew

Make efi_time and EFI_GetTimeOfDay static, neither are used by other parts
of the efi code.

Sponsored by: ABT Systems Ltd


295842 20-Feb-2016 andrew

Add a missing call to dev_cleanup from the arm64 loader.efi.

Sponsored by: ABT Systems Ltd


295757 18-Feb-2016 emaste

Remove dd xfer stats emitted during buildworld

They result in gratuitous differences when comparing build log output.


295711 17-Feb-2016 andrew

Move the Allwinner kernels to use fdt_pinctrl. This will read the pin
configuration from the FDT data, then set the pins into the requested
state. As part of this the gpio controller now reports the correct number
of pins instead of returning the number of bank * 32.

To allow for a future consolidated kernel we add the SOC_ALLWINNER_A10 and
SOC_ALLWINNER_A20 kernel options. These need to be set as appropriate for
the SoC the kernel will boot on.

Submitted by: Emmanuel Vadot <manu@bidouilliste.com>
Differential Revision: https://reviews.freebsd.org/D5177


295657 16-Feb-2016 andrew

Add an analog audio driver for the audio codec found on the Allwinner
A10/A20 SoC. Based loosely on the submitters NetBSD driver, tested on
Cubieboard 2. Playback and capture are supported.

Submitted by: Jared McNeill <jmcneill@invisible.ca>
Differential Revision: https://reviews.freebsd.org/D5202


295655 16-Feb-2016 skra

Temporary overwrite bad definition of elm interrupt property in Linux
dts files. It may be removed once it will be fixed upstream.

This is done just to supresses a warning during dtb evaluation as
there is no elm driver in tree at present.


295650 16-Feb-2016 bdrewery

DIRDEPS_BUILD: Update dependencies.

Sponsored by: EMC / Isilon Storage Division


295635 15-Feb-2016 andrew

Add support for the Allwinner DMA controller. This will be used by the at
least the audio codec driver currently in review.

Submitted by: Jared McNeill <jmcneill@invisible.ca>
Differential Revision: https://reviews.freebsd.org/D5050


295521 11-Feb-2016 br

o Move non-generic kernel configuration out from GENERIC.
o Add kernel configuration for QEMU.

Both SPIKE and QEMU kernel configs are temporary (until
we will be able to obtain DTB from loader).

Sponsored by: DARPA, AFRL
Sponsored by: HEIF5


295464 10-Feb-2016 andrew

Update of the Allwinner drivers to:
* Use the Linux compat string
* Use EARLY_DRIVER_MODULE to attach at the right time
* Add a generic A10 kernel config file
* A20 now use generic_timer
* Add two new dts files for Olimex boards
* Update our custom DTS file for A10 and A20 to use the same compatible
property names as the vendor ones.

Submitted by: Emmanuel Vadot <manu@bidouilliste.com>
Differential Revision: https://reviews.freebsd.org/D4792


295429 09-Feb-2016 andrew

Don't set the offset when loading the kernel on the arm loader.efi. The
copyin and copyout code handle virtual addresses such that they will take
a virtual address and convert it into a valid physical address. It may
also mean we fail to boot as the elf files load address could be 0.

Sponsored by: ABT Systems Ltd


295421 09-Feb-2016 andrew

Stop clang from generating movt/movw sequences. These don't get relocated
so will access data from an unrelocated address. This is only needed for
self relocating code on ARMv7, however this is true for both ubldr and
loader.efi, the only two loaders we support on ARMv7.

While here also force the fpu to be none as is done in libstand.

Sponsored by: ABT Systems Ltd


295420 09-Feb-2016 andrew

Ensure the bss is aligned to a 4-byte address as we use 4-byte aligned
stores to clear it.

While here reduce the alignment of the data from 4k to 16 byte aligned.
This should be more than enough, without wasting too much space.

Sponsored by: ABT Systems Ltd


295410 08-Feb-2016 pfg

ficl: Replace rand(3) with random(3).

Be a little more consistent with random(3) and push an
unsigned value.

Again, this has no effect as this code doesn't get compiled
for the boot code.


295409 08-Feb-2016 pfg

ficl: Replace rand(3) with random(3).

While the later is a better random generator than the former, the main
reason of the change is that random() has a better chance to work with
libstand(3).

At this time we don't include random number generators in bootforth
so this has no effect.


295408 08-Feb-2016 imp

Implement -P for boot loader. It's a bit easier to implement here than
in boot1, like is normally done. When a keyboard appears in the UEFI
device tree, assume -D -h, just like on a BIOS boot.

# It is unclear if an ACPI keyboard appearing in the tree means there's
# a real keyboard or not. A USB keyboard doesn't seem to appear unless
# it is really there.

Differential Revision: https://reviews.freebsd.org/D5223


295398 08-Feb-2016 emaste

Restore kgzldr on i386 only

I previously disconnected kgzdr based on a misunderstanding.

I'd still like to transition to supporting only the loader(8)-based
boot path for handling compressed kernels, but that can follow the
standard deprecation procedure.

This reverts r291113.

Requested by: dteske


295357 07-Feb-2016 allanjude

Do not set vfs.root.mountfrom unnecessarily

This causes boot from external media (installer USB image) to mount / from
the default ZFS BE, rather than the USB device.

Reported by: kmoore
MFC after: 5 days
Sponsored by: ScaleEngine Inc.


295356 06-Feb-2016 smh

Fix EFI platform build failures

With warnings now enabled some plaforms where failing due to warnings.
* Fix st_size printed as a size_t when its actually an off_t.
* Fix pointer conversion in load_elf for some 32bit platforms due to 64bit
off in ef.

MFC after: 2 days
X-MFC-With:
Sponsored by: Multiplay


295320 05-Feb-2016 smh

Fix EFI multi device boot support

Fix EFI boot support when presented with multiple valid boot partitions
across multiple devices.

It now prefers to boot from partitions that are present on the underlying
device that the boot1 image was loaded from. This means that it will boot
from the partitions on device the user chose from EFI boot menu in
preference to those on other devices.

Also fixed is the recovery from a failed attempt to boot, from a seemingly
valid partition, by continuing to trying all other available partitions
no matter what the error.

boot1 now use * to signify a partition what was accepted from the preferred
device and + otherwise.

Finally some error messages where improved and DPRINTF's with slowed boot
to aid debugging.

ZFS will still be preferred over UFS when both are available on the boot
device.

Reviewed by: imp
MFC after: 1 week
Sponsored by: Multiplay
Differential Revision: https://reviews.freebsd.org/D5108


295210 03-Feb-2016 andrew

Still open the network interface when EFI_OPEN_PROTOCOL_EXCLUSIVE failed.
Not all UEFI implementations support this protocol.


295144 02-Feb-2016 andrew

Add suppor to loader.efi to load files off hte network. For this we need
to open the device in exclusive mode as, without this, the firmware may
also be reading packets off the interface leading to a race.

Reviewed by: emaste
Sponsored by: ABT Systems Ltd
Differential Revision: https://reviews.freebsd.org/D4132


295041 29-Jan-2016 br

Welcome the RISC-V 64-bit kernel.

This is the final step required allowing to compile and to run RISC-V
kernel and userland from HEAD.

RISC-V is a completely open ISA that is freely available to academia
and industry.

Thanks to all the people involved! Special thanks to Andrew Turner,
David Chisnall, Ed Maste, Konstantin Belousov, John Baldwin and
Arun Thomas for their help.
Thanks to Robert Watson for organizing this project.

This project sponsored by UK Higher Education Innovation Fund (HEIF5) and
DARPA CTSRD project at the University of Cambridge Computer Laboratory.

FreeBSD/RISC-V project home: https://wiki.freebsd.org/riscv

Reviewed by: andrew, emaste, kib
Relnotes: Yes
Sponsored by: DARPA, AFRL
Sponsored by: HEIF5
Differential Revision: https://reviews.freebsd.org/D4982


294926 27-Jan-2016 allanjude

ficl on i386 should cast to unsigned char output to support efi i386

make it possible for efi_console to recognize and translate box characters
on i386 build (unsigned versus signed char passed as int issue).

Submitted by: Toomas Soome <tsoome at me.com>
Reviewed by: emaste, smh, dteske
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D4993


294925 27-Jan-2016 imp

Fix mistake when transitioning to the new defines with ZFS loader. I
hate adding yet another define, but it is the lessor of the evil
choices available. Kill another evil by removing PATH_BOOT3 and
replacing it with PATH_LOADER or PATH_LOADER_ZFS as appropriate.

PR: 206659


294847 26-Jan-2016 imp

Remove static from these two. They slipped through the cracks.

MFC After: 1 week


294769 26-Jan-2016 imp

Allow new lines as white space for arguments that are parsed to allow
boot1 to pass in files with newlines in them. Now that the EFI loader
groks foo=bar on the command line, this can allow a more general setup
than traditional boot loader args will allow.

Differential Revision: https://reviews.freebsd.org/D5038


294768 26-Jan-2016 imp

Read in /boot/config and /boot.config, like all the other boot
loaders and pass it along to /boot/loader.efi.

Differential Revision: https://reviews.freebsd.org/D5038


294767 26-Jan-2016 imp

Parse the command line arguments, and do it before we initialize the
console so it can be changed by the command line arguments.

Differential Revision: https://reviews.freebsd.org/D5038


294766 26-Jan-2016 imp

RBX_ defines are in rbx.h, move it there.

Differential Revision: https://reviews.freebsd.org/D5038


294765 26-Jan-2016 imp

Move all the separate copies of the same strings into paths.h. There's
nothing machine specific about these.

Differential Revision: https://reviews.freebsd.org/D5038


294608 22-Jan-2016 emaste

Use MAN= to specify that no man page is provided

NO_MAN is deprecated.

Reviewed by: imp


294547 22-Jan-2016 wma

Provide busdma stubs for loader/kshim

Simple bus space stubs require the VA-PA mapping
to be identical.

Approved by: hselasky, cognet (mentor)
Differential revision: https://reviews.freebsd.org/D4314


294546 22-Jan-2016 wma

Fix compilation errors in usb/kshim

Remove old header from the include list and declare extern symbol
for delay() function.

Approved by: hselasky, cognet (mentor)
Differential revision: https://reviews.freebsd.org/D5012


294506 21-Jan-2016 smh

Prevent loader.conf load failure due to unknown console entries

When processing loader.conf if console contained an entry for an unsupported
console then cons_set would return an error refusing to set any console.

This has two side effects:

1. Forth would throw a syntax error and stop processing loader.conf at that
point.
2. The value of console is ignored.

#1 Means other important loader.conf entries may not be processed, which is
clearly undesirable.
#2 Means the users preference for console aren't applied even if they did
contain valid options. Now we have support for multi boot paths from a
single image e.g. bios and efi mode the console preference needs to deal
with the need to set preference for more than one source.

Fix this by:
* Returning CMD_OK where possible from cons_set.
* Allowing set with at least one valid console to proceed.

Reviewed by: allanjude
MFC after: 1 week
Sponsored by: Multiplay
Differential Revision: https://reviews.freebsd.org/D5018


294493 21-Jan-2016 smh

Fix EFI UFS caching

EFI was mixing caching in two separate places causing issues when multiple
partitions where tested.

Eliminate this by removing fsstat and re-factoring fsread into fsread_size,
adding basic parameter validation.

Also:
* Enhance some error print outs.
* Fix compilation under UFS1_ONLY and UFS2_ONLY
* Use sizeof on vars instead of structs.
* Add basic parameter validation to fsread_size.

MFC after: 1 week
X-MFC-With: r293268
Sponsored by: Multiplay
Differential Revision: https://reviews.freebsd.org/D4989


294451 20-Jan-2016 emaste

Increase BERI boot components section alignment to 16

The .text, .bss, and .data sections claimed 16-byte alignment, but were
only aligned to 8 by the linker script.

Discovered with elfcopy(1) from elftoolchain, which performs validation
absent from the binutils strip(1). ELF tool chain ticket #512.

Reported by: brooks
Reviewed by: brooks
Sponsored by: DARPA, AFRL


294432 20-Jan-2016 zbb

Change DTS entry of PCIe controller for Armada38x

Invalid (in FreeBSD) definition of PCI controller was
replaced with another one, working in FreeBSD environment.

PCI controller's entry had to move from its parent node
so as to be recognized properly by FBSD.

PCI was enabled in kernel configuration file.

Obtained from: Semihalf
Sponsored by: Stormshield
Submitted by: Bartosz Szczepanek <bsz@semihalf.com>
Differential revision: https://reviews.freebsd.org/D4379


294424 20-Jan-2016 zbb

Fix busy-detect when using DesignWare UART

uart_dev_ns8250 now relies on compatible property instead of additional
'busy-detect' cell. All drivers with compatible = "snps,dw-apb-uart" have
busy detection turned on. DTS files of devices affected by the change
were modified and 'busy-detect' property was removed.

Reviewed by: andrew, ian, imp
Obtained from: Semihalf
Sponsored by: Stormshield
Submitted by: Bartosz Szczepanek <bsz@semihalf.com>
Differential revision: https://reviews.freebsd.org/D4218


294420 20-Jan-2016 zbb

Add global mpcore timer node to Armada 38x DTS

Changes:
- global mpcore timer dts node added
- required by driver 'clock-frequency' property added

Reviewed by: ian
Obtained from: Semihalf
Sponsored by: Stormshield
Submitted by: Bartosz Szczepanek <bsz@semihalf.com>
Differential revision: https://reviews.freebsd.org/D4213


294418 20-Jan-2016 zbb

Correct ranges in Armada38x dts

Ranges property of 'soc' node used two-cell addresses which resulted in
casting errors as simplebus resource allocation works with 32-bit u_long
variables. FDT ranges were simplified.

Reviewed by: imp
Obtained from: Semihalf
Sponsored by: Stormshield
Submitted by: Michal Stanek <mst@semihalf.com>
Differential revision: https://reviews.freebsd.org/D4212


294416 20-Jan-2016 zbb

Introduce initial support for Marvell Armada38x

This commit introduces initial support for Marvell Armada38x platform.
Changes:
- Add common DTS files for Armada38x SoCs and DTS file for A388-GP
- Add ARMADA38X kernel configuration
- Add option SOC_MV_ARMADA38X and set MV_PCI_PORTS
- Add list of files to compile
- Implement get_tclk(), get_sar_value(), cpu_reset() functions
- Add CPU ID and SoC numbers
- Correct ifdefs in arm/mv/timer.c

Reviewed by: ian, imp
Obtained from: Semihalf
Sponsored by: Stormshield
Submitted by: Michal Stanek <mst@semihalf.com>
Differential revision: https://reviews.freebsd.org/D4210


294291 18-Jan-2016 andrew

Reset the filesystem cache before reading from a potentially new
filesystem. Without this we only read from the first UFS filesystem we
find, caching the result.

X-MFC with: The recent boot1.efi changes


294284 18-Jan-2016 emaste

boot1: correct typo in error message


294265 18-Jan-2016 smh

Fix EFI_DEBUG option

Fix broken DPRINTF and wire up EFI_DEBUG so -DEFI_DEBUG to make works.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


294073 15-Jan-2016 allanjude

Connect the ZFS boot environment menu to the UEFI loader

MFC after: 3 days
Sponsored by: ScaleEngine Inc.


294072 15-Jan-2016 allanjude

Move init_zfs_bootenv to sys/boot/zfs/zfs.c instead of having a copy in each loader

While here, add a filter to ignore special datasets

MFC after: 3 days
Sponsored by: ScaleEngine Inc.


294068 15-Jan-2016 smh

Add EFI ZFS boot support

This builds on the modular EFI loader support added r294060 adding a
module to provide ZFS boot support on EFI systems.

It should be noted that EFI uses a fixed size memory block for all
allocations performed by the loader so it may be necessary to tune this
size.

For example when building an image which uses mfs_root e.g. mfsbsd, adding
the following to /etc/make.conf would be needed to prevent EFI from running
out of memory when loading the mfs_root image.
EFI_STAGING_SIZE=128

Submitted by: Eric McCorkle
MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


294060 15-Jan-2016 smh

Modularise EFI boot loader

Make EFI boot loader modular in preparation for adding ZFS support.

This is a partial commit of the D4515.

Submitted by: Eric McCorkle
Reviewed by: emaste (in part)
MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay
Differential Revision: https://reviews.freebsd.org/D4515


294059 15-Jan-2016 smh

Ensure boot fsread correctly probes all partitions

The boot code fsread was caching the result of meta data request and
reusing it even for calls with inode = 0, which is used to partitions
trigger a probe.

The result was that success was incorrectly returned for all partition
probes after the first valid success, even for partitions which are not
UFS.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


294058 15-Jan-2016 smh

Make common boot file_loadraw name parameter const

Fix compiler warnings about dropping const qualifier by changing file_loadraw
name param to const, and updating method to make that the case (it was
abusing the variable).

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


294047 14-Jan-2016 jmallett

Make it possible to specify the path to userboot.so with the -b flag.

Reviewed by: neel


294041 14-Jan-2016 smh

Remove unused reg param from fdt_fixup_memory

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


294040 14-Jan-2016 smh

Prevent bogus compiler in ZFS boot code

Silence a bogus compiler warning about indexing past the end of dn_bonus.

The ZFS code ensures this is not possible but the compiler can't determine
this so added an additional check to prevent this warning.

Sponsored by: Multiplay


294029 14-Jan-2016 smh

Only build EFI components on supported compilers

As the in-tree GCC does not support __attribute__((ms_abi)) EFI can only
be built with Clang.

The EFI loader and boot1 validated this, but unused libefi was still built
causing issues under GCC after warnings where enabled by r293724.

Disable building all of EFI when the selected compiler is GCC.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


294028 14-Jan-2016 smh

Revert r293903

Revert r293903 as EFI shouldn't be built on this platform that the this
was reported on.

Sponsored by: Multiplay


293903 14-Jan-2016 smh

Fix GCC warnings causing build failure after r293724

Disable some compiler warnings for GCC (non-standard compiler) fixing
build failures introduced by r293724, which enabled WARNS in the EFI boot
code, when compiling with none standard compiler (GCC).

Raised by: ian
MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


293835 13-Jan-2016 smh

Improve non-interactive forth cmd error reporting

Non-interactive forth command errors where silent even for critical issues
e.g. failing to load a required kernel module or mfs_root.

This resulted in later unexplained and hard to trace errors such as mount
root failures.

This introduces additional command return codes that are treated
appropriately by the non-interactive command processor (bf_command).
* CMD_CRIT = print error
* CMD_FATAL = panic

Also fix minor style(9) issues with command_load return codes.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


293796 13-Jan-2016 smh

Fix typo in libefi.c

Fix a typo in libefl.c (removal or L) introduced by r293724

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


293792 13-Jan-2016 ian

Go back to using uintptr_t, because code that actually compiles is
infinitely less buggy than code that is theoretically correct in some
alternate universe.

The uintfptr_t type is apparently a freebsd invention, and exists only when
compiling the kernel. It's a little hard to say for sure, since it doesn't
seem to be documented anywhere except in email advice to unsuspecting and
overly-trusting souls, who then get to wear the pointy hat for blindly
following advice without investigating or testing it first.


293775 12-Jan-2016 ian

Cast using uintfptr_t and eliminate the cast to uint64_t which is uneeded
because rounding down cannot increase the number of bits needed to express
the result.

I had no idea there was such a thing as uintfptr_t.

Requested by: bde


293724 12-Jan-2016 smh

Enable warnings in EFI boot code

Set WARNS if not set for EFI boot code and fix the issues highlighted by
setting it.

Most components are set to WARNS level 6 with few being left at lower
levels due to the amount of changes needed to fix at higher levels.

Error types fixed:
* Missing / invalid casts
* Missing inner structs
* Unused vars
* Missing static for internal only funcs
* Missing prototypes
* Alignment changes
* Use of uninitialised vars
* Unknown pragma (intrinsic)
* Missing types etc due to missing includes
* printf formatting types

Reviewed by: emaste (in part)
MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay
Differential Revision: https://reviews.freebsd.org/D4839


293661 11-Jan-2016 allanjude

DIOCGSECTORSIZE expects to write to a u_int, but struct zfs_probe_args
member secsz was a uint16_t

sys/boot/zfs/zfs.c has a probe args structure member, secsz, that is a
uint16_t for media sector size; it is used as an argument for ioctl()
at line 484. however, this ioctl writes 32 bits of data (u_int *) and
therefore this ioctl will overwrite and corrupt 16 bits of memory.
other use cases seem to use correct u_int type for secsz.

PR: 204358
Submitted by: Toomas Soome <tsoome at me.com>
Reviewed by: asomers, delphij, smh
MFC after: 5 days
Differential Revision: https://reviews.freebsd.org/D4811


293612 09-Jan-2016 allanjude

Return call to init_zfs_bootenv to its previous location

When called to early, new_currdev->d_type was not yet set
zfs_fmtdev() would then return null

While here, guard call to init_zfs_bootenv with if d_type == DEVT_ZFS

Reported by: tsoome at me.com
MFC after: 3 days
Sponsored by: ScaleEngine Inc.


293461 09-Jan-2016 smh

Remove hidden "Not ufs" printfs from boot code

Remove the printf("Not ufs\n") from the boot code which was hidden by the
local printf implementations, allowing these to have that code removed too.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


293460 09-Jan-2016 smh

Switch EFT boot1 to use libstand

ARM and i386 already required libstand so switch to using it for all
patforms, allowing the removal of custom print and memory methods.

This is also a pre-cursor to enabling WARNS which highlighted a number
of issues with the removed methods.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


293454 09-Jan-2016 allanjude

Only call init_zfs_bootenv() when the system was booted with ZFS

Add a few other safeguards to ensure things do not break when the
boot device cannot be determined

Reported by: flo
MFC after: 3 days
Sponsored by: ScaleEngine Inc.


293451 09-Jan-2016 bdrewery

Update dependencies.

Sponsored by: EMC / Isilon Storage Division


293435 08-Jan-2016 emaste

Reduce libstand Makefile duplication

Userboot's copy of the libstand Makefile had more extensive changes
compared to the one in sys/boot/libstand32, but it turns out these are
not intentional and we can just include lib/libstand/Makefile as done
for libstand32 in r293040.

Reviewed by: imp, jhb
Tested by: allanjude
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D4793


293429 08-Jan-2016 emaste

Avoid unintended $FreeBSD$ expansion in generate-fat.sh


293425 08-Jan-2016 emaste

Add safety belt for boot1.efi file size

Reviewed by: smh
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D4833


293422 08-Jan-2016 smh

Update generated efi boot image templates

r279533 increased the boot1 size from 64k to 128k but didn't regenerate the
fat templates, hence the change was never activated.

With recent and upcoming changes the efi boot1 binary is now > 64k.

To avoid fat corruption in the created boot images regenerate the
templates to activate the boot1 size increase.

MFC after: 2 weeks
X-MFC-With: r293268


293414 08-Jan-2016 allanjude

Add support for ZFS Boot Environments to userboot (for bhyve and others)

While here, also fix a possible null pointer

Reported by: lattera
MFC after: 3 days
Sponsored by: ScaleEngine Inc.


293345 07-Jan-2016 bdrewery

DIRDEPS_BUILD: Update dependencies.

Sponsored by: EMC / Isilon Storage Division


293341 07-Jan-2016 bdrewery

Don't install /usr/include/stand.h twice after r293040.

Only install it from lib/libstand.

Sponsored by: EMC / Isilon Storage Division


293274 06-Jan-2016 smh

style(9) fixes for EFI boot

Fix some style(9) nits for EFI boot code, no functional changes.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


293269 06-Jan-2016 smh

Fix return from zfs_probe_dev

Ensure zfs_probe_dev returns the correct value.

Also fix a style(9) trailing whitespace issue while here.

MFC after: 2 weeks
X-MFC-With: r293268
Sponsored by: Multiplay


293268 06-Jan-2016 smh

Fix _MSC_EXTENSIONS checks

Use #ifdef instead of #if checks to prevent warnings generated by checks
to be enabled shortly.

MFC after: 2 weeks
Sponsored by: Multiplay


293245 06-Jan-2016 emaste

loader.efi style(9) cleanup

Submitted by: smh


293244 06-Jan-2016 emaste

Introduce and use new EFI_ERROR_CODE macro for EFI errors

Submitted by: smh
MFC after: 1 week


293234 06-Jan-2016 emaste

Enable the beastie menu for the UEFI console

As of r293233 the UEFI console includes basic terminal emulator support.

MFC after: 2 weeks
Relnotes: Yes


293233 06-Jan-2016 emaste

loader.efi: add terminal emulation support

This is based on the vidconsole implementation.

Submitted by: Toomas Soome <tsoome@me.com>
Reviewed by: adrian
MFC after: 2 weeks
Relnotes: Yes
Differential Revision: https://reviews.freebsd.org/D4797


293165 04-Jan-2016 emaste

loader.efi: support non-contiguous console modes

Submitted by: Toomas Soome <tsoome@me.com>
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D4760


293064 02-Jan-2016 ian

Cast pointer through uintptr_t on the way to uint64_t to squelch a warning.


293053 02-Jan-2016 ian

Use 64-bit math when finding a block of ram to hold the kernel. This fixes
a problem on 32-bit systems which have ram occupying the end of the physical
address space -- for example, a block of ram at 0x80000000 with a size of
0x80000000 was overflowing 32 bit math and ending up with a calculated size
of zero.

This is a fix for one of the two problems mentioned in the PR. Something
similar will need to be done on the kernel side before the PR is closed.

PR: 201614


293046 02-Jan-2016 ian

Revert accidental change that snuck into r293045.


293045 02-Jan-2016 ian

Make the 'env' directive described in config(5) work on all architectures,
providing compiled-in static environment data that is used instead of any
data passed in from a boot loader.

Previously 'env' worked only on i386 and arm xscale systems, because it
required the MD startup code to examine the global envmode variable and
decide whether to use static_env or an environment obtained from the boot
loader, and set the global kern_envp accordingly. Most startup code wasn't
doing so. Making things even more complex, some mips startup code uses an
alternate scheme that involves calling init_static_kenv() to pass an empty
buffer and its size, then uses a series of kern_setenv() calls to populate
that buffer.

Now all MD startup code calls init_static_kenv(), and that routine provides
a single point where envmode is checked and the decision is made whether to
use the compiled-in static_kenv or the values provided by the MD code.

The routine also continues to serve its original purpose for mips; if a
non-zero buffer size is passed the routine installs the empty buffer ready
to accept kern_setenv() values. Now if the size is zero, the provided buffer
full of existing env data is installed. A NULL pointer can be passed if the
boot loader provides no env data; this allows the static env to be installed
if envmode is set to do so.

Most of the work here is a near-mechanical change to call the init function
instead of directly setting kern_envp. A notable exception is in xen/pv.c;
that code was originally installing a buffer full of preformatted env data
along with its non-zero size (like mips code does), which would have allowed
kern_setenv() calls to wipe out the preformatted data. Now it passes a zero
for the size so that the buffer of data it installs is treated as
non-writeable.


293040 01-Jan-2016 emaste

Reduce libstand Makefile duplication

libstand is built in three places (lib/libstand, sys/boot/libstand32,
and sys/boot/userboot/libstand). Reduce Makefile duplication by
.including libstand/Makefile from sys/boot/libstand32/Makefile.

sys/boot/userboot/libstand/Makefile will be addressed later, as it
contains additional differences yet to be handled.

This change also switches libstand32 to use the new uuid_from_string
and uuid_to_string, which was not included in r292473.

Reviewed by: jhb
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D4747


293001 31-Dec-2015 allanjude

Introduce the ZFS Boot Environments menu to the loader menu

If the system was booted with ZFS, a new menu item (#7) appears
It contains an autogenerated list of ZFS Boot Environments

This allows the user to switch to an alternate root file system
Use Cases:
- Revert a failed upgrade
- Concurrently run different versions of FreeBSD with common home directory
- Easier integration with the sysadmin/beadm utility

Requested by: many
Reviewed by: dteske
MFC after: 10 days
Relnotes: yes
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D3167


293000 31-Dec-2015 dteske

Remove supposition comment that code would better live elsewhere.
Thinking this through, and looking at process_assignment, I believe
moving the code would be wrong considering that set_conf_files is
called in one condition while set_nextboot_conf is guarded by a
different condition of having nextboot_enable="YES". So these must
stay separated and not combined.

MFC after: 1 week


292999 31-Dec-2015 dteske

Fix a memory leak. nextboot_conf_file is not volatile, as far as I
can tell, and thus the strdup is entirely unnecessary.

Thanks to: Toomas Soome (tsoome at-me dot-com)
MFC after: 1 week


292996 31-Dec-2015 dteske

Remove debugging messages. NB: SVN r187143 reads:
comment out some debugging messages that slipped in by mistake
(removing them 7 years after they have been commented out)

MFC after: 1 week


292899 30-Dec-2015 dteske

Fix stack leak introduced by SVN r97201 (nextboot_conf support).
Fix erroneous error path in error messages when processing boot_conf.
Fixup stack comments for functions introduced by SVN r97201.
Remove a questioning stack comment introduced by SVN r186789.
NB: Comment removed because strdup usage here is correct/not a leak.

MFC after: 1 week


292888 29-Dec-2015 ian

Fix the error checking for the ubenv command. This moves the check for an
empty ldvar (which amounts to the varname string starting with '=') into
the if block that manipulates ldvar, which avoids later referencing ldvar
when it was never initialized.

Submitted by: Thomas Skibo
Pointy hat: ian


292682 24-Dec-2015 jhb

Fix remaining direct tests of the carry flag in the v86 %eflags via a
magic number to use V86_CY() instead. These should have been fixed as
part of the cleanup in r226746 but were missed.

The md5 sums of the object files were unchanged, so there should be no
functional change.

PR: 205424
Submitted by: Alexander Kuleshov <kuleshovmail@gmail.com>
MFC after: 1 week


292625 22-Dec-2015 emaste

Revert accidental whitespace changes included with r292623


292623 22-Dec-2015 emaste

Support a.out format in nlist only on i386

i386 is the only current FreeBSD architecture that ever used a.out
format.

Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D4687


292584 22-Dec-2015 ian

Set env vars from values on the efi loader command line.

Examine each cmdline arg and if it contains an '=' convert it to ascii and
pass it to putenv(). This allows var=value settings to come in on the
command line.

This will allow overriding dhcp server-provided data in loader(8), as
discussed in PR 202098

PR: 202098
Differential Revision: https://reviews.freebsd.org/D4561


292576 21-Dec-2015 emaste

boot1.efi: show EFI error number, not full status value

EFI return values set the high bit to indicate an error. The log
messages changed here are printed only in the case of an error,
so including the error bit is redundant. Also switch to decimal to
match the error definitions (in sys/boot/efi/include/efierr.h).

MFC after: 1 week
Sponsored by: The FreeBSD Foundation


292563 21-Dec-2015 emaste

loader.efi: strip trailing whitespace

Sponsored by: The FreeBSD Foundation


292527 21-Dec-2015 ian

Add strlcat() and strlcpy() to libstand32. This should have been part of
r292234, but I forgot there was a libstand32.

Submitted by: martymac
Pointy hat: ian


292515 20-Dec-2015 emaste

loader.efi: refresh size in GetMemoryMap retry loop

If ExitBootServices fails due to a changed efi_mapkey then GetMemoryMap
must be called again. In this case it is also possible for the memory
map to grow, so repeat the initial GetMemoryMap call to fetch the new
size.

Also roll bi_add_efi_data_and_exit into bi_load_efi_data as there's no
need for it to be a separate function.

PR: 202455
Reported by: Berislav Purgar <bpurgar@gmail.com>
Tested by: Berislav Purgar <bpurgar@gmail.com>
Reviewed by: kib
MFC after: 1 week
MFC with: r292338
Relnotes: Yes
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D4621


292486 20-Dec-2015 ngie

Add missing smbios.h #include to mute a -Wimplicit-function-declaration warning
after r279222

Reported by: Jenkins
Sponsored by: EMC / Isilon Storage Division


292471 19-Dec-2015 imp

Pass the UEFI system table into the kernel from the boot loader via
the FW_HANDLE metadata item. The kernel can get the rest of what it
needs from this.


292442 18-Dec-2015 emaste

loader.efi: show EFI error number, not full status value

EFI return values set the high bit to indicate an error. The log
messages changed here are printed only in the case of an error,
so including the error bit is redundant. Also switch to decimal to
match the error definitions (in sys/boot/efi/include/efierr.h).

MFC after: 1 week
Sponsored by: The FreeBSD Foundation


292345 16-Dec-2015 bapt

Use human readable representation of ip for the pxeboot.ip kenv
While here use colon as a separator for pxeboot.hwaddr kenv

Sponsored by: Gandi.net


292344 16-Dec-2015 bapt

pxeboot: make the tftp loader use the option root-path directive

pxeboot in tftp loader mode (when built with LOADER_TFTP_SUPPORT) now
prefix all the path to open with the path obtained via the option 'root-path'
directive.

This allows to be able to use the traditional content /boot out of box. Meaning
it now works pretty much like all other loaders. It simplifies hosting hosting
multiple version of FreeBSD on a tftp server.

As a consequence, pxeboot does not look anymore for a pxeboot.4th (which was
never provided)

Note: that pxeboot in tftp loader mode is not built by default.

Reviewed by: rpokala
Relnotes: yes
Sponsored by: Gandi.net
Differential Revision: https://reviews.freebsd.org/D4590


292338 16-Dec-2015 emaste

UEFI: combine GetMemoryMap and ExitBootServices and retry on error

The EFI memory map may change before or during the first
ExitBootServices call. In that case ExitBootServices returns an error,
and GetMemoryMap and ExitBootServices must be retried.

Glue together calls to GetMemoryMap(), ExitBootServices() and storage of
(now up-to-date) MODINFOMD_EFI_MAP metadata within a single function.

That new function - bi_add_efi_data_and_exit() - uses space previously
allocated in bi_load_efi_data() to store the memory map (it will fail if
that space is too short). It handles re-calling GetMemoryMap() once to
update the map key if necessary. Finally, if ExitBootServices() is
successful, it stores the memory map and its header as MODINFOMD_EFI_MAP
metadata.

ExitBootServices() calls are now done earlier, from within arch-
independent bi_load() code.

PR: 202455
Submitted by: Ganael LAPLANCHE
Reviewed by: kib
MFC after: 2 weeks
Relnotes: Yes
Differential Revision: https://reviews.freebsd.org/D4296


292227 14-Dec-2015 ian

Enhance the "ubenv import" command to allow importing a u-boot env var
directly into a loader (and thus kernel) env var, using the syntax

ubenv import ldvarname=ubvarname

Without the varname= prefix it uses the historical behavior of importing
to the name uboot.ubvarname.


292057 10-Dec-2015 ae

Make detection of GPT a bit more reliable.

When we are detecting a partition table and didn't find PMBR, try to
read backup GPT header from the last sector and if it is correct,
assume that we have GPT.

Reviewed by: rpokala
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D4282


291972 08-Dec-2015 bdrewery

DIRDEPS_BUILD: Update dependencies.

Sponsored by: EMC / Isilon Storage Division


291876 06-Dec-2015 ngie

Remove stray unescaped `%` in `Booting from ...` informational message

PR: 204944
MFC after: 1 week
X-MFC with: r291164
Reported by: David Binderman <dcb314@hotmail.com>
Sponsored by: EMC / Isilon Storage Division


291683 03-Dec-2015 ganbold

Add glue driver for Amlogic Meson Gigabit Ethernet Controller
and enable it for Odroid C1 board.
Together with r291676 change, dwc(4) can receive packets now.


291667 03-Dec-2015 nwhitehorn

Clean up PowerPC bootloader compiler flags to fix the build with GCC 5.2
and binutils 2.25.


291598 01-Dec-2015 nwhitehorn

Allow loader to load 64-bit ELFv2 PowerPC kernels.


291563 01-Dec-2015 bdrewery

META MODE: Update dependencies with 'the-lot' and add missing directories.

This is not properly respecting WITHOUT or ARCH dependencies in target/.
Doing so requires a massive effort to rework targets/ to do so. A
better approach will be to either include the SUBDIR Makefiles directly
and map to DIRDEPS or just dynamically lookup the SUBDIR. These lose
the benefit of having a userland/lib, userland/libexec, etc, though and
results in a massive package. The current implementation of targets/ is
very unmaintainable.

Currently rescue/rescue and sys/modules are still not connected.

Sponsored by: EMC / Isilon Storage Division


291405 27-Nov-2015 zbb

Add support for exynos5_ehci in loader

Create new driver which initializes Arndale PHY and calls ehci_init

Reviewed by: hselasky
Submitted by: Wojciech Macek <wma@semihalf.com>
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4192


291404 27-Nov-2015 zbb

Increase malloc area in loader/usb

Previous value was not enough on Arndale platform.

Reviewed by: hselasky
Submitted by: Wojciech Macek <wma@semihalf.com>
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4145


291403 27-Nov-2015 zbb

Run callouts during infinite waiting inside cv_wait

During cv_wait we may be waiting for an event triggered by callout.
Run callbacks here to avoid code blocking.

Reviewed by: hselasky
Submitted by: Wojciech Macek <wma@semihalf.com>
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4144


291402 27-Nov-2015 zbb

Implement simple ops for umass_disk

The initial IOCTL implementation supports reading disk physical
geometry.
Two additional functions were added. They allow reading/writing raw
data to the disk (default partition).

Submitted by: Wojciech Macek <wma@semihalf.com>
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4143


291401 27-Nov-2015 zbb

Do not zero memory in umass_detach

The detach function is called very often, for example from
get_capacity function. We don't want to loose any pointers
here, so disable detaching for umass driver.

Submitted by: Wojciech Macek <wma@semihalf.com>
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4141


291400 27-Nov-2015 zbb

Implement missing bus_space_subregion in kshim

Add missing function, used by exynos5_ehci driver.

Reviewed by: hselasky
Submitted by: Wojciech Macek <wma@semihalf.com>
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4141


291399 27-Nov-2015 zbb

Use properly aligned buffer in usb_alloc

The PA adress must be gathered from an aligned VA,
not the RAW pointer to the memory space.

Reviewed by: hselasky
Submitted by: Wojciech Macek <wma@semihalf.com>
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4140


291320 25-Nov-2015 bdrewery

META MODE: Don't create .meta files when symlinking sources into the obj directory.

Tracking these leads to situations where meta mode will consider the
file to be out of date if /bin/sh or /bin/ln are newer than the source
file. There's no reason for meta mode to do this as make is already
handling the rebuild dependency fine.

Sponsored by: EMC / Isilon Storage Division


291164 22-Nov-2015 ian

Print more detailed info about the disk and partition chosen for booting.
No behavioral changes, just cosmetics.

A partition number of zero is not a wildcard, it's the 'a' partition in
a BSD slice, so don't print it as "<auto>". (Only slices are 1-based,
unit and partition numbers are 0-based and -1 is their wildcard marker.)

Also, after doing all the probing and choosing, print the final result as
"Booting from <disk spec>" where disk spec has all the wildcards resolved
and looks like familiar BSD slice-and-partition notation (disk0s3a, etc).


291113 20-Nov-2015 emaste

Disconnect unused kgzldr from sys/boot/i386

Sponsored by: The FreeBSD Foundation


291106 20-Nov-2015 bdrewery

Remove disconnected boot0ext.

This was [re-]added in r127458 (apparently with disconnected history as well)
and never connected to the build.

It is no longer relevant for modern systems from the past 20 years.

Discussed with: jhb
Sponsored by: EMC / Isilon Storage Division


291048 19-Nov-2015 nwhitehorn

The Linux kexec boot loader doesn't need a font built in to it. This got
copied-and-pasted from the PS3 loader.


291012 18-Nov-2015 smh

Document loader(8) dumpdev option

Add an entry for dumpdev environment variable to loader(8).

MFC after: 1 week
Sponsored by: Multiplay


290769 13-Nov-2015 imp

Add support for the Zybo and similar boards to ZEDBOARD kernel.
Zybo needs its own DTB and has a different PHY, so add it to
the base kernel. Details on building bootable SD images at
http://www.thomasskibo.com/zedbsd/

Submitted By: Thomas Skibo


290494 07-Nov-2015 bapt

Improve collation string and locales support

Merge collation support from Illumos and DragonflyBSD.

Locales are now generated with the new localedef(1) tool from CLDR POSIX files.
The generated files are now identified as "BSD 1.0" format.

The libc now only read "BSD 1.0" locales definitions, all other version will be
set to "C"
The localedef(1) tool has been imported from Illumos and modified to use tree(3)
instead of the CDDL avl(3)
A set of tool created by edwin@ and extended by marino@ for dragonfly has been
added to be able to generate locales and the Makefiles from the vanilla CLDR
unicode databases + a universal UTF-8 charmap (by marino@)
Update the locales to unicode v27
Given our regex(3) does not support multibyte (yet) it has been forced to always
use locale C
Remove now unused colldef(1) and mklocale(1)
Finish implementing the numeric BSD extension for ctypes
The number of supported locales has grown from 175 to 250 locales. Among the new
locales: 6 Arabic locales (AE EG JO MA QA SA), Different variations of spanish
locales.
Added new 3 components locales for mn_Cyrl_MN, sr_Cyrl_RS sr_Latn_RS,
zh_Hans_CN, zh_Hant_HK and zh_Hant_TW. Some aliases has been for 2 components
version when possible.

Thanks: Garrett D'Amore (Illumos) who made sure all his work was done under
BSD license!, Edwin Groothuis (edwin@) for the work he made on tools to be able
to generate locales definition usable in freebsd sources out of vanilla CLDR
definitions, John Marino (DragonflyBSD) who first merge the Illumos work into
Dragonfly and spent hours tracking down bugs.


290321 03-Nov-2015 gonzo

Raspberry Pi firmware passes cache line size as a DTB parameter

- Add cache-line-size paramter to vchiq node
- Add cache_line_size DTB parameter referencing to
.../vchiq/cache-line-size property


290102 28-Oct-2015 bapt

Merge mpsutil(8) branch

mpsutil(8)/mprutil(8) are new utilities for managing LSI Fusion-MPT
2/3 controllers (mps(4) and mpr(4))

For now only informational commands have been implemented.

This utility has been written by scottl@ [1] and polished by myself[2]

Submitted by: scottl
Discussed with: scottl
Relnotes: yes
Sponsored by: Netflix [1]
Sponsored by: Gandi.net [2]


289896 24-Oct-2015 ngie

Make vers.c creation atomic by using a temporary file, then moving
the temporary file to vers.c at the end of the script

The previous logic wrote out to vers.c multiple times, so the file
could be incorrectly interpreted as being completely written out
after one of the echo calls with recursive make, when in reality it
was only partially written.

Also, in the event the build was interrupted when creating vers.c
(small race window), it would have a leftover file that needed to
be cleaned up before resuming the build.

MFC after: 3 weeks
Sponsored by: EMC / Isilon Storage Division


289031 08-Oct-2015 cperciva

Change gptldr from relocating 0xfff1 bytes of boot2 to relocating 0x20000
bytes of boot2. Since we're in 16-bit mode, we can't copy all 128kB at
once; instead we loop four times and copy 32 kB each time.

This change was made necessary by an upcoming increase in the size of the
boot2 binary; should it increase further, the COPY_BLKS value can be
adjusted without anyone needing to remember 8086 assembly language again.

Requested by: allanjude
Tested by: allanjude
MFC after: 1 week


288943 06-Oct-2015 dim

Upgrade our copies of clang, llvm, lldb, compiler-rt and libc++ to 3.7.0
release.

Please note that from 3.5.0 onwards, clang, llvm and lldb require C++11
support to build; see UPDATING for more information.

Release notes for llvm and clang can be found here:
<http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html>
<http://llvm.org/releases/3.7.0/tools/clang/docs/ReleaseNotes.html>

Thanks to Ed Maste, Andrew Turner and Antoine Brodin for their help.

Exp-run: antoine
Relnotes: yes


288372 29-Sep-2015 jhb

Use EFI page size constants instead of hardcoding 4096.

Reviewed by: emaste
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D3692


288311 27-Sep-2015 loos

Set the #address-cells and #size-cells for the I2C controllers in RPi2.

This allows the use of I2C addresses in 'reg' property.


288228 25-Sep-2015 bdrewery

META_MODE: Remove DEP_MACHINE from Makefile.depend files.

This has not been needed since r246865 in projects/bmake.

Sponsored by: EMC / Isilon Storage Division


288226 25-Sep-2015 bdrewery

META_MODE: Remove DEP_RELDIR from Makefile.depend files.

This has not been needed since r284171 in projects/bmake.

Sponsored by: EMC / Isilon Storage Division


288056 21-Sep-2015 loos

Enable if_dwc for Allwinner A20 based boards.

This enables the gigabit ethernet on cubieboard2 and banana pi.

A special thanks to Netgate who gently provided me with a banana pi almost
a year ago.


287934 17-Sep-2015 jhb

The EFI boot loader allocates a single chunk of contiguous memory to
hold the kernel, modules, and any other loaded data. This memory block
is relocated to the kernel's expected location during the transfer of
control from the loader to the kernel.

The GENERIC kernel on amd64 has recently grown such that a kernel + zfs.ko
no longer fits in the default staging size. Bump the default size from
32MB to 48MB to provide more breathing room.

PR: 201679
Reviewed by: imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D3666


287930 17-Sep-2015 jhb

Various small cleanups to EFI loader Makefiles.

Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D3641


287773 14-Sep-2015 hselasky

Add missing file to build.


287538 07-Sep-2015 marcel

As expected, things aren't as simple as hoped. Consequently, we have
no option but to use the smbios information to fill in the blanks.
It's a good thing UGA is a protocol of the past and GOP has all the
info we need.

Anyway, the logic has been tweaked a little to get the easier bits
of information up front. This includes the resolution and the frame
buffer address. Then we look at the smbios information and define
expected values as well as the missing bits (frame buffer offset and
stride). If the values obtained match the expect values, we fill in
the blanks and return. Otherwise we use the existing detection logic
to figure it out.

Rename the environment variables from uga_framebuffer abd uga_stride
to hw.efifb.address and hw.efifb.stride. The latter names are more
in line with other variable names.

We currently have hardcoded settings for:
1. Mid-2007 iMac (iMac7,1)
2. Late-2007 MacBook (MacBook3,1)


287489 05-Sep-2015 marcel

Auto-detect the UGA frame buffer and stride on a MacBook. We're
striking a delicate balance between exhaustive searching and
banking on assumptions. The environment variables can be used
as a fall-back anyway. With this change, all known and tested
Macs with only UGA should have a working console out of the
box... for now...


287475 05-Sep-2015 marcel

My MacBook has UGA only, but we fail to detect any changes
in the frame buffer when we flip pixels. Allow the detection
to be bypassed by setting the uga_framebuffer and uga_stride
variables. The kernel console works fine even when we can't
detect pixel changes in the frame buffer, which indicates
that the problem could be with reading from the frame buffer
and not writing to it.


287422 03-Sep-2015 marcel

For UGA, the frame buffer address obtained by scanning the
PCI BARs does not necessarily correspond to the upper-left
most pixel. Scan the frame buffer for which byte changed
when changing the pixel at (0,0).

Use the same technique to determine the stride. Except for
changing the pixel at (0,0), we change the pixel at (0,1).

PR: 202730
Tested by: hartzell (at) alerce.com


287419 03-Sep-2015 gonzo

Enable both i2c1 and i2c2. These devices are disabled in TI's DTS
so they were disabled during DTS transition. Though there are
no standard devices/drivers on them people might use iic(4) userland
interface to access these buses.


287365 01-Sep-2015 andrew

Install the forth bits on arm64. For now limit it to just arm64 as on x86
these should have been installed as part of the regular loader.


287317 31-Aug-2015 marcel

Add support for the UGA draw protocol. This includes adding a
command called 'uga' to show whether UGA is implemented by the
firmware and what the settings are. It also includes filling
the efi_fb structure from the UGA information when GOP isn't
implemented by the firmware.

Since UGA does not provide information about the stride, we
set the stride to the horizontal resolution. This is likely
not correct and we should determine the stride by trial and
error. For now, this should show something on the console
rather than nothing.

Refactor this file to maximize code reuse.

PR: 202730


287316 30-Aug-2015 loos

Add the LED definitions from vendor's DTS.

Add gpioled support to A20 kernel.

While here rename the gpio phandle to match the one used in the vendor's
DTS.


287307 30-Aug-2015 loos

Reduce the difference to vendor DTS by using the vendor compat strings (at
some point we have to use the complete vendor DTS files, but we're not
there yet).


287299 30-Aug-2015 marcel

Add a gop command to help diagnose VT efifb problems. The gop
command has the following sub-commands:
list - list all possible modes (paged)
get - return the current mode
set <mode> - set the current mode to <mode>


287257 28-Aug-2015 imp

Add back missing -m32 for amd64 and powerpc64 that was lost
in the move to bsd.stand.mk.


287227 27-Aug-2015 imp

Use CFLAGS_NO_SIMD in preference to varying lists of -mno-xxxx flags.
Go ahead and defined -D_STANDALONE for all targets (only strictly
needed for some architecture, but harmless on those it isn't required
for). Also add -msoft-float to all architectures uniformly rather
that higgley piggley like it is today.

Differential Revision: https://reviews.freebsd.org/D3496


286967 20-Aug-2015 imp

The flags -mno-aes -mno-avx only exist for clang, not gcc, so
add them only to the clang CFLAGS.


286815 15-Aug-2015 gonzo

Make dtb file configurable via loader(8) variable. ubldr already checks
"fdt_file" and "fdtfile" U-Boot variables. Add one more check for
"fdt_file" loader(8) variable.

loader(8) variable takes precedence over u-boot env one


286773 14-Aug-2015 hselasky

Improve the realtime properties of USB transfers for embedded systems
like RPI-B and RPI-2.

Description of problem:
USB transfers can process data in their callbacks sometimes causing
unacceptable latency for other USB transfers. Separate BULK completion
callbacks from CONTROL, INTERRUPT and ISOCHRONOUS callbacks, and give
BULK completion callbacks lesser execution priority than the
others. This way USB audio won't be interfered by heavy USB ethernet
usage for example.

Further serve USB transfer completion in a round robin fashion,
instead of only serving the most CPU hungry. This has been done by
adding a third flag to USB transfer queue structure which keeps track
of looping callbacks. The "command" callback function then decides
what to do when looping.

MFC after: 2 weeks


286368 06-Aug-2015 allanjude

Remove guards around overwriting loader.rc and menu.rc

There have been .local version of each for user modifications for some time
This allows users to receive future updates to these files

PR: 183765
Submitted by: Bertram Scharpf, Nikolai Lifanov (patch)
Reviewed by: dteske, loos, eadler
Approved by: bapt (mentor)
MFC after: 1 month
Relnotes: yes
Sponsored by: ScaleEngine Inc.
Differential Revision: https://reviews.freebsd.org/D3176


286234 03-Aug-2015 trasz

Fix a problem which made loader(8) load non-kld files twice.

For example, without this patch, the following three lines
in /boot/loader.conf would result in /boot/root.img being preloaded
twice, and two md(4) devices - md0 and md1 - being created.

initmd_load="YES"
initmd_type="md_image"
initmd_name="/boot/root.img"

Reviewed by: marcel@
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3204


286111 31-Jul-2015 ed

Document the existence of cloudabi_load and cloudabi64_load.


285882 25-Jul-2015 trasz

Use consistent spacing.

MFC after: 1 month
Sponsored by: The FreeBSD Foundation


285881 25-Jul-2015 trasz

Add md_root example to defaults/loader.conf.

Note that this doesn't quite work yet - the preloaded image
gets loaded twice for some reason.

MFC after: 1 month
Sponsored by: The FreeBSD Foundation


285875 25-Jul-2015 trasz

Use double newlines consistently.

MFC after: 1 month
Sponsored by: The FreeBSD Foundation


285870 25-Jul-2015 trasz

Document md_root in loader(8). The md(4) manual page mentions it,
but it's hard to find and easy to miss.

Reviewed by: wblock@
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3183


285683 18-Jul-2015 jmg

move the prototype to the lib.h header.. This makes more sense, and
it's an API between boot2.c and arm_init.S which calls it..


285682 18-Jul-2015 jmg

other fixes to make boot2 compile for IXP... Properly end the asm
sections, and for some reason, main needs a prototype... If someone
has a better fix, I'm all ears...

Pointed out by: Berislav Purgar


285681 18-Jul-2015 jmg

revert r278579, this is in a different compile environment than the
kernel, and needs to be named cpu_id...

Pointed out by: Berislav Purgar


285250 07-Jul-2015 loos

Add the Banana Pi DTS.

The Banana Pi support is in progress and this is intended to help the early
adopters.


285246 07-Jul-2015 emaste

Avoid creating invalid UEFI device path

The UEFI loader on the 10.1 release install disk (disc1) modifies an
existing EFI_DEVICE_PATH_PROTOCOL instance in an apparent attempt to
truncate the device path. In doing so it creates an invalid device
path.

Perform the equivalent action without modification of structures
allocated by firmware.

PR: 197641
MFC After: 1 week
Submitted by: Chris Ruffin <chris.ruffin@intel.com>


285245 07-Jul-2015 loos

Add the GMAC entries to sun7i (A20) DTS.

While here make EMAC disabled unless explicitly enabled.


285138 04-Jul-2015 loos

Install loader.rc with ARM u-boot loader (ubldr).

loader.rc is the responsible to read and process loader.conf variables.

This fix the issue of loader.conf being silently ignored.

MFC after: 3 days


285095 03-Jul-2015 br

o Add a description for virtio block device implemented
in PISM (Bluespec C-interface device)
o Add a kernel config

Sponsored by: HEIF5


285090 03-Jul-2015 loos

Add AHCI attachment code for Allwinner A10/A20 SoCs.

The Allwinner SoC has an AHCI device on its internal main bus rather
than the PCI bus. This SoC is somewhat underdocumented, and its SATA
controller is no exception. The methods to support this chip were
harvested from the Linux Allwinner SDK, and then constants invented to
describe what's going on based on low-level constants contained in the
SATA standard and guess work.

This SoC requires a specific AHCI channel setup in order to start the
operations on the channel properly.

Clock setup and AHCI channel setup idea came from NetBSD.

Tested on Cubieboard 2 and Banana pi (and attachment on Cubieboard by
Pratik Singhal).

Differential Revision: https://reviews.freebsd.org/D737
Submitted by: imp
Reviewed by: imp, ganbold, mav, andrew


284960 30-Jun-2015 markm

Updated random(4) boot/shutdown scripting.
Fix the man pages as well.

Differential Revision: https://reviews.freebsd.org/D2924
Approved by: so (delphij)


284885 27-Jun-2015 nyan

MFi386: r284878

Reduce warnings:

- Add prototype for boot2 main()
- Don't make assignment within if statement, split it into two.


284878 26-Jun-2015 delphij

Reduce warnings:

- Add prototype for boot2 main()
- Don't make assignment within if statement, split it into two.

No functional or binary change -- verified with sha256(1).

MFC after: 2 weeks


284672 21-Jun-2015 antoine

Install version.4th.8 again
It was disconnected from installation in r281081, but was never removed
from the tree or added to ObsoleteFiles.inc


284614 19-Jun-2015 sobomax

Provide bug4bug workaround for certain dumbiness of the u-boot's API_env_enum
function, which is expected to set returned env to NULL upon reaching the end
of the environment list but fails to do so in certain cases. The respective
u-boot code looks like the following (HEAD at the time of this commit):

--- api.c ---
496 static int API_env_enum(va_list ap)
...
510 *next = last;
511
512 for (i = 0; env_get_char(i) != '\0'; i = n + 1) {
513 for (n = i; env_get_char(n) != '\0'; ++n) {
514 if (n >= CONFIG_ENV_SIZE) {
515 /* XXX shouldn't we set *next = NULL?? */
516 return 0;
517 }
518 }
-------------

The net result is that any unfortunate user of the loader's ub_env_enum()
function hitting this condition would be trapped in the infinite loop, as
the main use pattern of ub_env_enum() is basically the following:

while ((env = ub_env_enum(env)) != NULL) { DO STUFF }

Which would stuck forever with the last element.


284599 19-Jun-2015 sobomax

Fix bug in the ubldr introduced in the rev.283035. The new code
fails to properly consider memory regions when the loader is
located below of those regions or engulfs their lower limit. This
results in "not enough RAM to load kernel" panic, which is totally
bogus. On top of that, there are some variables that can be left
unitialized in those cases, which might cause it fail with memory
access violation instead of panic while trying to load kernel to
a wrong or non-existing address of memory.

Augment the code to properly deal with the loader being below or
at the lower bound of the memory region in question. Also, don't
leave ununitialized variables behind.

Reviewed by: ian


284597 19-Jun-2015 bapt

Fix fallouts from r284590

Reported by: kib


284590 19-Jun-2015 bapt

Install loader(8) and zfsloader(8) only once

Differential Revision: https://reviews.freebsd.org/D2841
Reviewed by: imp


284534 18-Jun-2015 gonzo

Add HDMI support to Beaglebone Black:

- Add driver for TDA19988 HDMI framer
- Add simple interface to communicate with HDMI sink: read EDID and set videomode
- Add event-based API to notify LCD controller when HDMI sink is available
- Add HDMI framer node and add refernce to it to lcdc node. This part of
DTS tree is custom and does not match Linux DTS because Linux uses
combination of pseudo-node in DTS and hardcoded driver information
that does not map to our model.


284345 13-Jun-2015 sjg

Add META_MODE support.

Off by default, build behaves normally.
WITH_META_MODE we get auto objdir creation, the ability to
start build from anywhere in the tree.

Still need to add real targets under targets/ to build packages.

Differential Revision: D2796
Reviewed by: brooks imp


284266 11-Jun-2015 andrew

Pass the ACPI table pointer to the arm64 kernel from loader.efi.

Sponsored by: The FreeBSD Foundation


284142 08-Jun-2015 araujo

Revert my previoius commit as it explicit pollute the ficl on other
architectures. It will be reworked by GSoC students.

Requested by: ngie, bms and pfg.


284116 07-Jun-2015 araujo

Include header libi386.h to silence the clang warning of implicit declaration
of functions biospci_*.

Differential Revision: D2668
Reviewed by: rodrigc


284032 05-Jun-2015 avg

dnode_read: fixup r284025, BP_IS_HOLE macro expects a pointer

PR: 199804
Reported by: sbruno
Pointyhat to: avg
MFC after: 10 days
X-MFC with: r284025


284025 05-Jun-2015 avg

dnode_read: handle hole blocks in zfs boot code

A hole block pointer can be encountered at any level and the hole
can cover multiple data blocks, but we are reading the data blocks
one by one, so we care only about the current one.

PR: 199804
Reported by: Toomas Soome <tsoome@me.com>
Submitted by: Toomas Soome <tsoome@me.com> (earlier version)
Tested by: Toomas Soome <tsoome@me.com>
MFC after: 11 days


283939 03-Jun-2015 avg

userboot: enable bzipfs support

Additionally, sort all real filesystems before the virtual ones.

Differential Revision: https://reviews.freebsd.org/D2709
Reviewed by: grehan
MFC after: 5 days


283933 02-Jun-2015 dteske

Add comments to indicate where the flag for later abort" originates.

MFC after: 3 days
X-MFC-to: stable/10


283794 30-May-2015 loos

Remove the broken-txfifo setting for Allwinnner SoCs.

This fixes the eventual missing characters when you type too fast or paste
some text on console.


283579 26-May-2015 gonzo

Print error message if autoload fails due to missing DTB blob, otherwise
ubldr just falls back to loader prompt with no apparent reason


283361 24-May-2015 ganbold

Add kernel config and dts files for an aml8726-m3
based device.
Following u-boot commands allow FreeBSD boot on
Yiyate Android TV Box (aml8726-m3):

tv open 480p
mmc rescan 0
fatload mmc 0 0x80100000 kernel.bin
go 0x80100000

The current FreeBSD driver doesn't program the video
clocks so the u-boot tv command is necessary in order
for the frame buffer to be useful (otherwise it can
be skipped).

The SD card for the Yiyate Android TV Box doesn't need
anything special beyond creating a FAT16 and a UFS
filesystem.

Differential Revision: https://reviews.freebsd.org/D2636
Submitted by: John Wehle


283352 24-May-2015 ganbold

Enable leds for VSATV102 in dts.

Differential Revision: https://reviews.freebsd.org/D2614
Submitted by: John Wehle


283276 22-May-2015 gonzo

Switch TI platform support code from using FreeBSD's custom-baked DTS
files to vendor-provided ones. It should make easier to adopt platform
code to new revisions of hardware and to use DTS overlays for various
Beaglebone extensions (shields/capes).

Original dts filenames were not changed, they're now wrappers over dts
files provided by TI. So make sure you update .dtb files on your
devices as part of kernel update

GPIO addressing was changed: instead of one global /dev/gpioc0 there
are per-bank instances of /dev/gpiocX. Each bank has 32 pins so for
instance pin 121 on /dev/gpioc0 in old addressing scheme is now pin 25
on /dev/gpioc3

On Pandaboard serial console devices was changed from /dev/ttyu0 to
/dev/ttyu2 so you'll have to update /etc/ttys to get login prompt
on serial port in multiuser mode. Single user mode serial console
should work as-is

Differential Revision: https://reviews.freebsd.org/D2146
Reviewed by: rpaulo, ian, Michal Meloun, Svatopluk Kraus


283253 21-May-2015 loos

Add the MMC/SD driver for Allwinner SoCs.

This is based on the patch sent by Alexander Fedorov with the following
fixes/improvements:

- Better error handling;
- Clock is derived from PLL6 (obtained from netbsd);
- No more unnecessary busy loops on interrupt handler;
- style(9) fixes and code cleanup.

I also want to thanks Martin Galvan who has sent an alternative
implementation with some interesting fixes.

Tested on CubieBoard2, Banana-Pi (thanks to netgate!) and Cubieboard1
(Pratik Singhal).

This is intended to pave the way for the upcoming GSoC work (and make
easier the build of images for the supported boards).

PR: 196081
Submitted by: Alexander Fedorov <alexander.fedorov@rtlservice.com>


283181 21-May-2015 ganbold

The RTC initialization values are based on the SoC which can be
determined at runtime so there's no need to set the values in
each DTS.
Tested on YYHD18 (aml8726-m3), VSATV102 (aml8726-m6), and
ODROIDC1 (aml8726-m8b).

Differential Revision: https://reviews.freebsd.org/D2588
Submitted by: John Wehle


283069 18-May-2015 ian

Enable the NETIF_OPEN_CLOSE_ONCE option for ubldr. This keeps the network
interface open continuously instead of closing it after each filesystem
access and reopening it before the next (causing it to re-obtain network
params each time). This vastly speeds up netbooting.


283066 18-May-2015 ian

Add a routine to obtain netboot parameters from the U-Boot env vars. Call
it from the uboot net_init() implementation. The routine uses the standard
U-Boot env vars plus a freebsd-specific variable named "rootpath" (the
corresponding u-boot variable for that would be "bootfile" except that it
refers to ubldr, so a new name was needed to communicate the path to ubldr).

This allows ubldr to load a kernel from nfs without requiring a dhcp or
bootp server to provide the server ip and rootpath parameters.


283062 18-May-2015 ian

Refactor net_getparams() to make it easier to get params from sources other
than bootp and rarp.

The code which splits a serverip:/rootpath string into rootip and a plain
pathname is now a separate net_parse_rootpath() function that can be
called by others. The code that sets the kernel env vars needed for
nfs_diskless is moved into net_open() so that the variables get set no
matter where the params came from.

There was already code in net_open() that allowed for the possibility that
some other entity has set up the network-related global variables. It uses
the rootip variable as the key, assuming that if it is set all the other
required variables are set too. These changes don't alter the existing
behavior, they just make it easier to actually write some new code to get
the params from another source (such as the U-Boot environment).


283035 17-May-2015 ian

An ARM kernel can be loaded at any 2MB boundary, make ubldr aware of that.

Previously, ubldr would use the virtual addresses in the elf headers by
masking off the high bits and assuming the result was a physical address
where the kernel should be loaded. That would sometimes discard
significant bits of the physical address, but the effects of that were
undone by archsw copy code that would find a large block of memory and
apply an offset to the source/dest copy addresses. The result was that
things were loaded at a different physical address than requested by the
higher code layers, but that worked because other adjustments were applied
later (such as when jumping to the entry point). Very confusing, and
somewhat fragile.

Now the archsw copy routines are just simple copies, and instead
archsw.arch_loadaddr is implemented to choose a load address. The new
routine uses some of the code from the old offset-translation routine to
find the largest block of ram, but it excludes ubldr itself from that
range, and also excludes If ubldr splits the largest block of ram in
two, the kernel is loaded into the bottom of whichever resulting block is
larger.

As part of eliminating ubldr itself from the ram ranges, export the heap
start/end addresses in a pair of new global variables.

This change means that the virtual addresses in the arm kernel elf headers
now have no meaning at all, except for the entry point address. There is
an implicit assumption that the entry point is in the first text page, and
that the address in the the header can be turned into an offset by masking
it with PAGE_MASK. In the future we can link all arm kernels at a virtual
address of 0xC0000000 with no need to use any low-order part of the
address to influence where in ram the kernel gets loaded.


283013 16-May-2015 ian

Re-link ubldr when any of its libraries change.


283006 16-May-2015 thomas

Minor comments fixes


282985 15-May-2015 zbb

Introduce support for the Alpine PoC from Annapurna Labs

The Alpine Platform-On-Chip offers multicore processing
(quad ARM Cortex-A15), 1/10Gb Ethernet, SATA 3, PCI-E 3,
DMA engines, Virtualization, Advanced Power Management and other.

This code drop involves basic platform support including:
SMP, IRQs, SerDes, SATA. As of now it is missing the PCIe support.
Part of the functionality is provided by the low-level code (HAL)
delivered by the chip vendor (Annapurna Labs) and is a subject to
change in the future (is planned to be moved to sys/contrib directory).

The review log for this commit is available here:
https://reviews.freebsd.org/D2340

Reviewed by: andrew, ian, imp
Obtained from: Semihalf
Sponsored by: Annapurna Labs


282896 14-May-2015 andrew

Remove OUTPUT_FORMAT from theARM EFI linker script, it breaks building
for big-endian arm.


282827 13-May-2015 loos

Add support for the power button on BeagleBone Black.

Shutdown and turn off the board when the power button is pressed.

Submitted by: Michal Meloun <meloun@miracle.cz>
Relnotes: yes


282731 10-May-2015 ian

Create a relocatable instance of ubldr for ARM. The original ubldr,
static-linked to run at a fixed position, is still installed to maintain
compatibility with existing configurations. The makefile now also creates
and installs ubldr.bin, a stripped binary (no elf headers) with an entry
point offset of 0 that can be loaded by u-boot at any address and launched
with "go ${loadaddr}".

To use ubldr.bin, U-Boot must still be built with the CONFIG_API option,
but no longer needs the CONFIG_ELF option.


282728 10-May-2015 ian

Don't check the return value from self_reloc(), it can't fail and doesn't
return a value.

Despite what I said in my prior commit, it turns out this one platform
was checking the return value from the old self-reloc code (which returned
a hard-coded 0).


282727 10-May-2015 ian

The self-relocation code is not efi-specific, move it to boot/common.

The function was defined as taking 4 parameters and returning EFI_STATUS,
but all existing callers (in asm code) passed only two parameters and don't
use the return value. The function signature now matches that usage, and
doesn't refer to efi-specific types.

Parameters and variables now use the cannonical typenames set up by elf.h
(Elf_Word, Elf_Addr, etc) instead of raw C types. Hopefully this will
prevent suprises as new platforms come along and use this code.

The function was renamed from _reloc() to self_reloc() to emphasize its
difference from the other elf relocation code found in boot/common.

Differential Revision: https://reviews.freebsd.org/D2490


282661 08-May-2015 ian

Move the text section to the start of the output file, so that when you
create a stripped .bin file from it the entry point is the first byte of
the file. (Will allow "load $addr $file ; go $addr" in u-boot.)


282619 08-May-2015 ganbold

The interrupt-parent is set globally so it's unnecessary to also set it at each node.

Differential Revision: https://reviews.freebsd.org/D2471
Submitted by: John Wehle


282610 07-May-2015 loos

Add the SMP support for Raspberry Pi 2 (BCM2836).

Tested with the build of some ports and a buildworld.

Submitted by: Daisuke Aoyama <aoyama@peach.ne.jp>


282477 05-May-2015 andrew

Add FDT to the list of known GUIDs.


282474 05-May-2015 andrew

Disable the use of floating-point and vector registers in the loader. They
need the vfp unit to be enabled which may not be the case.


282470 05-May-2015 andrew

When cross-building ${LIBSTAND} may be set to the host copy. Point to the
version built with the toolchain.

Differential Revision: https://reviews.freebsd.org/D2312
Submitted by: jhb


282320 01-May-2015 andreast

Fix the loader for sparc64.
The commit from r279799 missed the adaptation of md_load in
sparc64/loader/main.c. This resulted in Memory Address Align issues at the
early boot stage.

Tested on a netbooted Fire 120.


282228 29-Apr-2015 scottl

Improve support for blacklisting bad memory locations. The user can supply
a text file with a list of physical memory addresses to exclude, and have it
loaded at boot time via the provided example in loader.conf. The tunable
'vm.blacklist' remains, but using an external file means that there's no
practical limit to the size of the list. This change also improves the
scanning algorithm for processing the list, scanning the list only once
instead of scanning it for every page in the system. Both the sysctl and
the file can be unsorted and contain duplicates so long as each entry is
numeric (decimal or hex) and is separated by a space, comma, or newline
character. The sysctl 'vm.page_blacklist' is now provided to report what
memory locations were successfully excluded.

Reviewed by: imp, emax
Obtained from: Netflix, Inc.
MFC after: 3 days


282064 27-Apr-2015 scottl

Small change in header order to allow this to compile.

Obtained from: Netflix, Inc.
MFC after: 3 days


281899 23-Apr-2015 loos

Fix the gpio-leds node to match the LEDs on RPI2.

The 'pwr' LED is connected to GPIO pin 35 (active high) and the 'act' LED
is connected to GPIO pin 47 (active high).

Remove the GPIO pin 47 from reserved pins list, previously it was used to
signaling the SD Card presence and now it is used by act LED.


281890 23-Apr-2015 loos

Enable the watchdog on RPI2.

The watchdog is used to reset the SoC on cpu_reset().

Without this, RPI2 will not reboot when asked to.


281887 23-Apr-2015 jhb

Reassign copyright statements on several files from Advanced
Computing Technologies LLC to Hudson River Trading LLC.

Approved by: Hudson River Trading LLC (who owns ACT LLC)
MFC after: 1 week


281886 23-Apr-2015 emaste

Reduce diffs between the three copies of libstand's Makefile

This should be a non-functional change. A future change should
address the functional differences between these three and converge
on a single source.

Differential Revision: https://reviews.freebsd.org/D2058
Reviewed by: jhb
Sponsored by: The FreeBSD Foundation


281859 22-Apr-2015 loos

Fix the SDHCI clock frequency for RPI2, the default clock (for the newer
firmware versions) is 250MHz.


281616 16-Apr-2015 dteske

Add "GELI Passphrase:" prompt to boot loader.

A new loader.conf(5) option of geom_eli_passphrase_prompt="YES" will now
allow you to enter your geli(8) root-mount credentials prior to invoking
the kernel.

See check-password.4th(8) for details.

Differential Revision: https://reviews.freebsd.org/D2105
Reviewed by: imp, kmoore
Discussed on: -current
MFC after: 3 days
X-MFC-to: stable/10
Relnotes: yes


281527 14-Apr-2015 andrew

* Remove the wfi when the efi loader returns, it's unneeded and is not
available on older designs.
* Enable the efi loader on arm


281526 14-Apr-2015 andrew

Add support for arm64 to loader.efi and boot1.efi

Reviewed by: emaste
Sponsored by: The FreeBSD Foundation


281525 14-Apr-2015 andrew

Fix the arm64 MACHINE_CPUARCH value in the efi fdt glue code.

Sponsored by: The FreeBSD Foundation


281524 14-Apr-2015 andrew

Use MACHINE in the efi loader when it is what we mean, it may not be the
same as MACHINE_CPUARCH, it just happened to be the case the architectures
this code currently supports.

Sponsored by: The FreeBSD Foundation


281496 13-Apr-2015 andrew

Create the correct symlinks for the machine directory, and only create the
x86 symlink on i386 and amd64. Before this incorrect symlinks were being
created on armi and i386.

Differential Revision: https://reviews.freebsd.org/D2283
Reviewed by: emaste, imp
Sponsored by: The FreeBSD Foundation


281435 11-Apr-2015 andrew

Add fdt support to the arm loader.efi


281434 11-Apr-2015 andrew

Only add -fPIC to CFLAGS and -Wl,-znocombreloc to LDFLAGS on x86, they
shouldn't be used on arm.


281433 11-Apr-2015 andrew

Move reloc.c to the top level Makefile as it has become generic.


281431 11-Apr-2015 andrew

Update the arm efi ldscript to generate a valid efi binary


281415 11-Apr-2015 ganbold

This modifies the FreeBSD Amlogic DTS files to use the GNU files
as the base.

Submitted by: John Wehle
Reviewed by: imp


281413 11-Apr-2015 ganbold

The GNU files don't include a DTS for the aml8726-m8b (which has
cortex-a5 cores unlike the aml8726-m8 which has cortex-a9 cores).

Submitted by: John Wehle
Reviewed by: imp


281377 10-Apr-2015 emaste

Add build support for i386 loader.efi

Kernel changes are required for this to be useful but this will allow
others to experiment.

Differential Revision: https://reviews.freebsd.org/D2276


281376 10-Apr-2015 emaste

Limit EFI framebuffer metadata to amd64 for now

The i386 loader.efi does not yet exist. Avoid dealing with vt and
framebuffer issues there until the initial bootstrapping is done.


281357 10-Apr-2015 andrew

Port the EFI reloc codeto work on arm64. This used the rela relocation
table so wiill need the addend included in the relocation calculation.

Sponsored by: The FreeBSD Foundation


281322 09-Apr-2015 emaste

Remove EOL whitespace from i386 EFI loader source


281307 09-Apr-2015 andrew

Print error values with hex to make it easier to find the EFI error type.


281300 09-Apr-2015 andrew

Only use -fPIC when building boot1.efi for x86.

Sponsored by: The FreeBSD Foundation


281297 09-Apr-2015 andrew

Add the arm64 machine dependent parts of ficl. This is not machine
dependent, as most copies of these files are identical, but unfortunately
this is still needed.

Sponsored by: The FreeBSD Foundation


281275 08-Apr-2015 dteske

Re-do proper mode-endings. Antithesis of r281176-281179 which reverted
earlier migration away from sloppy mode-endings (r280925,280974-280976)
due to a red-herring in diagnosing HardenedBSD boot lockup.

Thanks to: lattera (shawn.webb@hardenedbsd<dot>org)
MFC after: 3 days
X-MFC-to: stable/10
X-MFC-with: r280925,280974-280976,281176-281179


281271 08-Apr-2015 dteske

Fix a bootlock condition if/when loader_logo is set in loader.conf(5)
NB: This deeply effected HardenedBSD which had a default value set.

Embarassingly, I allowed the `type' primitive to be passed -1/-1 for
c-addr/u stack input (the effect of which is to pull INT_MAX bytes
from character address negative one in which hilarity ensues over a
black screen in full-on bootlock). Much thanks to Shawn Webb [lattera]
for helping me diagnose.

NB: The mode-ending revisions were initially suspected (and reverted)
but proved to be a red-herring. Proper mode endings will be returning.

Thanks to: lattera (@HardenedBSD [<dot><com>])
Reported by: lattera
MFC after: 3 days
X-MFC-to: stable/10


281238 07-Apr-2015 emaste

Add EFI boot1 for i386

loader.efi still needs work, but boot1.efi now builds.

Differential Revision: https://reviews.freebsd.org/D2244
Reviewed by: rpaulo
Sponsored by: The FreeBSD Foundation


281237 07-Apr-2015 emaste

EFI: use common reloc.c for all architectures

Much of this file is common to the architectures we support, so share
an implementation by adding a little #ifdef-ery.

Differential Revision: https://reviews.freebsd.org/D2241
Reviewed by: imp
Sponsored by: The FreeBSD Foundation


281180 06-Apr-2015 dteske

Eliminate literal escape sequences from *.rc

Suggested by: alfred
MFC after: 3 days
X-MFC-to: stable/10
X-MFC-with: r280976, r281179


281179 06-Apr-2015 dteske

Partially revert r280976: Back to previous mode-endings based on feedback

Reported by: lattera
MFC after: 3 days
X-MFC-to: stable/10
X-MFC-with: r280976


281178 06-Apr-2015 dteske

Partially revert r280975: Back to previous mode-endings based on feedback

Reported by: lattera
MFC after: 3 days
X-MFC-to: stable/10
X-MFC-with: r280975


281177 06-Apr-2015 dteske

Partially revert r280974: Back to previous mode-endings based on feedback

MFC after: 3 days
X-MFC-to: stable/10
X-MFC-with: r290974
Reported by: lattera


281176 06-Apr-2015 dteske

Partially revert r280925: Back to previous mode-endings based on feedback

MFC after: 3 days
X-MFC-with: r280925
Reported by: lattera


281169 06-Apr-2015 andrew

Make global variabled only used in this file static.


281156 06-Apr-2015 andrew

Add support to the efi boot1 and loader for 32-bit ARM. This will be used
by the future qemu virt support.

Differential Revision: https://reviews.freebsd.org/D2238
Reviewed by: emaste


281138 06-Apr-2015 rpaulo

SMBIOS support for EFI.

MFC after: 1 week


281117 05-Apr-2015 andrew

Move boot1.efi to the global CLEANFILES list, it's not x86 specific.


281115 05-Apr-2015 andrew

Spell MACHINE_CPUARCH correctly


281114 05-Apr-2015 andrew

Add FDT support to loader.efi. This will be used on arm and arm64.

Differential Revision: https://reviews.freebsd.org/D2219


281081 04-Apr-2015 bapt

Make sure forth manpages are only installed once.

Differential Revision: https://reviews.freebsd.org/D2224
Reviewed by: imp


281061 04-Apr-2015 rpaulo

loader/EFI: improve the help of the 'mode' command.


281060 04-Apr-2015 rpaulo

Remove an unnecessary space in a printf call.


281059 04-Apr-2015 rpaulo

boot1 EFI: reset the screen and select the best mode.

It's necessary to reset the screen to make sure any vendor pixels are
gone when we start boot1. In the Lenovo X1 (3rd gen), this is the
only way to clear the screen. Previously, the Lenovo logo would only
disappear after the kernel started scrolling the display.

After resetting the screen, EFI could put us in the worst LCD mode
(oversized characters), so we now find the largest mode we can use and
hope it's the most appropriate one (it's not trivial to tell what's
the correct LCD resolution at this point). It's worth noting that the
final stage loader has a 'mode' command that can be used to switch
text modes.

While there, enable the software cursor, just like in the legacy boot
mode.

MFC after: 1 week


281058 04-Apr-2015 rpaulo

Remove whitespace.


281028 03-Apr-2015 andrew

Add the start of the efi fdt bindings. These will be used on arm and arm64.

Sponsored by: The FreeBSD Foundation


281027 03-Apr-2015 andrew

Clean up more x86 only options in the efi code.


281022 03-Apr-2015 andrew

Only enable the efi framebuffer on x86 for now


281021 03-Apr-2015 andrew

Only include machine/specialreg.h on x86


281020 03-Apr-2015 andrew

Only enable comconsole and nullconsole on x86.


281011 03-Apr-2015 jkim

Fix powerpc/ps3 build, too.


281010 03-Apr-2015 jkim

Fix mips build, really. :-(


281009 03-Apr-2015 jkim

Revert .PATH changes to fix mips build.

Reported by: bz
Pointy hat to: jkim


281002 02-Apr-2015 jkim

Install newly added brand-*.4th and logo-*.4th files and reduce duplication.

Reviewed by: dteske
Pointy hat to: dteske


281000 02-Apr-2015 emaste

Move i386/efi files to new home in efi/loader/arch/i386

This was not (and still is not) connected to the build, but the EFI
loader is in the process of being built for other than amd64 so these
files ought to live in their eventual MD location.


280980 02-Apr-2015 dim

Ensure the cross assembler, linker and objcopy are used for the build32
stage, just like for the regular world stage.

Reviewed by: rodrigc, imp, bapt, emaste
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D2187


280976 02-Apr-2015 dteske

Use ^[[m mode-ending (as-in screen.4th `me') versus ^[[37m

MFC after: 3 days
X-MFC-to: stable/10


280975 02-Apr-2015 dteske

Eliminate literal escape sequences from *.4th

Suggested by: alfred
MFC after: 3 days
X-MFC-to: stable/10


280974 02-Apr-2015 dteske

Use fg/b/me from screen.4th instead of literals

MFC after: 3 days
X-MFC-to: stable/10


280954 01-Apr-2015 royger

multiboot: fix error codes

Return EINVAL instead of EFTYPE if we have a multiboot kernel loaded but
failed to load the modules. This makes it clear that the kernel/module
should be handled by the multiboot handler but something went wrong.

Sponsored by: Citrix Systems R&D


280953 01-Apr-2015 royger

multiboot: zero mod list array

Zero the list of modules array before using it, or else we might pass
uninitialized data in unused fields of the struct that will make Xen choke.
Also add a check to make sure malloc succeeds.

Sponsored by: Citrix Systems R&D


280950 01-Apr-2015 andrew

Move the efi loaders to be under sys/boot/efi. This will help us add
support for booting arm and arm64 from UEFI.

Differential Revision: https://reviews.freebsd.org/D2164
Reviewed by: emaste, imp (previous version)
Sponsored by: The FreeBSD Foundation


280939 01-Apr-2015 dteske

Whoops! "arc commit --revision" != "arc diff --update"


280938 01-Apr-2015 dteske

Add "GELI Passphrase:" prompt to boot loader.

Summary:
Add "GELI Passphrase:" prompt to boot loader.

A new loader.conf(5) option of geom_eli_passphrase_prompt="YES" will now
allow you to enter your geli(8) root-mount credentials prior to invoking
the kernel.

See check-password.4th(8) for details.

Differential Revision: https://reviews.freebsd.org/D2105
Reviewed by: (your name[s] here)
MFC after: 3 days
X-MFC-to: stable/10
Relnotes: yes

Test Plan:
Drop a head copy of check-password.4th into /boot and then apply the patch
(only the patch to /boot/check-password.4th is required; no other changes are
required but you do have to have a HEAD copy of check-password.4th to
apply the patch).

NB: The rest of your /boot files can be up to 2 years old but no older.
NB: The test won't work unless your kernel has the following change

https://svnweb.freebsd.org/base?view=revision&revision=273489

Now, put into /boot/loader.conf:

geom_eli_passphrase_prompt="YES"

and reboot.

You should be prompted for a GELI passphrase before the menu (if enabled),
just after loading loader.conf(5).

NB: It doesn't matter if you're using GELI or not. However if you are using
GELI and a sufficiently new enough release (has SVN r273489) and you entered
the proper passphrase to mount your GELI encrypted root device(s), you should
notice that the boot process did not stop (you went from loader all the way to login).

Reviewers: cperciva, allanjude, scottl, kmoore

Subscribers: jkh, imp

Differential Revision: https://reviews.freebsd.org/D2105


280937 01-Apr-2015 dteske

Solve dreaded "dictionary full" issue by segregating words into new
vocabularies delay-processing, password-processing, version-processing,
frame-drawing, menu-infrastructure, menu-namespace, menu-command-helpers,
and menusets-infrastructure. The net effect is to remove almost 200
definitions from the main forth vocabulary reducing the dictionary size
by over 50%. The chances of hitting "dictionary full" should be greatly
reduced by this patch.

MFC after: 3 days
X-MFC-to: stable/10


280936 01-Apr-2015 dteske

When forced to draw ASCII lines/boxen, use `=' for the horizontal line
when double frames are requested versus single.

MFC after: 3 days
X-MFC-to: stable/10


280935 01-Apr-2015 dteske

Securely overwrite (zero) user input when we finish password checks.

MFC after: 3 days
X-MFC-to: stable/10


280934 01-Apr-2015 dteske

Add remainder of supported ANSI escape sequences.

MFC after: 3 days
X-MFC-to: stable/10


280933 01-Apr-2015 dteske

Move beastie to logo-*.4th; brands to brand-*.4th

Suggested by: jkh, alfred
MFC after: 3 days
X-MFC-to: stable/10


280931 01-Apr-2015 dteske

Comments. No functional change.

MFC after: 3 days
X-MFC-to: stable/10


280926 31-Mar-2015 dteske

Whitespace and cleanup. No functional change(s).

MFC after: 3 days
X-MFC-to: stable/10


280925 31-Mar-2015 dteske

Optimize bootmsg to use fg/bg/me from screen.4th
NB: screen.4th is included by way of check-password.4th

MFC after: 3 days
X-MFC-to: stable/10


280924 31-Mar-2015 dteske

Comments. No functional change(s).

MFC after: 3 days
X-MFC-to: stable/10


280923 31-Mar-2015 dteske

Whitespace. No functional change(s).

MFC after: 3 days
MFH: stable/10


280922 31-Mar-2015 dteske

Change contents of the exec variable in loader.conf to be friendly to both
Ficl/Forth and Lua. No visible change for Forth while enabling Lua support.

Submitted by: rpaulo


280906 31-Mar-2015 ganbold

Add device tree files for Hardkernel Odroid-C1 and Visson ATV-102 devices.

Submitted by: John Wehle
Approved by: stas (mentor)


280808 29-Mar-2015 andrew

Reorder to help with moving the efi loader parts to sys/boot/efi. As these
will depend on ficl having been built, and are set via bsd.arch.inc.mk we
need to place this after ficl.

As Makefile.amd64 is now late enough we can add the i386 directory to this.


280520 25-Mar-2015 andrew

Add the Raspberry Pi 2 dtb, based on the existing rpi.dts, but with a
different base address for the devces.

MFC after: 1 week


280451 24-Mar-2015 mav

Remove from legacy ata(4) driver support for hardware, supported by newer
and more functional drivers ahci(4), siis(4) and mvs(4).

This removes about 3400 lines of code, unused since FreeBSD 9.0 release.


280385 23-Mar-2015 dteske

Add missing variables password/bootlock_password.
NB: Using NULL for default values in-case someone
or something uncomments it and reboots. See
check-password.4th(8) for additional details.

MFC after: 3 days
X-MFC-to: stable/10 stable/9


280384 23-Mar-2015 dteske

Increase max input for password/bootlock_password from 16 to 255.
When taking user input, don't show asterisks as the user types
but instead spin a twiddle. Implement Ctrl-U to clear user input.
If the buffer is empty, either because the user has yet to type
anything, presses Ctrl-U at any time, or presses backspace enough
to end in an empty buffer, the twiddle is erased to provide feed-
back to the user.

MFC after: 3 days
X-MFC-to: stable/10 stable/9


280383 23-Mar-2015 dteske

Prevent password/bootlock_password features of loader.conf(5) from
locking out everyone in the case of setting a password longer than
the maximum (currently 16 characters). Now the required password is
truncated to the maximum input that can be read from the user.

PR: kern/198760
MFC after: 3 days
MFH: stable/10 stable/9


280382 23-Mar-2015 dteske

Fix sgetkey indentation to be consistent with the rest of the file.
Remove some blank lines, adjust some comments and update copyright.

MFC after: 3 days
X-MFC-to: stable/10 stable/9


280351 22-Mar-2015 andrew

Stop calling x86_efi_copyin and x86_efi_getdev directly. This is to help
port loader.efi to both 32 and 64-bit ARM where we can use this file with
minimal changes.

Differential Revision: https://reviews.freebsd.org/D2031
Reviewed by: imp


280194 17-Mar-2015 ian

Fix fdt_platform_fixups() mem region handling. It turns out u-boot puts
several types of data into the mem-info array (DRAM, SRAM, flash). We
need to extract just the DRAM entries for translation into fdt memory
properties.

Also, increase the number of regions we can handle from 5 to 16.

Submitted by: Michal Meloun


280047 15-Mar-2015 andrew

Move the x86 specific files to be built in the amd64 loader.efi. This will
help with importing the arm and arm64 versions of loader.efi.


280031 15-Mar-2015 dim

Upgrade our copy of clang, llvm and lldb to 3.6.0 release.

Please note that from 3.5.0 onwards, clang/llvm/lldb require C++11
support to build; see UPDATING for more information.

Release notes for llvm and clang can be found here:
<http://llvm.org/releases/3.6.0/docs/ReleaseNotes.html>
<http://llvm.org/releases/3.6.0/tools/clang/docs/ReleaseNotes.html>

Thanks to Ed Maste for the lldb part of this upgrade.

Exp-run: antoine


279950 13-Mar-2015 jhb

Enable bzipfs support in the EFI loader.
- Add bzipfs to the list of supported filesystems in the EFI loader.
- Increase the heap size allocated for the EFI loader from 2MB to 3MB.

Differential Revision: https://reviews.freebsd.org/D2053
Reviewed by: benno, emaste, imp
MFC after: 2 weeks
Sponsored by: Cisco Systems, Inc.


279949 13-Mar-2015 jhb

The System V ABI for amd64 allows functions to use space in a 128 byte
redzone below the stack pointer for scratch space and requires
interrupt and signal frames to avoid overwriting it. However, EFI uses
the Windows ABI which does not support this. As a result, interrupt
handlers in EFI push their interrupt frames directly on top of the
stack pointer. If the compiler used the red zone in a function in the
EFI loader, then a device interrupt that occurred while that function
was running could trash its local variables. In practice this happens
fairly reliable when using gzipfs as an interrupt during decompression
can trash the local variables in the inflate_table() function
resulting in corrupted output or hangs.

Fix this by disabling the redzone for amd64 EFI binaries. This
requires building not only the loader but any libraries used by the
loader without redzone support.

Thanks to Jilles for pointing me at the redzone once I found the stack
corruption.

Differential Revision: https://reviews.freebsd.org/D2054
Reviewed by: imp
MFC after: 2 weeks
Sponsored by: Cisco Systems, Inc.


279929 12-Mar-2015 jhb

Allow the EFI loader to work with large kernels and/or modules
(for example, a large mfsroot). Note that for EFI the kernel and
modules (as well as other metadata files such as splash screens or
memory disk images) are loaded into a statically-sized staging area.
When the EFI loader exits it copies this staging area down to the
location the kernel expects to run at.
- Add bounds checking to the copy routines to fail attempts to access
memory outside of the staging area. Previously loading a combined
kernel + modules larger than the staging size (32MB) would overflow
the staging area trashing whatever memory was afterwards. Under
Intel's OVMF firmware for qemu this resulted in fatal faults in the
firmware itself. Now the attempt will fail with ENOMEM.
- Allow the staging area size to be configured at compile time via
an EFI_STAGING_SIZE variable in src.conf or on the command line.
It accepts the size of the staging area in MB. The default size
remains 32MB.

MFC after: 2 weeks
Sponsored by: Cisco Systems, Inc.


279923 12-Mar-2015 jhb

Fix 'make depend' by moving the LDSCRIPT dependency into DPADD.

Sponsored by: Cisco Systems, Inc.


279922 12-Mar-2015 jhb

Revert r279381. The EFI loader needs to use a separate libstand that
is compiled against the ABI EFI expects (specifically, no stack
redzone) so it cannot share libstand with userboot (which must use
the System V ABI).


279799 09-Mar-2015 nwhitehorn

Provide a shim layer in loader to condense the Open Firmware device tree to
an FDT. This is how Linux and OS X boot and can avoid some issues with
using Open Firmware at runtime. The code is highly experimental and disabled
by default; it can be turned on by setting the loader environment variable
"usefdt" to a non-NULL value.


279798 09-Mar-2015 nwhitehorn

Fix loader on PowerPC following r279784. It turns out that, due to .PATH
confusion, the _setjmp.S in libstand was never being used and was instead
being shadowed by the libc version. Since the libc version now uses FPRs,
it caused loader to crash.


279738 07-Mar-2015 trasz

Add error reporting (but not actual handling yet, apart from
reporting them) for EFI calls to boot1.efi.

MFC after: 1 month
Sponsored by: The FreeBSD Foundation


279598 04-Mar-2015 dim

When compiling boot2 with gcc on i386 and pc98, only use the custom flag
-mno-align-long-strings when compiling with base gcc. This is checked
by comparing the version number against 4.2.1, which is not exactly
right, but good enough. (There is no other way to check whether we are
using the non-standard gcc in base, as far as I know.)

Reported by: rodrigc
MFC after: 3 days


279533 02-Mar-2015 br

o Add more room for EFI boot blocks
o Specify the filename as argument

Differential Revision: https://reviews.freebsd.org/D1999
Reviewed by: emaste@


279382 27-Feb-2015 obrien

sys/boot/userboot/libstand/libstand.a should also include strtoul.c;
as lib/libstand/ and sys/boot/libstand32/ already does.


279381 27-Feb-2015 obrien

Use sys/boot/userboot/libstand/ and not /usr/lib/libstand.a.


279380 27-Feb-2015 obrien

Remove duplicated -I.


279345 27-Feb-2015 jchandra

Move PCI bus below simplebus for Broadcom XLP

This will enable us to do common allocation code for memory and
interrupts for SoC devices as well as PCI devices.


279306 26-Feb-2015 jchandra

Remove run-time allocation of XLP IRQs

Follow the same static IRQ to Interrupt Table Entry mapping as the other
OS supported on XLP.


279305 26-Feb-2015 jchandra

Add netlogic,xlp-pic as interrupt controller for XLP

Add an empty driver for netlogic,xlp-pic to ensure that the device tree
is correct and has an interrupt controller.


279275 25-Feb-2015 mav

Fix potential NULL dereference.

Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com>
MFC after: 2 weeks


279222 23-Feb-2015 grembo

Improve memory detection in biosmem.c

- Add a quirk to allow ignoring e820 extended memory detection.
- Improve memory detection through e801.
- Add bootloader command "biosmem".

See differential revision for more details.

Reviewed by: jhb, adrian
Approved by: adrian
Differential Revision: https://reviews.freebsd.org/D1741


279038 20-Feb-2015 imp

Allow EFI and ACPI to be included together. When ACPI is included
first, EFI will use its definitions for {,U}INT{8,16,32,64} and
BOOLEAN. When EFI is included first, define ACPI_USE_SYSTEM_INTTYPES
to tell ACPI that these are already defined.

Differential Revision: https://reviews.freebsd.org/D1905


278915 17-Feb-2015 loos

Set the #address-cells and #size-cells properties on I2C controllers of
Raspberry-pi.

This fixes the issues of dtc(1) while compiling I2C addresses set in "reg"
property.

MFC after: 2 weeks


278582 11-Feb-2015 jhb

MFi386:
When building some of the boot loaders with clang, and DEBUG_FLAGS or
CFLAGS having '-g' in it, clang outputs several assembly directives that
are too new for our version of binutils.

Therefore, assemble the resulting .s files with clang instead. A more
general solution can be implemented when a GNU as-compatible driver for
clang's integrated assembler appears.

Tested by: gjb


278579 11-Feb-2015 gnn

Summary: Update CPU identification call to recent version.


278335 06-Feb-2015 dteske

Revert SVN r277693.

Discussed on: src-committers
Approved by: core (emaste)


278304 06-Feb-2015 rpaulo

Add a FAT label to the EFI boot1 partition.

MFC after: 1 week


278234 05-Feb-2015 rpaulo

EFI: print more information about EFI Tables.

This adds the GUIDs for DXE, HOB, Memory Type Information and Debug
Image Info.


278032 01-Feb-2015 ian

Do not skip setting the memory 'reg' property if the fdt data already
contains one. Published dts source often includes a minimal default
memory definition and expects it to be overridden by the bootloader after
determining the actual physical memory in the system.


278020 01-Feb-2015 nwhitehorn

Allow this to work with disks greater than 4 GB and with names not beginning
with "s".


277997 31-Jan-2015 nwhitehorn

Relocate kernel to high address space (a static + 64 MB for now) to avoid
conflicts with the Linux host kernel. This lets you kexec an unmodified
GENERIC64.


277991 31-Jan-2015 nwhitehorn

Add FDT reservations for memory areas used by OPAL or RTAS runtime firmware.
This allows a kexec'ed kernel to boot multiuser under PHYP.


277988 31-Jan-2015 nwhitehorn

Add code to support loading relocatable kernels at offsets that are not
zero.


277962 31-Jan-2015 nwhitehorn

Add support for booting relocatable kernels on PowerPC.


277957 31-Jan-2015 grembo

Fix order of functions in smbios.c (corrects r277949), since this corrects
a build error I committed this directly, sorry.


277949 30-Jan-2015 grembo

New function smbios_match to detect BIOS versions during boot

Motivation is to introduce BIOS specific quirks early in the boot
process. smbios_match can be called before malloc is avaible, that's
why parts of smbios_detect have been moved into a separate function
smbios_probe that will be called by smbios_detect as well as
smbios_match.

Reviewed by: jhb
Approved by: jhb
Differential Revision: https://reviews.freebsd.org/D1679


277943 30-Jan-2015 ambrisko

Fix UEFI PXE boot on a NIC that isn't the first NIC.

In UEFI it appears all available NICS are present to pass network traffic.
This gives the capability to load the loader.efi from disk then set
currdev="net3:" and then all I/O will over over the 2nd NIC. On this
machine is appears the first handle is the first NIC in IPv4 mode and
then the 2nd handle is the first NIC in IPv6 mode. The 3rd handle is
the 2nd NIC in IPv4 mode. The fix is to index into the handle based
on the unit cached from boot device passed into the loader.

Some testing info from a test boot via kenv:
currdev="net3:"
loaddev="net3:"
boot.netif.name="igb1"


277745 26-Jan-2015 br

Add a generic way for hooking PMC interrupt.


277693 25-Jan-2015 des

Fix the font in the text version. This has bothered me for a long time...

MFC after: 1 week


277644 24-Jan-2015 br

Add support for audio transmitting, include drivers for:
o Digital Audio Multiplexer (AUDMUX)
o Smart Direct Memory Access Controller (SDMA)
o Synchronous Serial Interface (SSI)

Disable by default as it depends on SDMA firmware.

Sponsored by: Machdep, Inc.


277622 24-Jan-2015 will

Fix panic in firewire and creation of invalid config ROM.
(This change was supposed to be included in r277508.)

sys/boot/i386/libfirewire/firewire.c:
Fix configuration ROM generation count wrapping logic
so that the generation count is never outside of
allowed limits (0x2 -> 0xF).

Submitted by: gibbs
MFC after: 1 week
MFC with: 277508
Sponsored by: Spectra Logic
MFSpectraBSD: 1110685 on 2015/01/05


277418 20-Jan-2015 royger

loader: fix the size of MODINFOMD_MODULEP

The data in MODINFOMD_MODULEP is packed by the loader as a 4 byte type, but
the amd64 kernel expects a vm_paddr_t, which is of size 8 bytes. Fix this by
saving it as 8 bytes in the loader and retrieving it using the proper type
in the kernel.

Sponsored by: Citrix Systems R&D


277413 20-Jan-2015 ganbold

Enable Synopsys DesignWare Mobile Storage Host Controller
driver on Rockchip boards. It currently supports PIO mode
and dma mode needs external dma controller to be used.

Submitted by: jmcneill
Approved by: stas (mentor)


277291 17-Jan-2015 royger

loader: use correct types for parse_modmetadata

Use the proper types in parse_modmetadata for the p_start and p_end
parameters. This was causing problems in the ARM 32bit loader.

Sponsored by: Citrix Systems R&D
Reported and Tested by: ian


277215 15-Jan-2015 royger

loader: implement multiboot support for Xen Dom0

Implement a subset of the multiboot specification in order to boot Xen
and a FreeBSD Dom0 from the FreeBSD bootloader. This multiboot
implementation is tailored to boot Xen and FreeBSD Dom0, and it will
most surely fail to boot any other multiboot compilant kernel.

In order to detect and boot the Xen microkernel, two new file formats
are added to the bootloader, multiboot and multiboot_obj. Multiboot
support must be tested before regular ELF support, since Xen is a
multiboot kernel that also uses ELF. After a multiboot kernel is
detected, all the other loaded kernels/modules are parsed by the
multiboot_obj format.

The layout of the loaded objects in memory is the following; first the
Xen kernel is loaded as a 32bit ELF into memory (Xen will switch to
long mode by itself), after that the FreeBSD kernel is loaded as a RAW
file (Xen will parse and load it using it's internal ELF loader), and
finally the metadata and the modules are loaded using the native
FreeBSD way. After everything is loaded we jump into Xen's entry point
using a small trampoline. The order of the multiboot modules passed to
Xen is the following, the first module is the RAW FreeBSD kernel, and
the second module is the metadata and the FreeBSD modules.

Since Xen will relocate the memory position of the second
multiboot module (the one that contains the metadata and native
FreeBSD modules), we need to stash the original modulep address inside
of the metadata itself in order to recalculate its position once
booted. This also means the metadata must come before the loaded
modules, so after loading the FreeBSD kernel a portion of memory is
reserved in order to place the metadata before booting.

In order to tell the loader to boot Xen and then the FreeBSD kernel the
following has to be added to the /boot/loader.conf file:

xen_cmdline="dom0_mem=1024M dom0_max_vcpus=2 dom0pvh=1 console=com1,vga"
xen_kernel="/boot/xen"

The first argument contains the command line that will be passed to the Xen
kernel, while the second argument is the path to the Xen kernel itself. This
can also be done manually from the loader command line, by for example
typing the following set of commands:

OK unload
OK load /boot/xen dom0_mem=1024M dom0_max_vcpus=2 dom0pvh=1 console=com1,vga
OK load kernel
OK load zfs
OK load if_tap
OK load ...
OK boot

Sponsored by: Citrix Systems R&D
Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D517

For the Forth bits:
Submitted by: Julien Grall <julien.grall AT citrix.com>


277208 15-Jan-2015 loos

Fix the PMIC node name to match the PMIC i2c address.

Remove an extra blank line.

No functional changes.

MFC after: 3 days


277205 15-Jan-2015 imp

Reserve and ignore the a new module metadata type MDT_PNP_INFO for
associating an optional PNP hint table with this module. In the
future, when these are added, these changes will silently ignore the
new type they would otherwise warn about. It will always be safe to
ignore this data. Get this into the builds today for some future
proofing.

MFC After: 3 days


277134 13-Jan-2015 hselasky

Add new USB template to the USB bootloader module.


277042 12-Jan-2015 loos

Add support to turn off Beaglebone with poweroff(8) or shutdown(8) -p.

To cut off the power we need to start the shutdown sequence by writing
the OFF bit on PMIC.

Once the PMIC is programmed the SoC needs to toggle the PMIC_PWR_ENABLE
pin when it is ready for the PMIC to cut off the power. This is done by
triggering the ALARM2 interrupt on SoC RTC.

The RTC driver only works in power management mode which means it won't
provide any kind of time keeping functionality. It only implements a way
to trigger the ALARM2 interrupt when requested.

Differential Revision: https://reviews.freebsd.org/D1489
Reviewed by: rpaulo
MFC after: 2 weeks


276853 08-Jan-2015 dim

Apparently more Makefiles use stuff from compiler-rt, so fix them up
too. (This did not show during a make universe, strangely.)


276711 05-Jan-2015 nwhitehorn

Missed change in r276688. Apologies for build breakage.


276688 05-Jan-2015 nwhitehorn

Add kexec-based Linux shim loader for use with the firmware petitboot
loader on PS3 and POWER8 systems. This is reasonably portable to other
architectures, especially FDT-based ones, if similar features are useful
elsewhere.

Netboot support is missing for now and will be added in a future commit,
at which time loader.ps3 will be garbage collected.

Done at: Hackathon


276632 03-Jan-2015 ian

Create a custom /boot/defaults/loader.conf for ARM. This differs from the
standard file in the following ways:

- modules_path includes /boot/dtb
- It doesn't contain 533 lines, of which 500 are either commented out,
empty, or something_which_doesnt_work_on_arm_anyway=NO

The standard defaults file takes 40+ seconds to process on an arm beaglebone
board. This one takes just a couple seconds.

This gets installed instead of the original because of the .PATH magic in
the makefile.


276533 02-Jan-2015 br

Add driver for general-purpose I/O (GPIO).

Sponsored by: DARPA, AFRL


276479 31-Dec-2014 dim

Upgrade our copy of clang, llvm and lldb to 3.5.0 release.

Please note that this version now requires C++11 support to build; see
UPDATING for more information.

Release notes for llvm and clang can be found here:
<http://llvm.org/releases/3.5.0/docs/ReleaseNotes.html>
<http://llvm.org/releases/3.5.0/tools/clang/docs/ReleaseNotes.html>

Thanks to Ed Maste, Roman Divacky, Andrew Turner, Justin Hibbits and
Antoine Brodin for their invaluable help with this import.

Approved by: portmgr (antoine)
MFC after: 1 month


276360 29-Dec-2014 joel

mdoc: remove EOL whitespace.


276356 29-Dec-2014 dim

Use -Wl, to pass options to the linker for PowerPC's boot1.chrp.

MFC after: 3 days


276306 27-Dec-2014 ian

Use the proper markup for single quotes.


276292 27-Dec-2014 joel

mdoc: improvements to SEE ALSO.


276207 25-Dec-2014 loos

Add interrupt support for GPIO pins on OMAP4 and AM335x.

This enables the use of GPIO pins as interrupt sources for kernel devices
directly attached to gpiobus (userland notification will be added soon).

The use of gpio interrupts for other kernel devices will be possible when
intrng is complete.

All GPIO pins can be set to trigger on:

- active-low;
- active-high;
- rising edge;
- falling edge.

Tested on: Beaglebone-black


276161 24-Dec-2014 ian

Revert r276101, it didn't fix the problem and causes a compile error
(nested comment blocks).


276147 23-Dec-2014 emaste

Update comment: only one file in the FAT file system EFI boot image

Sponsored by: The FreeBSD Foundation


276146 23-Dec-2014 emaste

Use explicit --output-target to set EFI file format

According to objcopy(1) --target is for use where the input and output
formats are the same ("no translation"). In practice it does detect the
input format in any case, but be explicit that we're specifying the
output format as we are translating from ELF to EFI PE format.

Sponsored by: The FreeBSD Foundation


276145 23-Dec-2014 ian

Convert a couple lingering NO_FORTH conditionals to test MK_FORTH.


276101 23-Dec-2014 rpaulo

Temporarily disable the cpus directive until I figure out what's wrong.


276087 22-Dec-2014 ian

Add a new loader(8) variable, twiddle_divisor, allowing control over the
output frequency of the "twiddle" IO progress indicator. The default
value is 1. For larger values N, the next stage of the animation is only
output on every Nth call to the output routine. A sufficiently large N
effectively disables the animation completely.


276074 22-Dec-2014 imp

Make this compile when TERM_EMU is not defined.


276026 21-Dec-2014 ian

Allow whitspace to appear between device name and unit number in loaderdev.
This allows the same value to be used in u-boot commands and the loaderdev
env var that gets passed to ubldr, for example 'fatload mmc 1 ${bootfile}".


275963 20-Dec-2014 rpaulo

Driver for CPU frequency/voltage control on the Raspberry Pi.

Differential Revision: https://reviews.freebsd.org/D1025
Submitted by: Daisuke Aoyama aoyama@peach.ne.jp
Reviewed by: ian (earlier version), rpaulo
MFC after: 1 month
Relnotes: yes


275861 17-Dec-2014 br

Add configuration files for BERI soft-core synthesized on
Terasic SoCKit board (Altera FPGA).

Use virtio block as root filesystem device.

Sponsored by: DARPA, AFRL


275860 17-Dec-2014 br

Move memory node to the root, so fdt_get_mem_regions() can find it.


275859 17-Dec-2014 br

o Add PIO[2,3] devices information
o Enable Virtio Block


275647 09-Dec-2014 br

o Add BERI Virtio Networking Frontend (if_vtbe)
o Move similar block/networking methods to common file
o Follow r275640 and correct MMIO registers width
o Pass value to MMIO platform_note method.

Sponsored by: DARPA, AFRL


275506 05-Dec-2014 hselasky

Define the ffs() function in the USB bootloader's global and
independent header file.


275457 03-Dec-2014 emaste

Increase BERI loader section alignment to 16

The .text, .bss, and .data sections claimed 16-byte alignment, but were
only aligned to 8 by the linker script.

Discovered with strip(1) from elftoolchain, which performs validation
absent from the binutils strip(1).

Sponsored by: DARPA, AFRL


275411 02-Dec-2014 nyan

MFi386: r275305 (by rdivacky)

Unbreak the code for non-digits below '0' by casting the expression
to unsigned int.


275305 30-Nov-2014 rdivacky

Unbreak the code for non-digits below '0' by casting the expression
to unsigned int.

Pointed out by: bde


275261 29-Nov-2014 imp

The current limit of 100k for the linker hints file is getting a bit
crowded as we now are at about 70k. Bump the limit to 1MB instead
which is still quite a reasonable limit and allows for future growth
of this file and possible future expansion to additional data.

MFC After: 2 weeks


275241 29-Nov-2014 nyan

MFi386: r275059, r275061, r275062 and r275191 (by rdivacky)

Shrink boot2 by a couple more bytes.


275239 29-Nov-2014 nyan

MFi386: r275237 (by rdivacky)

Shrink boot2 a bit more by factoring out common pattern
of printf();return(-1);


275237 29-Nov-2014 rdivacky

Shrink boot2 a bit more by factoring out common pattern
of printf();return(-1);

This shrinks it by 8bytes using clang35 and by 12bytes using clang34.


275191 27-Nov-2014 rdivacky

Revert part of r275059. Comparing unsigned 8 bit value
against -'0' is always false so the conditional block is
optimized away.


275062 25-Nov-2014 rdivacky

Fix style(9).

Suggested by: jkim


275061 25-Nov-2014 rdivacky

Fix style(9).

Suggested by: jkim


275059 25-Nov-2014 rdivacky

Shrink boot2 by a couple more bytes.

Reviewed by: jhb
Tested by: me, dim


275049 25-Nov-2014 br

o Add PIO and vtblk mmio device info to the tree
o Add FPGA memory window to static dev mappings
o Fix whitespace


274925 23-Nov-2014 joel

Misc mdoc fixes:

- Remove superfluous paragraph macros.
- Remove/fix empty or incorrect macros.
- Sort sections into conventional order.
- Terminate quoted strings properly.
- Remove EOL whitespace.


274823 21-Nov-2014 brooks

Merge from CheriBSD:

commit 6d3c4c09226ad6bdd662e3e52489ef294a6ce298
Add terasic_mtl vt(4) framebuffer driver

terasic_mtl can be built with syscons(4) and vt(4) attachments, selected
at compile time.

commit 33240259b47a7c990a5a88a19f133a5600432a4c
Clear terasic_mtl text buffer on attach

commit d188c2d2412953f949624aa35cd07082830943c9
Update terasic vt(4) driver for FreeBSD r269783

commit d1cc54eee852fa4fc9d359d5bb2171d24ec73369
Safety belt to ensure vt(4) fb parameters are correct

commit 76e6d468ef45711d7952786095fc4791289ebb4b
Improve terasic_mtl_vt fdt parsing

- Use OF_getencprop to avoid need for explicit endian handling
(submitted by ray@freebsd.org)
- Check for expected length and correct pointer type

commit 3e2524b8995ab66e8a9295e4c87cbc7126eeddf4
Correct device_printf usage

commit 9e53e3c8e0766414e25662c95b09cc51c92443b0
Switch framebuffer to match host endianness

Xorg and xf86-video-scfb work much better with a native-endian
framebuffer.

commit 0f49259d596321ed85288ac0e1fb4ee1c966df48
Switch DE4 to vt(4) and enable kbdmux

commit 5bc96ebc89db7d134ad478335090c8477c1677c7
Add missing \n in device_printf calls

Submitted by: emaste
Sponsored by: DARPA, AFRL


274818 21-Nov-2014 brooks

Merge from CheriBSD (3422ebe71b6c06fe78b1be73623b240c219e08e3):

Rename beripic to beripic0.

MFC after: 1 week
Sponsored by: DARPA, AFRL


274537 15-Nov-2014 nyan

MFi386: r274398

Move NFS and TFTP filesystems before the synthetic filesystems (bzip,
gzip, and split).


274528 14-Nov-2014 imp

Cleanup trailing newlines noticed while looking for other issues.


274439 12-Nov-2014 andrew

Add the FDT table GUID. This is used to pass the device tree blob from UEFI
to the loader in a similar way to the ACPI tables.

This will be used on arm64 but is not specific to the architecture.

Sponsored by: The FreeBSD Foundation


274407 11-Nov-2014 grehan

Fix incorrect reading of 32-bit modinfo by 64-bit loaders.

The various structures in the mod_metadata set of a FreeBSD kernel and
modules contain pointers. The FreeBSD loader correctly deals with a
mismatch in loader and kernel pointer size (e.g. 32-bit i386/ppc
loader, loading 64-bit amd64/ppc64 kernels), but wasn't dealing with
the inverse case where a 64-bit loader was loading a 32-bit kernel.

Reported by: ktcallbox@gmail.com with a bhyve/i386 and ZFS root install
Differential Revision: https://reviews.freebsd.org/D1129
Reviewed by: neel, jhb
MFC after: 1 week


274398 11-Nov-2014 jhb

Move NFS and TFTP filesystems before the synthetic filesystems (bzip,
gzip, and split). "Real" filesystems should always be listed first so
that the "bare" filename is tried before alternate filenames. For PXE
booting in particular this can remove a lot of spurious pathname lookups.

While here, move splitfs to the bottom after the bzip and gzip filesystems
as it is the least often used.

Tested by: Prokash Sinha <psinha@panasas.com>
MFC after: 1 week


274337 10-Nov-2014 delphij

MFV r274273:

ZFS large block support.

Please note that booting from datasets that have recordsize greater
than 128KB is not supported (but it's Okay to enable the feature on
the pool). This *may* remain unchanged because of memory constraint.

Limited safety belt is provided for mounted root filesystem but use
caution is advised.

Illumos issue:
5027 zfs large block support

MFC after: 1 month


274331 09-Nov-2014 melifaro

Renove faith(4) and faithd(8) from base. It looks like industry
have chosen different (and more traditional) stateless/statuful
NAT64 as translation mechanism. Last non-trivial commits to both
faith(4) and faithd(8) happened more than 12 years ago, so I assume
it is time to drop RFC3142 in FreeBSD.

No objections from: net@


274127 05-Nov-2014 marcel

In alloc_pread() and kern_pread(), print errors only when DEBUG is
defined. An error is not fatal and is supposed to be handled by the
caller.

Obtained from: Juniper Networks, Inc.


273940 01-Nov-2014 marcel

Change the order of the arguments to file_loadraw(). They were swapped
as of r262345 when file_loadraw() was made public and this little detail
got overlooked during porting.

Obtained from: Juniper Networks, Inc.


273934 01-Nov-2014 andrew

Start to allow platforms other than U-Boot to use the FDT code in loader by
moving U-Boot specific code from libfdt.a to a new libuboot_fdt.a. This
needs to be a new library for linking to work correctly.

Differential Revision: https://reviews.freebsd.org/D1054
Reviewed by: ian, rpaulo (earlier version)
MFC after: 1 week


273927 01-Nov-2014 andrew

Move the definitions of the fdt functions from a uboot header to a new fdt
header. There is nothing in the fdt spec that ties it to U-Boot.

While here sort and fix the signature of fdt_setup_fdtp.

MFC after: 1 week


273914 31-Oct-2014 andrew

The command name is a constant, use the correct type.

MFC after: 1 week


273913 31-Oct-2014 andrew

Clean up the types of a few strings to make them const when they are never
written to.


273865 30-Oct-2014 ambrisko

Make UEFI booting of 4Kn disks work:
- convert boot1.efi to corrrectly calculate the lba for what the
media reports and convert the size based on what FreeBSD uses.
The existing code would use the 512 byte lba and convert the
size using 4K byte size.
- make fsck_msdosfs read the boot block as 4K so the read doesn't
fail on a 4Kn drive since FreeBSD will error out parition reads
of a block. Make the bpbBytesPerSec check a multiple of 512 since
it can be 512 or 4K depending on the disk. This allows fsck to
pass checking the EFI partition on a 4Kn disk.

To create the EFI file system I used:
newfs_msdos -F 32 -S 4096 -c 1 -m 0xf8 <partition>
This works for booting 512 and 4Kn disks.

Caveat is that loader.efi cannot read the 4Kn EFI partition. This isn't
critical right now since boot1.efi will read loader.efi from the ufs
partition. It looks like loader.efi can be fixed via making some of the
512 bytes reads more flexible. loader.efi doesn't have trouble reading
the ufs partition. This is probably a simple fix.

I now have FreeBSD installed on a system with 4Kn drives and tested the
same code works on 512.

MFC after: 1 week


273469 22-Oct-2014 br

Provide a character device allowing us to access BERI memory regions.

Sponsored by: DARPA, AFRL


273380 21-Oct-2014 br

Add driver for Micrel KSZ9021 Gigabit Ethernet Transceiver (PHY).

Sponsored by: DARPA, AFRL


273334 20-Oct-2014 marcel

Fully support constructors for the purpose of code coverage analysis.
This involves:
1. Have the loader pass the start and size of the .ctors section to the
kernel in 2 new metadata elements.
2. Have the linker backends look for and record the start and size of
the .ctors section in dynamically loaded modules.
3. Have the linker backends call the constructors as part of the final
work of initializing preloaded or dynamically loaded modules.

Note that LLVM appends the priority of the constructors to the name of
the .ctors section. Not so when compiling with GCC. The code currently
works for GCC and not for LLVM.

Submitted by: Dmitry Mikulin <dmitrym@juniper.net>
Obtained from: Juniper Networks, Inc.


273298 20-Oct-2014 ian

The U-Boot README says fdt_addr_r is the right env var for fdt data
loaded into ram, but vendors also use fdtaddr and fdt_addr. Check the
recommended variable first and fall back to the others.


273278 19-Oct-2014 br

Add driver for BERI soft processor 'ring buffer' device.
Ring device provides a way for communicate to BERI
peripherals such as BERI debug unit and console.

Sponsored by: DARPA, AFRL


273256 18-Oct-2014 rpaulo

AM335X FDT: use the oma3-wdt string for compatibility with Linux.

Submitted by: andrew
MFC after: 1 week


273248 18-Oct-2014 rpaulo

AM335x FDT: add an entry for the watchdog.

MFC after: 1 week


273142 15-Oct-2014 schweikh

Correct grammos.

MFC after: 3 weeks


272896 10-Oct-2014 br

o Add machine-dependent SMP part
o Enable SMP

Sponsored by: DARPA, AFRL


272888 10-Oct-2014 bapt

Rename elf*-powerpc into elf*-powerpc-freebsd in binutils

The powerpc support was the only supported architecture not prepending the elf format name
with "-freebsd" in base this change makes it consistent with other architectures.
On newer version of binutils the powerpc format is also prepended with "-freebsd".

Also modify the kernel ldscripts in that regards.

As a result it is now possible cross build the kernel on powerpc using newer binutils

Differential Revision: https://reviews.freebsd.org/D926
Differential Revision: https://reviews.freebsd.org/D928


272785 09-Oct-2014 marcel

Properly NUL-terminate the on-stack buffer for reading /boot.config
or /boot/config. In qemu, on a warm boot, the stack is not all zeroes
and we parse beyond the file's contents.

Obtained from: Juniper Networks, Inc.


272749 08-Oct-2014 ae

Fix comment.

MFC after: 1 week


272712 07-Oct-2014 br

Add driver for Synopsys DesignWare Mobile Storage Host Controller.

Sponsored by: DARPA, AFRL


272557 05-Oct-2014 ae

Rework bootparttest to use more code from sys/boot.
Use disk_open() call to emulate loader behavior.


272556 05-Oct-2014 ae

Add a bit more debug messages.


272487 03-Oct-2014 ae

Add GUID of FreeBSD slice to GPT scheme.

MFC after: 1 week


272350 01-Oct-2014 andrew

Remove MK_ARM_EABI, the armeb issues have been fixed. The code to support
the oabi is still in the tree, but it is expected this will be removed
as developers work on surrounding code.

With this commit the ARM EABI is the only supported supported ABI by
FreeBSD on ARMa 32-bit processors.

X-MFC after: never
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D876


272256 28-Sep-2014 nyan

MFi386: r261567

Switch from lib/libstand to sys/boot/libstand32.


272255 28-Sep-2014 nyan

MFi386: r268974

Supress clang warning for FreeBSD printf %b and %D formats.


272252 28-Sep-2014 nyan

MFi386: r261520

Drop the 3rd clause from all 3 clause BSD licenses.


272250 28-Sep-2014 nyan

Reduce diffs against i386.


272249 28-Sep-2014 nyan

Remove extra '\'.


272214 27-Sep-2014 kan

Remove obsolete compatibility glue and improve firewire code readability.

Commit my version of style(9) pass over the firewire code. Now that
other people have started changing the code carrying this is as a
local patch is not longer a viable option.

MFC after: 1 month


272120 25-Sep-2014 br

Add driver for Synopsys DesignWare 3504-0 Universal 10/100/1000
Ethernet MAC.

Sponsored by: DARPA, AFRL


272105 25-Sep-2014 emaste

Remove duplicated header content

I fail at patch(1).

MFC after: 3 days


271762 18-Sep-2014 emaste

Switch to text mode in UEFI boot

The loader previously failed to display on MacBooks and other systems
where the UEFI firmware remained in graphics mode.

Submitted by: Rafael Espíndola


271757 18-Sep-2014 emaste

Wrap long lines introduced in r268227


271609 15-Sep-2014 avg

add gptzfsboot.8, zfsboot.8 and zfsloader.8 manual pages

Many thanks to Warren Block for his reviews, corrections and additions.

Reviewed by: Warren Block <wblock@FreeBSD.org>
MFC after: 1 week


271475 12-Sep-2014 ambrisko

Add support for serial and null console to UEFI boot loader.


271431 11-Sep-2014 br

Add Reset Manager driver. This driver provides generic way to reset
and provides sysctl tunables for enable/disable FPGA<->HPS bridges.

Sponsored by: DARPA, AFRL


271406 10-Sep-2014 imp

Add support for calling pcibios routines from the
bootloader. Implement the following routines:
pcibios-device-count count the number of instances of a devid
pcibios-read-config read pci config space
pcibios-write-config write pci config space
pcibios-find-devclass find the nth device with a given devclass
pcibios-find-device find the nth device with a given devid
pcibios-locator convert bus device function ti pcibios locator
These commands are thin wrappers over their PCI BIOS 2.1 counterparts. More
informaiton, such as it is, can be found in the standard.

Export a nunmber of pcibios.X variables into the environment to report
what the PCI IDENTIFY command returned.

Also implmenet a new command line primitive (pci-device-count), but don't
include it by default just yet, since it depends on the recently added
words and any errors here can render a system unbootable.

This is intended to allow the boot loader to do special things based
on the hardware it finds. This could be have special settings that are
optimized for the specific cards, or even loading special drivers. It
goes without saying that writing to pci config space should not be
done without a just cause and a sound mind.

Sponsored by: Netflix


271285 08-Sep-2014 ian

Add a 'ubenv import' command to import environment variables from the
u-boot env into the loader(8) env (which also gets them into the kernel
env). You can import selected variables or the whole environment. Each
u-boot var=value becomes uboot.var=value in the loader env. You can also
use 'ubenv show' to display uboot vars without importing them.


271186 06-Sep-2014 br

Add FPGA Manager driver. This driver allows to program FPGA core
from FreeBSD userspace running on ARM core.

Sponsored by: DARPA, AFRL


271124 04-Sep-2014 ian

Stop setting the iomux device status to disabled, now that we have a driver.


271093 04-Sep-2014 br

Add initial support for Altera SOCFPGA (heterogeneous ARM/FPGA) SoC family.
Include board configuration for Terasic SoCKit (Altera Cyclone V).

Sponsored by: DARPA, AFRL


271054 03-Sep-2014 ian

When built with FDT support, add /boot/dtb to the list of search directories.


270971 02-Sep-2014 imp

The proper compatibility string for the AHCI device is
allwinner,sun4i-ahci, so use that instead of the older string which
had become FreeBSD specific.


270521 25-Aug-2014 ae

Since the size of GPT entry may differ from the sizeof(struct gpt_ent),
use the size from GPT header to iterate entries.

Suggested by: marcel@
MFC after: 1 week


270445 24-Aug-2014 ae

The size of the GPT table can not be less than one sector.

Reported by: rodrigc@
MFC after: 1 week


270168 19-Aug-2014 bdrewery

Revert r267233 for now. PIE support needs to be reworked.

1. 50+% of NO_PIE use is fixed by adding -fPIC to INTERNALLIB and other
build-only utility libraries.
2. Another 40% is fixed by generating _pic.a variants of various libraries.
3. Some of the NO_PIE use is a bit absurd as it is disabling PIE (and ASLR)
where it never would work anyhow, such as csu or loader. This suggests
there may be better ways of adding support to the tree. Many of these
cases can be fixed such that -fPIE will work but there is really no
reason to have it in those cases.
4. Some of the uses are working around hacks done to some Makefiles that are
really building libraries but have been using bsd.prog.mk because the code
is cleaner. Had they been using bsd.lib.mk then NO_PIE would not have
been needed.

We likely do want to enable PIE by default (opt-out) for non-tree consumers
(such as ports). For in-tree though we probably want to only enable PIE
(opt-in) for common attack targets such as remote service daemons and setuid
utilities. This is also a great performance compromise since ASLR is expected
to reduce performance. As such it does not make sense to enable it in all
utilities such as ls(1) that have little benefit to having it enabled.

Reported by: kib


270161 19-Aug-2014 imp

New DTS files to suppport the SAM9260EK eval board. Derived, in part,
from the SAM9G20EK dts files (so that file is GPL'd).


269741 08-Aug-2014 sbruno

Quiesce warning about discarding a const qualifier in assignement.

Phabric: https://phabric.freebsd.org/D445
Reviewed by: neel


269621 06-Aug-2014 marcel

Optionally include the install command as found on Juniper products
like EX and SRX. The install command uses pkgfs to extract a kernel,
zero or more modules and a root file system from the specified package
and boots the kernel. The name of the kernel, the list of modules and
the name of the root file system can be specified by putting a
file called "metatags in the package.

The package to use is given by an URL. The schemes supported are
tftp and file. For the file scheme, the disk is currently hardcoded
but that should really look for the package on all devices and
partititions.

Obtained from: Juniper Networks, Inc.


269618 06-Aug-2014 marcel

Rename command_unload() to unload() and re-implement command_unload()
in terms of unload() This allows unloading all files by the loader
itself.

Obtained from: Juniper Networks, Inc.


269616 06-Aug-2014 marcel

In command_lsmod() prevent overrunning lbuf due to long path
names. Call pager_output() separately for the module name.

Obtained from: Juniper Networks, Inc.


269614 05-Aug-2014 marcel

In file_loadraw() print the name of the file as well as its size
so that we know what file is being loaded and how big the file
is once complete. This has ELF modules and disk images emit the
same output.


269567 05-Aug-2014 hselasky

Add new USB phone descriptor template for USB device side mode.

MFC after: 3 days


269541 04-Aug-2014 brooks

Merge from CheriBSD:

Make the sysinit tool a build tool rather than building in with
/usr/bin/cc and running it from OBJDIR. (It will be moved to usr.bin
once a manpage is written and a few style cleanups are done.)

Split the makefile bits for Hans' kernel shim layer into their own
includable kshim.mk.

Move USB support into a .mk file so loaders can include it.


269385 01-Aug-2014 br

Rename files: keep codename only to make it shorter.


269369 01-Aug-2014 br

Add support for Chromebook2 -- next-generation 8-core
(4 in operation), 4GB ram (3.5 usable) ARM machine.

Support covers device drivers for:
- Serial Peripheral Interface (SPI)
- Chrome Embedded Controller (EC) - SPI-based version
- XHCI and USB 3.0 dual-role device PHY

Also:
- Add support for Exynos5420 in Pad module
- Move power-related functions to separate driver --
Power Management Unit (PMU)
- Enable XHCI for Chromebook1

Special thanks to grehan@ for hardware, and to
hselasky@ for r269139.


269361 31-Jul-2014 marcel

Add pkgfs, a file system implementation for reading files out of a
compressed tarball, aka package. The file system assumes that the
files are layed-out in the same order as needed to allow for the
package to be streamed. As such, it does not read an entire package
into memory first.

Some properties of the file system:
o Files that start with '+' are silently skipped. These are found
in FreeBSD package files.
o Files smaller than or equal to 4KB will be cached in memory and
as such allow for some flexibility in accessing files out of
order.
o Files with the .tgz suffix are assumed to be (sub-)packages and
signal the end for a directory scan.

Obtained from: Juniper Networks, Inc.


269154 27-Jul-2014 marcel

1. Suppress output for the TFTP-based PXE loader, but leave it in
place for the NFS-based PXE loader. Information like rootpath
or rootip aren't that useful for TFTP and the gateway IP is
typically already printed by the firmware.
2. Only set boot.nfsroot.* environment variables for NFS. This
makes it possible for the OS to work either way by checking
for the presence or absence of environment variables.
3. Set boot.netif.server when using TFTP so that the OS can fetch
files as well. A typical use case for this is network-based
installations with the installation process implemented on
top of FreeBSD.
4. The pxelinux loader has a set of alternative names it tries
for configuration files. Make it easier to do something
similar in Forth by providing the IP address as a 32-bit hex
number in the pxeboot.ip variable and the MAC address with
dashes in the pxeboot.hwaddr environment variable.

Obtained from: Juniper Networks, Inc.


269153 27-Jul-2014 marcel

Give loaders more control over the Forth initialization process. In
particular, allow loaders to define the name of the RC script the
interpreter needs to use. Use this new-found control to have the
PXE loader (when compiled with TFTP support and not NFS support)
read from ${bootfile}.4th, where ${bootfile} is the name of the
file fetched by the PXE firmware.

The normal startup process involves reading the following files:
1. /boot/boot.4th
2. /boot/loader.rc or alternatively /boot/boot.conf

When these come from a FreeBSD-defined file system, this is all
good. But when we boot over the network, subdirectories and fixed
file names are often painful to administrators and there's really
no way for them to change the behaviour of the loader.

Obtained from: Juniper Networks, Inc.


269114 26-Jul-2014 sjg

Reviewed by: imp

LDFLAGS is supposed to be given to CC not LD.
Define _LDFLAGS as a filtered version of LDFLAGS safe to give to LD


269113 26-Jul-2014 ian

Enable at91 systems to boot from high capacity SD cards.

This also fixes a few minor violations of the SD protocol, such as running
the bus at high speed during the card identification sequence.

The sdcard_init() routine now probes for SDHC cards so that later read
requests can make needed adjustments between block and byte offsets based
on card type.

There is a new MCI_readblocks() function that takes block number and block
count parameters instead of byte-offset values. Using this routine, boot
loader code can load a kernel from any location on an SDHC or standard SD.

The old MCI_read() interface remains unchanged so that existing customized
boot loader code will still keep working without changes. Using this
routine, boot loaders can load a kernel from anywhere in the first 4GB of
an SDHC card (or of course any location on a standard SD card).

A new sdcard_use4wire() routine allows boot loaders to request 4-bit
transfers; it should be called after sdcard_init(). The sdcard_init()
routine no longer assumes the hardware is 4-wire capable and by default
sets things up for 1-bit transfers. (4-wire mode is unreliable on
at91rm9200, works on later SoCs.)

PR: 155894
Submitted by: me. years ago.


269112 26-Jul-2014 ian

The 'flags' variable is conflicting with some inline code in a header file
("variable flags shadows a global..."), just rename this variable to
wish away the problem.


269111 26-Jul-2014 ian

Eliminate "no previous prototype for main" warnings.


269110 26-Jul-2014 ian

Silence a clang warning about a while loop with an empty body.


269036 23-Jul-2014 sbruno

Delete the entire cleandepend/cleanmachine target thing now that its been
cleared out in r269029

Reviewed by: emaste@freebsd.org


269030 23-Jul-2014 sbruno

Add .NOPATH to the machine target so that builds in sys/boot work and don't
error out building zfs loader.

Submitted by: sjg@freebsd.org


269029 23-Jul-2014 sbruno

Update so that clean target in sys/boot will delete the symlink
created for machine

Reviewed by: emaste


269017 23-Jul-2014 royger

don't set CR4 PSE bit on amd64

Setting PSE together with PAE or in long mode just makes the PSE bit
completely ignored, so don't set it.

Sponsored by: Citrix Systems R&D
Reviewed by: kib


268978 22-Jul-2014 sbruno

copyin/copyout should return 0 if they are truly emulating copyin/copyout behavior.

remove stray %s in printf

rewrite printf to display 64bit type without warning.


268977 22-Jul-2014 br

Enable Freescale i.MX I2C driver for i.MX6.


268975 22-Jul-2014 sbruno

Remove boot1.efi during clean target.


268974 22-Jul-2014 sbruno

Supress clang warning for FreeBSD printf %b and %D formats

MFC after: 2 weeks


268838 18-Jul-2014 br

Add support for Toradex Apalis i.MX6 development board.

Sponsored by: Toradex AG


268836 18-Jul-2014 br

Fix typo.


268834 18-Jul-2014 br

o Enable GPIO device driver for i.MX6.
It was originally written for i.MX5 and compatible with newer chip.
o Extend device tree information
o style(9) fixes

Discussed with: ian


268633 14-Jul-2014 ian

Fix the Zedboard/Zynq ethernet driver to handle media speed changes so
that it can connect to switches at speeds other than 1gb.

This requires changing the reference clock speed. Since we still don't
have a general clock API that lets a SoC-independant driver manipulate its
own clocks, this change includes a weak reference to a routine named
cgem_set_ref_clk(). The default implementation is a no-op; SoC-specific
code can provide an implementation that actually changes the speed.

Submitted by: Thomas Skibo <ThomasSkibo@sbcglobal.net>


268476 10-Jul-2014 imp

Compile boot2 with clang on pc98.


268475 10-Jul-2014 imp

Make SERIAL support optional again. Enable it for i386 because a huge
percentage of machines has a 16550. Disable it for pc98 since only a
tiny fraction of them have one. These changes save 293 bytes when
building with clang, but preserves the ability to build with serial if
you really want. We now have 92 bytes free (412 with the in-tree gcc).


268474 10-Jul-2014 imp

Merge the clang support from i386. Don't move to clang yet.


268351 07-Jul-2014 marcel

Remove ia64.

This includes:
o All directories named *ia64*
o All files named *ia64*
o All ia64-specific code guarded by __ia64__
o All ia64-specific makefile logic
o Mention of ia64 in comments and documentation

This excludes:
o Everything under contrib/
o Everything under crypto/
o sys/xen/interface
o sys/sys/elf_common.h

Discussed at: BSDcan


268254 04-Jul-2014 jmg

add a hit that you can enable this by default if you want... necessary
if you want the keyboard break to work early in boot..

MFC after: 1 week


268227 03-Jul-2014 emaste

Display efi framebuffer dimensions on boot

The EFI framebuffer produces corrupted output on certain systems. For
now display the framebuffer parameters (address, dimensions, etc.) on
boot to aid in tracking down these issues.

Sponsored by: The FreeBSD Foundation


268075 01-Jul-2014 delphij

MFV r267565:

4757 ZFS embedded-data block pointers ("zero block compression")
4913 zfs release should not be subject to space checks

MFC after: 2 weeks


267293 09-Jun-2014 joel

mdoc: fix AUTHORS section.


267233 08-Jun-2014 bdrewery

In preparation for ASLR [1] support add WITH_PIE to support building with -fPIE.

This is currently an opt-in build flag. Once ASLR support is ready and stable
it should changed to opt-out and be enabled by default along with ASLR.

Each application Makefile uses opt-out to ensure that ASLR will be enabled by
default in new directories when the system is compiled with PIE/ASLR. [2]

Mark known build failures as NO_PIE for now.

The only known runtime failure was rtld.

[1] http://www.bsdcan.org/2014/schedule/events/452.en.html
Submitted by: Shawn Webb <lattera@gmail.com>
Discussed between: des@ and Shawn Webb [2]


267202 07-Jun-2014 rpaulo

Mov p2041rdb.dts, p3041ds.dts, and p5020ds.dts to the powerpc directory.


267199 07-Jun-2014 rpaulo

Fix the script to run make_dtb.sh instead of just dtc.


267197 07-Jun-2014 rpaulo

Add Makefiles to automatically test all the DTS files.

There are several broken DTS files right now in the arm directory.


267183 06-Jun-2014 hselasky

Compilation fixes.


267021 03-Jun-2014 loos

FreeBSD, historically, has always used 8-bit addresses for i2c devices
(7-bit device address << 1), always leaving the room for the read/write bit.

This commit convert ti_i2c and revert r259127 on bcm2835_bsc to make them
compatible with 8-bit addresses. Previous to this commit an i2c device
would have different addresses depending on the controller it was attached
to (by example, when compared to any iicbb(4) based i2c controller), which
was a pretty annoying behavior.

Also, update the PMIC i2c address on beaglebone* DTS files to match the new
address scheme.

Now the userland utilities need to do the correct slave address shifting
(but it is going to work with any i2c controller on the system).

Discussed with: ian
MFC after: 2 weeks


266943 01-Jun-2014 br

Add support for Exynos 5420 Octa - 8-core
heterogeneous (big.LITTLE) ARM machine
(4 x Cortex-A15 @ 1.8Ghz, 4 x Cortex-A7 @ 1Ghz)

Add configuration for Arndale Octa development board


266938 01-Jun-2014 rodrigc

Allow customization of the brand displayed in the boot menu.
If the user specifies in /boot/loader.conf:

loader_brand="mycustom-brand"

Then "mycustom-brand" will be executed instead of "fbsd-logo".

Submitted by: alfred
Obtained from: FreeNAS


266894 30-May-2014 hselasky

Use own memory pool of 128K until further, hence that works the best.

Sponsored by: DARPA, AFRL


266893 30-May-2014 hselasky

Add optional support for USB to BERI loader. Fix the linker script so
that the garbage collection feature can be used when linking.

Sponsored by: DARPA, AFRL


266887 30-May-2014 hselasky

Resolve issue with resolving malloc() and free() functions at linking time.

Sponsored by: DARPA, AFRL


266886 30-May-2014 hselasky

Export structure(s) properly.

Sponsored by: DARPA, AFRL


266885 30-May-2014 hselasky

Fix delay() function in the BERI loader code.

Reviewed by: brooks @
Sponsored by: DARPA, AFRL


266882 30-May-2014 hselasky

USB boot library improvements:
- Make the USB boot library more configurable.
- Resolve compile issues when cross building.
- Allow use of separate malloc.
- Allow use of separate endian macros.

Sponsored by: DARPA, AFRL


266881 30-May-2014 hselasky

Add support for USB mass storage to libusbboot.

Sponsored by: DARPA, AFRL


266875 30-May-2014 br

Reset HSIC hub during EHCI initialization. This makes devices connected
to external USB ports available to the system.

Submitted by: Maxim Ignatenko <gelraen.ua@gmail.com>


266872 30-May-2014 br

o Make keyboard-related properties to be compatible with vendor standard
o Allow setting keymap in FDT, use hardcoded one by default
o Represent fallback keymap as a list rather than directly usable M*N array

Submitted by: Maxim Ignatenko <gelraen.ua@gmail.com>


266871 30-May-2014 ganbold

Add common kernel config file for Rockchip RK3188 systems by splitting
current RADXA config. Radxa Rock (RR) boards have few types such as
RR (full version), RR Lite and some variants of RR engineering samples.
Add kernel config and FDT file for RR Lite board.

Approved by: stas (mentor)


266832 29-May-2014 hselasky

Hook the ISP/SAF1761 driver into MIPS kernel builds.
- Update FDT file for BERI DE4 boards.
- Add needed kernel configuration keywords.
- Rename module to saf1761otg so that the device unit number does not
interfere with the hardware ID in dmesg.

Sponsored by: DARPA, AFRL


266785 28-May-2014 br

Describe I2C arbitrator device in DTS and use it for Chromebook Snow only.

Submitted by: Maxim Ignatenko <gelraen.ua@gmail.com>


266783 28-May-2014 br

o Add kernel configuration for HP Chromebook 11
o Use machine codename in filenames
o Add GEOM_PART_GPT kernel option

Submitted by: Maxim Ignatenko <gelraen.ua@gmail.com>


266515 21-May-2014 hselasky

"%p" formatting already includes "0x" prefix in printout.


266396 18-May-2014 hselasky

Fix build after recent DWC OTG changes.


266318 17-May-2014 andrew

Mark the i.MX51 and i.MX53 boards as compatible with the i.MX51 and i.MX53
respectively.

MFC after: 1 week


265766 09-May-2014 bz

Adjust the register layout to allow for 64bit registers in the
future for nf10bmac(4). Also, add support for and enable RX interrupts.

MFC after: 2 weeks


265624 08-May-2014 ganbold

Silence no interrupt-parent found message during boot.

Approved by: stas (mentor)


265420 06-May-2014 imp

Use src.opts.mk in preference to bsd.own.mk except where we need stuff
from the latter.


265400 05-May-2014 imp

Introduce CWARNFLAGS.${COMPILER_TYPE} and use that to simplify the
thicket of .if ${COMPILER_TYPE} == "clang" that controls
warnings. Also, use CFLAGS.clang in a couple places in preference to
having a similar construct that's related to the CWARNFLAGS changes.


265215 02-May-2014 eadler

lindev(4): finish the partial commit in r265212

lindev(4) was only used to provide /dev/full which is now a standard feature of
FreeBSD. /dev/full was never linux-specific and provides a generally useful
feature.

Document this in UPDATING and bump __FreeBSD_version. This will be documented
in the PH shortly.

Reported by: jkim


265208 02-May-2014 ian

Honor the max-frequency property if it appears in the fdt data.
Adjust the exynos and zedboard dts files to use max-frequency (the
documented standard property) instead of clock-frequency.

Submitted by: Thomas Skibo <ThomasSkibo@sbcglobal.net>


265165 01-May-2014 grehan

Provide an alias for the userboot console and name it 'comconsole'.
This allows existing loader.conf files that set "console=comconsole"
to work without failing. No functional difference otherwise.

Reported by: Michael Dexter, pfSense install.
Reviewed by: neel
MFC after: 3 weeks


265057 28-Apr-2014 nwhitehorn

Turn off various fancy instruction sets, as well as deduplicate some options.
This makes the EFI loader build work with CPUTYPE=native in make.conf on
my Core i5.


265038 28-Apr-2014 ganbold

Move common device tree informations to separate dtsi files for A10 and A20 SoC.
Change cubieboard1 and cubieboard2 dts files accordingly.

Approved by: stas (mentor)


265028 27-Apr-2014 dteske

Disable the beastie menu for EFI console which doesn't support ANSI codes
(so things like `at-xy', `clear', and other commands don't work making it
impossible to generate a living menu).

Reviewed by: nwhitehorn, emaste


265013 27-Apr-2014 loos

Revert r258678. Make the led gpio-specifier match again the #gpio-cells
settings from the GPIO controller, which i had broken in r258678. Restore
the active-low flag.


264993 27-Apr-2014 nwhitehorn

Revert to FAT12. This file system is apparently too small for FAT32, even
if the old (pre r264889) newfs_msdos allowed it. And FAT12 seems to work
perfectly well.


264980 26-Apr-2014 nwhitehorn

Apparently this is supposed to be FAT32, not FAT12.


264975 26-Apr-2014 nwhitehorn

Add generation of an EFI filesystem to hold boot1.efi. This is a near-exact
copy of the code from boot1.chrp again.

The resulting image is installed to /boot/boot1.efifat. If dd'ed to an 800K
"efi" partition, it should result in a bootable system.


264928 25-Apr-2014 imp

Spell NO_PROFILE= as MK_PROFILE=no.


264925 25-Apr-2014 imp

Eliminate last vestigies of NO_MAN= in the tree. Also, remove
ineffectual NOMAN= lines. These don't change the build at all.


264601 17-Apr-2014 bz

Add the initial version of if_nf10bmac(4), a driver to support an
NetFPGA-10G Embedded CPU Ethernet Core.

The current version operates on a simple PIO based interface connected
to a NetFPGA-10G port.

To avoid confusion: this driver operates on a CPU running on the FPGA,
e.g. BERI/mips, and is not suited for the PCI host interface.

MFC after: 1 week
Relnotes: yes
Sponsored by: DARPA/AFRL


264482 14-Apr-2014 brueffer

Re-indent break statement.

MFC after: 1 week


264428 13-Apr-2014 rpaulo

Improve the i.MX53 / Digi DTS:

* Fix the IPU address.
* Fix the PATA definition.
* Add another I2C.
* Add more UARTs.
* Add SATA.


264414 13-Apr-2014 nwhitehorn

Apparently some of the i386 boot blocks are so close to full that adding
single lines to ufsread.c spills them over. Duplicate a whole bunch of
code to get file sizes into boot1.efi/boot1.c rather than modifying
ufsread.c.


264404 13-Apr-2014 nwhitehorn

Add my copyright here. Most of this is unmodified from the original sparc64
version, but at least some indication of changes that postdate the actual
invention of EFI is probably a good idea.


264403 13-Apr-2014 nwhitehorn

Fix buildworld. I had some local bits in my build tree that caused this
to work by accident.


264400 13-Apr-2014 imp

NO_MAN= has been deprecated in favor of MAN= for some time, go ahead
and finish the job. ncurses is now the only Makefile in the tree that
uses it since it wasn't a simple mechanical change, and will be
addressed in a future commit.


264391 13-Apr-2014 nwhitehorn

Add a simple EFI stub loader. This is a quick and dirty of boot1.chrp from
the PowerPC port with all the Open Firmware bits removed and replaced by
their EFI counterparts. On the whole, I think I prefer Open Firmware.

This code is supposed to be an immutable shim that sits on the EFI system
partition, loads /boot/loader.efi from UFS and tells the real loader what
disk/partition to look at. It finds the UFS root partition by the somewhat
braindead approach of picking the first UFS partition it can find. Better
approaches are called for, but this works for now. This shim loader will
also be useful for secure boot in the future, which will require some
rearchitecture.


264319 10-Apr-2014 emaste

Fix EFI loader object tree creation on 9.x build hosts

Previously ${COMPILER_TYPE} was checked in sys/boot/amd64, and the efi
subdirectory was skipped altogether for gcc (since GCC does not support
a required attribute). However, during the early buildworld stages
${COMPILER_TYPE} is the existing system compiler (i.e., gcc on 9.x build
hosts), not the compiler that will eventually be used. This caused
"make obj" to skip the efi subdirectory. In later build stages
${COMPILER_TYPE} is "clang", and then the efi loader would attempt to
build in the source directory.

Sponsored by: The FreeBSD Foundation


264268 08-Apr-2014 emaste

(Re)connect sys/boot/amd64 to the build

Sponsored by: The FreeBSD Foundation


264263 08-Apr-2014 emaste

Add explicit casts to quiet warnings in libefi

Sponsored by: The FreeBSD Foundation


264262 08-Apr-2014 emaste

Fix printf args for 64-bit archs

Sponsored by: The FreeBSD Foundation


264261 08-Apr-2014 emaste

Correct a variable's type for 64-bit Ficl

FICL_INT is long.


264260 08-Apr-2014 emaste

Revert r264132, disconnecting sys/boot/amd64 for now

Some 64-bit Ficl warnings broke tinderbox builds.


264251 08-Apr-2014 rpaulo

Updates to i.MX53:

* Define support for the SDHCI driver, although it doesn't work yet
* Fix the memory mappings for IPU [1]

Reviewed by: ray [1]


264230 07-Apr-2014 imp

These were bogusly placed in the arm directory. Move them to their
proper location in powerpc directory.


264208 07-Apr-2014 emaste

Do not build the amd64 UEFI loader with GCC

The UEFI loader causes buildworld to fail when building with (in-tree)
GCC, due to a typedef redefinition. As it happens the in-tree GCC
cannot successfully build the UEFI loader anyhow, as it does not support
__attribute__((ms_abi)). Thus, just avoid trying to build it with GCC, rather than disconnecting it from the build until the underlying issue
is fixed.

Sponsored by: The FreeBSD Foundation


264206 06-Apr-2014 rpaulo

Fix the memory region. This board has two memory regions.


264204 06-Apr-2014 ian

Define the full 1024M of ram on the imx53 QSB board.


264199 06-Apr-2014 imp

Fix the mips64el build: mips64el should use the mips64 directory, not the mips64el directory.


264132 04-Apr-2014 emaste

Connect sys/boot/amd64 to the build

Sponsored by: The FreeBSD Foundation


264115 04-Apr-2014 emaste

Fix printf format mismatches

Sponsored by: The FreeBSD Foundation


264096 04-Apr-2014 ian

Various fixes to the ti_sdhci driver, mostly to make it work on Pandaboard.

- Don't allow high-speed mode on OMAP4 due to hardware erratum.
- Check the proper bit in the status register when waiting for the
controller to come out of reset.
- Add handling for the "non-removable" fdt property by always returning
"card is present" status.
- Add the non-removable property for the MMC card on a Beaglebone Black.
- Add the non-removable property for Pandaboard as a workaround.

For Pandaboard the card detect pin is handled by the twl6030 fpga device
which gets an interrupt on pin change and then has to query the fpga
for the actual status. We don't have code to do that yet.

Submitted by: Svatopluk Kraus <onwahe@gmail.com>


264095 04-Apr-2014 emaste

Support UEFI booting on amd64 via loader.efi

This is largely the work from the projects/uefi branch, with some
additional refinements. This is derived from (and replaces) the
original i386 efi implementation; i386 support will be restored later.

Specific revisions of note from projects/uefi:

r247380:

Adjust our load device when we boot from CD under UEFI.

The process for booting from a CD under UEFI involves adding a FAT
filesystem containing your loader code as an El Torito boot image.
When UEFI detects this, it provides a block IO instance that points at
the FAT filesystem as a child of the device that represents the CD
itself. The problem being that the CD device is flagged as a "raw
device" while the boot image is flagged as a "logical partition". The
existing EFI partition code only looks for logical partitions and so
the CD filesystem was rendered invisible.

To fix this, check the type of each block IO device. If it's found to
be a CD, and thus an El Torito boot image, look up its parent device
and add that instead so that the loader will then load the kernel from
the CD filesystem. This is done by using the handle for the boot
filesystem as an alias.

Something similar to this will be required for booting from other
media as well as the loader will live in the EFI system partition, not
on the partition containing the kernel.

r246231:

Add necessary code to hand off from loader to an amd64 kernel.

r246335:

Grab the EFI memory map and store it as module metadata on the kernel.

This is the same approach used to provide the BIOS SMAP to the kernel.

r246336:

Pass the ACPI table metadata via hints so the kernel ACPI code can
find them.

r246608:

Rework copy routines to ensure we always use memory allocated via EFI.

The previous code assumed it could copy wherever it liked. This is not
the case. The approach taken by this code is pretty ham-fisted in that
it simply allocates a large (32MB) buffer area and stages into that,
then copies the whole area into place when it's time to execute. A more
elegant solution could be used but this works for now.

r247214:

Fix a number of problems preventing proper handover to the kernel.

There were two issues at play here. Firstly, there was nothing
preventing UEFI from placing the loader code above 1GB in RAM. This
meant that when we switched in the page tables the kernel expects to
be running on, we are suddenly unmapped and things no longer work. We
solve this by making our trampoline code not dependent on being at any
given position and simply copying it to a "safe" location before
calling it.

Secondly, UEFI could allocate our stack wherever it wants. As it
happened on my PC, that was right where I was copying the kernel to.
This did not cause happiness. The solution to this was to also switch
to a temporary stack in a safe location before performing the final
copy of the loaded kernel.

r246231:

Add necessary code to hand off from loader to an amd64 kernel.

r246335:

Grab the EFI memory map and store it as module metadata on the kernel.

This is the same approach used to provide the BIOS SMAP to the kernel.

r246336:

Pass the ACPI table metadata via hints so the kernel ACPI code can
find them.

r246608:

Rework copy routines to ensure we always use memory allocated via EFI.

The previous code assumed it could copy wherever it liked. This is not
the case. The approach taken by this code is pretty ham-fisted in that
it simply allocates a large (32MB) buffer area and stages into that,
then copies the whole area into place when it's time to execute. A more
elegant solution could be used but this works for now.

r247214:

Fix a number of problems preventing proper handover to the kernel.

There were two issues at play here. Firstly, there was nothing
preventing UEFI from placing the loader code above 1GB in RAM. This
meant that when we switched in the page tables the kernel expects to
be running on, we are suddenly unmapped and things no longer work. We
solve this by making our trampoline code not dependent on being at any
given position and simply copying it to a "safe" location before
calling it.

Secondly, UEFI could allocate our stack wherever it wants. As it
happened on my PC, that was right where I was copying the kernel to.
This did not cause happiness. The solution to this was to also switch
to a temporary stack in a safe location before performing the final
copy of the loaded kernel.

r247216:

Use the UEFI Graphics Output Protocol to get the parameters of the
framebuffer.

Sponsored by: The FreeBSD Foundation


264092 03-Apr-2014 emaste

Add -fPIC for amd64

Sponsored by: The FreeBSD Foundation


264088 03-Apr-2014 emaste

Merge efilib changes from projects/uefi

r247216:

Add the ability for a device to have an "alias" handle.

r247379:

Fix network device registration.

r247380:

Adjust our load device when we boot from CD under UEFI.

The process for booting from a CD under UEFI involves adding a FAT
filesystem containing your loader code as an El Torito boot image.
When UEFI detects this, it provides a block IO instance that points
at the FAT filesystem as a child of the device that represents the CD
itself. The problem being that the CD device is flagged as a "raw
device" while the boot image is flagged as a "logical partition".
The existing EFI partition code only looks for logical partitions and
so the CD filesystem was rendered invisible.

To fix this, check the type of each block IO device. If it's found to
be a CD, and thus an El Torito boot image, look up its parent device
and add that instead so that the loader will then load the kernel from
the CD filesystem. This is done by using the handle for the boot
filesystem as an alias.

Something similar to this will be required for booting from other media
as well as the loader will live in the EFI system partition, not on the
partition containing the kernel.

r247381:

Remove a scatalogical debug printf that crept in.


264087 03-Apr-2014 emaste

Build boot/ficl as 64-bit library on amd64

The 32-bit bootloaders on amd64 now use the 32-bit version in ficl32,
as is done with libstand32. The native 64-bit ficl will be used by the
upcoming UEFI loader.

Sponsored by: The FreeBSD Foundation


264078 03-Apr-2014 emaste

Put each source file on a separate line

This will simplify rebasing the amd64 UEFI patch set.

Sponsored by: The FreeBSD Foundation


264065 03-Apr-2014 br

- Setup both secure and non-secure timer IRQs.
We don't know our ARM security state, so one of them will operate.
- Don't set frequency, since it's unpossible in non-secure state.
Only rely on DTS clock-frequency value or get clock from timer.

Discussed with: ian, cognet


264056 02-Apr-2014 ian

Switch imx6 to using the mpcore per-cpu event timers, but continue to use
the GPT timer, which is fixed-frequency, as a timecounter.


263968 31-Mar-2014 emaste

Merge r246607 by benno from projects/uefi

Use EFI types for EFI values (silences warnings).

EFI UINTN is actually a 64-bit type on 64-bit processors.

Sponsored by: The FreeBSD Foundation


263936 30-Mar-2014 br

Add support for keyboard used in Samsung Chromebook (ARM machine)

Support covers device drivers for:
- Interrupt Combiner
- gpio/pad, External Interrupts Controller (pad)
- I2C Interface
- Chrome Embedded Controller
- Chrome Keyboard

Also:
- Use new gpio dev class in EHCI driver
- Expand device tree information


263711 25-Mar-2014 ganbold

Switch to my freebsd.org emal address in copyright.

Approved by: stas (mentor)


263693 24-Mar-2014 loos

Adds the ADC driver for TI AM3xxx SoC family.

The ADC has a 12bit resolution and its raw output can be read via sysctl(8)
interface.

The driver allows the setup of ADC clock, samples average and open delay
(the number of clock cycles to wait before start the conversion).

The TSC_ADC module is set in the general purpose mode (no touchscreen
support).

Tested on Beaglebone-black.

Written based on AM335x TRM.

Reviewed by: rpaulo
Approved by: adrian (mentor)
Tested by: me, Brian J. McGovern, Sulev-Madis Silber (ketas)


263675 23-Mar-2014 bz

For the moment also disable interrupts on the altera-jtag-uart imitation
and force polling mode.


263632 22-Mar-2014 bz

For BERI on NetFPGA assume HZ=100 by default.

Remove the uart support in favour of a "jtag-uart" interface imitation
providing a much simpler interface, directly exported to the host,
allowing the toolchain to be shared with BERI on Altera. [1]

Submitted by: Jong Hun HAN (jong.han cl.cam.ac.uk) [1]
MFC after: 2 weeks


263468 21-Mar-2014 ae

When loader(8) inspects MBR, it chooses GPT as main partition table,
when MBR contains only PMBR entry or it is bootcamp-compatible.
If MBR has PMBR entry and some other, the loader rejects it.

Make these checks to be less strict. If loader decided that PMBR
isn't suitable for GPT, it will use MBR.

Reported by: Paul Thornton
Tested by: Paul Thornton
MFC after: 1 week


263427 20-Mar-2014 br

Add support for Samsung Chromebook (ARM Cortex A15 machine).


263425 20-Mar-2014 br

- Add display-related and clk devices to the tree
- Prevent resources intersection with EHCI driver


263267 17-Mar-2014 ian

Cosmetic changes to printed output, mostly related to probing devices...

- Display slice and partition as <auto> instead of 0 or -1 when they're
not set to specific values (the paritition=-1 was confusing folks).
- When loaderdev isn't set in the u-boot environment, say so rather
than displaying unknown device ''.
- Print the loader(8) ident/version info earlier, so that all device-
related info appears together afterwards.

The one change here that isn't purely cosmetic is to call setheap()
earlier. The comment says "Initialise heap as early as possible", now
that's more accurate. It shouldn't make any functional difference, but
may be safer if future changes lead to trying to allocate memory earlier.


263265 17-Mar-2014 ian

Fix the paren nesting so that the network device is probed if the load
device type is either network or wildcard.


263124 14-Mar-2014 ian

Fix an uninitialized variable error I perpetrated when splitting some
code into a separate function. Pass the missing value from main() to
the probe_disks() function.


263117 13-Mar-2014 emaste

Connect 64-bit boot ficl to the build

It is not yet used, but this will ensure it doesn't get broken.

Sponsored by: The FreeBSD Foundation


263115 13-Mar-2014 emaste

Add amd64 EFI headers

Sponsored by: The FreeBSD Foundation


263052 11-Mar-2014 ian

Enhance the mechanism that lets you configure the ubldr boot device by
setting the u-boot environment variable loaderdev=. It used to accept only
'disk' or 'net'. Now it allows specification of unit, slice, and partition
as well. In addition to the generic 'disk' it also accepts specific
storage device types such as 'mmc' or 'sata'.

If there isn't a loaderdev env var, the historical behavior is maintained.
It will use the first storage device it finds, or a network device if
no working storage device exists.

99% of the work on this was done by Patrick Kelsey, but I made some
changes, so if anything goes wrong, blame me.

Submitted by: Patrick Kelsey <kelsey@ieee.org>


263005 11-Mar-2014 royger

howto_names: unify declaration

Approved by: gibbs
Sponsored by: Citrix Systems R&D

boot/i386/efi/bootinfo.c:
boot/i386/libi386/bootinfo.c:
boot/ia64/common/bootinfo.c:
boot/powerpc/ofw/metadata.c:
boot/powerpc/ps3/metadata.c:
boot/sparc64/loader/metadata.c:
boot/uboot/common/metadata.c:
boot/userboot/userboot/bootinfo.c:
i386/xen/xen_machdep.c:
- Include sys/boot.h
- Remove custom definition of howto_names.

sys/boot.h:
- Define howto_names.

x86/xen/pv.c:
- Include sys/boot.h


262918 08-Mar-2014 imp

Initial cut for DTS on the hl201 board.


262891 07-Mar-2014 br

- Export panel info to DTS
- Reset all the layers before setup first one
- Enable display


262885 07-Mar-2014 br

Add driver for Port control and interrupts (PORT).

PORT is responsible for external interrupts management,
so move IRQ lines from GPIO driver.


262736 04-Mar-2014 ian

Use an empty ranges statement for the bus, because all the children on the
bus have their register properties declared as full physical addresses,
not offsets from a base range for the bus.


262725 04-Mar-2014 imp

Fix syntax errors and warnings emitted by the GPL dtc.


262714 03-Mar-2014 ian

Add a missing semicolong, noticed by the gnu dt compiler.


262711 03-Mar-2014 ganbold

Add EMAC and SRAM controller entries to FDT.
Add EMAC device to kernel config files and
enable EMAC, SRAM drivers for build.

Approved by: stas (mentor)


262694 02-Mar-2014 ian

Include needed header. I don't know why clang didn't complain about this
but gcc sure did.


262682 02-Mar-2014 gonzo

- Fix BBB's dts compilation with GNU dtc


262666 01-Mar-2014 ian

If we can't find the u-boot api signature, exit with an error status that
includes "badab1"; u-boot displays the status in hex, so this may help
give some clue about why ubldr isn't working (more than -1 does anyway).


262664 01-Mar-2014 ian

Prevent fdt data loaded from a file from overwriting the kernel environment,
by having uboot_autoload() do the fdt setup (which may load a file) rather
than waiting until we're actually in the process of launching the kernel.

As part of making this happen...
- Define LOADER_FDT_SUPPORT on the uboot/lib compile command line when
MK_FDT is set.
- Make fdt_setup_fdtb() public.
- Declare public fdt_whatever() functions in a header instead of using
scattered extern decls in .c files.


262627 28-Feb-2014 imp

Fix syntax errors (missing ;) that bsdl dtc was tolerant of, but gpl
dtc isn't.


262614 28-Feb-2014 imp

Integrate device-tree upstream files into the build process:
(1) Invoke cpp to bring in files via #include (although the old
/include/ stuff is supported still).
(2) bring in files from either vendor tree or freebsd-custom files
when building.
(3) move all dts* files from sys/boot/fdt/dts to
sys/boot/fdt/dts/${MACHINE} as appropriate.
(4) encode all the magic to do the build in sys/tools/fdt/make_dtb.sh
so that the different places in the tree use the exact same logic.
(5) switch back to gpl dtc by default. the bsdl one in the tree has
significant issues not easily addressed by those unfamiliar with
the code.


262613 28-Feb-2014 dim

Merge the projects/clang-sparc64 branch back to head. This brings in
several updates from the llvm and clang trunks to make the sparc64
backend fully functional.

Apart from one patch to sys/sparc64/include/pcpu.h which is still under
discussion, this makes it possible to let clang fully build world and
kernel for sparc64.

Any assistance with testing this on actual sparc64 hardware is greatly
appreciated, as there will unavoidably be bugs left.

Many thanks go to Roman Divacky for his upstream work on getting the
sparc64 backend into shape.

MFC after: 1 month


262562 27-Feb-2014 loos

Add geom_uncompress to the list of available geom modules on loader.conf.

Approved by: adrian (mentor)


262523 26-Feb-2014 grehan

Change the MK_ZFS != "no" case slightly to avoid a name
clash with LIBZFS in bsd.lib.mk

Submitted by: Max N Boyarov zotrix at bsd dot by
OK'd by: sbruno


262495 25-Feb-2014 sbruno

Slightly better revision of teaching userboot how to respect MK_CDDL

Reviewed by: grehan


262487 25-Feb-2014 sbruno

Teach userboot to comply with WITHOUT_CDDL/WITHOUT_ZFS

Apparently, LIBZFS is set to a non-empty string when WITHOUT_CDDL/WITHOUT_ZFS
are set, I think this is a bug, but work around this feature for now.

Reviewed by: grehan


262483 25-Feb-2014 br

- Pin configuration is a complete iomux register now and includes
drive strength, pull mode, mux mode, speed, etc.
- Add i2c devices to the tree
- Add IPG clock


262456 24-Feb-2014 br

Add support for Quartz Module.

Quartz is a tiny module utilized Freescale VF6xx
system-on-chip and development kit produced by
Device Solutions.

Quartz is available in a form of LGA (38x38x2mm)
or as a module with high-density connectors.

Sponsored by: Device Solutions


262453 24-Feb-2014 rwatson

Build FICL support into little-endian 64-bit MIPS boot-loader fragments;
while this won't actually be used for anything (yet), it doesn't hurt to
ensure it is exposed to the tinderbox.

Requested by: imp, jmallett
MFC after: 3 weeks


262452 24-Feb-2014 rwatson

Build 64-bit ELF support into little-endian 64-bit MIPS boot-loader
fragments; while this won't actually be used for anything (yet), it
doesn't hurt to ensure it is exposed to the tinderbox.

Requested by: imp, jmallett
MFC after: 3 weeks


262440 24-Feb-2014 loos

Enable the second and the third I2C controllers on Beaglebone-black.

The first I2C controller is only used to manage the on-board devices (PMIC
and HDMI framer) and its bus is not exposed on the expasion headers.

With this change the following pins on the P9 expansion headers are now
reserved as I2C pins:

Pin 17 - I2C1 SCL
Pin 18 - I2C1 SDA
Pin 19 - I2C2 SCL
Pin 20 - I2C2 SDA

The I2C2 is the bus that should be used to read the contents of cape
eeproms.

Approved by: adrian (mentor, implicit)


262406 23-Feb-2014 rwatson

Build the BERI boot loader on 64-bit MIPS (but not 32-bit MIPS). While
these binaries aren't immediately useful on other MIPSes, still build them
as part of mips64 world in order to expose them to tinderbox.

MFC after: 3 weeks
Sponsored by: DARPA, AFRL


262404 23-Feb-2014 rwatson

When building FDT on MIPS, use softfloat.

MFC after: 3 weeks
Sponsored by: DARPA, AFRL


262403 23-Feb-2014 rwatson

On mips64, built 64-bit ELF support.

MFC after: 3 weeks
Sponsored by: DARPA, AFRL


262402 23-Feb-2014 rwatson

Give mips64 its own ficl configuration that sizes pointers/etc suitably for
a 64-bit architecture, rather than trying to share the 32-bit MIPS ficl
configuration.

When building ficl on MIPS, don't conflate 32-bit and 64-bit ISAs -- unlike
x86, we don't want a 32-bit loader on a 64-bit CPU. Use quite conservative
code generation -- e.g., softfloat, no GOT, etc -- suitable for early boot.

MFC after: 3 weeks
Sponsored by: DARPA, AFRL


262347 22-Feb-2014 ian

Add a feature for automatically finding and loading a dtb file by name.
The name is taken from the u-boot env vars fdtfile or fdt_file. If the
name isn't fully-qualified a search is done in module_path locations.

The search order for a usable dtb in fdt_setup_fdtp() is now

- A dtb loaded with an explicit "load -t dtb" command.
- A dtb already loaded into memory somehow[*] and pointed to by fdt_to_load.
- A dtb in the memory pointed to by the u-boot env vars fdtaddr or fdt_addr.
- A file named by the u-boot env vars fdtfile or fdt_file.
- A static dtb compiled into the kernel.

* Presumably by some arch-specific command or code.


262345 22-Feb-2014 ian

Change file_loadraw() from static to public. Change the order of its
arguments from type,filename to filename,type to be consistant with other
public file_whatever() functions, and change it to return a pointer to
the preloaded_file struct describing the file. Adjust existing callers.


262340 22-Feb-2014 ian

Change fdt_setup_fdtp() from "guess then fail" to more probe-like behavior.

The old code basically said it was going to use some particular blob
without knowing whether it could successfully do so, then it would invoke
the function to do that and return its status. If it failed, you were
done, even if other blobs might be available. Now the code attempts to use
some particular blob and if that succeeds it says so and returns success,
otherwise it moves on to try another potential blob.

One specific problem this solves is when u-boot sets an fdtaddr variable
to point to some memory address, then doesn't actually load a blob at
that address. Now the header check will fail, and the code will move
on to the fallback dtb compiled into the kernel (if any).


262337 22-Feb-2014 ian

Allow the ubldr boot device to be choosen by a u-boot environment variable.

If a "loaderdev=<device>" env variable is set and the named device
exists, it is used. If the device doesn't exist, fall back to the
historic "probe" loop that prefers disk devices over network devices.

If the env var is not set, preserve the historic behavior of using the
first working disk device provided by u-boot, or a network device if no
functional disk device is found and a network device exists.

The old probe loop is reworked so that it checks all bootable devices
provided by u-boot rather than taking an early-out on the first device
found. This results in the cosmetic change of listing all potential boot
devices for the user, but the behavior of which device it chooses is the
same as it has always been.


262331 22-Feb-2014 grehan

ZFS boot support for bhyveload.

Modelled after the i386 zfsloader. However, with no
2nd stage zfsboot to search for a bootable dataset,
attempt a ZFS boot if there is more than one ZFS
dataset found during the disk probe.

sys/boot/userboot/zfs
- build the ZFS boot library

sys/boot/userboot/userboot/
conf.c
- Add the ZFS pool and filesystem tables
devicename.c
- correctly format ZFS devices
main.c
- increase the size of the libstand malloc pool
to account for the increased usage from ZFS buffers
- probe for a ZFS dataset, and if one is
found, attempt to boot from it.

usr.sbin/bhyveload/bhyveload.c
- allow multiple invocations of the '-d' option
to specify multiple disks e.g. a raidz set.
Up to 32 disks are supported.

Tested with various combinations of GPT, MBR, single
and multiple disks, RAID-Z, mirrors.

Reviewed by: neel
Discussed with: avg
Tested by: Michael Dexter and others
MFC after: 3 weeks


262327 22-Feb-2014 ian

Look for both fdtaddr and fdt_addr env var names. Grepping the u-boot
source shows that board vendors seem to be about evenly split on this.

This commit is a trivial change to note that while the previous change
was supposed to be whitespace only, this functional change also crept in.
The added lines were:

/* Board vendors use both fdtaddr and fdt_addr names. Grrrr. */

if (s == NULL)
s = ub_env_get("fdt_addr");


262326 22-Feb-2014 ian

Fix the strange 2-space indentation that appears only in this one function.


262280 21-Feb-2014 ian

Add basic cpu frequency control and temperature monitoring to imx6_anatop.

The temperature monitor device is enabled to sample the die temperature at
16hz. The temperature is published via sysctl. A callout routine at 10hz
monitors the temperature and throttles back the cpu if the temperature
goes over a user-settable throttle point (by default 10C less than the
critical high-point temperature for the chip). The hardware is supposed
to be able to deliver an interrupt when the temperature exceeds a settable
limit, but the interrupt never arrives so for now a callout does the job.

At attach time we read the maximum cpu frequency the chip is allowed to run
at and the cpu is set to run at that speed. It's reported at attach time.
A sysctl variable reports the current speed when queried.

New sysctl values:

dev.imx6_anatop.0.cpu_mhz: 984
dev.imx6_anatop.0.temperature: 37.9C
dev.imx6_anatop.0.throttle_temperature: 95.0C

Steven Lawrance did the initial heavy lifting on this, but I changed
enough stuff that I'm the one to blame if anything breaks.

Submitted by: Steven Lawrance <stl@koffein.net>


262242 20-Feb-2014 loos

Fix the boot on FDT-enabled systems after r261819.

While here, don't overwrite the error message on interactive use and add
the missing '\n' at end of error message for the non interactive use.

Tested by: ian, myself
Approved by: adrian (mentor, implicit)


262235 19-Feb-2014 rwatson

Temporarily unhook BERI boot loader from the build until 32-bit MIPS
properly excludes building our 64-bit only boot-loader adaptation.


262224 19-Feb-2014 rwatson

Do build boot-loader FDT code on MIPS.

MFC after: 3 weeks
Sponsored by: DARPA, AFRL


262198 18-Feb-2014 rwatson

Replace Apache-style license on two Makefiles with stock 2-clause BSD;
license, although the former is pretty safe, it wasn't intended to be
used in the version of MIPS boot2/loader upstreamed to FreeBSD.

MFC after: 3 weeks
Sponsored by: DARPA, AFRL


262197 18-Feb-2014 rwatson

Commit a first cut at ports of boot2 and loader to 64-bit MIPS, with a
particular interest in (and support for) SRI International and the
University of Cambridge's BERI FPGA soft-core processor. This includes
micro device drivers for the Altera JTAG UART console, memory-mapped
flash, and the Altera SD Card IP core in both boot2 and loader. boot2
can be written to the on-board Intel StrataFlash on the DE4 board, and
loader can be placed in StrataFlash or the SD Card.

Plenty of XXX comments, but works quite well locally in practice and I
am using it daily. Although I had originally ported the ARM version
of boot2, the current version is x86-derived as that proved more
feature-complete. As we don't currently use partitions on our flash
disks, support for that has been commented out relative to x86, but
would be easy to add back. FDT support has not yet been hooked up,
although some skeleton parts have been put in place for that.

This may well be a useful starting point for ports to other 32-bit and
64-bit MIPS-ISA systems.

This merge is synchronised to CheriBSD github commit
e41d74fd719525d4dd7a7ee499114679165eeaf6, but with some additions of
$FreeBSD.

MFC after: 3 weeks
Sponsored by: DARPA, AFRAL


261982 16-Feb-2014 br

Add driver for Synchronous Audio Interface (SAI).

SAI supports full-duplex serial interfaces with frame
synchronization such as I2S, AC97, TDM, and codec/DSP
interfaces.


261975 16-Feb-2014 brueffer

Retire the nve(4) driver; nfe(4) has been the default driver for NVIDIA
nForce MCP adapters for a long time.

Yays: jhb, remko, yongari
Nays: none on the current and stable lists


261938 15-Feb-2014 ian

Add a driver to provide access to imx6 on-chip one-time-programmble data.

Submitted by: Steven Lawrance <stl@koffein.net>


261846 13-Feb-2014 loos

Make the gpioled(4) work out of the box on BBB.

Add gpioled(4) to BEAGLEBONE kernel and add the description of the four
on-board leds of beaglebone-black to its DTS file.

Approved by: adrian (mentor, implicit)


261819 13-Feb-2014 ian

Validate the header of a new dtb before using it. Remove the comment
that says that should be done.


261818 13-Feb-2014 ian

Enable both sdcard slots, but not the sdio-based wifi that we don't yet
have a driver for.


261816 13-Feb-2014 ian

Add standard non-removable and cd-gpios properties to the usdhc devices.
That generates references to gpio devices, so uncomment them even though
there isn't a gpio driver to do anything with them yet.


261639 08-Feb-2014 br

Add drivers for:
- Enhanced Direct Memory Access Controller (eDMA)
- Direct Memory Access Multiplexer (DMAMUX)


261614 07-Feb-2014 emaste

Build a 32-bit libstand under sys/boot/ for ppc64

This change is equivalent to r261567 for i386/amd64.

Sponsored by: The FreeBSD Foundation


261603 07-Feb-2014 emaste

Don't force efi to a 32-bit build on amd64

Sponsored by: The FreeBSD Foundation


261567 06-Feb-2014 emaste

Build a 32-bit libstand under sys/boot/

A 32-bit libstand is needed on 64-bit platforms for use by various
bootloaders. Previously only the 32-bit version was built, installed as
/usr/lib/libstand.a.

A new 64-bit libstand consumer will arrive in the near future, so move
the bootloader-specific 32-bit version to sys/boot/libstand32/.

Explicitly link against this version in the 32-bit loaders.

Sponsored by: The FreeBSD Foundation


261522 05-Feb-2014 wblock

Describe the use of a freebsd-boot GPT partition, brought up by Scot
Hetzel <swhetzel@gmail.com> on the -doc mailing list.

Also modify the Author section to be clear that I wrote the man page,
not gptboot.

MFC after: 3 days


261520 05-Feb-2014 jhb

Drop the 3rd clause from all 3 clause BSD licenses where I am the sole
holder to convert them to 2 clause BSD licenses.

MFC after: 1 week


261517 05-Feb-2014 jhb

Similar to r130943 for cdboot.S, update the license on this file to a
stock 2-clause BSD license.

MFC after: 1 week


261516 05-Feb-2014 loos

Add the missing ')' at end of sentence. Reword it to use a more common
idiom.

Reviewed by: imp (on freebsd-embedded@)
Approved by: adrian (mentor, implicit)


261504 05-Feb-2014 jhb

Add support for FreeBSD/i386 guests under bhyve.
- Similar to the hack for bootinfo32.c in userboot, define
_MACHINE_ELF_WANT_32BIT in the load_elf32 file handlers in userboot.
This allows userboot to load 32-bit kernels and modules.
- Copy the SMAP generation code out of bootinfo64.c and into its own
file so it can be shared with bootinfo32.c to pass an SMAP to the i386
kernel.
- Use uint32_t instead of u_long when aligning module metadata in
bootinfo32.c in userboot, as otherwise the metadata used 64-bit
alignment which corrupted the layout.
- Populate the basemem and extmem members of the bootinfo struct passed
to 32-bit kernels.
- Fix the 32-bit stack in userboot to start at the top of the stack
instead of the bottom so that there is room to grow before the
kernel switches to its own stack.
- Push a fake return address onto the 32-bit stack in addition to the
arguments normally passed to exec() in the loader. This return
address is needed to convince recover_bootinfo() in the 32-bit
locore code that it is being invoked from a "new" boot block.
- Add a routine to libvmmapi to setup a 32-bit flat mode register state
including a GDT and TSS that is able to start the i386 kernel and
update bhyveload to use it when booting an i386 kernel.
- Use the guest register state to determine the CPU's current instruction
mode (32-bit vs 64-bit) and paging mode (flat, 32-bit, PAE, or long
mode) in the instruction emulation code. Update the gla2gpa() routine
used when fetching instructions to handle flat mode, 32-bit paging, and
PAE paging in addition to long mode paging. Don't look for a REX
prefix when the CPU is in 32-bit mode, and use the detected mode to
enable the existing 32-bit mode code when decoding the mod r/m byte.

Reviewed by: grehan, neel
MFC after: 1 month


261411 02-Feb-2014 br

Add support for Colibri VF50 Evaluation Board.

Colibri VF50 is a SODIMM200 Vybrid Family core module
and development board produced by Toradex AG.

Sponsored by: Machdep, Inc.


261406 02-Feb-2014 br

o Expand device tree information
o Export iomuxc (pins) configuration to DTS
o Allow devices to assign clocks in DTS


260949 20-Jan-2014 mav

Make comconsole options set before its activation to be remembered.

MFC after: 2 weeks
Sponsored by: iXsystems, Inc.


260447 08-Jan-2014 ganbold

Update dts files of Cubieboard1,2 to use 1GB memory.
Whilst there, fix cpu config register address for Cubieboard2.

Approved by: stas (mentor)


260334 05-Jan-2014 dim

Split the last gcc-specific flags off into CFLAGS.gcc. This also
removes the need to use -Qunused-arguments for clang throughout the
tree.

MFC after: 3 days


260333 05-Jan-2014 ian

Enable the cesa security/crypto device by providing the required property
in the dts source, and adding the right devices to the kernel config. Also
generally bring the kernel config into line with what we have for other
Marvell/Kirkwood systems (add lots of useful devices and options).

One particularly notable addition amongst the kernel config changes is
USB_HOST_ALIGN=32, which may help eliminate data corruption on USB drives.

PR: kern/181975 arm/162159


260235 03-Jan-2014 ian

Update the dockstar DTS to reflect just NAND flash (no SPI NOR flash, and
the LED specification was just misplaced). The rather odd memory mappings
that were in place used an undocumented attribute value (0x0f) that caused
problems with the system.

Submitted by: Markus Pfeiffer <markus.pfeiffer@morphism.de>


260150 01-Jan-2014 delphij

MFV r259170:

4370 avoid transmitting holes during zfs send

4371 DMU code clean up

illumos/illumos-gate@43466aae47bfcd2ad9bf501faec8e75c08095e4f

NOTE: Make sure the boot code is updated if a zpool upgrade is
done on boot zpool.

MFC after: 2 weeks


260095 30-Dec-2013 dim

For sys/boot/i386 and sys/boot/pc98, separate flags to be passed
directly to the linker (LD_FLAGS) from flags passed indirectly, via the
compiler driver (LDFLAGS).

This is because several Makefiles under sys/boot/i386 and sys/boot/pc98
use ${LD} directly to link, and the normal LDFLAGS value should not be
used in these cases.

MFC after: 3 days


259927 26-Dec-2013 dim

Fix pc98 build, by also forcing COMPILER_TYPE in sys/boot/pc98/boot2's
Makefile.

Pointy hat to: dim
MFC after: 3 days
X-MFC-With: r259730


259913 26-Dec-2013 dim

For libstand and sys/boot, split off gcc-only flags into CFLAGS.gcc.

MFC after: 3 days
X-MFC-With: r259730


259591 19-Dec-2013 marcel

Bump the loader version to 3.2 after various dosfs fixes (in particular).


259267 12-Dec-2013 bz

Add an FDT DTS and MDROOT kernel configuration for BERI on NetFPGA.

At this point we only support one CPU, the PIC, and a UART console.

Reviewed by: brooks
Sponsored by: DARPA, AFRL
MFC after: 5 days


259122 09-Dec-2013 ganbold

Add gpio config for usb1 in dts.
That way it gives power to other usb hub via gpio at boot time.

Reviewed by: stas@


258780 30-Nov-2013 eadler

Fix undefined behavior: (1 << 31) is not defined as 1 is an int and this
shifts into the sign bit. Instead use (1U << 31) which gets the
expected result.

This fix is not ideal as it assumes a 32 bit int, but does fix the issue
for most cases.

A similar change was made in OpenBSD.

Discussed with: -arch, rdivacky
Reviewed by: cperciva


258719 28-Nov-2013 emaste

Purely cosmetic change: order DT_REL* and DT_RELA* consistently.

From projects/uefi, r246107

Sponsored by: The FreeBSD Foundation


258678 27-Nov-2013 loos

Fix the led 'gpios' definition to match the description on
sys/boot/fdt/dts/bindings-gpio.txt. Make the led pin an output, add the
missing flag field. No functional change (gpioled(4) isn’t supported on
FDT systems yet).

Approved by: adrian (mentor)


258547 25-Nov-2013 ganbold

Add clock frequency for rk3188 watchdog.
Whilst here, replace "clocks" to "clock-frequency".

Approved by: ray@


258527 24-Nov-2013 andrew

Recent versions of U-Boot require us to also backup and restore r9 for API
calls to work.


258270 17-Nov-2013 dteske

Add a try-include word (which acts the same as "include") and use it to
conditionally include (but ignore failures) /boot/loader.rc.local and
/boot/menu.rc.local -- to make customizing the menu easier.

Reviewed by: alfred
Discussed on: -hackers


258269 17-Nov-2013 dteske

Refactor draw-beastie function.

Discussed on: -hackers


258057 12-Nov-2013 br

Add support for Freescale Vybrid Family VF600 heterogeneous
ARM Cortex-A5/M4 SoC (M4 core is not used in this work).

Support includes device drivers for:
- NAND Flash Controller (NFC)
- USB Enhanced Host Controller Interface (EHCI)
- General-Purpose Input/Output (GPIO)
- Universal Asynchronous Receiver/Transmitter (UART)

Also supported:
- Generic Interrupt Controller (GIC)
- MPCore timer
- ffec ethernet driver

Reviewed by: ray
Approved by: cognet (mentor)


257821 07-Nov-2013 dteske

Extend loader_delay as-documented in beastie.4th(8) and delay.4th(8), making it available to architectures that do not use or load the beastie
menu. This is reported to save headaches on some PPC systems where unload
followed by load does not produce the desired results wherein if-given
the opportunicy to abort the initial loading sequence, you can customize
the first load.

Reviewed by: nwhitehorn, kan
Discussed on: -current


257650 04-Nov-2013 dteske

Defer loading of kernel and modules if the beastie menu is enabled. Add a
kernel selection menu to the beastie menu. List of kernels is taken from
`kernels' in loader.conf(5) as a space (or comma) separated list of names
to display (up to 9). If not set, default value is "kernel kernel.old".
Does not validate that kernels exist because the next enhancement will be
to allow selection of the root device.

Discussed on: -current
MFC after: 3 days


257518 01-Nov-2013 ian

TI sdhci driver improvements, mostly related to fdt data...

Use the published compatible strings (our own invention, "ti,mmchs" is
still accepted as well, for now).

Don't blindly turn on 8-bit bus mode, because even though the conroller
supports it, the board has to be wired appropriately as well. Use the
published property (bus-width=<n>) and honor all the valid values (1,4,8).

The eMMC device on a Beaglebone Black is wired for 8-bit, update the dts.

The mmchs controller can inherently do both 1.8v and 3.0v on the first
device and 1.8v only on other devices, unless an external transceiver is
used. Set the voltage automatically for the first device and honor
the published fdt property (ti,dualvolt) for other devices.

Thanks go to Ilya Bakulin for figuring out the voltage compatibility stuff.


257486 01-Nov-2013 ian

Add dts source for imx6 SoCs and for Wandboard boards.

The imx6.dtsi is incomplete, but has enough to support devices that work
right now. Eventually it will need to be split into several files that
account for the differences between SoCs in the imx6 family.

The board config for Wandboard Dual is untested. Solo and Quad work, but
one one core is turned on for the quad right now (baby steps).


257393 30-Oct-2013 ian

Rework the imx ehci driver so that it's four separate ehci units rather
than one unit with four busses attached to it. This allows us to use
existing fdt data which describes separate devices with separate resources.
It also allows any combination of the units to be en/disabled in the
board dts files.

Adjust our dts code to match what's used by linux and u-boot now that
we're structured to do so.

Document lots of interesting stuff learned whiling doing this with a big
comment block in the driver, so I don't have to re-learn it for the next
round of changes.


257299 29-Oct-2013 rpaulo

Digi-CCWMX53: enable ffec and uart.


257261 28-Oct-2013 glebius

Remove more remnants of ng_fec(4).

The ng_create_one() and ng_mkpeer() functions in network.subr are
now not used anywhere, but I left them, since they can be useful
in future in netgraph scripting.

Submitted by: pluknet


257210 27-Oct-2013 andrew

Always build ubldr as a soft-float binary as there is no support for VFP
this early on in the boot process.


257198 26-Oct-2013 nwhitehorn

Fix build after r257162.


257172 26-Oct-2013 zbb

Enable SATA interface on Armada XP

- Add appropriate entry to DTS
- Allow for MV78460 SATA probe and configuration

Tested by: kevlo
Approved by: cognet (mentor)


257171 26-Oct-2013 zbb

Enable UART busy detection handling for Armada XP - based board

All Armada XP chips should be affected. It is necessary to handle
busy interrupt/indication by enabling busy-detect property in DTS.

Tested by: kevlo
Approved by: cognet (mentor)


257127 25-Oct-2013 loos

Remove all the instances of '#undef DEBUG' from kernel.

Suggested by: rpaulo
Approved by: adrian (mentor)


257062 24-Oct-2013 loos

Add the Raspberry Pi SPI controller driver.

Reviewed by: rpaulo
Approved by: adrian (mentor)


256959 23-Oct-2013 loos

Add the Raspberry Pi BSC (I2C compliant) controller driver.

Reviewed by: rpaulo
Approved by: adrian (mentor)


256948 23-Oct-2013 ganbold

Add FDT for Radxa Rock board and Rockchip RK3188 SoC.

Reviewed by: ray@


256940 22-Oct-2013 jkim

Allow users to set UUID in network byte order regardless of SMBIOS version.
Define BOOT_NETWORK_ENDIAN_UUID in make.conf(5) to enable this feature.


256912 22-Oct-2013 brooks

Sync BERI kernel configs with P4:

Switch the majority of device configuration to FDT from hints.

Add BERI_*_BASE configs to reduce duplication in the MDROOT and SDROOT
kernels.

Add NFS and GSSAPI support by default.

MFC after: 3 days
Sponsored by: DARPA/AFRL


256809 20-Oct-2013 ian

Add configuration for the Freescale i.MX53 Quick Start Board.


256804 20-Oct-2013 ian

Switch to using the standard uart console driver instead of the special
driver for early boot debugging.


256377 12-Oct-2013 markm

Merge from project branch. Uninteresting commits are trimmed.

Refactor of /dev/random device. Main points include:

* Userland seeding is no longer used. This auto-seeds at boot time
on PC/Desktop setups; this may need some tweeking and intelligence
from those folks setting up embedded boxes, but the work is believed
to be minimal.

* An entropy cache is written to /entropy (even during installation)
and the kernel uses this at next boot.

* An entropy file written to /boot/entropy can be loaded by loader(8)

* Hardware sources such as rdrand are fed into Yarrow, and are no
longer available raw.

------------------------------------------------------------------------
r256240 | des | 2013-10-09 21:14:16 +0100 (Wed, 09 Oct 2013) | 4 lines

Add a RANDOM_RWFILE option and hide the entropy cache code behind it.
Rename YARROW_RNG and FORTUNA_RNG to RANDOM_YARROW and RANDOM_FORTUNA.
Add the RANDOM_* options to LINT.

------------------------------------------------------------------------
r256239 | des | 2013-10-09 21:12:59 +0100 (Wed, 09 Oct 2013) | 2 lines

Define RANDOM_PURE_RNDTEST for rndtest(4).

------------------------------------------------------------------------
r256204 | des | 2013-10-09 18:51:38 +0100 (Wed, 09 Oct 2013) | 2 lines

staticize struct random_hardware_source

------------------------------------------------------------------------
r256203 | markm | 2013-10-09 18:50:36 +0100 (Wed, 09 Oct 2013) | 2 lines

Wrap some policy-rich code in 'if NOTYET' until we can thresh out
what it really needs to do.

------------------------------------------------------------------------
r256184 | des | 2013-10-09 10:13:12 +0100 (Wed, 09 Oct 2013) | 2 lines

Re-add /dev/urandom for compatibility purposes.

------------------------------------------------------------------------
r256182 | des | 2013-10-09 10:11:14 +0100 (Wed, 09 Oct 2013) | 3 lines

Add missing include guards and move the existing ones out of the
implementation namespace.

------------------------------------------------------------------------
r256168 | markm | 2013-10-08 23:14:07 +0100 (Tue, 08 Oct 2013) | 10 lines

Fix some just-noticed problems:

o Allow this to work with "nodevice random" by fixing where the
MALLOC pool is defined.

o Fix the explicit reseed code. This was correct as submitted, but
in the project branch doesn't need to set the "seeded" bit as this
is done correctly in the "unblock" function.

o Remove some debug ifdeffing.

o Adjust comments.

------------------------------------------------------------------------
r256159 | markm | 2013-10-08 19:48:11 +0100 (Tue, 08 Oct 2013) | 6 lines

Time to eat crow for me.

I replaced the sx_* locks that Arthur used with regular mutexes;
this turned out the be the wrong thing to do as the locks need to
be sleepable. Revert this folly.

# Submitted by: Arthur Mesh <arthurmesh@gmail.com> (In original diff)

------------------------------------------------------------------------
r256138 | des | 2013-10-08 12:05:26 +0100 (Tue, 08 Oct 2013) | 10 lines

Add YARROW_RNG and FORTUNA_RNG to sys/conf/options.

Add a SYSINIT that forces a reseed during proc0 setup, which happens
fairly late in the boot process.

Add a RANDOM_DEBUG option which enables some debugging printf()s.

Add a new RANDOM_ATTACH entropy source which harvests entropy from the
get_cyclecount() delta across each call to a device attach method.

------------------------------------------------------------------------
r256135 | markm | 2013-10-08 07:54:52 +0100 (Tue, 08 Oct 2013) | 8 lines

Debugging. My attempt at EVENTHANDLER(multiuser) was a failure; use
EVENTHANDLER(mountroot) instead.

This means we can't count on /var being present, so something will
need to be done about harvesting /var/db/entropy/... .

Some policy now needs to be sorted out, and a pre-sync cache needs
to be written, but apart from that we are now ready to go.

Over to review.

------------------------------------------------------------------------
r256094 | markm | 2013-10-06 23:45:02 +0100 (Sun, 06 Oct 2013) | 8 lines

Snapshot.

Looking pretty good; this mostly works now. New code includes:

* Read cached entropy at startup, both from files and from loader(8)
preloaded entropy. Failures are soft, but announced. Untested.

* Use EVENTHANDLER to do above just before we go multiuser. Untested.

------------------------------------------------------------------------
r256088 | markm | 2013-10-06 14:01:42 +0100 (Sun, 06 Oct 2013) | 2 lines

Fix up the man page for random(4). This mainly removes no-longer-relevant
details about HW RNGs, reseeding explicitly and user-supplied
entropy.

------------------------------------------------------------------------
r256087 | markm | 2013-10-06 13:43:42 +0100 (Sun, 06 Oct 2013) | 6 lines

As userland writing to /dev/random is no more, remove the "better
than nothing" bootstrap mode.

Add SWI harvesting to the mix.

My box seeds Yarrow by itself in a few seconds! YMMV; more to follow.

------------------------------------------------------------------------
r256086 | markm | 2013-10-06 13:40:32 +0100 (Sun, 06 Oct 2013) | 11 lines

Debug run. This now works, except that the "live" sources haven't
been tested. With all sources turned on, this unlocks itself in
a couple of seconds! That is no my box, and there is no guarantee
that this will be the case everywhere.

* Cut debug prints.

* Use the same locks/mutexes all the way through.

* Be a tad more conservative about entropy estimates.

------------------------------------------------------------------------
r256084 | markm | 2013-10-06 13:35:29 +0100 (Sun, 06 Oct 2013) | 5 lines

Don't use the "real" assembler mnemonics; older compilers may not
understand them (like when building CURRENT on 9.x).

# Submitted by: Konstantin Belousov <kostikbel@gmail.com>

------------------------------------------------------------------------
r256081 | markm | 2013-10-06 10:55:28 +0100 (Sun, 06 Oct 2013) | 12 lines

SNAPSHOT.

Simplify the malloc pools; We only need one for this device.

Simplify the harvest queue.

Marginally improve the entropy pool hashing, making it a bit faster
in the process.

Connect up the hardware "live" source harvesting. This is simplistic
for now, and will need to be made rate-adaptive.

All of the above passes a compile test but needs to be debugged.

------------------------------------------------------------------------
r256042 | markm | 2013-10-04 07:55:06 +0100 (Fri, 04 Oct 2013) | 25 lines

Snapshot. This passes the build test, but has not yet been finished or debugged.

Contains:

* Refactor the hardware RNG CPU instruction sources to feed into
the software mixer. This is unfinished. The actual harvesting needs
to be sorted out. Modified by me (see below).

* Remove 'frac' parameter from random_harvest(). This was never
used and adds extra code for no good reason.

* Remove device write entropy harvesting. This provided a weak
attack vector, was not very good at bootstrapping the device. To
follow will be a replacement explicit reseed knob.

* Separate out all the RANDOM_PURE sources into separate harvest
entities. This adds some secuity in the case where more than one
is present.

* Review all the code and fix anything obviously messy or inconsistent.
Address som review concerns while I'm here, like rename the pseudo-rng
to 'dummy'.

# Submitted by: Arthur Mesh <arthurmesh@gmail.com> (the first item)

------------------------------------------------------------------------
r255319 | markm | 2013-09-06 18:51:52 +0100 (Fri, 06 Sep 2013) | 4 lines

Yarrow wants entropy estimations to be conservative; the usual idea
is that if you are certain you have N bits of entropy, you declare
N/2.

------------------------------------------------------------------------
r255075 | markm | 2013-08-30 18:47:53 +0100 (Fri, 30 Aug 2013) | 4 lines

Remove short-lived idea; thread to harvest (eg) RDRAND enropy into the
usual harvest queues. It was a nifty idea, but too heavyweight.

# Submitted by: Arthur Mesh <arthurmesh@gmail.com>

------------------------------------------------------------------------
r255071 | markm | 2013-08-30 12:42:57 +0100 (Fri, 30 Aug 2013) | 4 lines

Separate out the Software RNG entropy harvesting queue and thread
into its own files.

# Submitted by: Arthur Mesh <arthurmesh@gmail.com>

------------------------------------------------------------------------
r254934 | markm | 2013-08-26 20:07:03 +0100 (Mon, 26 Aug 2013) | 2 lines

Remove the short-lived namei experiment.

------------------------------------------------------------------------
r254928 | markm | 2013-08-26 19:35:21 +0100 (Mon, 26 Aug 2013) | 2 lines

Snapshot; Do some running repairs on entropy harvesting. More needs
to follow.

------------------------------------------------------------------------
r254927 | markm | 2013-08-26 19:29:51 +0100 (Mon, 26 Aug 2013) | 15 lines

Snapshot of current work;

1) Clean up namespace; only use "Yarrow" where it is Yarrow-specific
or close enough to the Yarrow algorithm. For the rest use a neutral
name.

2) Tidy up headers; put private stuff in private places. More could
be done here.

3) Streamline the hashing/encryption; no need for a 256-bit counter;
128 bits will last for long enough.

There are bits of debug code lying around; these will be removed
at a later stage.

------------------------------------------------------------------------
r254784 | markm | 2013-08-24 14:54:56 +0100 (Sat, 24 Aug 2013) | 39 lines

1) example (partially humorous random_adaptor, that I call "EXAMPLE")
* It's not meant to be used in a real system, it's there to show how
the basics of how to create interfaces for random_adaptors. Perhaps
it should belong in a manual page

2) Move probe.c's functionality in to random_adaptors.c
* rename random_ident_hardware() to random_adaptor_choose()

3) Introduce a new way to choose (or select) random_adaptors via tunable
"rngs_want" It's a list of comma separated names of adaptors, ordered
by preferences. I.e.:
rngs_want="yarrow,rdrand"

Such setting would cause yarrow to be preferred to rdrand. If neither of
them are available (or registered), then system will default to
something reasonable (currently yarrow). If yarrow is not present, then
we fall back to the adaptor that's first on the list of registered
adaptors.

4) Introduce a way where RNGs can play a role of entropy source. This is
mostly useful for HW rngs.

The way I envision this is that every HW RNG will use this
functionality by default. Functionality to disable this is also present.
I have an example of how to use this in random_adaptor_example.c (see
modload event, and init function)

5) fix kern.random.adaptors from
kern.random.adaptors: yarrowpanicblock
to
kern.random.adaptors: yarrow,panic,block

6) add kern.random.active_adaptor to indicate currently selected
adaptor:
root@freebsd04:~ # sysctl kern.random.active_adaptor
kern.random.active_adaptor: yarrow

# Submitted by: Arthur Mesh <arthurmesh@gmail.com>

Submitted by: Dag-Erling Smørgrav <des@FreeBSD.org>, Arthur Mesh <arthurmesh@gmail.com>
Reviewed by: des@FreeBSD.org
Approved by: re (delphij)
Approved by: secteam (des,delphij)


256293 10-Oct-2013 jhb

Sanitize the %eflags returned by BIOS routines. Some BIOS routines enter
protected mode and may leave protected-mode-specific flags like PSL_NT set
when they return to real mode. This can cause a fault when BTX re-enters
protected mode after the BIOS mode returns.

PR: amd64/182740
Reported by: Julian Pidancet <julian.pidancet@gmail.com>
Approved by: re (gjb)
MFC after: 1 week


255977 01-Oct-2013 pluknet

Sweep man pages replacing ad -> ada.

Approved by: re (blackend)
MFC after: 1 week
X-MFC note: stable/9 only


255944 29-Sep-2013 bdrewery

Use MK_SSP=no after including bsd.own.mk to disable SSP instead of user-knob
WITH[OUT]_SSP to avoid hitting an error if user has WITH_SSP in their
make.conf. Ports now use this knob.

make[7]: "/usr/src/share/mk/bsd.own.mk" line 466: WITH_SSP and
WITHOUT_SSP can't both be set.

This is similar to previous cleanup done in r188895

Approved by: bapt
Reviewed by: jlh (earlier version)
Approved by: re (marius)
MFC after: 1 week


255939 29-Sep-2013 andrew

Fix ixp425 boot2 with ARM EABI:
- libkern is missing __aeabi_llsl, implement this by calling __ashldi3.
- Because of how the asm entry macros are defined the boot2 code
requires the unwind symbols to exist, include them in boot2.

Approved by: re (marius)


255130 01-Sep-2013 rpaulo

Initial support for the Digi ConnectCore(c) i.MX53 / Wi-i.MX53 boards.

There are many drivers missing, but we can reach single user mode now.

Hardware graciously donated by Douglas Beattie.


254952 27-Aug-2013 dteske

Update copyright.


254942 26-Aug-2013 dteske

Building upon SVN r254237, disable automated activation of alternate layouts
and add support for default underride to $loader_version, acting as a way to
name a release. Release text is not displayed for the aforementioned feature
of alternate display layout (introduced in r254237); however, for all other
layouts (incl. default), the release name is displayed at lower-right.

See version.4th(8) for additional information and/or historical details.
NOTE: Also a minor edit to version.4th(8) while we're here.


254733 23-Aug-2013 jkim

Set the hint for physical address of RSDP in hexadecimal as before r223262.


254598 21-Aug-2013 ian

Add support for uarts other than the serial console in TI OMAP SoCs.

The TI uart hardware is ns16550-compatible, except that before it can
be used the clocks and power have to be enabled and a non-standard
mode control register has to be set to put the device in uart mode
(as opposed to irDa or other serial protocols). This adds the extra
code in an extension to the standard ns8250 probe routine, and the
rest of the driver is just the standard ns8250 code.


254559 20-Aug-2013 ian

Make the standard sdhci(4) driver work for the TI OMAP family SoCs.
The MMCHS hardware is pretty much a standard SDHCI v2.0 controller with a
couple quirks, which are now supported by sdhci(4) as of r254507.

This should work for all TI SoCs that use the MMCHS hardware, but it has
only been tested on AM335x right now, so this enables it on those platforms
but leaves the existing ti_mmchs driver in place for other OMAP variants
until they can be tested.

This initial incarnation lacks DMA support (coming soon). Even without it
this improves performance pretty noticibly over the ti_mmchs driver,
primarily because it now does multiblock IO.


254237 12-Aug-2013 dteske

Add optional support for default override of standard setup; but only if
corresponding functions are provided. If override function does not exist,
boot remains unmodified. This patch should not result in any changes.


254155 09-Aug-2013 marcel

Fix the freaddir implementation for the stand-alone interpreter.

Bug pointed out by: Jan Beich <jbeich@tormail.org>


254108 08-Aug-2013 dteske

Update legacy static assignments in old code to support dynamic framing,
plotting, and alignment coinciding with enhancements in SVN r242667.


254105 08-Aug-2013 dteske

Since the introduction of SVN r244048 and [follow-up] r244089, it is now
safe to build upon ``boot_serial?'' functionality to make safer UI choices.


254092 08-Aug-2013 ae

Make the check for number of entries less strict.
Some partitioning tools can create GPT with number of entries less
than 128.

MFC after: 1 week


254056 07-Aug-2013 ganbold

Bring initial support for Allwinner A20 SoC (Cubieboard2).
Add support for A20 timer.
Correct interrupt offset depending from chip.
Add basic code for CPU configuration module.
For now, add kernel config and dts file
(only FDT blob related problem needs to be solved later in
order to have one kernel for both cubieboard1 and 2).

Approved by: ray@


254015 07-Aug-2013 marcel

Change <sys/diskpc98.h> to not redefine the same symbols that are
being defined in <sys/diskmbr.h>. Instead give the symbols here a
"PC98_" prefix. This way, both <sys/diskmbr.h> and <sys/diskpc98.h>
can be included in the same C source file.

The renaming is trivial. The only gotcha is that DOSBBSECTOR is
also redefined from 0 to 1. This because DOSBBSECTOR was always
used in conjunction with an addition of 1. The PC98_BBSECTOR symbol
is defined as 1 and the expression is simplified.

Note: it is not believed that ports are seriously impacted; or at
all for that matter.

Approved by: nyan@


253971 05-Aug-2013 cognet

Let the platform calculate the timer frequency at runtime, and use that for
the omap4, instead of relying on the (wrong) value provided in the dts.


253862 01-Aug-2013 marcel

Fix the build of the testmain target. This target compiles a Forth
interpreter that can be run on the system and as such cannot be
compiled against libbstand. On the one hand this means we need to
include the usual headers for system interfaces that we use and
on the the other hand we can only use standard system interfaces.

While here, define local variables only when needed to make this
WARNS=2 clean on amd64.

PR: 172542
Obtained from: peterj@
Pointed out by: Jan Beich <jbeich@tormail.org>


253832 31-Jul-2013 rpaulo

Add definitions for the Mailbox, Spinlock and PRU-ICSS devices.


253715 27-Jul-2013 kientzle

Put in commented-out version of beastie menu commands
so that non-i386 users can easily experiment with this.


253714 27-Jul-2013 kientzle

Install Forth infrastructure along with ubldr.

Note: loader.rc is installed as loader.rc.sample
so that by default, none of this is actually used.


253172 10-Jul-2013 marcel

Add 2 builtin words for working with directories:
isdir? ( fd -- bool )
freaddir ( fd -- ptr len TRUE | FALSE )

The 'isdir?' word returns `true' if the file descriptor is for a
directory and `false' otherwise.

The 'freaddir' word reads the next directory entry and if successful,
returns its name and 'true'. Otherwise 'false' is returned.

These words give the loader the ability to scan directories and read
files contained in them for 'rc.d'-like flexibility in handling which
modules to load and/or which tunables to set.

Obtained from: Juniper Networks, Inc.


253071 09-Jul-2013 avg

default loader.conf: there is no need to load zpool.cache now

kernel does not need it for importing a root pool.

MFC after: 4 weeks


253024 08-Jul-2013 gonzo

- MMC1 (internal eMMC) pins should be configured as input-pullup, except
for reset pin


252914 07-Jul-2013 gonzo

- Add musb node to shared dtsi and proper pin configuratin for every
AM553x-based device


252719 04-Jul-2013 gonzo

Add nodes for PWMSS1 and PWMSS2


252586 03-Jul-2013 wblock

Add descriptions to the FILES list, fix some mdoc complaints, move the
"neither" entry out of the table in BOOTING.

Submitted by: joeld
Reviewed by: joeld
MFC after: 1 week


252492 01-Jul-2013 wblock

Add a new gptboot(8) man page. Factor out the redundant information
in gpart(8) and boot(8), adding references to gptboot(8) in both.

Reviewed by: jhb, ae, pjd, Paul Schenkeveld <bsdcan@psconsult.nl>, david_a_bright@dell.com (portions), gjb
MFC after: 1 week


252439 01-Jul-2013 rpaulo

Split bcm2835-rpi-b.dts into bcm2835.dtsi and rpi.dts. This DTS actually works
on all R-Pi models because VideoCore binary patches it during boot.

Reviewed by: gonzo


252371 29-Jun-2013 ray

Add FDT for Arndale board and Samsung Exynos5250 SoC.

Submitted by: Ruslan Bukin <br@bsdpad.com>


251589 10-Jun-2013 marius

- The method introduced as part of r234898 for not altering the boot path
when booting from ZFS turned out to also cause the boot path not being
adjusted if booting from CD-ROM with firmware versions that do not employ
the "cdrom" alias in that case. So shuffle the code around instead in order
to achieve the original intent. Ideally, we shouldn't fiddle with the boot
path when booting from UFS on a disk either; unfortunately, there doesn't
seem to be an universal way of telling disks and CD-ROMs apart, though. [1]
- Use NULL instead of 0 for pointers.

PR: 179289
MFC after: 1 week


251250 02-Jun-2013 tijl

Convert old make variable modifiers :U and :L to bmake :tu and :tl.

Reviewed by: sjg


251223 01-Jun-2013 nyan

MFi386: revision 245848

Always update the hw.uart.console hint.


251020 27-May-2013 gonzo

Add DTS for AM335x EVM with properly muxed PWM and LCD pins, and
LCD panel description


251019 27-May-2013 gonzo

Add PWM and LCDC nodes to base DTS for AM335x-based devices


250769 18-May-2013 kientzle

Correct the spelling of "okay".
Add pinmux setting for the Reset GPIO pin for MMC1.


250435 10-May-2013 kientzle

Move 'compatible' line out of the common am335x.dtsi and into
the beaglebone-specific .dts file.

Add a new .dts for the BeagleBone Black with more memory,
slightly different pinmux initialization, and with mmchs1
configured (though the latter doesn't quite work yet).


250333 07-May-2013 jhb

Don't pad disk partition sizes with leading zeros. This was already
fixed in a different way by the new disk code used for other
platforms.

MFC after: 1 week


250291 06-May-2013 gber

Move initialization of CESA decoding windows from common section
to driver specific files.

- window initialization is done during device attach
- CESA TDMA decoding windows values are set based on DTS,
not copied from CPU registers
- remove unnecessary virtual mapping
- update dts file

Obtained from: Semihalf


249997 27-Apr-2013 wkoszek

Add Xilinx Zynq ARM/FPGA SoC support to FreeBSD/arm port.

Submitted by: Thomas Skibo <ThomasSkibo (at) sbcglobal.net>
Reviewed by: wkoszek, freebsd-arm@ (no objections raised)


249946 26-Apr-2013 gonzo

Move pinmux configuration to board-specific config. It will vary
from board to board.


249846 24-Apr-2013 dim

When rebooting (exiting) from the BTX loader, make sure to restore the
GDT from the correct segment, otherwise a triple fault would be caused.
In some virtual environments (VMware, VirtualBox, etc) this could lead
to a unhandled error or hang in the guest emulation software.

Thanks to avg and jhb for a few hints in the right direction.

Noticed by: Jeremy Chadwick <jdc@koitsu.org> (and many others)
MFC after: 1 week


249774 22-Apr-2013 gonzo

Split BeagleBone DTS to generic AM335x part and Beagle-bone specific


249719 21-Apr-2013 ae

Since we didn't break the loop, we should set i to -1 to start from the
beginning.

Submitted by: Steven Hartland
MFC after: 1 week


249223 07-Apr-2013 kientzle

The CELL fields can be various integer types depending on the platform
(ARM uses 'int' and 'unsigned'; i386 uses 'long' and 'unsigned long'),
so we need explicit casts to long and unsigned long here to ensure
that the result matches the printf %ld and %lx specifiers.


249222 07-Apr-2013 kientzle

Fix two broken macros.


249139 05-Apr-2013 avg

strncmp for boot code: fix an off by one error

Before this change strncmp would access and _compare_ n+1 characters
in the case where the first n characters match.

MFC after: 5 days


248962 31-Mar-2013 ian

When running on armv6, set alignment checking to modulo-4 mode rather
than modulo-8, because clang emits ldrd and strd instructions for
addresses that are only 4-byte aligned


248934 30-Mar-2013 kientzle

Initialize sym_count to 0.

This fixes a compiler warning introduced in r248121.


248557 20-Mar-2013 ray

Integrate Efika MX project back to home.

Sponsored by: The FreeBSD Foundation


248121 10-Mar-2013 ian

Attach the elf section headers to the loaded kernel as metadata, so
they can easily be used by later post-processing. When searching for
a compiled-in fdt blob, use the section headers to get the size and
location of the .dynsym section to do a symbol search.

This fixes a problem where the search could overshoot the symbol
table and wander into the string table. Sometimes that was harmless
and sometimes it lead to spurious panic messages about an offset
bigger than the module size.


248118 09-Mar-2013 ian

Since ubldr doesn't necessarily load a kernel at the physical address in the
elf headers, mask out the high nibble of that address. This effectly makes
the entry point the offset from the load address, and it gets adjusted for
the actual load address before jumping to it.

Masking the high nibble makes assumptions about memory layout that are true
for all the arm platforms we support right now, but it makes me uneasy.
This needs to be revisited.


247520 01-Mar-2013 ganbold

Enable uart driver for A10.

Approved by: gonzo@


247413 27-Feb-2013 ian

Fix a typo that prevented booting a kernel that had virtual addresses in
the elf headers.


247301 26-Feb-2013 ian

Adjust the arm kernel entry point address properly regardless of whether the
e_entry field holds a physical or a virtual address. Add a comment block
that explains the assumptions being made by the adjustment code.


247250 25-Feb-2013 kientzle

Fix the bug I introduced in r247045.
After digging through more carefully, it looks like there's
no real need to have the DTB in the module directory.
So we can simplify a lot: Just copy DTB into local heap
for "fdt addr" and U-Boot integration, drop all the extra
COPYIN() calls.

I've left one final COPYIN() to update the in-kernel DTB
for consistency with how this code used to work, but I'm
no longer convinced it's appropriate here.

I've also remove the mem_load_raw() utility that I added
to boot/common/module.c with r247045 since it's no longer
necessary.


247208 23-Feb-2013 gonzo

- Move dma, sdhci and mbox nodes down in dts in order to get them
initialized after FPIO controller since they might rely on GPIO
functionality

- Update interrupts property of dma node to contain all allocated
interrupts


247201 23-Feb-2013 kientzle

"fdt addr" gets run from loader.rc before the kernel is loaded.
This was broken by r247045 which tried to copy the FDT into the
module directory immediately.
Instead, store the address and arrange for the FDT to get
copied into the module directory later when the usual
FDT initialization runs.


247200 23-Feb-2013 kientzle

Print kernel args as late as possible before jumping into kernel.


247047 20-Feb-2013 kib

Convert machine/elf.h, machine/frame.h, machine/sigframe.h,
machine/signal.h and machine/ucontext.h into common x86 includes,
copying from amd64 and merging with i386.

Kernel-only compat definitions are kept in the i386/include/sigframe.h
and i386/include/signal.h, to reduce amd64 kernel namespace pollution.
The amd64 compat uses its own definitions so far.

The _MACHINE_ELF_WANT_32BIT definition is to allow the
sys/boot/userboot/userboot/elf32_freebsd.c to use i386 ELF definitions
on the amd64 compile host. The same hack could be usefully abused by
other code too.


247045 20-Feb-2013 kientzle

Fix "fdt addr" to accept literal addresses rather than va offsets.
When initializing the fdt, query U-Boot as well.

With this change, it is now feasible to have U-Boot load
the FDT, ubldr will pull it from U-Boot and hand it to the
kernel.


246953 18-Feb-2013 kientzle

Add mem_load_raw() for loading data from another location in memory.

This will be used by some upcoming changes to loader(8) FDT
handling to allow it to use an FDT provided by an earlier
boot stage the same as an FDT loaded from disk.


246948 18-Feb-2013 kientzle

Clarify an error message. The addresses here are
really offsets within the primary mapped memory block
(which may not start at address zero).


246851 15-Feb-2013 gonzo

Enable USB1 (which is EHCI0) for Allwinner A10

Tested by: ganbold@


246660 11-Feb-2013 gonzo

Add watchdog driver for Allwinner A10


246647 11-Feb-2013 kientzle

Provide verbose help for fdt commands on platforms that use it.


246630 10-Feb-2013 ae

Add bootcamp support to the loader.

Tested by: dchagin
MFC after: 1 week


246616 10-Feb-2013 hselasky

- Move scratch data from the USB bus structure to the USB device structure
so that simultaneous access cannot happen. Protect scratch area using
the enumeration lock. Also reduce stack usage in usbd_transfer_setup()
by moving some big stack members to the scratch area. This saves around
200 bytes of stack.
- Fix a whitespace.

MFC after: 1 week


246571 08-Feb-2013 hselasky

Correctly list the usbloader dependencies.


246369 05-Feb-2013 andrew

* Add the integer div & mod functions and ARM EABI support functions to
libstand.
* Stop linking the ARM U-Boot loader against libgcc now libstand has the
required symbols.


246363 05-Feb-2013 hselasky

Add defines to more easily allow a single threaded version of the FreeBSD
USB stack. This is useful for non-kernel purposes, like the loader.


246359 05-Feb-2013 hselasky

Fix depend target.


246342 05-Feb-2013 ganbold

Add gpio driver and update dts and kernel config accordingly.

Approved by: gonzo@


246145 31-Jan-2013 hselasky

Initial version of libusbboot, a fully stand-alone, single threaded and
functional compilation of the FreeBSD USB stack for use with boot loaders
and such.

Discussed with: Hiroki Sato, hrs @ EuroBSDCon


246135 30-Jan-2013 ian

Do metadata relocation fixup on all loaded modules, not just the kernel.

Approved by: cognet (mentor)


246057 29-Jan-2013 ganbold

Add simple clock driver and ehci glue code for a10
Update dts and kernel config

Approved by: gonzo@


246026 28-Jan-2013 dmarion

Configure all GPIO pins as described in Beaglebone SRM.

Submitted by: Emmanuel Vadot <elbarto@megadrive.org>


245955 27-Jan-2013 ian

Add support for the GlobalScale Technologies DreamPlug computer.

This adds support for version 10, revision 01, but it should also work
without changes for the 0901 model, at least until we get drivers for the
two different wifi chips involved.

Many users contributed to and tested the various patchsets floating around
for the past year that have eventually evolved into this checkin, most notably
Richard Neese who provided the bulk of the kernel config file.

Approved by: cognet (mentor)


245900 25-Jan-2013 ganbold

Fix method of naming compatible string to follow
"<manufacturer>,<model>" as described in
http://www.devicetree.org/Device_Tree_Usage

Reviewed by: andrew@
Approved by: gonzo@


245848 23-Jan-2013 jhb

Always update the hw.uart.console hint anytime a change is made to the
comconsole setup. Previously the hint would be set when if you set a
custom port, but it would not be updated if you later set a custom speed.

Also, leave the hw.uart.console hint mutable so it can be overridden or
unset by the user if needed.

Reviewed by: kib (earlier version)
MFC after: 1 week


245765 22-Jan-2013 benno

Fix linking of loader.efi.

gcc handles -symbolic by passing -Bsymbolic through to ld. clang ignores
-symbolic and thus invokes ld without -Bsymbolic which leads to some symbols
not being properly linked in loader.efi. Fix this by using -Wl,-Bsymbolic which
passes -Bsymbolic to ld in both the gcc and clang cases.

Approved by: rpaulo


245703 21-Jan-2013 kientzle

Use correct size for AM335x CPSW memory window.


245697 20-Jan-2013 avg

zfs/sparc64 boot: fix booting after r242230

arch_zfs_probe method is supposed to only probe for ZFS vdevs, but it can
not expect that ZFS data is in a ready state yet.
So, move some code from sparc64_zfs_probe to main to meet the constraints.

Reported by: Chris Ross <cross+freebsd@distal.com>
Tested by: Chris Ross <cross+freebsd@distal.com>
MFC after: 4 days


245677 19-Jan-2013 andrew

Link against compiler-rt to pull in the required __aeabi_* functions


245673 19-Jan-2013 kientzle

Use correct GPIO interrupt lines.


245450 15-Jan-2013 ganbold

Initial support for Allwinner A10 SoC (Cubieboard)
Add simple console driver
Add interrupt handling and timer codes
Add kernel config file
Add dts file
Approved by: gonzo


245424 14-Jan-2013 sbruno

Quiesce some clang warnings while we're here doing stuff.

Submitted by: Hiren Panchasara <hiren.panchasara@gmail.com>
Obtained from: Yahoo! Inc


245148 08-Jan-2013 grehan

Bring in some userboot changes from the bhyve branch to reduce diffs.

r238966
Bump up the heap size to 1MB. With a few kernel modules, libstand
zalloc and userboot seem to want to use ~600KB of heap space, which
results in a segfault when malloc fails in bhyveload.

r241180
Clarify comment about default number of FICL dictionary cells.

r241153
Allow the number of FICL dictionary cells to be overridden.
Loading a 7.3 ISO with userboot/amd64 takes up 10035 cells,
overflowing the long-standing default of 10000.

Bump userboot's value up to 15000 cells.

Reviewed by: dteske (r238966,241180)
Obtained from: NetApp


244916 31-Dec-2012 gonzo

Add interrupt for PL310 controller


244537 21-Dec-2012 rpaulo

Move the 64-bit _setjmp to lib/libstand.


244531 21-Dec-2012 rpaulo

Build a 64 bit version of the FICL library. This is need for a 64 bit
EFI bootloader (amd64 only for now).

This is not yet connected to the build.


244332 17-Dec-2012 rpaulo

amd64 only has rela sections.


244307 16-Dec-2012 marius

Restore pre-r234898 printing of boot loader and path.

MFC after: 3 days


244278 15-Dec-2012 andrew

Ignore a warning in ubldr where clang doesn't understand the %D printf
specifier from libstand.


244197 13-Dec-2012 gonzo

Add support for QEMU's version of Versatile Platform Board


244158 12-Dec-2012 dteske

Fix a regression caused by SVN r222417.

Prior to r222417, setting `password' in loader.conf(5) did not prevent boot
but instead only prevented changes to boot options by prompting for password
if autoboot failed or the user interrupted the countdown sequence.
After r222417 the same machine with `password' set in loader.conf(5) would no
longer boot without _always_ entering the password.

This patch restores the old (8.x and older) functionality for password in
loader.conf(5) while adding a new bootlock_password feature to replace the
edge-case should anybody desire the regressed functionality (HINT: great for
PXE servers and/or private distributions).

loader.conf(5) was updated to be more clear with-respect to password setting
(previous text was misleading).

Documentation (loader.conf(5) and check-password.4th(8)) has been updated to
include notes on the new bootlock_password setting.

Special thanks to Alex Verbod for bringing this to my attention and helping to
refine the loader.conf(5) text.

PR: conf/170110
Submitted by: Vitaly Zakharov <ded3axap@gmail.com>
Reviewed by: Alexander Verbod <alexander.verbod@gmail.com>


244089 10-Dec-2012 dteske

Add support for comma-separated values (whitespace-separated still supported).

PR: conf/121064
Submitted by: koitsu
Reviewed by: jh


244048 09-Dec-2012 dteske

Use ASCII characters for box/line characters in frames.4th

Committed with changes to support the following from loader.conf(5):
+ console="vidconsole comconsole" (not just console="comconsole")
+ boot_serial="anything" (not just boot_serial="YES")
+ boot_multicons="anything" (unsupported in originally-submitted patch)

PR: conf/121064
Submitted by: koitsu
Reviewed by: gcooper, adrian (co-mentor)
Approved by: adrian (co-mentor)


243978 07-Dec-2012 rpaulo

Typo in a comment.


243977 07-Dec-2012 rpaulo

Make this work for 64 bit binaries.


243875 05-Dec-2012 rpaulo

Remove dead code that clang refuses to compile.


243700 30-Nov-2012 neel

Teach userboot to boot from ISO image files.

Reviewed by: ae@, dfr@
Obtained from: NetApp


243694 30-Nov-2012 gonzo

Add vchiq node


243693 30-Nov-2012 gonzo

- Implement "fdt mres" sub-command that prints reserved memory regions
- Add "fdt addr" subcommand that lets you specify preloaded blob address
- Do not pre-initialize blob for "fdt addr"
- Do not try to load dtb every time fdt subcommand is issued,
do it only once
- Change the way DTB is passed to kernel. With introduction of "fdt addr"
actual blob address can be not virtual but physical or reside in
area higher then 64Mb. ubldr should create copy of it in kernel area
and pass pointer to this newly allocated buffer which is guaranteed to work
in kernel after switching on MMU.
- Convert memreserv FDT info to "memreserv" property of root node
FDT uses /memreserve/ data to notify OS about reserved memory areas.
Technically it's not real property, it's just data blob, sequence
of <start, size> pairs where both start and size are 64-bit integers.
It doesn't fit nicely with OF API we use in kernel, so in order to unify
thing ubldr converts this data to "memreserve" property using the same
format for addresses and sizes as /memory node.


243660 28-Nov-2012 dteske

Discussed at-length on -arch.

Make the following interface changes to my beastie boot menu:
+ Move boot options to a submenu
+ Add a new "Boot Single" menu item
+ Make "Boot" item and new "Boot Single" item reverse when boot_single is set
+ Add new "Load Defaults" item (in new "Boot Options" submenu) for overridding
loader.conf(5) provided values with system defaults.

Reviewed by: adrian (co-mentor)
Approved by: adrian (co-mentor)


243526 25-Nov-2012 kientzle

Print kernel args when booting the kernel.


243420 23-Nov-2012 gonzo

Make FDT blob compatible with Raspberry Pi firmware.

Rasperry Pi firmware has a set of hardcoded pathes it uses to fill
FDT with system-specific information like display resolution, memory
size, UART and SDHCI clocks, ethernet MAC address. Handle two of them:

- Add placeholder for ethernet MAC address
- Move display node out of "axi" node


243305 19-Nov-2012 marius

Fix build after r243245.

Submitted by: trasz


243254 19-Nov-2012 trasz

Fix build on powerpc.

Reviewed by: nwhitehorn


243114 16-Nov-2012 dteske

+ This patch does not change user experience or functionality
+ Cleanup syntax, slim-down code, and make things more readable
+ Introduce new +c! operator and ilk to reduce heap usage/allocations
+ Add safemode_enabled? safemode_enable and safemode_disable functions
+ Add singleuser_enabled? singleuser_enable singleuser_disable functions
+ Add verbose_enabled? verbose_enable and verbose_disable functions
+ Centralize strings (also to reduce heap usage)

Reviewed by: peterj, adrian (co-mentor)
Approved by: adrian (co-mentor)


243025 14-Nov-2012 avg

boot: use packed attribute for edd_params* structures and their substructures

The sole purpose of this change is to make sure that sizeof produces
"canonical" sizes for these structures. This is to avoid triggering
bugs in the BIOSes that properly handle only the canonical values of
input length provided to INT 13h AH=48h.
The canonical sizes are: 30 for v2, 66 for v3, etc.
Buggy BIOS code probably looks like:
if (input_length > 30) { /* > v2 */
assume that input length is 66 /* assume v3 or later */
}

This should fix boot problems at least on Supermicro X8DT6 and possibly
on P410i Smart Array Controller (as found in e.g. HP DL360 G7).

Reported by: gnn, np, rstone
Debugged by: rstone
Discussed with: ae, np, rstone
MFC after: 4 days


242935 12-Nov-2012 neel

Add a callback function to userboot.so to fetch a list of environment
variables and pass them to the kernel.

Reviewed by: dfr


242923 12-Nov-2012 dteske

Fix a stack leak in [unused] cycle_menuitem function while we're here
(required misconfiguration and/or missing environment vars to occur).

Reviewed by: peterj, adrian (co-mentor)
Approved by: adrian (co-mentor)


242865 10-Nov-2012 nyan

cosmetic changes to reduce diffs against i386.


242864 10-Nov-2012 nyan

MFi386: r241300

i386 comconsole: don't loop forever if hardware doesn't respond

- clear capability flags when hw timeouts
- retire comc_started status variable and directly use c_flags to see
if comconsole is selected for use


242863 10-Nov-2012 nyan

MFi386: r241301

add detection of serial console presence to btx and boot2-like blocks


242855 10-Nov-2012 nyan

MFi386: r241785

boot: use -march=i386 for both i386 and amd64 builds


242804 08-Nov-2012 dim

Shrink boot2 by 8 bytes, by eliminating some unneeded instructions in
sio.S. This is not particularly needed for head right now, but it is
intended to merge to stable/9, to fix boot2 build with clang there.

Reviewed by: avg
MFC after: 3 days


242706 07-Nov-2012 dim

Put in a band-aid to get the pc98 bootstraps building, now clang is the
default compiler. This has two parts:
- Make sys/boot/pc98/boot2 always build with gcc for now, until we can
figure out a way to shrink it enough when building with clang.
- Since sys/boot/p98/cdboot uses .code16 directives, which are not yet
supported by clang's integrated assembler, use -no-integrated-as,
similar to sys/boot/i386/cdboot.

Reviewed by: nyan
MFC after: 1 week


242688 07-Nov-2012 dteske

Hook in new files menusets.4th and manual.

Approved by: adrian (co-mentor) (implicit)


242669 06-Nov-2012 dteske

Fix funny comment.

Approved by: adrian (co-mentor) (implicit)


242668 06-Nov-2012 dteske

Fix c/p error in comment.

Approved by: adrian (co-mentor) (implicit)


242667 06-Nov-2012 dteske

Add ontop of my existing boot loader Forth code, including support for
submenus. See menusets.4th(8) for additional details including examples.

Discussed on arch and recommended for inclusion at the devsummit.

This change does not alter the appearance or user experience, only enhances
possibilities.

Reviewed by: adrian (co-mentor)
Approved by: adrian (co-mentor)


242145 26-Oct-2012 mav

Fix loader crash when some unhalted exception happens during `include`
command execution. In case of such unhandled exception, vmReset() inside
ficlExecC() flushes the VM state. Attempt to return back to Forth after
that cause garbage dereference with unexpected results. To avoid that
situation call vmThrow() directly instead of expecting Forth to do it.


242084 25-Oct-2012 mav

Remove new-line characters from the include() errors to make it consistent
with the rest of code.


241876 22-Oct-2012 ae

When loader tries to open GPT partition, but partition table is not GPT,
then try automatically detect an appropriate partition type.

PR: kern/172550
Tested by: Ralf Wenk


241809 21-Oct-2012 ae

Add the flags parameter to the disk_open() function and DISK_F_NOCACHE
flag, that disables the caching of partition tables metadata.
Use this flag for floppies in the libi386/biosdisk driver.


241785 20-Oct-2012 avg

boot: use -march=i386 for both i386 and amd64 builds

.. so that consistent compilation algorithms are used for both
architectures as in practice the binaries are expected to be
interchangeable (for time being).
Previously i386 used default setting which were equivalent to
-march=i486 -mtune=generic.
The only difference is using smaller but slower "leave" instructions.

Discussed with: jhb, dim
MFC after: 29 days


241636 17-Oct-2012 attilio

Disconnect non-MPSAFE NTFS from the build in preparation for dropping
GIANT from VFS. This code is particulary broken and fragile and other
in-kernel implementations around, found in other operating systems,
don't really seem clean and solid enough to be imported at all.
If someone wants to reconsider in-kernel NTFS implementation for
inclusion again, a fair effort for completely fixing and cleaning it
up is expected.

In the while NTFS regular users can use FUSE interface and ntfs-3g
port to work with their NTFS partitions.

This is not targeted for MFC.


241608 16-Oct-2012 attilio

Disconnect non-MPSAFE CODAFS from the build in preparation for dropping
GIANT from VFS.

This is not targeted for MFC.


241607 16-Oct-2012 attilio

Disconnect non-MPSAFE XFS from the build in preparation for dropping
GIANT from VFS.

This is not targeted for MFC.


241606 16-Oct-2012 attilio

Disconnect non-MPSAFE PORTALFS from the build in preparation for dropping
GIANT from VFS.

This is not targeted for MFC.


241523 14-Oct-2012 dteske

Since the introduction of the new advanced boot menu (r222417), options like
"boot verbose", "single user mode", "ACPI" and more are now stateful boolean
menuitems rather than direct action-items.

A short-coming in this new menu system is that when a user sets a non-default
value in loader.conf(5), this non-default state is not reflected in the menu
-- leading to confusion as to whether the option was taking effect or not.

This patch adds dynamic menuitem constructors _and_ the necessary Forth
callbacks to initialize these stateful menuitems -- causing the aforementioned
menuitems to adhere to loader.conf(5) settings.

PR: bin/172529
Approved by: adrian (co-mentor)
MFC after: 21 days


241367 09-Oct-2012 dteske

Fix a typo (s/prefix/suffix/) and comment.

NOTE: This is in an unused portion of the menu framework.

Reviewed by: eadler, adrian (co-mentor)
Approved by: adrian (co-mentor)


241365 09-Oct-2012 dteske

Fix an oversight that cyclic menu items actually are zero-based and can
accommodate 10 different states.

Reviewed by: eadler, adrian (co-mentor)
Approved by: adrian (co-mentor)


241363 09-Oct-2012 dteske

Make the "Options:" separator-text configurable by setting $menu_optionstext.

Reviewed by: eadler, adrian (co-mentor)
Approved by: adrian (co-mentor)
MFC after: 3 days


241361 08-Oct-2012 dteske

Add an echo to say we're "Booting..." when the overloaded "boot" Ficl word is
executed to better differentiate between loader-specific errors and kernel-
specific errors (if ever any of either).

This type of functionality hasn't been required before the introduction of the
advanced menu system (r222417). Adding this functionality will help different-
iate errors at the loader-level such as a BTX halt caused by heap exhaustion
and errors that may be involved with executing the kernel (wrong architecture
for example). A user can learn that messages before "Booting..." are related to
the loader(8) environment and it's Forth-ilk, while those after are not
related to loader(8) -- the point that loader(8) has ``left the building''.

This patch also includes a man-page update to color.4th(8) as the color logic
moves to a lower-level (from being included by beastie.4th to being included
by loader.4th).

After noticing a delay between execution of the overloaded "boot" FICL word and
the display of text on-screen, gcooper confirmed that the introduction of a
builtin memory test (disabled by adding hw.memtest.tests="0" to loader.conf(5))
was the cause of the delay.

This patch adds an echo to produce "Booting..." when the overloaded "boot" word
is executed (this includes from the interactive command-prompt on all arches,
from the menu system on arches that run the beastie menu, and even those arches
that run the menu but disable it by setting beastie_disable="YES" in
loader.conf(5)). When loader_color="YES" in loader.conf(5), the same message is
produced but in white text on a blue background (only the letters produced have
this background -- opposed to perhaps the entire line).


241310 07-Oct-2012 dteske

Comment and Copyright fixes/updates.

Reviewed by: adrian (co-mentor)
Approved by: adrian (co-mentor)


241301 06-Oct-2012 avg

add detection of serial console presence to btx and boot2-like blocks

Note that this commit slightly increases size of boot blocks.

Reviewed by: jhb
Tested by: Olivier Cochard-Labbe <olivier@cochard.me>
MFC after: 26 days


241300 06-Oct-2012 avg

i386 comconsole: don't loop forever if hardware doesn't respond

- clear capability flags when hw timeouts
- retire comc_started status variable and directly use c_flags to see
if comconsole is selected for use

Reviewed by: jhb
Tested by: Uffe Jakobsen <uffe@uffe.org>,
Olivier Cochard-Labbe <olivier@cochard.me>
MFC after: 26 days


241299 06-Oct-2012 avg

boot/console: handle consoles that fail to probe

- clarify meaning of console flags
- perform i/o via a console only if both of the following conditions are met:
o console is active (selected by user or config)
o console flags that it can perform the operation
- warn if a chosen console can not work (the warning may go nowhere without
working and active console, though)

Reviewed by: jhb
Tested by: Uffe Jakobsen <uffe@uffe.org>,
Olivier Cochard-Labbe' <olivier@cochard.me>
MFC after: 26 days


241294 06-Oct-2012 avg

zfsboot: simplify probe_drive() a little bit

The first discovered pool, whether it covers the whole boot disk or not,
is going to be first in zfs_pools list. So there is no need at all
for spapp parameter.

This commit also fixes a bug where NULL would be assigned to NULL
pointer when probe_drive was called with the spapp parameter of NULL.

MFC after: 21 days


241293 06-Oct-2012 avg

zfs boot: export boot/primary pool and vdev guid all the way to kenv

This is work in progress to for znextboot and it also provides
some convenient infrastructure.

MFC after: 20 days


241292 06-Oct-2012 avg

zfs loader: treat plain pool name as a name of its root dataset

... as opposed to the previous behavior of treating it as boot
dataset (specified by bootfs or default)

MFC after: 19 days


241291 06-Oct-2012 avg

zfs boot spa_status: print bootfs for each reported pool

MFC after: 9 days


241290 06-Oct-2012 avg

boot/zfs: a small whitespace cleanup

MFC after: 5 days


241289 06-Oct-2012 avg

boot/zfs: call zfs_spa_init for all found pools

... and drop those for which it fails.
Also, add more sanity checking to the function.

MFC after: 16 days


241288 06-Oct-2012 avg

zfsboot: use the same zfs dataset naming format as loader

Also, pool name alone now names a root dataset of the pool regardless
of bootfs property value.

MFC after: 15 days


241284 06-Oct-2012 avg

zfs boot: add lszfs command to i386 loader

... to list child datasets of a specified dataset.
Dataset name should be provided in poolname/dsname format.

MFC after: 17 days


241283 06-Oct-2012 avg

zfs boot: add code for listing child datasets of a given dataset

- only filesystem datasets are supported
- children names are printed to stdout

To do: allow to iterate over the list and fetch names programatically

MFC after: 17 days


241282 06-Oct-2012 avg

zfs boot: chose a "first" pool if none is explicitly requested

MFC after: 8 days


241164 03-Oct-2012 ae

Replace all references to loader_callbacks_v1 with loader_callbacks.

Suggested by: grehan@


241070 30-Sep-2012 ae

Fix the style.


241069 30-Sep-2012 ae

Remember the file format of the last loaded module and try to use it for
next files.


241068 30-Sep-2012 ae

Reduce the number of attempts to detect proper kld format for the amd64
loader.


241065 30-Sep-2012 ae

Fix disk_cleanup() to work without DISK_DEBUG too.


241053 29-Sep-2012 ae

Almost each time when loader opens a file, this leads to calling
disk_open(). Very often this is called several times for one file.
This leads to reading partition table metadata for each call. To
reduce the number of disk I/O we have a simple block cache, but it
is very dumb and more than half of I/O operations related to reading
metadata, misses this cache.

Introduce new cache layer to resolve this problem. It is independent
and doesn't need initialization like bcache, and will work by default
for all loaders which use the new DISK API. A successful disk_open()
call to each new disk or partition produces new entry in the cache.
Even more, when disk was already open, now opening of any nested
partitions does not require reading top level partition table.
So, if without this cache, partition table metadata was read around
20-50 times during boot, now it reads only once. This affects the booting
from GPT and MBR from the UFS.


241047 29-Sep-2012 ae

Disable splitfs support, since we aren't support floppies for a long
time. This slightly reduces an overhead, when loader tries to open
file that doesn't exist.


241023 28-Sep-2012 ae

Make the loader a bit smarter, when it tries to open disk and the slice
number is not exactly specified. When the disk has MBR, also try to read
BSD label after ptable_getpart() call. When the disk has GPT, also set
d_partition to 255. Mostly, this is how it worked before.


240854 23-Sep-2012 nyan

MFi386: revision 240637

loader/i386: replace ugly inb/outb re-implementations with cpufunc.h


240852 23-Sep-2012 nyan

Cosmetic changes.


240782 21-Sep-2012 andreast

Implement elfN(reloc) for powerpc. With this change the kernel is now able to
resolve dependencies of modules at boot time and load additional modules when
needed.

MFC after: 1 week


240655 18-Sep-2012 mav

Fix panics on attempt to dereference uninitizlized pointer, returned via
'path' argument of ofw_parsedev() if devspec refers raw device with no path.

For example, `ls /pci@1f,0/ide@d/disk@0,0:a/` works fine, while
`ls /pci@1f,0/ide@d/disk@0,0:a` panicked before this change.


240637 18-Sep-2012 avg

loader/i386: replace ugly inb/outb re-implementations with cpufunc.h

Use of __builtin_constant_p in a function that is only called via
a pointer is a good example of how out-of-date it was.

Suggested by: bde
MFC after: 1 week


240594 17-Sep-2012 andrew

Add the Tegra2 DTS files. Now our dtc supports including other files use
this support to pull out the SoC specific parts of the dts file.


240492 14-Sep-2012 gber

Add support for MSI in interrupt controlller.

MSI are implemented via software interrupt. PCIe cards will write
into software interrupt register which will cause inbound shared
interrupt which will be interpreted as a MSI.

Obtained from: Marvell, Semihalf


240488 14-Sep-2012 gber

Add support for Armada XP A0.

- Add functions to calculate clocks instead using hardcoded values
- Update reset and timers functions
- Update number of interrupts
- Change name of platform from db88f78100 to db78460
- Correct DRAM size and PCI IRQ routing in dts file.

Obtained from: Semihalf


240481 14-Sep-2012 kientzle

The MBR data is not necessarily aligned. This is a problem on ARM.


240421 12-Sep-2012 mav

Make pxe device in lsdev really include device name, looking like this:
pxe0: 192.168.3.1:/storage/nfsroot/amd64
, instead of confusing and less useful:
192.168.3.1:pxeboot


240349 11-Sep-2012 avg

zfs boot: add a size check for a value in fzap_lookup

MFC after: 25 days


240348 11-Sep-2012 avg

zfs boot: print only an attribute name in fzap_list

... this matches mzap_list behavior

MFC after: 12 days


240347 11-Sep-2012 avg

zfs boot: fix/replace fzap_rlookup implementation

The previous one was totally bogus as it used hash value of
_output_ variable as an index for searching...
The only reliable way to do a reverse lookup here is to iterate
over all entries.

MFC after: 15 days


240346 11-Sep-2012 avg

zfs boot: bring zap_leaf_chunk field names in sync with kernel code

This change is cosmetic.

MFC after: 10 days


240342 11-Sep-2012 avg

boot: file_loadraw should strdup name argument

... the same way it's done for type argument.

MFC after: 2 weeks


240341 11-Sep-2012 avg

a bit of trailing whitespace cleanup

MFC after: 1 week


240335 11-Sep-2012 ae

Slightly reduce an overhead for the open() call in the zfsloader.
libstand(3) tries to detect file system in the predefined order,
but zfsloader usually is used for the booting from ZFS, and there is
no need to try detect several file system types for each open() call.


240277 09-Sep-2012 ae

Handle LOADER_NO_DISK_SUPPORT knob in the arm and powerpc ubldr.


240276 09-Sep-2012 ae

Update according to the change of struct uboot_devdesc.


240275 09-Sep-2012 ae

Build disk.c only when DISK_SUPPORT is enabled.


240274 09-Sep-2012 ae

Update uboot's disk driver to use new DISK API.


240273 09-Sep-2012 ae

Use disk_fmtdev() and disk_parsedev() functions from the new DISK API.


240272 09-Sep-2012 ae

Make struct uboot_devdesc compatible with struct disk_devdesc.


240249 08-Sep-2012 andreast

Fix loading of kernel modules at boot time for powerpc64.

Reported by: Mathias Breuninger
MFC after: 1 week


239922 30-Aug-2012 gonzo

Add barebone Raspberry Pi port. Supported parts:
- Interrupts controller
- Watchdog
- System timer
- Framebuffer (hardcoded resolution/bpp)


239487 21-Aug-2012 jchandra

Add correct range parameter in XLP DTS

r239274 added support for ranges. Update XLP DTS to provide the correct
range parameter for the XLP SoC bus. Also fix bus_space_map method
for XLP bus space.

Submitted by: Sreekanth M. <sreekanth.molagavalli@broadcom.com>


239378 18-Aug-2012 marcel

Build zfs on ia64 as well. We don't build a loader with zfs support
just yet, but building it makes sure we catch (build) regressions.


239377 18-Aug-2012 marcel

Don't build the ski loader anymore. The code is not deleted just yet,
as it explains the distinction between the common and the platform-
specific code.


239325 16-Aug-2012 ae

Add comment why the code has been disabled.

Requested by: rpaulo


239294 15-Aug-2012 ae

Some BIOSes return incorrect number of sectors, make checks less
strictly, to do not lost some partitions.

Reported by: swills@


239293 15-Aug-2012 ae

Rework r239232 to unbreak ZFS detection on MBR slices.


239292 15-Aug-2012 ae

Explicitly terminate the string after strncpy(3).


239281 15-Aug-2012 gonzo

Merging of projects/armv6, part 10

- Support for Texas Instruments SoCs:
- AM335x
- OMAP4

- Kernel configs, DTS for Beaglebone and Pandaboard

Submitted by: Ben Gray, Damjan Marion


239280 15-Aug-2012 gonzo

Merging of projects/armv6, part 9

Very basic support for Nvidia Tegra2: timer, interrupts, UART.

Submitted by: Damjan Marion <dmarion@freebsd.org>


239278 15-Aug-2012 gonzo

Merging of projects/armv6, part 8

r235162:

Initial LPC32x0 support. Includes DTS file for Embedded Artists EA3250
board.

Peripherals currently supported:
- Serial ports
- Interrupt controller
- Timers
- Ethernet
- USB host
- Framebuffer (in conjunction with SSD1289 LCD controller)
- RTC
- SPI
- GPIO

Submitted by: Jakub Wojciech Klama <jceel@freebsd.org>


239277 15-Aug-2012 gonzo

Merging of projects/armv6, part 7

Add Marvell ARMADA XP support

Obtained from: Marvell, Semihalf


239255 14-Aug-2012 des

As discussed on -current, remove the hardcoded default maxswzone.

MFC after: 3 weeks


239243 13-Aug-2012 dim

After r239066, reinitialize v86.ctl and v86.addr for int 13 EDD probing
in sys/boot/i386/libi386/biosdisk.c. Otherwise, when DISK_DEBUG is
enabled, the DEBUG() macros will clobber those fields, and cause the
probing to always fail mysteriously when debugging is enabled.


239232 13-Aug-2012 ae

Restore the old behaviour. If requested partition is a BSD slice,
but d_partition isn't explicitly set, then try to open BSD label and its
first partition.


239231 13-Aug-2012 ae

Remove colons from the debug message, device name returned by the
disk_fmtdev() already has the colons.


239230 13-Aug-2012 ae

Unbreak booting from the true dedicated disks.
When we open the disk, check the type of partition table, that has
been detected. If this is BSD label, then we assume this is DD mode.

Reported by: dim@


239211 12-Aug-2012 ae

Add another debug message.


239210 12-Aug-2012 ae

Add more debug messages.


239127 07-Aug-2012 ae

As it turned out, there are some installations, where BSD label
contains partitions with type zero. And it has worked.
So, allow detect these partitions.

Reported by: glebius


239088 06-Aug-2012 ae

Fix start offset calculation for the EBR partitions.


239073 05-Aug-2012 ae

Bump USERBOOT_VERSION.

Requested by: dfr


239069 05-Aug-2012 nyan

Reduce diffs against i386.


239068 05-Aug-2012 ae

Teach the ZFS use new partitions API when probing.
Note: now ZFS does probe only for partitions with type "freebsd-zfs"
and "freebsd".


239067 05-Aug-2012 ae

Remove unneeded flag.


239066 05-Aug-2012 ae

Add offset field to the i386_devdesc structure to be compatible with
disk_devdesc structure. Update biosdisk driver to the new disk API.


239064 05-Aug-2012 nyan

Reduce diffs against i386.


239063 05-Aug-2012 nyan

MFi386: the part of r219452 and r236405.

- bunch of variables are turned into uint8_t.
- Remove unnecessary initializations.


239060 05-Aug-2012 ae

When GPT signature is invalid in the primary GPT header, then try to
read backup GPT header.

Submitted by: hrs (previous version)


239058 05-Aug-2012 ae

Introduce new API to work with disks from the loader's drivers.
It uses new API from the part.c to work with partition tables.

Update userboot's disk driver to use new API. Note that struct
loader_callbacks_v1 has changed.


239057 05-Aug-2012 ae

Remove unused variables.


239054 05-Aug-2012 ae

Create the interface to work with various partition tables from the
loader(8). The following partition tables are supported: BSD label, GPT,
MBR, EBR and VTOC8.


238851 27-Jul-2012 marius

Pull the tier-2 card and change the sparc64 ZFS loader to no longer probe
all diskN aliases for providers (which more or less corresponds to how the
x86 version behaves) but instead probe only those listed in the boot-device
OFW environment variable. This has the following advantages:
- avoids otherwise unavoidable OFW warnings about failures to open disks
for which aliases exist but no actual hardware is connected
- avoids issues due to different diskN naming schemes
- aligns us with Solaris

MFC after: 3 days


238795 26-Jul-2012 ache

Try to avoid all files dependence on the modification time of the large and
often modified directory created symbolic links points to - it cause
unnecessary full rebuilds each time make runs when directory is changed.
So do it only if symbolic link does not exists, which usually means that
objdir is clean anyway.

MFC after: 1 week


238463 15-Jul-2012 imp

Use the pin number rather than the hybrid pin number + name.


238431 14-Jul-2012 dteske

Fix domain.

Approved by: emaste


238188 07-Jul-2012 imp

Generalize this for loading the loader into the SPI. Plus trim about
100 bytes from the binary with silly tricks. Hope to get this small
enough to run on the models that have 4k SRAM. We are close compiled
for the at91rm9200, but still need to trim for the target.


238187 07-Jul-2012 imp

Allow other SOCs to be compiled in, first step.


238186 07-Jul-2012 imp

Strip out the useless junk. All we really care about is the text,
data and bss sections. All the rest is needed for normal binaries,
but boot loaders aren't normal.


237410 21-Jun-2012 delphij

MFV: Update zlib to 1.2.7.

(x86 assembler optimization disabled for now because it
requires the new .cfi_* directives that is not supported
by base system binutils).

MFC after: 1 week


237338 20-Jun-2012 jhb

Don't return an error if a kld does not contain any modules (e.g. a
kld that only contained a sysctl). The kernel linker allows such
modules, so the boot loader should not reject them.

MFC after: 2 weeks


237001 13-Jun-2012 mm

Fix ZFS boot with pre-features pools (version <= 28) broken in r236884

Reported by: mav
MFC after: 1 month


236884 11-Jun-2012 mm

Introduce "feature flags" for ZFS pools (bump SPA version to 5000).
Add first feature "com.delphix:async_destroy" (asynchronous destroy
of ZFS datasets).
Implement features support in ZFS boot code.

Illumos revisions merged:
13700:2889e2596bd6
13701:1949b688d5fb
2619 asynchronous destruction of ZFS file systems
2747 SPA versioning with zfs feature flags

References:
https://www.illumos.org/issues/2619
https://www.illumos.org/issues/2747

Obtained from: illumos (issue #2619, #2747)
MFC after: 1 month


236581 04-Jun-2012 marius

The loaddev environment variable is not modifiable once set, so it is not
update for ZFS. It seems that this does not really affect anything except
the help command. Nevertheless, rearrange things so loaddev is set only
once in all cases in order to get it right.
Pointed out by: avg

MFC after: r235364


236579 04-Jun-2012 marius

The workaround added in r151650 for handling firmwares that don't allow
a single device to be opened multiple times concurrently unfortunately
isn't sufficient with ZFS. This is due to the fact, that ZFS may open
different partitions of a single device simultaneously. So the best we
can do in this case is to cache the lastly used device path and close
and open devices in ofwd_strategy() as needed.

PR: 165025
Submitted by: Gavin Mu
MFC after: 1 week


236405 01-Jun-2012 jhb

Remove unnecessary initializations. The BSS of boot2 is in fact
zero'd when boot2 begins execution by the _start() routine in btxcsu.S.

MFC after: 1 week


236213 29-May-2012 kevlo

Make sure that each va_start has one and only one matching va_end,
especially in error cases.


236159 27-May-2012 kientzle

Allow the load address used by ARM ubldr to be set via Make argument.

In particular, this simplifies scripts that build system
images.


236024 25-May-2012 raj

Import DTS files for the upcoming DPAA QorIQ (PowerPC) support.

- P2041RDB
- P3041DS
- P5020DS

Obtained from: Freescale


235988 25-May-2012 gleb

Use 32-bit ufs_ino_t instead of ino_t to keep boot2 small and prevent
unnecessary 64-bit math on 32-bit machines.

Sponsored by: Google Summer of Code 2011


235873 24-May-2012 wblock

Fixes to man8 groff mandoc style, usage mistakes, or typos.

PR: 168016
Submitted by: Nobuyuki Koganemaru
Approved by: gjb
MFC after: 3 days


235779 22-May-2012 gber

Divide nand flash for DB6281 into two partitions. One for u-boot
and second one for general use.

Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks


235778 22-May-2012 gber

Add a new geom class which allows to divide NAND Flash chip
into partitions.

Partitions are created based on data in dts file which are
extracted and interpreted by slicer.

Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks


235694 20-May-2012 kientzle

Determine kernel load address dynamically from u-boot memory map.

The generic ELF loading code maps the kernel into low memory
by subtracting KERN_BASE. So the copyin/copyout/readin functions
are always called with low addresses. This code finds the largest
DRAM block from the U-Boot memory map and adds that base to
the addresses.

In particular, this fixes ubldr on AM3358, which has DRAM
mapped to 0x80000000 at power-on.


235609 18-May-2012 gber

Add architecture dependent code to support NAND Framework on Marvell SoCs.

Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks


235560 17-May-2012 dteske

Update contact info.

PR: N/A (mentor approved)
Submitted by: dteske
Reviewed by: dteske (mentor approved)
Approved by: emaste (mentor)
MFC after: 1 week


235537 17-May-2012 gber

Import work done under project/nand (@235533) into head.

The NAND Flash environment consists of several distinct components:
- NAND framework (drivers harness for NAND controllers and NAND chips)
- NAND simulator (NANDsim)
- NAND file system (NAND FS)
- Companion tools and utilities
- Documentation (manual pages)

This work is still experimental. Please use with caution.

Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks


235529 17-May-2012 kientzle

Access the device tree blob via copyin/copyout.

The code previously assumed that copyin/copyout did no
address translation and that the device tree blob could
be manipulated in-place (with only a few adjustments for
the ELF loader offset). This isn't possible on all platforms,
so the revised code uses copyout() to copy the device tree
blob into a heap-allocated buffer and then updates the
device tree with copyout(). This isn't ideal, since it
bloats the loader memory usage, but seems the only feasible
approach (short of rewriting all of the fdt manipulation
routines).


235395 13-May-2012 avg

libpc98: unbreak after zfs-related changes in libi386 code

Pointyhat to: avg
MFC after: 1 month


235394 13-May-2012 avg

zfs boot: cleanup remnants of temporary compat code

MFC after: 1 month


235390 13-May-2012 avg

zfs boot code: mark spa_t arguments as const where they are used as such

MFC after: 1 month


235364 12-May-2012 avg

sparc64/zfs boot: take advantage of new libzfsboot capabilities

Also drop the now unneeded compatibility shims.

Tested by: marius
MFC after: 1 month


235361 12-May-2012 avg

zfs boot code: use %j and uintmax_t instead %ll and uint64_t in printfs

This is to silence warnings that result from different definitions of
uint64_t on different architectures, specifically i386 and sparc64.

MFC after: 1 month


235330 12-May-2012 avg

zfs boot: try to set vfs.root.mountfrom from currdev as a fallback

This way with the new zfsloader there is no need to explicitly set zfs
root filesystem either via vfs.root.mountfrom or fstab.
It should be automatically picked up from currdev which is by default
is set from bootfs.

Tested by: Florian Wagner <florian@wagner-flo.net> (x86)
MFC after: 1 month


235329 12-May-2012 avg

zfsboot/zfsloader: support accessing filesystems within a pool

In zfs loader zfs device name format now is "zfs:pool/fs",
fully qualified file path is "zfs:pool/fs:/path/to/file"
loader allows accessing files from various pools and filesystems as well
as changing currdev to a different pool/filesystem.

zfsboot accepts kernel/loader name in a format pool:fs:path/to/file or,
as before, pool:path/to/file; in the latter case a default filesystem
is used (pool root or bootfs). zfsboot passes guids of the selected
pool and dataset to zfsloader to be used as its defaults.

zfs support should be architecture independent and is provided
in a separate library, but architectures wishing to use this zfs support
still have to provide some glue code and their devdesc should be
compatible with zfs_devdesc.
arch_zfs_probe method is used to discover all disk devices that may
be part of ZFS pool(s).

libi386 unconditionally includes zfs support, but some zfs-specific
functions are stubbed out as weak symbols. The strong definitions
are provided in libzfsboot.
This change mean that the size of i386_devspec becomes larger
to match zfs_devspec.

Backward-compatibility shims are provided for recently added sparc64
zfs boot support. Currently that architecture still works the old
way and does not support the new features.

TODO:
- clear up pool root filesystem vs pool bootfs filesystem distinction
- update sparc64 support
- set vfs.root.mountfrom based on currdev (for zfs)

Mid-future TODO:
- loader sub-menu for selecting alternative boot environment

Distant future TODO:
- support accessing snapshots, using a snapshot as readonly root

Reviewed by: marius (sparc64),
Gavin Mu <gavin.mu@gmail.com> (sparc64)
Tested by: Florian Wagner <florian@wagner-flo.net> (x86),
marius (sparc64)
No objections: fs@, hackers@
MFC after: 1 month


235281 11-May-2012 dim

Fix sys/boot/i386/cdboot/cdboot.S compilation with clang after r235219.
This file uses .code16 directives, which are not yet supported by
clang's integrated assembler.

MFC after: 1 month


235272 11-May-2012 imp

Add support for passing in the board ID.

# This doesn't implement the full Linux boot ABI for arm yet.
# since there's no ATAGs list passed in for r2, and r0 has
# boot options rather than 0 as specified in the standard.
# Commited code to the tree won't touch any of this anyway, but
# future code may be able to use this.


235271 11-May-2012 imp

Hack to unbreak boot2 for at91rm9200 boot loader. When the at91sam
code came in, it moved things around which wound up breaking the
build. We have to do this bit of a hack to avoid duplication of a lot
of #defines.


235264 11-May-2012 avg

MFi386: improve argument passing via btxldr

use related definitions in i386 bootargs.h

Reviewed by: nyan, jhb
MFC after: 1 month


235261 11-May-2012 kientzle

Don't hang if there is no /cpus node in the device tree.


235219 10-May-2012 avg

cdboot, pxeldr: make use of bootargs.h instead of redefining flag constants

Reviewed by: jhb
MFC after: 1 month


235207 09-May-2012 marius

Use a non-tricky approach for building and installing zfsboot sharing
the Makefile with boot1.

Submitted by: ru


235158 09-May-2012 avg

r235154 followup: add stddef.h for offsetof

MFC after: 1 month


235156 09-May-2012 avg

i386 zfsloader: rename LIBZFS to LIBZFSBOOT

... to avoid name clash with the other libzfs

MFC after: 1 month


235155 09-May-2012 avg

i386 boot: consolidate MAXBDDEV definition

MFC after: 1 month


235154 09-May-2012 avg

btxldr: future-proof argument passing from boot1/2-ish to loader

Place the arguments at a fixed offset of 0x800 withing the argument area
(of size 0x1000). Allow variable size extended arguments first of which
should be a size of the extended arguments (including the size
parameter).

Consolidate all related definitions in a new i386/common/bootargs.h header.

Many thanks to jhb and bde for their guidance and reviews.

Reviewed by: jhb, bde
Approved by: jhb
MFC after: 1 month


235153 09-May-2012 avg

sys/boot: add common CTASSERT definition


235095 06-May-2012 kientzle

Ooops. Back out changes to main.c from r235094.

This change is specific to BeagleBone; I need to figure out how to
generalize this before committing.


235094 06-May-2012 kientzle

Don't call strcmp with a NULL pointer.

In particular, on the AM335x, which comes up with no memory
mapped to low addresses, dereferencing the NULL causes a crash.


234908 02-May-2012 kientzle

Remove some redundant register loads.

Discussed on: arm@


234898 01-May-2012 marius

Add initial support for booting from ZFS on sparc64. At least on Sun Fire
V100, the firmware is known to be broken and not allowing to simultaneously
open disk devices, causing attempts to boot from a mirror or RAIDZ to cause
a crash. This will be worked around later. The firmwares of newer sun4u models
don't seem to exhibit this problem though.

Steps for ZFS booting:

1. create VTOC8 label
# gpart create -s vtoc8 da0

2. add partitions, f.e.:
# gpart add -t freebsd-zfs -s 60g da0
# gpart add -t freebsd-swap da0
resulting in something like:
# gpart show
=> 0 143331930 da0 VTOC8 (68G)
0 125821080 1 freebsd-zfs (60G)
125821080 17510850 2 freebsd-swap (8.4G)

3. create zpool
# zpool create bunker da0a
or for mirror/RAIDZ (after preparing additional disks as in steps 1. + 2.):
# zpool create bunker mirror da0a da1a
# zpool create bunker raidz da0a da1a da2a ...

4. set bootfs
# zpool set bootfs=bunker bunker

5. install zfsboot
# zpool export bunker
# gpart bootcode -p /boot/zfsboot da0

6. write zfsloader to the ZFS Boot Block (so far, there's no dedicated tool
for this, so dd(1) has to be used for this purpose)
When using mirror/RAIDZ, step 4. and the dd(1) invocation should be repeated
for the additional disks in order to be able to boot from another disk in
case of failure.
# sysctl kern.geom.debugflags=0x10
# dd if=/boot/zfsloader of=/dev/da0a bs=512 oseek=1024 conv=notrunc
# zpool import bunker

7. install system on ZFS filesystem
Don't forget to set 'zfs_load="YES"' and vfs.root.mountfrom="zfs:bunker" in
loader.conf as well as 'zfs_enable="YES"'in rc.conf.

8. copy zpool.cache to the ZFS filesystem
cp -p /boot/zfs/zpool.cache /bunker/boot/zfs/zpool.cache

9. set mountpoint
# zfs set mountpoint=/ bunker

10. Now, given that aliases for all disks in the zpool exists (check with
the `devalias` command on the boot monitor prompt) and disk0 corresponds
to da0 (likewise for additional disks), the system can be booted from the
ZFS with:
{1} ok boot disk0

PR: 165025
Submitted by: Gavin Mu


234897 01-May-2012 marius

Add a command for showing the heap usage.

PR: 165025
Submitted by: Gavin Mu
MFC after: 1 week


234860 01-May-2012 kientzle

Teach ubldr(8) about simple MBR partitioning.


234789 29-Apr-2012 marius

Add multiple inclusion protection.

PR: 165025
Submitted by: Gavin Mu
MFC after: 1 week


234493 20-Apr-2012 marcel

Build a 32-bit EFI loader on amd64. This to match the rest of the
code that is used to construct a loader (e.g. libstand, ficl, etc).

There is such a thing as a 64-bit EFI application, but it's not
as standard as 32-bit is. Let's make the 32-bit functional (as in
we can load and actualy boot a kernel) before solving the 64-bit
loader problem.


234339 16-Apr-2012 avg

zfsboot: honor -q if it's present in boot.config

Before r228267 the option was honored but the original content of
boot.config was not preserved. I tried to fix that but missed the idea.
Now the proper way of doing things is taken from i386/boo2.
Also, a comment is added to explain this a little bit unobvious
behavior.

Inspired by: jhb
MFC after: 5 days


234176 12-Apr-2012 ae

Read backup GPT header from the last LBA only when primary GPT header and
table aren't valid. If they are ok, use hdr_lba_alt value to read backup
header. This will make gptboot happy when GPT used atop of some GEOM
provider, e.g. GEOM_MIRROR.

Reviewed by: pjd
MFC after: 2 weeks


233941 06-Apr-2012 avg

retrofit Safe Mode loader menu item actions

The menu item is now made completely independent with the ACPI item - most
modern systems seem to require ACPI and become even more "unsafe"
without it.
Safe Mode no longer disables APIC for the same reason.
kbdmux is not disabled as this feature has proven itself stable.

New actions:
- SMP is disabled in the Safe Mode now
- eventtimers are forced to periodic mode (some real and virtual systems
seem to have problems otherwise)
- geom extra vigorous integrity checking is disabled, this is to
facilitate migration from previous versions

Possible short term to do:
- make SMP switch a separate menu item
- restore APIC switch as a separate menu item

Longer term to do:
- turn various tweaks into separate menu items in a Safe Mode sub-menu

Please consider adding a safety tweak to Safe Mode when introducing
new major features or changes that may cause instabilities.

Discussed with: jhb, scottl, Devin Teske
MFC after: 3 weeks (stable/9 only)


233666 29-Mar-2012 nwhitehorn

Fix build after changes to trap headers.


233648 29-Mar-2012 eadler

Remove trailing whitespace per mdoc lint warning

Disussed with: gavin
No objection from: doc
Approved by: joel
MFC after: 3 days


233517 26-Mar-2012 marius

Remove second consts in r233288 in order to appease C++ compilers.
While at it, remove some style(9) bugs in libkern.h.

Submitted by: kan


233323 22-Mar-2012 raj

Improve FDT handling in loader(8) and make it more robust.

o Fix buffer overflows when using a long property body in node paths.
o Fix loop end condition when iterating through the symbol table.
o Better error handling during node modification, better problem reporting.
o Eliminate build time warnings.

Submitted by: Lukasz Wojcik
Obtained from: Semihalf
MFC after: 1 week


233288 21-Mar-2012 marius

Declare the CRC lookup-tables const as they hardly should change at
run-time.


233287 21-Mar-2012 marius

Use the common/shared CRC-32 implementation instead of duplicating it.

MFC after: 1 week


233230 20-Mar-2012 raj

Improve device tree blob (DTB) handling in loader(8).

Enable using the statically embedded blob from the kernel, if present. The KLD
loaded DTB takes precedence, but they are both recognized and handled in the
same way.

Submitted by: Lukasz Wojcik
Obtained from: Semihalf
MFC after: 1 week


233105 18-Mar-2012 marius

Declare some variables static in order to reduce the object size and
redo r232822 in a less hackish way. The latter now no longer breaks
compiling the x86 boot2 with clang.

MFC after: 1 week


232822 11-Mar-2012 marius

Fix a bug introduced in r223938; on big-endian machines coping a 32-bit
quantum bytewise to the address of a 64-bit variable results in writing
to the "wrong" 32-bit half so adjust the address accordingly. This fix
is implemented in a hackish way for two reasons:
o in order to be able to get it into 8.3 with zero impact on the little-
endian architectures where this bug has no effect and
o to avoid blowing the x86 boot2 out of the water again when compiling
it with clang, which all sane versions of this fix tested do.
This change fixes booting from UFS1 file systems on big-endian machines.

MFC after: 3 days


232784 10-Mar-2012 nyan

MFi386: revisions 232570 and 232754

Fix boot2 to handle boot config files that only contain a custom path to
a loader or kernel.


232754 09-Mar-2012 jkim

Make boot2 build with Clang again.

Submitted by: dim (bsd.sys.mk)
Reviewed by: dim, jhb


232623 06-Mar-2012 jhb

Add a note to clarify why we create a relocated copy of boot1 in lower
memory.


232614 06-Mar-2012 bz

Provide wbwd(4), a driver for the watchdog timer found on various
Winbond Super I/O chips.

With minor efforts it should be possible the extend the driver to support
further chips/revisions available from Winbond. In the simplest case
only new IDs need to be added, while different chipsets might require
their own function to enter extended function mode, etc.

Sponsored by: Sandvine Incorporated ULC (in 2011)
Reviewed by: emaste, brueffer
MFC after: 2 weeks


232570 05-Mar-2012 jhb

Fix boot2 to handle boot config files that only contain a custom path to
a loader or kernel. Specifically, kname cannot be pointed at cmd[] since
it's value is change to be an empty string after the initial call to
parse, and cmd[]'s value can be changed (thus losing a prior setting for
kname) due to user input at the boot prompt. While here, ensure that that
initial boot config file text is nul-terminated, that ops is initialized
to zero, and that kname is always initialized to a valid string.

Tested by: Domagoj Smolcic rank1seeker of gmail
MFC after: 1 week


232518 04-Mar-2012 raj

Respect phy-handle property in Ethernet nodes of the device tree.

This lets specify whereabouts of the parent PHY for a given MAC node
(and get rid of ugly kludges in mge(4) and tsec(4)).

Obtained from: Semihalf
MFC after: 1 week


232309 29-Feb-2012 jkim

Fix a long standing bug. The caller expects a non-zero value for success.
Luckily keyboard probing was turned off by default from the first revision.

Submitted by: Alexander Sack (asack at niksun dot com)
MFC after: 3 days


232263 28-Feb-2012 dim

Define several extra macros in bsd.sys.mk and sys/conf/kern.pre.mk, to
get rid of testing explicitly for clang (using ${CC:T:Mclang}) in
individual Makefiles.

Instead, use the following extra macros, for use with clang:
- NO_WERROR.clang (disables -Werror)
- NO_WCAST_ALIGN.clang (disables -Wcast-align)
- NO_WFORMAT.clang (disables -Wformat and friends)
- CLANG_NO_IAS (disables integrated assembler)
- CLANG_OPT_SMALL (adds flags for extra small size optimizations)

As a side effect, this enables setting CC/CXX/CPP in src.conf instead of
make.conf! For clang, use the following:

CC=clang
CXX=clang++
CPP=clang-cpp

MFC after: 2 weeks


232158 25-Feb-2012 gjb

Whitespace cleanup:
o Wrap sentences on to new lines
o Cleanup trailing whitespace

Found with: textproc/igor
MFC after: 1 week
X-MFC-With: r232157


232157 25-Feb-2012 gjb

Fix various typos in manual pages.

Submitted by: amdmi3
PR: 165431
MFC after: 1 week


231852 17-Feb-2012 bz

Merge multi-FIB IPv6 support from projects/multi-fibv6/head/:

Extend the so far IPv4-only support for multiple routing tables (FIBs)
introduced in r178888 to IPv6 providing feature parity.

This includes an extended rtalloc(9) KPI for IPv6, the necessary
adjustments to the network stack, and user land support as in netstat.

Sponsored by: Cisco Systems, Inc.
Reviewed by: melifaro (basically)
MFC after: 10 days


231810 16-Feb-2012 nwhitehorn

Make sure to synchronize icache for the newly loaded loader. Not an issue
on most systems, when the relevant icache lines are not full.

MFC after: 2 weeks


231387 10-Feb-2012 nyan

Reduce diffs against i386.

MFC after: 1 week


231042 05-Feb-2012 rpaulo

Fix clang warnings.


230545 25-Jan-2012 pluknet

Clarify and improve the boot menu with some small changes:
- Enter instead of ENTER
- Remove colons
- Line up option values
- Use dots to provide a line to visually connect the menu
selections with their values
- Replace Enabled/Disabled with off/On
(bigger inital cap for "On" is a visual indicator)
- Remove confusing "Boot" from selections that don't boot.
- With loader_color=1 in /boot/loader.conf, use reverse video to
highlight enabled options

PR: misc/160818
Submitted by: Warren Block <wblock wonkity com>
Reviewed by: Devin Teske <devin dot teske fisglobal com>, current@
MFC after: 1 week


230522 25-Jan-2012 nwhitehorn

Experimental support for booting CHRP-type PowerPC systems from hard disks.


230325 19-Jan-2012 sbruno

Wrap changes from svn r212126 inside LOADER_NFS_SUPPORT such that
using LOADER_TFTP_SUPPORT excludes this code. Fixes compilation of pxeldr
with -DLOADER_TFTP_SUPPORT

Applicable to stable/9 and stable/8 now.

This appears to not be needed on stable/7 as r212126 has not been MFC'd.

Obtained from: Yahoo! Inc.
MFC after: 2 weeks


230140 15-Jan-2012 nwhitehorn

Fix some unreliability problems related to MSR bits inherited from kboot by
setting an absolute MSR when during on the MMU. This prevents delay(), in
particular, from intermittently malfunctioning.


230109 14-Jan-2012 eadler

- Document TheDraw splash screens in the default loader.conf

Submitted by: Jason Hellenthal
Approved by: glebius
MFC after: 3 days


229881 09-Jan-2012 pluknet

Get rid of a spurious warning on the console when booting the kernel
from the interactive loader(8) prompt and beastie_disable="YES" is set
in loader.conf(5). In this case menu.rc is not evaluated and consequently
menu-unset does not have a body yet. This results in the ficl warning
"menu-unset not found" when try-menu-unset invokes menu-unset.

Check for beastie_disable="YES" explicitly, so that the try-menu-unset
word will not attempt to invoke menu-unset because the menu will have
never been configured. [1]
Use the sfind primitive as a last resort as an additional safer approach
conjuring a foreign word safely. [2]

PR: kern/163938
Submitted by: Devin Teske [1]
Reviewed by: Devin Teske [2]
Reported and tested by: dim
MFC after: 1 week
X-MFC with: r228985


229771 07-Jan-2012 kib

Document comconsole_port and comconsole_pcidev loader variables.

MFC after: 2 weeks


229463 04-Jan-2012 nyan

MFi386: revision 229435

Add special loader environment variables 'comconsole_port' and
'comconsole_pcidev'.

MFC after: 2 weeks


229462 04-Jan-2012 nyan

Fix 230MB MO support.

Submitted by: Kaho Toshikazu
MFC after: 1 week


229435 03-Jan-2012 kib

Add special loader environment variables 'comconsole_port' and
'comconsole_pcidev'. The former allows to set the base address of the
serial console i/o port. The later takes the string of the format
'bus:device:function:[bar]' as a value and uses the serial port attached
as PCI device at the specified location for console.

Both variants pass 'hw.uart.console' variable to the uart driver to
properly hand-over the kernel console.

Change allows to use ISA serial ports other than COM1 for the
loader/kernel console without loader recompilation. Also, you can use
PCI-attached port as the console, e.g. Intel AMT serial pseudo-port on
some motherboards based on Q67 chipset.

Reviewed by: jhb
MFC after: 2 weeks


229403 03-Jan-2012 ed

Replace index() and rindex() calls with strchr() and strrchr().

The index() and rindex() functions were marked LEGACY in the 2001
revision of POSIX and were subsequently removed from the 2008 revision.
The strchr() and strrchr() functions are part of the C standard.

This makes the source code a lot more consistent, as most of these C
files also call into other str*() routines. In fact, about a dozen
already perform strchr() calls.


229368 03-Jan-2012 ed

Merge index() and strchr() together.

As I looked through the C library, I noticed the FreeBSD MIPS port has a
hand-written version of index(). This is nice, if it weren't for the
fact that most applications call strchr() instead.

Also, on the other architectures index() and strchr() are identical,
meaning we have two identical pieces of code in the C library and
statically linked applications.

Solve this by naming the actual file strchr.[cS] and let it use
__strong_reference()/STRONG_ALIAS() to provide the index() routine. Do
the same for rindex()/strrchr().

This seems to make the C libraries and static binaries slightly smaller,
but this reduction in size seems negligible.


228985 30-Dec-2011 pluknet

Unset the environment variables associated with individual menu items
before invoking the kernel.

Quoting submitter:

The issue is with the new boot loader menu. It adds many loader variables
including ones that contain ANSI color escapes.

Obviously, these ANSI codes don't play well with serial consoles when
kenv(1) is executed without arguments (reports vary as to what happens,
but it's never pretty).

The net-effect is that kenv(1) no longer reports menu-related variables.

In essence, kenv(1) output should now appear the same as on RELENG_8
(which lacks the new boot loader and didn't use any such variables).
Thus, restoring serial console glory.

Submitted by: Devin Teske <devin dott teske fisglobal.com>
MFC after: 2 weeks


228916 27-Dec-2011 pluknet

Clean up from the 4.x era.

In an example of boot command:
- rename wd(4) IDE disk drives name to ad(4) for the time being.
- update the used kernel path "/kernel" to the current default.
[It still worked occasionally by looking into the /boot/kernel directory,
so the resulting path was "/boot//kernel/kernel", with two slashes.]

Bump .Dd for this and previous changes.

MFC after: 1 week


228782 21-Dec-2011 ed

Make the RTC checking for QEMU even more aggressive.

At work, where we use use KVM+QEMU, we notice that pxeboot is pratically
impossible because of network timeouts. This is due to the fact that the
RTC code makes aggressive jumps.

Two RTC reads does not seem to be sufficient. Change the code to check
for 8 identical RTC values.

Sponsored by: Kumina bv


228738 20-Dec-2011 jhb

Allow boot0cfg to force a PXE boot via boot0 on the next boot.
- Fix boot0 to check for PXE when using the pre-set setting for the
preferred slice.
- Update boot0cfg to use slice 6 to select PXE. Accept a 'pxe' argument
instead of a number for the 's' option as a way to select PXE as well.

Submitted by: Andrew Boyer aboyer averesystems
MFC after: 2 weeks


228576 16-Dec-2011 glebius

- Rename if_carp.ko to carp.ko.
- carp.ko depends on sha1.c


228471 13-Dec-2011 ed

Replace `inline static' by `static inline'.

If I interpret the C standard correctly, the storage specifier should be
placed before the inline keyword. While at it, replace __inline by
inline in the files affected.


228267 04-Dec-2011 avg

zfsboot: print boot.config contents before parsing it

as parsing can be a destructive operation

MFC after: 2 weeks


228266 04-Dec-2011 avg

zfs boot: allow file vdevs to be used in testing (e.g. with zfsboottest)

MFC after: 1 week


227739 19-Nov-2011 andreast

Rename the linker emulation name for powerpc and powerc64. This is needed that
we can also use the upstream binutils linker where we have to have a unique
name for the FreeBSD emulation.


227730 19-Nov-2011 raj

Initial version of cesa(4) driver for Marvell crypto engine and security
accelerator.

The following algorithms and schemes are supported:
- 3DES, AES, DES
- MD5, SHA1

Obtained from: Semihalf
Written by: Piotr Ziecik


227727 19-Nov-2011 miwi

- Add new loader_logo orbbw to default.conf

PR: 162608
Submitted by: manolis
Approved by: rwatson (mentor)
MFC after: 3 Days


227726 19-Nov-2011 miwi

- Whitespaces fixed only

Approved by: rwatson (mentor)


227629 17-Nov-2011 marcel

Wire the kernel text RWX, rather than RX. We're not quite ready
for having kernel text non-writable, because we still need to
apply relocations. On top of that, the PBVM page table has all
pages marked as RWX, so it's an inconsistency to begin with.


227613 17-Nov-2011 raj

Add DTS for the Freescale P2020DS.

Obtained from: Freescale


227508 14-Nov-2011 marcel

Add DTS for the Freescale P1020RDB.


227506 14-Nov-2011 marcel

Add DTS for the Freescale P3041DS.


227389 09-Nov-2011 jhb

Revert some debugging printfs that crept into 223695.


227056 03-Nov-2011 pluknet

Remove the remnants of /stand/sysinstall.

loader.8: Sync the default init_path list with kern/init_main.c.

NOTES: Replace with /rescue/init in the INIT_PATH kernel option.


226833 27-Oct-2011 pluknet

Remove the long reprecated ``/stand/sysinstall'' from the init_path.

It can be put back using the INIT_PATH config option or init_path
loader variable, if still needed (which I doubt).

MFC after: 1 week


226748 25-Oct-2011 jhb

- Add a new header for the x86 boot code that defines various structures
and constants related to the BIOS Enhanced Disk Drive Specification.
- Use this header instead of magic numbers and various duplicate structure
definitions for doing I/O.
- Use an actual structure for the request to fetch drive parameters in
drvsize() rather than a gross hack of a char array with some magic
size. While here, change drvsize() to only pass the 1.1 version of
the structure and not request device path information. If we want
device path information you have to set the length of the device
path information as an input (along with probably checking the actual
EDD version to see which size one should use as the device path
information is variable-length). This fixes data smashing problems
from passing an EDD 3 structure to BIOSes supporting EDD 4.

Reviewed by: avg
Tested by: Dennis Koegel dk neveragain.de
MFC after: 1 week


226746 25-Oct-2011 jhb

Consolidate duplicate definitions of V86_CY() and V86_ZR() which check for
the carry and zero flags being set, respectively, in <btxv86.h> and use
them throughout the x86 boot code.


226569 20-Oct-2011 pjd

With LOADER_MBR_SUPPORT defined and LOADER_GPT_SUPPORT undefined we would
never call disk_openmbr().

Submitted by: avg
MFC after: 3 days


226568 20-Oct-2011 pjd

- Correctly read gang header from raidz.
- Decompress assembled gang block data if compressed.
- Verify checksum of a gang header.
- Verify checksum of assembled gang block data.
- Verify checksum of uber block.

Submitted by: avg
MFC after: 3 days


226554 19-Oct-2011 pjd

Fix missing return when LOADER_GPT_SUPPORT is defined, but LOADER_MBR_SUPPORT
is not.

MFC after: 3 days


226553 19-Oct-2011 pjd

Always pass data size for checksum verification function, as using
physical block size declared in bp may not always be what we want.
For example in case of gang block header physical block size declared
in bp is much larger than SPA_GANGBLOCKSIZE (512 bytes) and checksum
calculation failed. This bug could lead to accessing unallocated
memory and resets/failures during boot.

MFC after: 3 days


226552 19-Oct-2011 pjd

Never pass NULL block pointer when reading. This is neither expected nor
handled by lower layers like vdev_raidz, which uses bp for checksum
verification. This bug could lead to NULL pointer reference and resets
during boot.

MFC after: 3 days


226551 19-Oct-2011 pjd

Don't mark vdev as healthy too soon, so we won't try to use invalid vdevs.

MFC after: 3 days


226506 18-Oct-2011 des

Look for /boot/config in addition to /boot.config, with the former taking
precedence over the latter if it exists.

MFC after: 3 weeks


226501 18-Oct-2011 jchandra

Support for booting XLP using FDT.

- update xlp_machdep.c to read arguments from FDT if FDT support is
compiled in.
- define rmi_uart_bus_space, and use it as fdtbus_bs_tag
- update conf files for FDT support
- add default dts file xlp-basic.dts


226436 16-Oct-2011 eadler

- change "is is" to "is" or "it is"
- change "the the" to "the"

Approved by: lstewart
Approved by: sahil (mentor)
MFC after: 3 days


225955 04-Oct-2011 thompsa

Allow ixp425 boot2 to compile after r219452


225608 16-Sep-2011 avg

zfstest: rename to zfsboottest and move to tools

Approved by: re (kib)
MFC after: 1 week


225530 13-Sep-2011 avg

gpt/zfs boot blocks: reduce optimizing CFLAGS to -O1

gpt and zfs boot blocks are not nearly as size-constrained as boot2
from which they inherited their current optimization and anti-optimization
options. As such the current options do not provide any benefit, but
make debugging of the code much harder.
Also, it has been demonstrated that combination of -mrtd and
-fno-unit-at-a-time may result in mis-compilation of the boot code
with the current base gcc.

Additionally, intermediate assembly file filtering is removed for
zfsboot.

The new boot blocks are all compile- and boot- tested using qemu.
gptzfsboot is tested with real hardware.

Reported by: Peter Jeremy <peterjeremy@acm.org> [miscompilation]
Discussed with: bde, jhb
Tested by: Sebastian Chmielewski <chmielsster@gmail.com> [gptzfsboot]
Approved by: re (kib)
MFC after: 3 weeks


225529 13-Sep-2011 avg

zfstest: cleanup the code, improve functionality and diagnostics

The utility is not connected to the build, so it should be safe
to update it.
To do: move the utility to tools/.
Some code is provided by Peter Jeremy <peterjeremy@acm.org>

Tested by: Sebastian Chmielewski <chmielsster@gmail.com>,
Peter Jeremy <peterjeremy@acm.org> (earlier versions)
Approved by: re (kib)
MFC after: 4 days


225353 02-Sep-2011 jh

Restore behavior of the autoboot_delay="-1" boot menu setting to the
pre-r222417 state. The behavior was essentially reversed in r222417
which can cause confusion.

PR: 159775
Submitted by: Devin Teske
Approved by: re (kib)


225122 23-Aug-2011 marck

Add kern.cam.boot_delay description (with reasonable default) to
default/loader.conf

This should help people installing ${OS} to USB devices, where there are
frequently cases where kernel tries to mount root before actual umass sensing
is finished.

Reviewed by: mav
Approved by: re (kib)
MFC after: 1 week


224857 14-Aug-2011 nwhitehorn

Add support for the Blu-Ray drive found in the Sony Playstation 3 and fix
some realted minor bugs in PS3 internal storage support.

Submitted by: glevand <geoffrey.levand@mail.ru>
Approved by: re (bz)


224722 08-Aug-2011 dim

Fix buffer overflow in sys/boot/common/util.c's printf(), when printing
large (>= 10^10) numbers. In theory, 20 characaters should be enough,
but bump the buffer to 32 characters, so we have some room for the
future.

Reviewed by: pjd
Approved by: re (kib)


224408 25-Jul-2011 rodrigc

Document the tftp.blksize variable added in src/lib/libstand/tftp.c.

Approved by: re (kib)
Requested by: maxim


224228 20-Jul-2011 jhb

Note that the "kernel" variable in loader.conf is the name of a directory
containing a kernel under /boot and that it's default value is "kernel"
not "/boot/kernel/kernel".

PR: docs/158992
Reported by: Wayne Mitchell wayne.mitchell.iz at gmail
Approved by: re (kib)
MFC after: 1 week


224131 17-Jul-2011 dim

When building some of the boot loaders with clang, and DEBUG_FLAGS or
CFLAGS having '-g' in it, clang outputs several assembly directives that
are too new for our version of binutils.

Therefore, assemble the resulting .s files with clang instead. A more
general solution can be implemented when a GNU as-compatible driver for
clang's integrated assembler appears.

Reported by: dougb


224106 16-Jul-2011 nwhitehorn

Add support for booting PS3s from disk. This is still a little hackish until
we can find a way to get the information from petitboot or to guess it, so
the current algorithm is:

1. See if ps3disk3p1 (first GPT slice on OtherOS partition) exists, and if
so try to boot it.
2. Otherwise, netboot.

Submitted by: glevand <geoffrey.levand at mail dot ru >


223938 11-Jul-2011 marius

Since r219452 the alignment of __dmadat has changed, revealing that fsread()
bogusly casts its contents around causing alignment faults on sparc64 and
most likely also on at least powerpc. Fix this by copying the contents
bytewise instead as partly already done here. Solving this the right way
costs some space, i.e. 148 bytes with GCC and 16 bytes with clang on x86
there are still some bytes left there though, and an acceptable hack which
tricks the compiler into only using a 2-byte alignment instead of the native
one when accessing the contents turned out to even take up more space that.


223758 04-Jul-2011 attilio

With retirement of cpumask_t and usage of cpuset_t for representing a
mask of CPUs, pc_other_cpus and pc_cpumask become highly inefficient.

Remove them and replace their usage with custom pc_cpuid magic (as,
atm, pc_cpumask can be easilly represented by (1 << pc_cpuid) and
pc_other_cpus by (all_cpus & ~(1 << pc_cpuid))).

This change is not targeted for MFC because of struct pcpu members
removal and dependency by cpumask_t retirement.

MD review by: marcel, marius, alc
Tested by: pluknet
MD testing by: marcel, marius, gonzo, andreast


223719 02-Jul-2011 marius

- For Cheetah- and Zeus-class CPUs don't flush all unlocked entries from
the TLBs in order to get rid of the user mappings but instead traverse
them an flush only the latter like we also do for the Spitfire-class.
Also flushing the unlocked kernel entries can cause instant faults which
when called from within cpu_switch() are handled with the scheduler lock
held which in turn can cause timeouts on the acquisition of the lock by
other CPUs. This was easily seen with a 16-core V890 but occasionally
also happened with 2-way machines.
While at it, move the SPARC64-V support code entirely to zeus.c. This
causes a little bit of duplication but is less confusing than partially
using Cheetah-class bits for these.
- For SPARC64-V ensure that 4-Mbyte page entries are stored in the 1024-
entry, 2-way set associative TLB.
- In {d,i}tlb_get_data_sun4u() turn off the interrupts in order to ensure
that ASI_{D,I}TLB_DATA_ACCESS_REG actually are read twice back-to-back.

Tested by: Peter Jeremy (16-core US-IV), Michael Moll (2-way SPARC64-V)


223712 01-Jul-2011 marius

Fix r223695 to compile on architectures which don't use the MBR scheme; wrap
the MBR support in the common part of the loader in #ifdef's and enable it
only for userboot for now.


223695 30-Jun-2011 dfr

Add a version of the FreeBSD bootloader which can run in userland, packaged
as a shared library. This is intended to be used by BHyVe to load FreeBSD
kernels into new virtual machines.


223611 27-Jun-2011 jhb

Revert the entry point label to 'start' to unbreak the build.

Pointy hat to: jhb


223597 27-Jun-2011 jhb

- Remove the fake BPB from zfsldr. zfsldr doesn't support booting from
floppies, so it will not be used as the start of an emulated floppy
image on a bootable CD which is what the fake BPB was used for.
- Only check that EDD packet mode is available once at the start of
zfsldr rather than for each disk sector now that we read data in one
sector at a time. As a result, collapse the remaining bits of read
up into nread and rename nread to read.
- Restore a return at the end of putstr that I removed in the previous
revision.

Tested by: Henri Hennebert (earlier version)
MFC after: 1 week


223539 25-Jun-2011 marius

As with EFI, OFW and U-Boot etc only compile FDT support on those
architectures that actually use it.


223477 23-Jun-2011 jhb

The recent change to increase the zfsboot size to 64k made a few BIOSes
unhappy (probably they don't handle crossing the 64k boundary, etc.).
Fix this by changing zfsldr to use a loop reading from the disk one
sector at a time. To avoid trashing the saved copy of the MBR which is
used for disk I/O, read zfsboot2 at address 0x9000. This has the
advantage that BTX no longer needs to be relocated as it is read into
the correct location. However, the loop to relocate zfsboot2.bin can
now cross a 64k boundary, so change it to use relative segments instead.
(This will need further work if zfsboot2.bin ever exceeds 64k.)

While here, stop storing a relocated copy of zfsldr at 0x700. This was
only used by the xread hack which has recently been removed (and even
that use was dubious). Also, include the BIOS error code as hex when
reporting read errors to aid in debugging.

Much thanks to Henri Hennebert for patiently testing various iterations
of the patch as well as fixing the zfsboot2.bin relocation to use
relative segments.

MFC after: 1 week


223295 19-Jun-2011 kan

Minimize backward seeks when trying to load ELF relocatable modules.

Some of loader filesystems are very ill equipped to handle seeking
backwards within the file. Namely, tftp requires trasfer to be
restarted from the start of the file every time we go backwards.


223262 18-Jun-2011 benl

Fix clang warnings.

Approved by: philip (mentor)


223109 15-Jun-2011 nwhitehorn

Revert changes to this file in r222417. This unconditionally enabled the
boot menu on all platforms, which breaks loader completely on at least
powerpc for reasons that are not understood yet.

Reviewed by: Devin Teske


223017 12-Jun-2011 dim

Upgrade our copy of llvm/clang to r132879, from upstream's trunk.


222813 07-Jun-2011 attilio

etire the cpumask_t type and replace it with cpuset_t usage.

This is intended to fix the bug where cpu mask objects are
capped to 32. MAXCPU, then, can now arbitrarely bumped to whatever
value. Anyway, as long as several structures in the kernel are
statically allocated and sized as MAXCPU, it is suggested to keep it
as low as possible for the time being.

Technical notes on this commit itself:
- More functions to handle with cpuset_t objects are introduced.
The most notable are cpusetobj_ffs() (which calculates a ffs(3)
for a cpuset_t object), cpusetobj_strprint() (which prepares a string
representing a cpuset_t object) and cpusetobj_strscan() (which
creates a valid cpuset_t starting from a string representation).
- pc_cpumask and pc_other_cpus are target to be removed soon.
With the moving from cpumask_t to cpuset_t they are now inefficient
and not really useful. Anyway, for the time being, please note that
access to pcpu datas is protected by sched_pin() in order to avoid
migrating the CPU while reading more than one (possible) word
- Please note that size of cpuset_t objects may differ between kernel
and userland. While this is not directly related to the patch itself,
it is good to understand that concept and possibly use the patch
as a reference on how to deal with cpuset_t objects in userland, when
accessing kernland members.
- KTR_CPUMASK is changed and now is represented through a string, to be
set as the example reported in NOTES.

Please additively note that no MAXCPU is bumped in this patch, but
private testing has been done until to MAXCPU=128 on a real 8x8x2(htt)
machine (amd64).

Please note that the FreeBSD version is not yet bumped because of
the upcoming pcpu changes. However, note that this patch is not
targeted for MFC.

People to thank for the time spent on this patch:
- sbruno, pluknet and Nicholas Esborn (nick AT desert DOT net) tested
several revision of the patches and really helped in improving
stability of this work.
- marius fixed several bugs in the sparc64 implementation and reviewed
patches related to ktr.
- jeff and jhb discussed the basic approach followed.
- kib and marcel made targeted review on some specific part of the
patch.
- marius, art, nwhitehorn and andreast reviewed MD specific part of
the patch.
- marius, andreast, gonzo, nwhitehorn and jceel tested MD specific
implementations of the patch.
- Other people have made contributions on other patches that have been
already committed and have been listed separately.

Companies that should be mentioned for having participated at several
degrees:
- Yahoo! for having offered the machines used for testing on big
count of CPUs.
- The FreeBSD Foundation for having sponsored my devsummit attendance,
which has been instrumental.
- Sandvine for having offered offices and infrastructure during
development.

(I really hope I didn't forget anyone, if it happened I apologize in
advance).


222799 07-Jun-2011 marcel

o Bump the EFI loader version to 3.1.
o Add the about, pbvm and reboot commands.
o Trim the banner (suppress maker and date).


222798 07-Jun-2011 marcel

Add ia64_sync_icache() and use it to make the I-cache coherent
after loading the kernel's text segment. The kernel will do the
same for loaded modules, so don't worry about that.


222599 02-Jun-2011 uqs

mdoc: fix markup


222472 30-May-2011 julian

Include forgotten framework changes to get some of the new menu files installed correctly on non x86/amd systems.
pointy-hut to devin


222450 29-May-2011 andreast

Add some missing files. Without we hang in the OF prompt asking for screen.4th.

Approved by: nwhitehorn (mentor)


222417 28-May-2011 julian

New boot loader menus from Devin Teske.
Discussed on hackers and recommended for inclusion into 9.0 at the devsummit.
All support email to devin dteske at vicor dot ignoreme dot com .

Submitted by: dteske at vicor dot ignoreme dot com
Reviewed by: me and many others


221869 14-May-2011 attilio

Disconnect sun4v architecture from the three.

Some files keep the SUN4V tags as a code reference, for the future,
if any rewamped sun4v support wants to be added again.

Reviewed by: marius
Tested by: sbruno
Approved by: re


221601 07-May-2011 avg

a whitespace nit

Reminder from: kib
MFC after: 4 days


221593 07-May-2011 avg

a whitespace nit

MFC after: 4 days


221506 05-May-2011 dim

Fine-tune llvm optimization for sys/boot/i386/boot2, which shaves off
some more bytes from the final boot2 image.

Submitted by: rdivacky


221356 03-May-2011 marcel

Fix corner case where the size is a power of two.


221348 02-May-2011 dim

Clang r130700 can now compile sys/boot/i386/boot2 with room to spare.


221269 30-Apr-2011 marcel

Turn PBVM page table entries into PTEs so that they can be inserted
into the TLB as-is.

While here, have ia64_platform_alloc() return ~0UL on failure.


221177 28-Apr-2011 jhb

Due to space constraints, the UFS boot2 and boot1 use an evil hack where
boot2 calls back into boot1 to perform disk reads. The ZFS MBR boot blocks
do not have the same space constraints, so remove this hack for ZFS.
While here, remove commented out code to support C/H/S addressing from
zfsldr. The ZFS and GPT bootstraps always just use EDD LBA addressing.

MFC after: 2 weeks


220924 21-Apr-2011 ae

Remove all object files during 'make clean'.

MFC after: 1 week


220685 16-Apr-2011 nyan

MFi386: revisions 220389 and 220392

- Mark getc() as inline, this has no effect on gcc but helps clang.
- Move getc() body before xgetc() so gcc does not emit a warning about
function having no body.


220653 15-Apr-2011 philip

Add basic support for the Marvell Orion TS-7800.

Submitted by: Kristof Provost <kristof -at- freebsd.org>


220594 13-Apr-2011 pluknet

Remove the now defunct kern.ipc.nmbufs tunable.

PR: kern/132497 (part)
MFC after: 1 week


220392 06-Apr-2011 rdivacky

Move getc() body before xgetc() so gcc does not emit a warning about function
having no body.

Approved by: jhb


220389 06-Apr-2011 rdivacky

Mark getc() as inline, this has no effect on gcc but helps clang.

Approved by: jhb


220361 05-Apr-2011 nyan

MFi386: revision 220337

Build boot2 with -mregparm=3.


220337 04-Apr-2011 rdivacky

Build boot2 with -mregparm=3, ie. pass upto 3 arguments via registers.
This modifies CFLAGS and tweaks sio.S to use the new calling convention.
The sio_init() and sio_putc() prototypes are modified so that other
users of this code know the correct calling convention.

This makes the code smaller when compiled with clang.

Reviewed by: jhb
Tested by: me and Freddie Cash <fjwcash gmail com>


220332 04-Apr-2011 marcel

Fix a long standing bug where file_load() passes down the global loadaddr
to the l_load() method in the file_formats structure, while being passed
an address as an argument (dest). With file_load() calling arch_loadaddr()
now, this bug is a little bit more significant.

Spotted by: nyan@ (nice catch!)


220313 04-Apr-2011 marcel

Use the new arch_loadaddr I/F to align ELF objects to PBVM page
boundaries. For good measure, align all other objects to cache
lines boundaries.

Use the new arch_loadseg I/F to keep track of kernel text and
data so that we can wire as much of it as is possible. It is
the responsibility of the kernel to link critical (read IVT
related) code and data at the front of the respective segment
so that it's covered by TRs before the kernel has a chance to
add more translations.

Use a better way of determining whether we're loading a legacy
kernel or not. We can't check for the presence of the PBVM page
table, because we may have unloaded that kernel and loaded an
older (legacy) kernel after that. Simply use the latest load
address for it.


220311 03-Apr-2011 marcel

Add 2 new archsw interfaces:
1. arch_loadaddr - used by platform code to adjust the address at which
the object gets loaded. Implement PC98 using this new interface instead
of using conditional compilation. For ELF objects the ELF header is
passed as the data pointer. For raw files it's the filename. Note that
ELF objects are first considered as raw files.
2. arch_loadseg - used by platform code to keep track of actual segments,
so that (instruction) caches can be flushed or translations can be
created. Both the ELF header as well as the program header are passed
to allow platform code to treat the kernel proper differently from any
additional modules and to have all the relevant details of the loaded
segment (e.g. protection).


220290 03-Apr-2011 marcel

Revert rev 165325. The arch_maphint interface hasn't been in use for
more than 4 years.


220283 03-Apr-2011 marcel

Make the ski loader functional again after the previous set of changes.


219960 24-Mar-2011 nyan

MFi386: the part of 219452

- bunch of variables are turned into uint8_t.
- the setting and reading of "fmt" in load() is removed.
- buf in printf() is made static to save space.


219703 16-Mar-2011 ae

The size of zfsboot2 grown up to 64 Kbytes in r219089.
Increase NSECT up to 128 sectors too.

Reviewed by: jhb, pjd


219702 16-Mar-2011 ae

Set control flags in putc(). This should fix zfsboot hangs in drvread().

PR: kern/153552
Reviewed by: jhb
MFC after: 1 week


219691 16-Mar-2011 marcel

MFaltix:
Add support for Pre-Boot Virtual Memory (PBVM) to the loader.

PBVM allows us to link the kernel at a fixed virtual address without
having to make any assumptions about the physical memory layout. On
the SGI Altix 350 for example, there's no usuable physical memory
below 192GB. Also, the PBVM allows us to control better where we're
going to physically load the kernel and its modules so that we can
make sure we load the kernel in memory that's close to the BSP.

The PBVM is managed by a simple page table. The minimum size of the
page table is 4KB (EFI page size) and the maximum is currently set
to 1MB. A page in the PBVM is 64KB, as that's the maximum alignment
one can specify in a linker script. The bottom line is that PBVM is
between 64KB and 8GB in size.

The loader maps the PBVM page table at a fixed virtual address and
using a single translations. The PBVM itself is also mapped using a
single translation for a maximum of 32MB.

While here, increase the heap in the EFI loader from 512KB to 2MB
and set the stage for supporting relocatable modules.


219683 16-Mar-2011 marcel

Revert previous commit: EFI_STATUS is a 64-bit integral on ia64. Fix the
compile warning on i386 (where EFI_STATUS is a 32-bit integral) by casting
the status argument to u_long instead.

Pointy hat: brucec
MFC after: 3 days


219647 14-Mar-2011 davidch

- Initial release of bxe(4) to support Broadcom NetXtreme II 10GbE.
(BCM57710, BCM57711, BCM57711E)

MFC after: One month


219483 11-Mar-2011 jhb

Remove all object files during 'make clean'.

PR: kern/154888
Submitted by: arundel
MFC after: 1 week


219452 10-Mar-2011 rdivacky

Some more shrinking.

o bunch of variables are turned into uint8_t

o initial setting of namep[] in lookup() is removed
as it's only overwritten a few lines down

o kname is explicitly initialized in main() as BSS
in boot2 is not zeroed

o the setting and reading of "fmt" in load() is removed

o buf in printf() is made static to save space

Reviewed by: jhb
Tested by: me and Fabian Keil <freebsd-listen fabiankeil de>


219225 03-Mar-2011 nyan

MFi386: revision 219186

This patch shrinks boot2 a little.

o It switches kname to be just a pointer instead of an array.
o It changes ioctl to unsigned from uint8_t.
o It changes the second keyhit limit to 3 seconds from 5.
o It removes bi_basemem/bi_extmem/bi_memsizes_valid setting.


219186 02-Mar-2011 rdivacky

This patch shrinks boot2 a little.

o It switches kname to be just a pointer instead of an array
thus avoiding a couple of memcpy()s.

o It changes ioctl to unsigned from uint8_t.

o It changes the second keyhit limit to 3 seconds from 5
so that constant propagation can take place.

o It changes the ticks overflow computation as suggested by bde@.

o It removes bi_basemem/bi_extmem/bi_memsizes_valid setting from
bootinfo as it is unused.

Reviewed by: jhb


219126 01-Mar-2011 brucec

Remove duplicate "in".

Suggested by: Rob Farmer <rfarmer at predatorlabs.net>
MFC after: 3 days


219096 28-Feb-2011 brucec

Revert some of r177626. "in in" is valid in certain sentences.

PR: 121490
MFC after: 3 days


219089 27-Feb-2011 pjd

Finally... Import the latest open-source ZFS version - (SPA) 28.

Few new things available from now on:

- Data deduplication.
- Triple parity RAIDZ (RAIDZ3).
- zfs diff.
- zpool split.
- Snapshot holds.
- zpool import -F. Allows to rewind corrupted pool to earlier
transaction group.
- Possibility to import pool in read-only mode.

MFC after: 1 month


219083 27-Feb-2011 pjd

Rename bcpy() macro to bcopy().


219079 27-Feb-2011 dim

Clang's integrated assembler can now handle sys/boot/i386/boot2/sio.S.
It used to choke on the notation "inb (%dx),%al" for "inb %dx,%al"; GNU
as accepts both forms. Which notation is more 'correct' is an open
question. :)


218974 23-Feb-2011 brucec

Handle memory allocation failures in include().

PR: i386/85652
Submitted by: Ben Thomas <bthomas at virtualiron.com>
MFC after: 3 days


218946 22-Feb-2011 nyan

MFi386: revision 218926

In sys/boot/i386/boot2/boot2.c, change the type of the 'opts' variable
from uint16_t back to uint32_t. The actual option bitmasks (RB_* and
RBX_*) assume at least a 32 bit variable.

Submitted by: rdivacky


218926 21-Feb-2011 dim

In sys/boot/i386/boot2/boot2.c, change the type of the 'opts' variable
from uint16_t back to uint32_t. The actual option bitmasks (RB_* and
RBX_*) assume at least a 32 bit variable.

Submitted by: rdivacky


218909 21-Feb-2011 brucec

Fix typos - remove duplicate "the".

PR: bin/154928
Submitted by: Eitan Adler <lists at eitanadler.com>
MFC after: 3 days


218893 20-Feb-2011 dim

Upgrade our copy of llvm/clang to r126079, from upstream's trunk.

This contains many improvements, primarily better C++ support, an
integrated assembler for x86 and support for -pg.


218842 19-Feb-2011 nyan

MFi386: revision 218745

Remove reading of symbols from a.out loaded files.


218822 18-Feb-2011 dim

Merge binutils 2.17.50 to head. This brings a number of improvements to
x86 CPU support, better support for powerpc64, some new directives, and
many other things. Bump __FreeBSD_version, and add a note to UPDATING.

Thanks to the many people that have helped to test this.

Obtained from: projects/binutils-2.17


218815 18-Feb-2011 danger

- add missing if_ devices which were missing and are available as loadable
modules too

Reviewed by: brucec


218745 16-Feb-2011 imp

Remove reading of symbols from a.out loaded files. Since we are tight
on space for clang and a.out support is only needed for /boot/loader,
they are excess bytes that serve no useful purpose other than to
support really old kernels (FreeBSD < 3.2 or so). Prefer clang
support over support for these old kernels and remove this code. We
gain about 100 bytes of space this way.

Reviewed by: rdivacky@


218737 16-Feb-2011 nyan

MFi386: revision 218713

Apply a few small optimizations to boot2's code, to make it shrink a
little further.


218716 15-Feb-2011 dim

In sys/boot/common/ufsread.c, use uint8_t instead of u_int8_t.

Submitted by: mdf


218713 15-Feb-2011 dim

Apply a few small optimizations to boot2's code, to make it shrink a
little further. This gets us further on the way to be able to build it
successfully with clang. Using in-tree gcc, this shrinks boot2.bin with
60 bytes, the in-tree clang shaves off 72 bytes, and ToT clang 84 bytes.

Submitted by: rdivacky
Reviewed by: imp


218595 12-Feb-2011 nyan

Fix build.


218557 11-Feb-2011 nyan

Add the pc98boot image which concatenates boot0 and boot0.5.
It's required by the gpart to write bootcode.


218246 04-Feb-2011 marcel

Add PEX0 and select the first serial port as console.


217689 21-Jan-2011 pluknet

Add kern.msgbufsize default setting to /boot/defaults/loader.conf.

Suggested by: Alex Kozlov <spam rm-rf.kiev.ua> (via private mail)
Approved by: kib (mentor)


217688 21-Jan-2011 pluknet

Make MSGBUF_SIZE kernel option a loader tunable kern.msgbufsize.

Submitted by: perryh pluto.rain.com (previous version)
Reviewed by: jhb
Approved by: kib (mentor)
Tested by: universe


217663 20-Jan-2011 imp

No need to list an obsolete arm compiler here.


217657 20-Jan-2011 imp

Don't need __DYNAMIC here. it is commented out and a.out only -- these are all ELF.


217644 20-Jan-2011 jhb

Fix a stack leak in r215345 when skipping over the ACPI menu item for
machines that do not support ACPI.

Submitted by: olli


217067 06-Jan-2011 marcel

Help static analysis by initializing variables that we know cannot be
used uninitialized, but which cannot be inferred from the code itself.


217044 06-Jan-2011 nwhitehorn

Import support for the Sony Playstation 3 using the OtherOS feature
available on firmwares 3.15 and earlier.

Caveats: Support for the internal SATA controller is currently missing,
as is support for framebuffer resolutions other than 720x480. These
deficiencies will be remedied soon.

Special thanks to Peter Grehan for providing the hardware that made this
port possible, and thanks to Geoff Levand of Sony Computer Entertainment
for advice on the LV1 hypervisor.


217033 05-Jan-2011 dim

On i386 and amd64, consistently use the following options whenever we
want to avoid using any "advanced" CPU features:

-mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float


217030 05-Jan-2011 dim

Remove an empty .if/.endif pair from sys/boot/ficl/Makefile that I
forgot to cleanup in the last commit.


217029 05-Jan-2011 dim

In lib/libstand, sys/boot/ficl and sys/boot/zfs, -mno-sse3 should also
be used for amd64, not just for i386.


217028 05-Jan-2011 dim

Remove superfluous -mno-(mmx|3dnow|sse|sse2|sse3) flags in Makefiles
under sys/boot/{i386,pc98}, since these are already added via
sys/boot/{i386,pc98}/Makefile.inc.

Submitted by: arundel


216829 31-Dec-2010 yongari

Add driver for DM&P Vortex86 RDC R6040 Fast Ethernet.
The controller is commonly found on DM&P Vortex86 x86 SoC. The
driver supports all hardware features except flow control. The
flow control was intentionally disabled due to silicon bug.

DM&P Electronics, Inc. provided all necessary information including
sample board to write driver and answered many questions I had.
Many thanks for their support of FreeBSD.

H/W donated by: DM&P Electronics, Inc.


215811 25-Nov-2010 emaste

Give a bit of a hint of the failure (read != expected) but don't make
the error message needlessly more verbose.

Discussed with: attilio


215758 23-Nov-2010 attilio

Make this printfoutput more verbose.

Sponsored by: Sandvine Incorporated
Submitted by: Sandvine Incorporated
MFC after: 3 days


215577 20-Nov-2010 andreast

Check the OF_getprop() return value before proceeding. Allocate only as
much space as needed for the mode buffer. Use strcmp, relying on OF giving
back NULL terminated strings.

Submitted by: marius
Approved by: nwhitehorn (mentor)


215441 17-Nov-2010 andreast

Revert r215435. We need to figure out the exact value to be loaded.

Approved by: nwhitehorn (mentor)


215438 17-Nov-2010 andreast

Check the real-mode? OF property to find out whether we operate in real or
virtual mode. In virtual mode we have to do memory mapping. On PowerMacs it is
usually false while on pSeries we have found that it is true. The real-mode?
property is not available on sparc64.

Approved by: nwhitehorn (mentor)


215437 17-Nov-2010 andreast

Move the declaration of the eh struct (used only when debugging is enabled)
from ofwn_put into the debug section.

Approved by: nwhitehorn (mentor)


215436 17-Nov-2010 andreast

Make sure the .bss is cleared at the beginning. The pSeries OF ELF loader does
not clear .bss automatically.

Approved by: nwhitehorn (mentor)


215435 17-Nov-2010 andreast

Load the full 16k stack space.

Approved by: nwhitehorn (mentor)


215345 15-Nov-2010 jhb

Don't display option 2 (to toggle ACPI on or off) on x86 machines if the
BIOS does not support ACPI. The other options in the menu retain their
existing numbers, option 2 is simply blanked out (and '2' is ignored).

MFC after: 1 month


215344 15-Nov-2010 imp

We no longer need the OUTPUT_FORMAT line, so fix the build by removing it.


215285 14-Nov-2010 brucec

Fix the jump location.


215284 14-Nov-2010 brucec

When rebooting the machine jump to 0xf000:fff0 instead of 0xffff:0x0.
This is the same change that was made in rev 1.33 of boot/i386/btx/btx/btx.S

PR: i386/91871
Submitted by: Bjorn Konig <bkoenig at cs.tu-berlin.de>
MFC after: 1 week


215246 13-Nov-2010 nyan

Now there is no functional difference from i386 version.
So use i386 version.


215245 13-Nov-2010 nyan

Remove unused includes.


215122 11-Nov-2010 raj

Correct RAM size of the MPC8555CDS board.


215034 09-Nov-2010 brucec

Fix typos.

PR: bin/148894
Submitted by: olgeni


215016 08-Nov-2010 jhb

Remove support for autoloading ACPI from the loader. Leave in the code to
detect ACPI and export info such as the location of the RSDP via hints as
that is still useful.


214526 29-Oct-2010 marius

Partially revert r203829; as it turns out what the PowerPC OFW loader did
was incorrect as further down the road cons_probe() calls malloc() so the
former can't be called before init_heap() has succeed. Instead just exit
to the firmware in case init_heap() fails like OF_init() does when hitting
a problem as we're then likely running in a very broken environment where
hardly anything can be trusted to work.


214495 29-Oct-2010 nwhitehorn

Fix the printf() in init_heap so that it can run before the console is up.

Pointed out by: marius


214494 29-Oct-2010 nwhitehorn

Fix netboot on some Apple machines on which calling dma-free on the
network device can hang the machine. This causes the loss of 64 KB of
accessible memory on netbooted machines.


214493 28-Oct-2010 nwhitehorn

Fix some memory management issues discovered when trying to boot the PPC
OF loader on systems where address cells and size cells are both 2 (the
Mambo simulator) and fix an error where cons_probe() was called before
init_heap() but used malloc() to set environment variables.

MFC after: 1 month


214257 24-Oct-2010 nyan

MFi386: revision 214210

Avoid using memcpy() for copying 32bit chunks. This shrinks
the resulting code a little.


214210 22-Oct-2010 rdivacky

Avoid using memcpy() for copying 32bit chunks. This shrinks
the resulting code a little.

Approved by: rpaulo (mentor)
Reviewed by: jhb


214114 20-Oct-2010 pjd

Correct typos.


213573 08-Oct-2010 uqs

mdoc: drop redundant .Pp and .LP calls

They have no effect when coming in pairs, or before .Bl/.Bd


213568 08-Oct-2010 pho

Ensure that a make from sys/boot does not pick up include files from
/usr/include.

Discussed with: kib


213136 24-Sep-2010 pjd

- Split code shared by almost any boot loader into separate files and
clean up most layering violations:

sys/boot/i386/common/rbx.h:

RBX_* defines
OPT_SET()
OPT_CHECK()

sys/boot/common/util.[ch]:

memcpy()
memset()
memcmp()
bcpy()
bzero()
bcmp()
strcmp()
strncmp() [new]
strcpy()
strcat()
strchr()
strlen()
printf()

sys/boot/i386/common/cons.[ch]:

ioctrl
putc()
xputc()
putchar()
getc()
xgetc()
keyhit() [now takes number of seconds as an argument]
getstr()

sys/boot/i386/common/drv.[ch]:

struct dsk
drvread()
drvwrite() [new]
drvsize() [new]

sys/boot/common/crc32.[ch] [new]

sys/boot/common/gpt.[ch] [new]

- Teach gptboot and gptzfsboot about new files. I haven't touched the
rest, but there is still a lot of code duplication to be removed.

- Implement full GPT support. Currently we just read primary header and
partition table and don't care about checksums, etc. After this change we
verify checksums of primary header and primary partition table and if
there is a problem we fall back to backup header and backup partition
table.

- Clean up most messages to use prefix of boot program, so in case of an
error we know where the error comes from, eg.:

gptboot: unable to read primary GPT header

- If we can't boot, print boot prompt only once and not every five
seconds.

- Honour newly added GPT attributes:

bootme - this is bootable partition
bootonce - try to boot from this partition only once
bootfailed - we failed to boot from this partition

- Change boot order of gptboot to the following:

1. Try to boot from all the partitions that have both 'bootme'
and 'bootonce' attributes one by one.
2. Try to boot from all the partitions that have only 'bootme'
attribute one by one.
3. If there are no partitions with 'bootme' attribute, boot from
the first UFS partition.

- The 'bootonce' functionality is implemented in the following way:

1. Walk through all the partitions and when 'bootonce'
attribute is found without 'bootme' attribute, remove
'bootonce' attribute and set 'bootfailed' attribute.
'bootonce' attribute alone means that we tried to boot from
this partition, but boot failed after leaving gptboot and
machine was restarted.
2. Find partition with both 'bootme' and 'bootonce' attributes.
3. Remove 'bootme' attribute.
4. Try to execute /boot/loader or /boot/kernel/kernel from that
partition. If succeeded we stop here.
5. If execution failed, remove 'bootonce' and set 'bootfailed'.
6. Go to 2.

If whole boot succeeded there is new /etc/rc.d/gptboot script coming
that will log all partitions that we failed to boot from (the ones with
'bootfailed' attribute) and will remove this attribute. It will also
find partition with 'bootonce' attribute - this is the partition we
booted from successfully. The script will log success and remove the
attribute.

All the GPT updates we do here goes to both primary and backup GPT if
they are valid. We don't touch headers or partition tables when
checksum doesn't match.

Reviewed by: arch (Message-ID: <20100917234542.GE1902@garage.freebsd.pl>)
Obtained from: Wheel Systems Sp. z o.o. http://www.wheelsystems.com
MFC after: 2 weeks


212979 21-Sep-2010 dim

When building world with clang, for gnu/lib/libobjc, sys/boot/i386/boot2
and sys/boot/pc98/boot2, do not simply assign 'gcc' to CC, since compile
flags are sometimes passed via this variable, for example during the
build32 stage on amd64. This caused the 32-bit libobjc build on amd64
to fail.

Instead, only replace the first instance of clang (if any, including
optional path) with gcc, and leave the arguments alone.

Approved-by: rpaulo (mentor)


212861 19-Sep-2010 nork

Add support 'device tpm' for amd64.
Add tpm(4)'s default setting to /boot/defaults/loader.conf.
Add 'device tpm' to NOTES for amd64 and i386.

Discussed with: takawata
Approved by: imp (mentor)


212805 17-Sep-2010 pjd

Before VirtualBox is fixed, mark with #ifdef what has to be done to make
it possible to boot from ZFS RAIDZ for example from within VirtualBox.
The problem with VirtualBox is that its BIOS reports only one disk present.
If we choose to ignore this report, we can find all the disks available.
We can't have this work-around to be turned on by default, because some broken
BIOSes report true when it comes to number of disks, but present the same disk
multiple times.


212804 17-Sep-2010 pjd

Remove magic value.


212729 16-Sep-2010 marius

Merge from powerpc:
- Change putc_func_t to use a char instead of an int for the character.
- Make functions and variables not used outside of this source file static.
- Remove unused prototypes and variables.
- The OFW read and seek methods take 3 and not 4 input arguments.


212387 09-Sep-2010 pjd

Remove empty lines committed by accident.

MFC after: 2 weeks


212384 09-Sep-2010 pjd

Ignore log vdevs.

MFC after: 2 weeks


212383 09-Sep-2010 pjd

Allow to boot from a pool within which replacing is in progress.
Before the change it wasn't possible and the following error was printed:

ZFS: can only boot from disk, mirror or raidz vdevs

Now if the original vdev (the one we are replacing) is still present we will
read from it, but if it is not present we won't read from the new vdev, as it
might not have enough valid data yet.

MFC after: 2 weeks


212382 09-Sep-2010 pjd

Remove duplicated code.

MFC after: 2 weeks


212338 08-Sep-2010 jhb

If autoboot_delay is set to -1, boot immediately without checking for
a keypress to match the behavior of the loader.

PR: docs/108101
Submitted by: Wayne Sierke ws of au.dyndns.ws
Tested by: brd
MFC after: 1 week


212332 08-Sep-2010 emax

Add custom kernel configuration and device tree source files for
Seagate FreeAgent DockStar(tm) device. It seems to be a dumb down
version of Marvell SheevaPlug. Device tree source file could use
more tweaking, but at least it wll network boot and run FreeBSD/arm.


212165 02-Sep-2010 nwhitehorn

In the case of non-sequential mappings, ofw_mapmem() could ask Open
Firmware to map a memory region with negative length, causing crashes
and Undefined Behavior. Add the appropriate check to make the behavior
defined.


212126 02-Sep-2010 rmacklem

Modify pxe.c to use the version of nfs_getrootfh() that returns
the file handle's size and was recently committed to
lib/libstand/nfs.c. This allows pxeboot to use NFSv3 and work
correcty for non-FreeBSD as well as FreeBSD NFS servers.
If built with OLD_NFSV2 defined, the old
code that predated this patch will be used.

Tested by: danny at cs.huji.ac.il


212098 01-Sep-2010 dim

Use a cleaner expression to retrieve the memory size in pc98's boot2.c,
which also avoids NULL pointer arithmetic, as suggested by jhb. The
available space goes from 11 bytes to 7.

Reviewed by: nyan
Approved by: rpaulo (mentor)


212066 31-Aug-2010 delphij

For consistency, change all 'i386' and MACHINE_ARCH to x86.

Reviewed by: jhb
MFC after: 1 week


212064 31-Aug-2010 dim

Avoid directly manipulating a NULL pointer (which could result in
undefined behaviour) in sys/boot/pc98/boot2/boot2.c.

Reviewed by: nyan
Approved by: rpaulo (mentor)


212062 31-Aug-2010 dim

Always compile pc98 boot2 with gcc instead of clang, just as with i386
boot2. Unfortunately both still are too big when compiled with clang.

Reviewed by: nyan
Approved by: rpaulo (mentor)


212060 31-Aug-2010 dim

Use a more robust way to substitute gcc for clang, when compiling
gnu/lib/libobjc and sys/boot/i386/boot2, so it also works when using
absolute paths and/or options, as in CC="/absolute/path/clang -foo".

Approved by: rpaulo (mentor)


211817 25-Aug-2010 nwhitehorn

Fix build of ppc32 loader.


211747 24-Aug-2010 rpaulo

Replace structure assignments with explicity memcpy calls. This allows
Clang to compile this file: it was using the builtin memcpy and we want
to use the memcpy defined in gptboot.c. (Clang can't compile boot2 yet).

Submitted by: Dimitry Andric <dimitry at andric.com>
Reviewed by: jhb


211725 23-Aug-2010 imp

MFtbemd:

Prefer MACHNE_CPUARCH to MACHINE_ARCH in most contexts where you want
to test of all the CPUs of a given family conform.


211680 23-Aug-2010 imp

MF tbemd: Minor tweaks, prefer MACHINE_CPUARCH generally to MACHINE_ARCH (which simplifies some powerpc/powerpc64 ifs)


211679 23-Aug-2010 imp

MF tbemd: move to using specific architecture makefiles


211678 23-Aug-2010 imp

MF tbemd: Minor tweaks, prefer MACHINE_CPUARCH generally to MACHINE_ARCH (which simplifies some powerpc/powerpc64 ifs)


211677 23-Aug-2010 imp

MF tbemd: Minor tweaks, prefer MACHINE_CPUARCH generally to MACHINE_ARCH


211676 23-Aug-2010 imp

It turns out that the OUTPUT_FORMAT should do the right thing for both endians...


211675 23-Aug-2010 imp

MF tbemd: differentiate between arm and armeb


211571 21-Aug-2010 rpaulo

Make sure the boot2 stage is compiled with gcc, as clang has no
problems compiling it, but it just gets too big at the moment, even
with -Os. This is not applicable to gptboot, though.

Submitted by: Dimitry Andric <dimitry at andric.com>


211091 09-Aug-2010 mm

Return EIO if vdev->v_phys_read is NULL.

This fixes booting from a ZFS mirror with a unavailable primary device.

PR: kern/148655
Reviewed by: avg
Approved by: delphij (mentor)
MFC after: 3 days


210764 02-Aug-2010 uqs

mdoc: make sure to pass at least one argument to quotation macros


210650 30-Jul-2010 dfr

A simple test harness to help debug problems with the ZFS boot code.


210459 25-Jul-2010 nyan

MFi386: revision 210387

Correctly setup LDADD with regards to libstand.


210423 23-Jul-2010 avg

completely ignore zero-sized elf sections in modules of elf object type (amd64)

Current code doesn't check size of elf sections and may perform needless
actions of zero-sized memory allocation and similar.
The bigger issue is that alignment requirement of a zero-sized section
gets effectively applied to the next section if it has smaller alignment
requirement. But other tools, like gdb and consequently kgdb,
completely ignore zero-sized sections and thus may map symbols to
addresses differently.

Zero-sized sections are not typical in general.
Their typical (only, even) cause in FreeBSD modules is inline assembly that
creates custom sections which is found in pcpu.h and vnet.h. Mere inclusion
of one of those header files produces a custom section in elf output.
If there is no actual use for the section in a given module, then the
section remains empty.

Better solution is to avoid creating zero-sized sections altogether,
which is in plans.

Preloaded modules are handled in boot code (load_elf_obj.c), while
dynamically loaded modules are handled by kernel (link_elf_obj.c).

Based on code by: np
MFC after: 3 weeks


210387 22-Jul-2010 rpaulo

Correctly setup LDADD with regards to libstand. The submitter points
out that "on amd64, libstand.a is compiled for i386, but is still installed
under ${WORLDTMP}/usr/lib instead of ${WORLDTMP}/usr/lib32. Even if it
would be installed there, ld on amd64 is set up incorrectly with a
${TOOLS_PREFIX}/usr/lib/i386 default path, so it wouldn't link. The reason
it does link under gcc is that gcc passes -L${WORLDTMP}/usr/lib twice,
even for -m32 builds, which is also incorrect, but accidentally works in
this case."

Submitted by: Dimitry Andric <dimitry at andric.com>


209920 12-Jul-2010 nwhitehorn

Provide support in loader for booting 64-bit PowerPC kernels. Like amd64,
64-bit PowerPC kernels are loaded by a 32-bit loader, since nearly all
powerpc64 firmwares execute in 32-bit mode.


209909 11-Jul-2010 raj

Get rid of bootinfo for good in loader (U-Boot-based) and ARM.

For FDT-enabled platforms the device tree is a modern replacement for bootinfo
config data.


209903 11-Jul-2010 raj

Provide a missing interrupt-parent for the CPM / QUICC node in the DTS.


209774 07-Jul-2010 marcel

Use the kernel's start address to determine what to map. This allows
us to link the kernel at different addresses without needing to build
a corresponding loader.


209466 23-Jun-2010 brucec

Add some more modules to loader.conf. Remove if_awi since support for it
was removed 2 years ago.

PR: conf/147126
PR: conf/116071
Approved by: rrs (mentor)


209361 20-Jun-2010 brian

Add a missing prototype

PR: 145232
Submitted by: gcooper
MFC after: 1 week


209162 14-Jun-2010 rdivacky

Pass the -N flag to linked via -Wl.

Approved by: ed (mentor)


209125 13-Jun-2010 raj

Fix conditional FDT support in loader(8).


208789 03-Jun-2010 ed

Use -Wl,-N instead of the undocumented -N option for GCC.

GCC forwards the -N flag directly to ld. This flag is not documented and
not supported by (for example) Clang. Just use -Wl,-N.

Submitted by: Pawel Worach


208669 31-May-2010 avg

zfs boot: fix error handling in zfs_readdir

Found by: clang static analyzer
MFC after: 4 days


208610 28-May-2010 avg

boot/zfs: fix gang block reading code

- use correct size (512) while reading a gang block
- skip holes while reading child blocks
- advance buffer pointer while reading child blocks

PR: 144214
MFC after: 10 days


208561 26-May-2010 raj

Initial device tree source (DTS) files for Marvell ARM systems:

o DB-88F5182
o DB-88F5281
o DB-88F6281
o DB-78100
o SheevaPlug

This also includes device tree bindings definitions for some newly introduced
nodes (mpp, gpio).

Reviewed by: imp
Sponsored by: The FreeBSD Foundation


208560 26-May-2010 raj

Import device tree source (DTS) files for PowerPC MPC8555CDS and MPC8572DS
development systems.

Special thanks to Phil Brownfield for help with BSD-style relicensing of
these files.

Obtained from: Freescale


208539 25-May-2010 raj

Bring a missing FDT piece (omitted in the previous commit).


208538 25-May-2010 raj

Initial loader(8) support for Flattened Device Tree.

o This is disabled by default for now, and can be enabled using WITH_FDT at
build time.

o Tested with ARM and PowerPC.

Reviewed by: imp
Sponsored by: The FreeBSD Foundation


208535 25-May-2010 raj

Mostly revert r200691. U-Boot syscall() entry point returns 1 on success.


208534 25-May-2010 raj

Use loader devices only when they initialized properly.


208388 21-May-2010 jhb

- Set 'dmadat' earlier so that we properly setup the heap if we fail to
locate a high memory area for the heap using the SMAP.
- Read the number of hard drive devices from the BIOS instead of hardcoding
a limit of 128. Some BIOSes duplicate disk devices once you get beyond
the maximum drive number.

MFC after: 1 month


208027 13-May-2010 uqs

mdoc: move CAVEATS, BUGS and SECURITY CONSIDERATIONS sections to the
bottom of the manpages and order them consistently.

GNU groff doesn't care about the ordering, and doesn't even mention
CAVEATS and SECURITY CONSIDERATIONS as common sections and where to put
them.

Found by: mdocml lint run
Reviewed by: ru


207854 10-May-2010 imp

Formatting nit


207630 04-May-2010 delphij

Remove if_ar, if_ray, if_sr, if_ppp, if_sl to reflect the current modules
available, they were removed due to NEEDSGIANT.

While I'm there, add if_et which was missed quite a while ago.

MFC after: 2 weeks


207537 02-May-2010 marius

Add support for SPARC64 V (and where it already makes sense for other
HAL/Fujitsu) CPUs. For the most part this consists of fleshing out the
MMU and cache handling, it doesn't add pmap optimizations possible with
these CPU, yet, though.
With these changes FreeBSD runs stable on Fujitsu Siemens PRIMEPOWER 250
and likely also other models based on SPARC64 V like 450, 650 and 850.
Thanks go to Michael Moll for providing access to a PRIMEPOWER 250.


206625 14-Apr-2010 yongari

Add driver for Silicon Integrated Systems SiS190/191 Fast/Gigabit Ethernet.
This driver was written by Alexander Pohoyda and greatly enhanced
by Nikolay Denev. I don't have these hardwares but this driver was
tested by Nikolay Denev and xclin.

Because SiS didn't release data sheet for this controller, programming
information came from Linux driver and OpenSolaris. Unlike other open
source driver for SiS190/191, sge(4) takes full advantage of TX/RX
checksum offloading and does not require additional copy operation in
RX handler.
The controller seems to have advanced offloading features like VLAN
hardware tag insertion/stripping, TCP segmentation offload(TSO) as
well as jumbo frame support but these features are not available
yet. Special thanks to xclin <xclin<> cs dot nctu dot edu dot tw>
who sent fix for receiving VLAN oversized frames.


206378 07-Apr-2010 rpaulo

Add a copyright.


206376 07-Apr-2010 rpaulo

EFI boot loader for FreeBSD/i386.

Doesn't boot a kernel yet, but it can read an ELF file from the EFI FAT
partition.


205662 26-Mar-2010 delphij

Our boot loader is capable of booting both i386 and amd64 kernels so
call it "x86" instead of "i386".

Suggested by: jhb in response to Alexander Best's loader proposal
MFC after: 1 month


204900 09-Mar-2010 ticso

BWCT boards can have 128MB SDRAM.


204899 09-Mar-2010 ticso

fix signed warning


204328 25-Feb-2010 weongyo

Add bwn(4) driver.


204318 25-Feb-2010 raj

Minor style correction.


204317 25-Feb-2010 raj

Fix handling of GPT disk partition index.

Obtained from: Semihalf
MFC after: 1 week


204316 25-Feb-2010 raj

Let loader(8) for U-Boot use default storage more flexibly.

Obtained from: Semihalf
MFC after: 1 week


204315 25-Feb-2010 raj

Enable U-Boot storage for PowerPC. While there fix loader(8) help file name.

MFC after: 1 week


204152 20-Feb-2010 marius

Some machines can not only consist of CPUs running at different speeds
but also of different types, f.e. Sun Fire V890 can be equipped with a
mix of UltraSPARC IV and IV+ CPUs, requiring different MMU initialization
and different workarounds for model specific errata. Therefore move the
CPU implementation number from a global variable to the per-CPU data.
Functions which are called before the latter is available are passed the
implementation number as a parameter now.


204129 20-Feb-2010 nwhitehorn

Enable NETIF_OPEN_CLOSE_ONCE on PowerPC OFW. This fixes netbooting on
PowerPC Book-S hardware, which had been broken for a very long time.

Submitted by: Andreas Tobler
MFC after: 1 week


204067 18-Feb-2010 pjd

Update comment. We also look for GPT partitions.


203831 13-Feb-2010 marius

Correct the panic strings introduced in r203830 to match their arguments.


203830 13-Feb-2010 marius

Use the SUNW,{d,i}tlb-load methods for entering locked TLB entries like
OpenBSD and OpenSolaris do instead of fiddling with the MMUs ourselves.
Unlike direct access the firmware methods don't automatically use the
next free (?) TLB slot, instead the slot to be used has to be specified.
We allocate the TLB slots for the kernel top-down as OpenSolaris suggests
that the firmware will always allocate the ones for its own use bottom-up.
Besides being simpler, according to OpenBSD using the firmware methods is
required to allow booting on Sun Fire E10K with multi-systemboard domains.


203829 13-Feb-2010 marius

- Assert that HEAPSZ is a multiple of PAGE_SIZE as at least the firmware
of Sun Fire V1280 doesn't round up the size itself but instead lets
claiming of non page-sized amounts of memory fail.
- Change parameters and variables related to the TLB slots to unsigned
which is more appropriate.
- Search the whole OFW device tree instead of only the children of the
root nexus device for the BSP as starting with UltraSPARC IV the 'cpu'
nodes hang off of from 'cmp' (chip multi-threading processor) or 'core'
or combinations thereof. Also in large UltraSPARC III based machines
the 'cpu' nodes hang off of 'ssm' (scalable shared memory) nodes which
group snooping-coherency domains together instead of directly from the
nexus.
- Add support for UltraSPARC IV and IV+ BSPs. Due to the fact that these
are multi-core each CPU has two Fireplane config registers and thus the
module/target ID has to be determined differently so the one specific
to a certain core is used. Similarly, starting with UltraSPARC IV the
individual cores use a different property in the OFW device tree to
indicate the CPU/core ID as it no longer is in coincidence with the
shared slot/socket ID.
While at it additionally distinguish between CPUs with Fireplane and
JBus interconnects as these also use slightly different sizes for the
JBus/agent/module/target IDs.
- Check the return value of init_heap(). This requires moving it after
cons_probe() so we can panic when appropriate. This should be fine as
the PowerPC OFW loader uses that order for quite some time now.


202552 18-Jan-2010 marcel

Add command-line option -dev to set the default value of the currdev
variable. This is to be used by the EFI boot manager.

While here, re-factor the code a little bit and bump the version to
2.1.


202437 16-Jan-2010 trasz

Add gmountver, disk mount verification GEOM class.

Note that due to e.g. write throttling ('wdrain'), it can stall all the disk
I/O instead of just the device it's configured for. Using it for removable
media is therefore not a good idea.

Reviewed by: pjd (earlier version)


202143 12-Jan-2010 brooks

Replace the static NGROUPS=NGROUPS_MAX+1=1024 with a dynamic
kern.ngroups+1. kern.ngroups can range from NGROUPS_MAX=1023 to
INT_MAX-1. Given that the Windows group limit is 1024, this range
should be sufficient for most applications.

MFC after: 1 month


201966 10-Jan-2010 marcel

Remove debugging printf(). There's no need to print the image
base address anymore.


201941 09-Jan-2010 marcel

Remove file system support based on the simple file system protocol
as this only allows us to access file systems that EFI knows about.
With a loader that can only use EFI-supported file systems, we're
forced to put /boot on the EFI system partition. This is suboptimal
in the following ways:
1. With /boot a symlink to /efi/boot, mergemaster complains about
the mismatch and there's no quick solution.
2. The EFI loader can only boot a single version of FreeBSD. There's
no way to install multiple versions of FreeBSD and select one
at the loader prompt.
3. ZFS maintains /boot/zfs/zpool.cache and with /boot a symlink we
end up with the file on a MSDOS file system. ZFS does not have
proper handling of file systems that are under Giant.

Implement a disk device based on the block I/O protocol instead and
pull in file system code from libstand. The disk devices are really
the partitions that EFI knows about.

This change is backward compatible.

MFC after: 1 week


201932 09-Jan-2010 marius

- Add code allowing a network device to only be open and closed once
by keeping it opened after the first open and closing it via the
cleanup handler when NETIF_OPEN_CLOSE_ONCE is defined in order to
avoid the open-close-dance on every file access which with firmware
that for example performs an auto-negotiation on every open causes
netbooting to take horribly long. Basically the behavior with this
knob enabled resembles the one employed between r60506 and r177108
(and for sparc64 also again since r182919) with the addition that
the network device now is closed eventually before entering the
kernel and before rebooting. Actually I think this should be the
desired MI behavior, however the U-Boot loader actually requires
net_close() to be called after every transaction in order for some
local shutdown operations to be performed (and which I think thus
will break on concurrent opens, i.e. when netdev_opens is > 1, like
the loader does at least for disks when LOADER_GZIP_SUPPORT is
enabled).
- Use NETIF_OPEN_CLOSE_ONCE to replace the hack, which artificially
increased netdev_opens for sparc64 in order to keep the network
device opened forever, as at least some firmware versions require
the network device to be closed eventually before entering the
kernel or otherwise will DMA received packets to stale memory.
The powerpc OFW loader probably wants NETIF_OPEN_CLOSE_ONCE to be
set as well for the same reasons.


201901 09-Jan-2010 marius

Remove clause 3 and 4 from TNF licenses (this was the only 4-clause TNF
license FreeBSD had in sys/boot).

Obtained from: NetBSD


201690 06-Jan-2010 delphij

Space cleanup for revision 201689 committed separately for easier review.
This commit is purely space changes.

Submitted by: Matt Reimer
Sponsored by: VPOP Technologies, Inc.
MFC after: 2 weeks


201689 06-Jan-2010 delphij

Instead of assuming all vdevs are healthy, check the newest vdev label
for each vdev's status. Booting from a degraded vdev should now be
more robust.

Submitted by: Matt Reimer <mattjreimer at gmail.com>
Sponsored by: VPOP Technologies, Inc.
MFC after: 2 weeks


201399 02-Jan-2010 mbr

Fix typo: s/partion/partition/

Submitted by: Marc Balmer <marc@msys.ch>
MFC after: 3 days


201342 31-Dec-2009 nyan

Reimplement the boot2 for pc98 completely.
It's based on the newest i386's one and has the advantage of:

- ELF binary support.
- UFS2 filesystem support.
- Many FreeBSD slices support on a disk.

Tested by: SATOU Tomokazu ( tomo1770 _ maple _ ocn _ ne _ jp ),
WATANABE Kazuhiro ( CQG00620 _ nifty _ ne _ jp ) and
nyan

MFC after: 2 week

Happy New Year in Japan!!


201340 31-Dec-2009 nyan

Don't use 15M-16M area on pc98. It's reserved for some devices.

MFC after: 2 week


201339 31-Dec-2009 nyan

Add setting machine type support to the loader.

MFC after: 2 week


201145 28-Dec-2009 antoine

(S)LIST_HEAD_INITIALIZER takes a (S)LIST_HEAD as an argument.
Fix some wrong usages.
Note: this does not affect generated binaries as this argument is not used.

PR: 137213
Submitted by: Eygene Ryabinkin (initial version)
MFC after: 1 month


200946 24-Dec-2009 marius

Execute the cleanup handlers before jumping to the kernel just
like the other architectures do.


200945 24-Dec-2009 marius

- Consistently wrap debugging in NETIF_DEBUG. This basically merges
NetBSD rev 1.19.
- Make the functions match their prototypes regarding static.


200944 24-Dec-2009 marius

Revert r183628 as with the current ata(4) ATAPI DMA with AcerLabs
M5229 appears to be once again fixed. If this happens to return
we probably should disable ATAPI DMA in ataacerlabs(4) instead
just like the Linux libATA does.


200872 22-Dec-2009 jhb

Don't build zfsboot, gptzfsboot, and zfsloader if WITHOUT_ZFS is enabled.

MFC after: 1 week


200776 21-Dec-2009 nyan

Move cursor position after putting a character.

MFC after: 1 week


200691 18-Dec-2009 marcel

Fix ub_env_enum(): syscall() returns 0 when properly invoked.


200631 17-Dec-2009 nyan

Fix debug messages of bd_io().

MFC after: 1 week


200460 13-Dec-2009 marcel

Add support for memory disk (md). The size of the memory disk
is determined by MD_IMAGE_SIZE. A file system can be embedded
into the loader with /sys/tools/embed_mfs.sh.
Note that md.c is not included when MD_IMAGE_SIZE is not set.


200407 11-Dec-2009 nyan

Cleanups the boot2 for pc98. There is no functional change.
- Make setting machine type and getting geom conditional for future.
- Remove unused RAWBOOT and CDBOOT supports.
- Remove unneeded include.
- Fix warnings.

MFC after: 1 week


200357 10-Dec-2009 jhb

Don't warn about an RSDP with a corrupt checksum. The kernel does a better
job about warning about these things later and this message can be
confusing.

Submitted by: infofarmer
MFC after: 1 week


200310 09-Dec-2009 jhb

Fix a confusing typo in the EDD packet structure used in gptboot and
gptzfsboot. I got the segment and offset fields reversed in the structure,
but I also succeeded in crossing the assignments so the actual EDD packet
ended up correct.

MFC after: 1 week


200309 09-Dec-2009 jhb

- Port bios_getmem() from libi386 to {gpt,}zfsboot() and use it to
safely allocate a heap region above 1MB. This enables {gpt,}zfsboot()
to allocate much larger buffers than before.
- Use a larger buffer (1MB instead of 128K) for temporary ZFS buffers. This
allows more reliable reading of compressed files in a raidz/raidz2 pool.

Submitted by: Matt Reimer mattjreimer of gmail
MFC after: 1 week


200255 08-Dec-2009 nyan

MFi386: revision 200219

Improve the algorithm the loader uses to choose a memory range for its
heap when using a range above 1MB.

MFC after: 1 week


200254 08-Dec-2009 nyan

MFi386: Use real mode instead of v86 mode.

MFC after: 1 week


200253 08-Dec-2009 nyan

MFi386: revision 200216

Various small whitespace and style fixes.


200219 07-Dec-2009 jhb

Improve the algorithm the loader uses to choose a memory range for its
heap when using a range above 1MB.

Previously the loader would always use the last 3MB in the first memory
range above 1MB for the heap. However, this memory range is also where the
kernel and any modules are loaded. If this memory range is "small", then
using the high 3MB for the heap may not leave enough room for the kernel
and modules.

Now the loader will use any range below 4GB for the heap, and the logic to
choose the "high" heap region has moved into biosmem.c. It sets two
variables that the loader can use for a high heap if it desires. When a
high heap is enabled (BZIP2, FireWire, GPT, or ZFS), then the following
memory ranges are preferred for the heap in order from best to worst:
- The largest memory region in the SMAP with a start address greater than
1MB. The memory region must be at least 3MB in length. This leaves the
region starting at 1MB purely for use by the kernel and modules.
- The last 3MB of the memory region starting at 1MB if it is at least 3MB
in size. This matches the current behavior except that the current loader
would break horribly if the first region was not at least 3MB in size.
- The memory range from the end of the loader up to the 640k window. This
is the range the loader uses when none of the high-heap-requesting options
are enabled.

Tested by: hrs
MFC after: 1 week


200216 07-Dec-2009 jhb

Various small whitespace and style fixes.


199864 27-Nov-2009 sobomax

Remove spinconsole from pc98, some parts seem to be missed and it's
too late (early?) to figure out what exactly.

Reported by: TAKAHASHI Yoshihiro


199857 27-Nov-2009 sobomax

Whitespace-only: another instance of identation with spaces.


199856 27-Nov-2009 sobomax

Whitespace on: use tabs for identation consistently.


199855 27-Nov-2009 sobomax

Add new loader console type: "spinconsole". This console selects the
video console which doesn't take any input from keyboard and hides
all output replacing it with ``spinning'' character (useful for
embedded products and custom installations).

Sponsored by: Sippy Software, Inc.


199806 25-Nov-2009 trasz

Be nice, don't use the f-word.


199714 23-Nov-2009 rnoland

Create a seperate ZFS enabled loader.

This adds zfsloader which will be called by zfsboot/gptzfsboot code rather
than the tradional loader. This eliminates the need to set the
LOADER_ZFS_SUPPORT variable in order to get a ZFS enabled loader.

Note however, that you must reinstall your bootcode (zfsboot/gptzfsboot)
in order for the boot process to use the new loader.

New installations will no longer be required to build a ZFS enabled
loader for a working ZFS boot system. Installing zfsboot/gptzfsboot is
sufficient for acknowledging the use of CDDL code and therefore the ZFS
enabled loader.

Based on a previous patch from jhb@

Reviewed by: jhb@
MFC after: 2 weeks


199579 20-Nov-2009 jhb

Always use 64-bit LBAs for disk addresses in zfsboot and gptzfsboot to
fully support booting from large volumes.

Tested by: Emil Smolenski ambsd of raisa.eu.org
Submitted by: Matt Reimer mattjreimer of gmail (most of the C bits)
MFC after: 1 week


199534 19-Nov-2009 raj

Provide an effective (relocated) address when building modules metadata.

This lets modules loaded dynamically in loader(8) work for U-Boot-based
platforms.

MFC after: 1 week


199210 12-Nov-2009 attilio

Introduce a new option (BOOT_PROMPT_123) that lets enter the boot prompt
only when typing the sequence "123" (opposite to the standard 'push any
button' approach).
That results useful when using serial lines sending garbage and leading
to unwilling boot prompt appearence.

Obtained from: Sandvine Incorporated
Reviewed by: emaste, jhb
Sponsored by: Sandvine Incorporated
MFC: 1 week


199193 11-Nov-2009 antoine

- Remove trailing ";" after if statement
- Remove #if 0 section that was never needed/used

Reviewed by: raj@
MFC after: 1 month


198537 28-Oct-2009 brueffer

Close a file descriptor leak in an error case.

PR: 138374
Submitted by: Patroklos Argyroudis <argp@census-labs.com>
MFC after: 1 week


198420 23-Oct-2009 rnoland

Correct some issues with zfs boot.

- Teach it to read gang blocks. (essentially untested)
If you see "ZFS: gang block detected!", please let
me know, so we can either remove the printf if it
works, or fix it if it doesn't.

- If multiple partitions exist on a disk, probe them all.
We also need to reset dsk->start to 0 to read the right
sector here.

- With GPT, we can have 128 partitions.

- If the bootfs property has ever been set on a pool
it seems that it never goes away. zpool won't allow
you to add to the pool with the bootfs property set.
However, if you clear the property back to default
we end up getting 0 for the object number and read
a bogus block pointer and fail to boot.

- Fix some error printfs. The printf in the loader is
only capable of c,s and u formats.

- Teach printf how to display %llu

Reviewed by: dfr, jhb
MFC after: 2 weeks


198079 14-Oct-2009 jhb

Use zfs_read() instead of xfsread() to read /boot.config. xfsread() fails
short read requests, so the result was that a /boot.config smaller than 512
bytes was ignored. boot2 uses fsread() instead of xfsread() to read
/boot.config already, so this makes zfsboot more like boot2.

Submitted by: Johny Mattsson johny-freebsd of earthmagic org
Reviewed by: dfr
MFC after: 3 days


197518 26-Sep-2009 bz

lindev(4) [1] is supposed to be a collection of linux-specific pseudo
devices that we also support, just not by default (thus only LINT or
module builds by default).

While currently there is only "/dev/full" [2], we are planning to see more
in the future. We may decide to change the module/dependency logic in the
future should the list grow too long.

This is not part of linux.ko as also non-linux binaries like kFreeBSD
userland or ports can make use of this as well.

Suggested by: rwatson [1] (name)
Submitted by: ed [2]
Discussed with: markm, ed, rwatson, kib (weeks ago)
Reviewed by: rwatson, brueffer (prev. version)
PR: kern/68961
MFC after: 6 weeks


197156 13-Sep-2009 nyan

MFi386:

Move the loader's entry point to 0x200000. This change is also needed
for pc98.

MFC after: 3 days


197082 10-Sep-2009 emaste

If the pxe client is told to use / as the root path, honour that rather
of trying to mount /pxeroot instead.

PR: i386/106493
Submitted by: Andrey Russev
MFC after: 1 month


196326 17-Aug-2009 jhay

Fix parse() so that the partition to boot (load /boot/loader) from can
be set. The syntax as printed in main() is used: 0:ad(0p3)/boot/loader

Reviewed by: jhb
Approved by: re (kib)


195892 26-Jul-2009 bz

Update epair(4) to the new netisr implementation and polish
things a bit:
- use dpcpu data to track the ifps with packets queued up,
- per-cpu locking and driver flags
- along with .nh_drainedcpu and NETISR_POLICY_CPU.
- Put the mbufs in flight reference count, preventing interfaces
from going away, under INVARIANTS as this is a general problem
of the stack and should be solved in if.c/netisr but still good
to verify the internal queuing logic.
- Permit changing the MTU to virtually everythinkg like we do for loopback.

Hook epair(4) up to the build.

Approved by: re (kib)


195045 26-Jun-2009 rpaulo

On special systems where the MBR and the GPT are in sync (up to the 4th
slicei, Apple EFI hardware), the bootloader will fail to recognize the GPT
if it finds anything else but the EFI partition. Change the check to continue
detecting the GPT by looking at the EFI partition on the MBR but
stopping successfuly after finding it.

PR: kern/134590
Submitted by: Christoph Langguth <christoph at rosenkeller.org>
Reviewed by: jhb
MFC after: 2 weeks
Approved by: re (kib)


194634 22-Jun-2009 raj

Bump PowerPC loader(8) version to reflect extensions it has recently grown.


194246 15-Jun-2009 marius

Add cas(4), a driver for Sun Cassini/Cassini+ and National Semiconductor
DP83065 Saturn Gigabit Ethernet controllers. These are the successors
of the Sun GEM controllers and still have a similar but extended transmit
logic. As such this driver is based on gem(4).
Thanks to marcel@ for providing a Sun Quad GigaSwift Ethernet UTP (QGE)
card which was vital for getting this driver to work on architectures
not using Open Firmware.

Approved by: re (kib)
MFC after: 2 weeks


193880 10-Jun-2009 yongari

Add alc(4), a driver for Atheros AR8131/AR8132 PCIe ethernet
controller. These controllers are also known as L1C(AR8131) and
L2C(AR8132) respectively. These controllers resembles the first
generation controller L1 but usage of different descriptor format
and new register mappings over L1 register space requires a new
driver. There are a couple of registers I still don't understand
but the driver seems to have no critical issues for performance and
stability. Currently alc(4) supports the following hardware
features.
o MSI
o TCP Segmentation offload
o Hardware VLAN tag insertion/stripping
o Tx/Rx interrupt moderation
o Hardware statistics counters(dev.alc.%d.stats)
o Jumbo frame
o WOL
AR8131/AR8132 also supports Tx checksum offloading but I disabled
it due to stability issues. I'm not sure this comes from broken
sample boards or hardware bugs. If you know your controller works
without problems you can still enable it. The controller has a
silicon bug for Rx checksum offloading, so the feature was not
implemented.
I'd like to say big thanks to Atheros. Atheros kindly sent sample
boards to me and answered several questions I had.

HW donated by: Atheros Communications, Inc.


193720 08-Jun-2009 jhb

Instead of packing the individual fields in the PnP structures, pack the
entire structures. This trims some warnings.

Verified by: md5(1)
MFC after: 1 week


193719 08-Jun-2009 jhb

Don't attempt to free the GPT partition list for a disk with an empty GPT.

Submitted by: Yuri Pankov yuri.pankov of gmail
MFC after: 3 days


193530 05-Jun-2009 jkim

Import ACPICA 20090521.


193387 03-Jun-2009 raj

Make GPT style partitiong endian-safe in U-Boot support library.

Submitted by: Piotr Ziecik
Obtained from: Semihalf


193229 01-Jun-2009 jhb

Add a missing parameter when displaying GPT partitions with an unknown
UUID.

Submitted by: Pawel Worach pawel.worach | gmail
MFC after: 1 week


193192 01-Jun-2009 rodrigc

sys/boot/common.c
=================
Extend the loader to parse the root file system mount options in /etc/fstab,
and set a new loader variable vfs.root.mountfrom.options with these options.
The root mount options must be a comma-delimited string, as specified in
/etc/fstab.
Only set the vfs.root.mountfrom.options variable if it has not been
set in the environment.

sys/kern/vfs_mount.c
====================
When mounting the root file system, pass the mount options
specified in vfs.root.mountfrom.options, but filter out "rw" and "noro",
since the initial mount of the root file system must be done as "ro".
While we are here, try to add a few hints to the mountroot prompt
to give users and idea what might of gone wrong during mounting
of the root file system.

Reviewed by: jhb (an earlier patch)


193111 30-May-2009 marcel

Fix NETIF_DEBUG compilation.


192972 28-May-2009 dfr

Some of the boot loader code only works on a ufs file system, but it
uses the generic struct dirent, which happens to look identical to UFS's
struct direct. If BSD ever changes dirent then this will be a problem.

Submitted by: matthew dot fleming at isilon dot com


192247 17-May-2009 brueffer

Improve the accf_dns_load description.


192194 16-May-2009 dfr

Add support for booting from raidz1 and raidz2 pools.


191829 05-May-2009 raj

GPT style partitioning for loader(8) with U-Boot support library (tested on
ARM).

Submitted by: Piotr Ziecik kosmo ! semihalf dot com


191111 15-Apr-2009 jkim

A simple rewrite of biossmap.c:

- Do not iterate int 15h, function e820h twice. Instead, we use STAILQ to
store each return buffer and copy all at once.
- Export optional extended attributes defined in ACPI 3.0 as separate
metadata. Currently, there are only two bits defined in the specification.
For example, if the descriptor has extended attributes and it is not
enabled, it has to be ignored by OS. We may implement it in the kernel
later if it is necessary and proven correct in reality.
- Check return buffer size strictly as suggested in ACPI 3.0.

Reviewed by: jhb


191071 14-Apr-2009 marius

Fix masking of TTE bits; the TD_*_MASK macros need shifting via the
corresponding TD_*_SHIFT.

MFC after: 3 days


191061 14-Apr-2009 jhb

Use a disk address instead of an int to hold the starting offset of an
open partition. This fixes access to partitions whose starting offset
is >= 2 TB.

Submitted by: "James R. Van Artsdalen" james jrv.org
MFC after: 3 days


191012 13-Apr-2009 marius

Fix whitespace.


190814 07-Apr-2009 jkim

Rewrite SMBIOS for loader:

- First three fields of system UUID may be little-endian as described in
SMBIOS Specification v2.6. For now, we keep the network byte order for
backward compatibility (and consistency with popular dmidecode tool)
if SMBIOS table revision is less than 2.6. However, little-endian format
can be forced by defining BOOT_LITTLE_ENDIAN_UUID from make.conf(5) if it
is necessary.
- Replace overly ambitious optimizations with more readable code.
- Update comments to SMBIOS Specification v2.6 and clean up style(9) bugs.


190813 07-Apr-2009 jkim

Increase sprintf(3) buffer size, which I forgot from the previous commit.


190789 07-Apr-2009 weongyo

Add an entry for the uath(4) module.


190599 31-Mar-2009 jkim

Probe size of installed memory modules from loader and display it
as 'real memory' instead of Maxmem if the value is available.
Note amd64 displayed physmem as 'usable memory' since machdep.c r1.640
to unconfuse users. Now it is consistent across amd64 and i386 again.
While I am here, clean up smbios.c a bit and update copyright date.

Reviewed by: jhb


190147 20-Mar-2009 nyan

Oops, fix the previous change.


190146 20-Mar-2009 nyan

MFi386: r189749

Teach the BIOS CD driver to use bounce buffers when the destination
address is > 1 MB.


190127 20-Mar-2009 nyan

Merge the missing changes from i386.
Teach the loader about the FAT partitions.


190126 20-Mar-2009 nyan

MFi386: the part of r179825 to reduce diffs against i386.


190100 19-Mar-2009 thompsa

Remove the uscanner(4) driver, this follows the removal of the kernel scanner
driver in Linux 2.6. uscanner was just a simple wrapper around a fifo and
contained no logic, the default interface is now libusb (supported by sane).

Reviewed by: HPS


190046 19-Mar-2009 nyan

Reduce diffs against i386.


190029 19-Mar-2009 nyan

Use the common PC98_MID_* defines instead of a magic number.


189872 16-Mar-2009 dchagin

Chase the k8temp->amdtemp rename in NOTES and loader.conf.

Approved by: kib (mentor)


189749 12-Mar-2009 jhb

The recent change to use memory > 1MB for the heap by default broke CD
booting because the CD driver did not use bounce buffers to ensure
request buffers sent to the BIOS were always in the first 1MB. Copy over
the bounce buffer logic from the BIOS disk driver (minus the 64k boundary
code for floppies) to fix this.

Reported by: kensmith


189588 09-Mar-2009 jhb

- Make it possible to disable GPT support by setting LOADER_NO_GPT_SUPPORT
in make.conf or src.conf.
- When GPT is enabled (which it is by default), use memory above 1 MB and
leave the memory from the end of the bss to the end of the 640k window
purely for the stack. The loader has grown and now it is much more
common for the heap and stack to grow into each other when both are
located in the 640k window.

PR: kern/129526
MFC after: 1 week


189500 07-Mar-2009 marcel

Revert the part of change 107879 that employs the unused bytes after
the disklabel in the 2nd sector for boot code. Even with both UFS1
and UFS2 supported, there's enough bytes left that we don't have to
nibble from the disklabel.
Thus, the entire 2nd sector is now reserved for the disklabel, which
makes the bootcode compatible again with disklabels that have more
than 8 partitions -- such as those created and supported by gpart.

i386: 135 bytes available
amd64: 151 bytes available

Ok'd by: jhb


189017 24-Feb-2009 jhb

Fix some more issues with the real mode BTX.

The old BTX passed the general purpose registers from the 32-bit client to
the routines called via virtual 86 mode. The new BTX did the same thing.
However, it turns out that some instructions behave differently in virtual 86
mode and real mode (even though this is under-documented). For example, the
LEAVE instruction will cause an exception in real mode if any of the upper
16-bits of %ebp are non-zero after it executes. In virtual 8086 mode the
upper 16-bits are simply ignored. This could cause faults in hardware
interrupt handlers that inherited an %ebp larger than 0xffff from the 32-bit
client (loader, boot2, etc.) while running in real mode.

To fix, when executing hardware interrupt handlers provide an explicit clean
state where all the general purpose and segment registers are zero upon
entry to the interrupt handler. While here, I attempted to simplify the
control flow in the 'intusr' code that sets up the various stack frames
and exits protected mode to invoke the requested routine via real mode.

A huge thanks to Tor Egge (tegge@) for debugging this issue.

Submitted by: tegge
Reviewed by: tegge
Tested by: bz
MFC after: 1 week


188895 21-Feb-2009 ru

Fix build when WITH_SSP is set explicitly.

Submitted by: Jeremie Le Hen


188825 19-Feb-2009 imp

Enable building of ficl on MIPS. It compiles, but needs more testing.


188824 19-Feb-2009 imp

Add basic mips support. This has been compile tested only.


188666 16-Feb-2009 thompsa

Add a helper function for loading geli keys from the loader.


188455 10-Feb-2009 marius

- Use the generally more appropriate PROM base rather than the
kernel one as the non-faulting flush address in the loader so
we can can change KERNBASE and VM_MIN_KERNEL_ADDRESS if we
ever want to without needing to worry about using a compatible
loader.
- Correctly check for LOADER_DEBUG.
- Add a missing const for page_sizes[].


187917 30-Jan-2009 gabor

- Remove superfluous comment

PR: docs/129400
Submitted by: Gavin Atkinson <gavin@freebsd.org>


187614 23-Jan-2009 weongyo

Add an entry for the urtw(4) module.


187197 13-Jan-2009 luigi

remove a file which is, as far as I can tell, totally unused.


187143 13-Jan-2009 luigi

comment out some debugging messages that slipped in by mistake.

MFC after: 3 days


187101 12-Jan-2009 jkim

Allow VIA Nano processors to boot FreeBSD/amd64.

PR: amd64/130303
MFC after: 1 week


186789 05-Jan-2009 luigi

This patch introduces a number of simplifications to the Forth
functions used in the bootloader. The goal is to make the code more
readable and smaller (especially because we have size issues
in the loader's environment).

High level description of the changes:
+ define some string manipulation functions to improve readability;
+ create functions to manipulate module descriptors, removing some
duplicated code;
+ rename the error codes to ESOMETHING;
+ consistently use set_environment_variable (which evaluates
$variables) when interpreting variable=value assignments;

I have tested the code, but there might be code paths that I have
not traversed so please let me know of any issues.

Details of this change:

--- loader.4th ---
+ add some module operators, to remove duplicated code while parsing
module-related commands:

set-module-flag
enable-module
disable-module
toggle-module
show-module

--- pnp.4th ---
+ move here the definition related to the pnp devices list, e.g.
STAILQ_* , pnpident, pnpinfo

--- support.4th ---
+ rename error codes to capital e.g. ENOMEM EFREE ... and do obvious
changes related to the renaming;
+ remove unused structures (those relevant to pnp are moved to pnp.4th)
+ various string functions
- strlen removed (it is an internal function)
- strchr, defined as the C function
- strtype -- type a string to output
- strref -- assign a reference to the string on the stack
- unquote -- remove quotes from a string

+ remove reset_line_buffer

+ move up the 'set_environment_variable' function (which now
uses the interpreter, so $variables are evaluated).
Use the function in various places

+ add a 'test_file function' for debugging purposes

MFC after: 4 weeks


186598 30-Dec-2008 luigi

A number of small changes to make the 'save choice to disk' safer,
and re-enable it as default.

In particular:

+ re-enable the 'update' flag in the Makefile (of course!);

+ commit Warner's patch "orb $NOUPDATE,_FLAGS(%bp)"
to avoid writing to disk in case of a timeout/default choice;

+ fix an off-by-one count in the partition scan code that would
print the wrong name for unknown partitions;

+ unconditionally change the boot prompt to 'Boot:' instead of 'Default:'
to make room for the extra code/checks/messages. Some of the changes
listed below are also made to save space;

+ rearrange and fix comments for known partition types. Right now we
explicitly recognise *BSD, Linux, FAT16 (type 6, used on many USB keys),
NTFS (type 7), FAT32 (type 11).
Depending on other options we also recognise Extended (type 5),
FAT12 (type 1) and FAT16 < 32MB (type 4).

+ Add an entry "F6 PXE" when the code is built with -DPXE (which is
a default now). Technically, F6 boots through INT18, so the prompt 'PXE'
is a bit misleading. Unfortunately the name INT18
is too long and does not fit in - we could use ROM perhaps.
The reason I picked 'PXE' is that on many (I believe) new systems
INT18 calls PXE.

Apart from the choice of the name for PXE/ROM/INT18, this should close
pending issues on the 1-sector boot0 code and we should be able to
move the code to RELENG_7 when it reopens.

No boot0cfg changes are necessary.

MFC after: 3 weeks


186352 20-Dec-2008 sam

Merge support for Gateworks Cambria boards:
o add support for IXP435 cpu's (e.g. 64 irq's)
o add support for Cambria-specific devices: npe, led's (front panel and
octal latch), ehci, mcu, ide cf
o redo memory mapping for xscale/ixp4xx boards: previously memory
was assumed aliased to 0x10000000 but this appears to be true only
for ixp425 systems and breaks operation on others; rework so memory
is assumed to start at 0
o rework NPE configuration support to use NPE id's instead of port #'s;
these changes also rename the associated MAC's to follow the NPE's
they are attached to
o update npe firmware to latest rev (same license) and update default fw
imageid's to match; in particular this adds NPE-A and crypto support
o re-style NPE fw handling code and add a console msg identifying the
attributes of the loaded fw
o fix numerous problems with handling failures during npe setup
o fix npe rx q setup; need to spin waiting for mailbox responses during
early boot stages as qmgr interrupts are not delivered; this fixes
the problem where all 8 traffic classifications were not tied to the
rx q (and eliminates the console msg "remember to fix rx q setup")
o add DELAY to npe MII wait logic for IXP435
o strip down builtin phys->virt address translation table in resource
handling to just those resources that require it and add a console msg
to alert people when this (kludge) table needs to be extended
o purge a bunch of dead netbsd-ism's
o cleanup avila led driver
o add Cambria support to boot2 and rework code for better multi-board support

Notes:
1. NPE-A doesn't work and causes NPE-C to stop working; it is disabled
in the hints
2. USB isn't working yet; controller communicates ok but device
discovery fails
3. Cambria support must be configured separately from IXP425 boards;
multi-board support is TBD

Sponsored by: Hobnob, Gateworks (board donation)
Reviewed by: imp


186243 17-Dec-2008 dfr

Use full 64bit arithmetic when converting file offsets to block numbers - fixes
booting on filesystems with inode numbers with values above 4194304.

Submitted by: ps


186231 17-Dec-2008 raj

Improve style(9) in PowerPC U-Boot support lib.


186073 14-Dec-2008 nyan

Disconnect the efi from pc98. It's not needed.


185938 11-Dec-2008 ps

Fix a leak introduced in r185902. We should free the devspec if
we've successfully found a zfs pool.


185902 11-Dec-2008 ps

Avoid a double free in devopen by not freeing the device structure
in zfs_dev_open. This stops a panic in the loader when trying to
read from a zfs device and no zfs devices exist.


185852 10-Dec-2008 dfr

Don't get confused if we encounter a device which is part of a raidz or raidz2
pool while probing for vdevs.

PR: 129539
Submitted by: Paul Wootton (paul at fletchermoorland dot co dot uk)


185781 09-Dec-2008 sobomax

Remove now unused label.

Submitted by: Christoph Mallon
MFC after: 4 weeks
(along with r185779 and r185780)


185780 09-Dec-2008 sobomax

Optimiza assembly in the previous r185779, to save whooping 16 bytes.

Submitted by: Christoph Mallon
MFC after: 4 weeks
(including r185779)


185779 08-Dec-2008 sobomax

Respect RBX_MUTE flag from boot[012].

MFC after: 4 weeks


185776 08-Dec-2008 sobomax

Fix typo in the comment %is -> %si.


185746 07-Dec-2008 luigi

PROBLEM: putting in a loader config file a line of the form

loader_conf_files="foo bar baz"

should cause loading the files listed, and then resume with the
remaining config files (from previous values of the variable).
Unfortunately, sometimes the line was ignored -- actually even
modifying the line in /boot/default/loader.conf sometimes doesn't work.

ANALYSIS: After much investigation, turned out to be a bug in the logic.
The existing code detected a new assignment by looking at the address
of the the variable containing the string. This only worked by pure
chance, i.e. if the new string is longer than the previous value
then the memory allocator may return a different address
to store the string hence triggering the detection.

SOLUTION: This commit contains a minimal change to fix the problem,
without altering too much the existing structure of the code.
However, as a step towards improving the quality and reliability of
this code, I have introduced a handful of one-line functions
(strget, strset, strfree, string= ) that could be used in dozens
of places in the existing code.

HOWEVER:
There is a much bigger problem here. Even though I am no Forth
expert (as most fellow src committers) I can tell that much of the
forth code (in support.4th at least) is in severe need of a
review/refactoring:

+ pieces of code are replicated multiple times instead of writing
functions (see e.g. set_module_*);

+ a lot of stale code (e.g. "structure" definitions for
preloaded_files, kernel_module, pnp stuff) which is not used
or at least belongs elsewhere.
The code bload is extremely bad as the loader runs with very small
memory constraints, and we already hit the limit once (see

http://svn.freebsd.org/viewvc/base?view=revision&revision=185132
Reducing the footprint of the forth files is critical.

+ two different styles of coding, one using pure stack functions
(maybe beautiful but surely highly unreadable), one using
high level mechanisms to give names to arguments and local
variables (which leads to readable code).

Note that this code is used by default by all FreeBSD installations,
so the fragility and the code bloat are extremely damaging.
I will try to work fixing the three items above, but if others have
time, please have a look at these issues.

MFC after: 4 weeks


185711 06-Dec-2008 ps

Correct include path for i386 specific includes. This allows zfs
to boot on systems where the loader is built on amd64 systems.


185692 06-Dec-2008 danger

- correct variable name

PR: docs/129448
Submitted by: Kenyon Ralph <kralph@gmail.com>
MFC after: Revision 1.91 is merged


185579 03-Dec-2008 luigi

Another, hopefully final set of changes to boot0 and boot0cfg.

boot0.S changes:

+ import a patch from Christoph Mallon to rearrange the various
print functions and save another couple of bytes;

+ implement the suggestion in PR 70531 to enable booting from
any valid partition because even the extended partitions that
were previously in our kill list may contain a valid boot loader.
This simplifies the code and saves some bytes;

+ followwing up PR 127764, implement conditional code to preserve
the 'Volume ID' which might be used by other OS (NT, XP, Vista)
and is located at offset 0x1b8. This requires a relocation of the
parameter block within the boot sector -- there is no other
possible workaround.
To address this, boot0cfg has been updated to handle both
versions of the boot code;

+ slightly rearrange the strings printed in the menus to make
the code buildable with all options. Given the tight memory
budget, this means that with certain options we need to
shrink or remove certain labels.

and especially:

make -DVOLUME_LABEL -DPXE the default options.

This means that the newly built boot0 block will preserve the
Volume ID, and has the (hidden) option F6 to boot from INT18/PXE.
I think the extra functionality is well worth the change.

The most visible difference here is that the 'Default: ' string
now becomes 'Boot: ' (it can be reverted to the old value
but then we need to nuke 1/2 partition name or entries to
make up for the extra room).

boot0cfg changes:

+ modify the code to recognise the new boot0 structure (with the
relocated options block to make room for the Volume id).

+ add two options, '-i xxxx-xxxx' to set the volume ID, -e c
to modify the character printed in case of bad input

PR: 127764 70531
Submitted by: Christoph Mallon (portions)
MFC after: 4 weeks


185562 02-Dec-2008 luigi

This commits brings in a lot of documentation and some enhancement
of the boot0.S code, with a number of compile-time selectable options,
the most interesting one being the ability to select PXE booting.

The code is completely compatible with the previous one, and with
the boot0cfg program. Even the actual code is largely unmodified,
with only minor rearrangements or fixes to make room for the new
features.

The behaviour of the standard build differs from the previous
version in the following, minor things:

+ 'noupdate' is the default, which means the code does not
write back the selection to disk. You can enable the feature
at runtime with boot0cfg, or changing the flags in the Makefile.

+ a drive number of 0x00 (floppy, or USB in floppy emulation) is
now accepted as valid. Previously, it was overridden with 0x80,
meaning that the partition table coming from the media was
used to access sectors on a possibly different media.
You can revert to the previous mode building with -DCHECK_DRIVE,
and you can always use the 'setdrv' option in boot0cfg

+ certain FAT or NTFS partitions are listed as WIN instead of DOS.

+ the 'bel' character on a bad selection is replaced by a '#' to
make it clear that the system is not hang even if the machine
does not have a speaker. This can be reverted back at compile
time, or at runtime with an upcoming boot0cfg option.

Additional features are available as compile time options,
and may be become the default if deemed useful. In particular:

+ INT18/PXE boot (make -DPXE)
This option enables booting through INT 18h (which on certain
BIOSes can be hooked to PXE) by pressing F6. There is unfortunately
no room to print the additional menu option.
Also, to make room for the code, the 'Default: ' string is
changed to 'Boot: '

+ print current drive number (make -DTEST)
Prints a line indicating the current drive number.
This is useful to figure out what is going on for machines/bioses
which remap drives in sometimes surprising ways.

+ disable numeric keys in console mode (make -DONLY_F_KEYS)
Not really a significant option, but it is needed to make
room for the -DTEST mode.

+ disable floppy support (make -DCHECK_DRIVE)
Revert to the old behaviour of only accepting 0x80 and above
as valid drive numbers.

MFC after: 6 weeks


185375 27-Nov-2008 raj

Let ARM loader(8) build with the man page.


185346 26-Nov-2008 luigi

Fix a typo in previous commit: must call "putn" to print a crlf,
instead of "puts" which prints whatever is at %si, followed by a CRLF.

It was not noticed during tests because at that point %si points
to a partition entry whose first byte is 0x80, which is both a
terminator for the string and a non printable character.

Submitted by: Christoph Mallon


185339 26-Nov-2008 luigi

Pass the pointer to the selected partition in %si to the next stage
boot code. The bug was introduced in rev.1.13, and went unnoticed
because FreeBSD's boot1 does not use it, but other systems might.

(I have been struggling for almost a full day trying to figure out
why a syslinux'ed partition would not boot when started with the
FreeBSD /boot/boot0, only to realize that the bug was ours!)

The space for the two extra bytes (push %si and pop %si) is reclaimed
by removing an extra CRLF that is printed before booting.

The bug is not a major one but if there is time it might be a good
thing to merge it into the upcoming releases.


185175 22-Nov-2008 dfr

Fix amd64 build and re-enable gptzfsboot.


185151 21-Nov-2008 des

Disconnect gptzfsboot from the build until dfr@ gets his act together.


185132 20-Nov-2008 luigi

As reported in kern/118222, pxeboot in RELENG7 (and presumably
above) exhibits some misbehaviours on machines with AMD64 CPUs,
which at least in some cases I have tracked down to a heap overflow.

It is unclear whether it depends on the CPU or on the pxe bios
itself which may use more memory on AMD machines.

Noticeably a pxeboot compiled from 6.x sources works fine on all
machines I have tried so far, while a pxeboot compiled from 7.x
sources does not.

This patch is a first step in reducing the amount of memory used
while processing the configuration files read by the loader at boot
(some of them are quite large, 1700+ lines), and it does so by:
+ moving a buffer to static memory instead of allocating in the heap;
+ skipping empty lines;
+ reducing the amount of memory used for line descriptors;

Unfortunately there are several changes between 6.x and above,
affecting the compiler, the loader code itself, and libstand,
and it is not so straightforward to
These changes fix the behaviour on one motherboard with a
single-core AMD cpu, but are still not enough e.g on an Asus
M2N-VM (with a dual-core CPU).

I need to investigate the problem a bit more before figuring
out what should be committed to RELENG_7

PR: kern/118222


185099 19-Nov-2008 raj

Initial storage functionality for U-Boot support library.

- Only non-sliced bsdlabel style partitioning is currently supported (but provisions
are made towards GPT support, which should follow soon)
- Enable storage support in loader on ARM

Obtained from: Semihalf


185097 19-Nov-2008 dfr

Some zfsboot fixes from Norikatsu Shigemura:

1. zfsboot2 (boot2) doesn't %d (printf), so change %d to %u.
2. chase new zpool versioning as SPA_VERSION.
Obtained from: sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h

Submitted by: nork


185096 19-Nov-2008 dfr

Add a GPT-aware variant of zfsboot which should be used in a similar manner
to gptboot, i.e. installed in a freebsd-boot partition using /sbin/gpart or
/sbin/gpt.

Tweak the /boot/loader ZFS support so that it can find ZFS pools that are
contained in GPT partitions.


185095 19-Nov-2008 dfr

If we free the GPT partition list in bd_open_gpt() because of an error, don't
try to free it again in bd_closedisk(). While I'm here, fix a DEBUG print.


185045 18-Nov-2008 ache

Fix building without ZFS (can't find library)


185029 17-Nov-2008 pjd

Update ZFS from version 6 to 13 and bring some FreeBSD-specific changes.

This bring huge amount of changes, I'll enumerate only user-visible changes:

- Delegated Administration

Allows regular users to perform ZFS operations, like file system
creation, snapshot creation, etc.

- L2ARC

Level 2 cache for ZFS - allows to use additional disks for cache.
Huge performance improvements mostly for random read of mostly
static content.

- slog

Allow to use additional disks for ZFS Intent Log to speed up
operations like fsync(2).

- vfs.zfs.super_owner

Allows regular users to perform privileged operations on files stored
on ZFS file systems owned by him. Very careful with this one.

- chflags(2)

Not all the flags are supported. This still needs work.

- ZFSBoot

Support to boot off of ZFS pool. Not finished, AFAIK.

Submitted by: dfr

- Snapshot properties

- New failure modes

Before if write requested failed, system paniced. Now one
can select from one of three failure modes:
- panic - panic on write error
- wait - wait for disk to reappear
- continue - serve read requests if possible, block write requests

- Refquota, refreservation properties

Just quota and reservation properties, but don't count space consumed
by children file systems, clones and snapshots.

- Sparse volumes

ZVOLs that don't reserve space in the pool.

- External attributes

Compatible with extattr(2).

- NFSv4-ACLs

Not sure about the status, might not be complete yet.

Submitted by: trasz

- Creation-time properties

- Regression tests for zpool(8) command.

Obtained from: OpenSolaris


184870 12-Nov-2008 yongari

Add ale(4), a driver for Atheros AR8121/AR8113/AR8114 PCIe ethernet
controller. The controller is also known as L1E(AR8121) and
L2E(AR8113/AR8114). Unlike its predecessor Attansic L1,
AR8121/AR8113/AR8114 uses completely different Rx logic such that
it requires separate driver. Datasheet for AR81xx is not available
to open source driver writers but it shares large part of Tx and
PHY logic of L1. I still don't understand some part of register
meaning and some MAC statistics counters but the driver seems to
have no critical issues for performance and stability.

The AR81xx requires copy operation to pass received frames to upper
stack such that ale(4) consumes a lot of CPU cycles than that of
other controller. A couple of silicon bugs also adds more CPU
cycles to address the known hardware bug. However, if you have fast
CPU you can still saturate the link.
Currently ale(4) supports the following hardware features.
- MSI.
- TCP Segmentation offload.
- Hardware VLAN tag insertion/stripping with checksum offload.
- Tx TCP/UDP checksum offload and Rx IP/TCP/UDP checksum offload.
- Tx/Rx interrupt moderation.
- Hardware statistics counters.
- Jumbo frame.
- WOL.

AR81xx PCIe ethernet controllers are mainly found on ASUS EeePC or
P5Q series of ASUS motherboards. Special thanks to Jeremy Chadwick
who sent the hardware to me. Without his donation writing a driver
for AR81xx would never have been possible. Big thanks to all people
who reported feedback or tested patches.

HW donated by: koitsu
Tested by: bsam, Joao Barros <joao.barros <> gmail DOT com >
Jan Henrik Sylvester <me <> janh DOT de >
Ivan Brawley < ivan <> brawley DOT id DOT au >,
CURRENT ML


184490 31-Oct-2008 nwhitehorn

Modify our boot block to pick an output device, without which boot1 will fail
on G4 machines. On the assumption that most people using FreeBSD on Apple
hardware are not using serial consoles, set boot1's output to screen. This
should be revisited. While here, reduce verbosity of boot1.


183878 14-Oct-2008 raj

Initial support of loader(8) for ARM machines running U-Boot.

This uses the common U-Boot support lib (sys/boot/uboot, already used on
FreeBSD/powerpc), and assumes the underlying firmware has the modern API for
stand-alone apps enabled in the config (CONFIG_API).

Only netbooting is supported at the moment.

Obtained from: Marvell, Semihalf


183863 14-Oct-2008 nwhitehorn

Add a simple HFS boot block implementation for booting PowerPC macs. It creates
a small HFS filesystem with a CHRP boot script and an early-stage bootloader
derived from the sparc64 boot block.

Obtained from: sparc64


183825 13-Oct-2008 nwhitehorn

Don't close OF disk devices on PowerPC. This fixes loader when booting from
disk on my Blue & White G3 system.


183673 07-Oct-2008 imp

More diff reductions against ixp425/boot2/boot2.c. This time, we
bring in FIXUP_BOOT_DRV functionality as an #ifdef. This is not
enabled at this time, and the md5 remains constant with this change.
Apart from the 'accept any partitioning scheme on the device' changes,
this was the biggest delta...

# and yes, we'll merge these into one source file if we can do that in a
# way that makes sense.

Obtained from: sys/boot/arm/ixp425/boot2/boot2.c


183671 07-Oct-2008 imp

Diff reduction with boot/arm/at91/boot2/boot2.c: indent this statement
correctly.


183669 07-Oct-2008 sam

don't hardcode cc

Submitted by: Andrey Eltsov


183667 07-Oct-2008 jhb

Use CPUID to see if the current CPU supports long mode when attemping to
boot an amd64 kernel. If not, then fail the boot request with an error
message. Otherwise, the boot attempt will fail with a BTX fault when
trying to read the EFER MSR.

MFC after: 3 days


183651 06-Oct-2008 jhay

Add a boot loader for ixp425 based boards like the Gateworks Avila
and ADI Pronghorn Metro with Redboot on them.


183636 06-Oct-2008 imp

Bring in the trivial differences between this code and John Hay's new
code. Added a copyright for the work I did to this file a couple of
years ago. Add John's copyright too, since I'm sure I'll be pulling
more into this code. This also implements a new -n option to not
allow breaking into the boot sequence which was original in the patch
John posted (not in the original i386 code I based this boot2.c on,
only the name is the same). I haven't checked to see if he did that,
or if it was one of Sam's improvements.

Submitted by: jhay@


183635 05-Oct-2008 imp

Remove XMODEM_DL support. It never was complete and only serves to
increase the diffs with other arm boot2 loaders.


183634 05-Oct-2008 imp

Indent with 8-space tabs. This reduces the diffs to the newer ixp425
boot2 and may make it easier to merge these files in the future...


183628 05-Oct-2008 marius

Disable ATAPI DMA as it's once again broken in that it causes data
corruption with the on-board AcerLabs M5229 controllers. While at
it, remove the pointless "nothing to autoload yet." message.

MFC after: 3 days


183599 04-Oct-2008 raj

Minor style(9) fixes for U-Boot API glue.


183598 04-Oct-2008 raj

U-Boot API glue improvements:

- extend ub_dev_read() and ub_dev_recv() so that the actual len and
all error codes can be passed and processed properly; unify behaviour of
these routines

- introduce syscall general error code (API_ESYSC)


183592 04-Oct-2008 stas

- Add ae(4) to loader.conf.

Approved by: kib (mentor)
MFC after: 1 week


183198 19-Sep-2008 sobomax

Backout rev 183181. It appears that I should have been using boot-device
of "cd:,\\:tbxi" with properly configured boot.tbxi, instead of booting
\boot\loader directly. Rev 183168 could probably stay, since it can be
viewed as an anti-foot-shooting measure and has no impact on normal
operation. I can revert it as well, if anybody objects.


183181 19-Sep-2008 sobomax

On PowerPC send output to both "/chosen/stdout" and "screen" nodes, unless
they point to the very same device. This should make loader usable on
some (all?) PowerMacs, where "/chosen/stdout" is disconneted from the
"screen" by the OF init process by default, except when user actually
has requested interaction with OF by holding ALT-CMD-O-F. Along with
rev 183168 this should provide a way to build bootable FreeBSD/ppc
installation or live CD that works OOB. Also, it should bring PowerMac
experience closer to that on other arches.

MFC after: 1 week
(assiming re@ blessing)


183149 18-Sep-2008 obrien

No FORTH for MIPS.


182919 10-Sep-2008 marius

Revert r177108 and restore r60506 for sparc64 as long as libstand
isn't fixed to only open the network device once and not do a open
and close dance on every file access; the firmwares of newer sparc64
machines perform an auto-negotiation with every open which in turn
causes netbooting to take horribly long if we open and close the
device over and over again.


182916 10-Sep-2008 marius

Work around Cheetah+ erratum 34 (USIII+ erratum #10) by relocating
the locked entry in it16 slot 0, which typically is occupied by the
PROM, and manually entering locked entries in slots != 0.

Thanks to Hubert Feyrer for donating the Blade 2000 this change was
developed on.


182912 10-Sep-2008 jhb

Resurrect the sbni(4) driver. Someone finally tested the MPSAFE patches and
the driver worked ok with them.

Tested by: friends of yar


182877 08-Sep-2008 marius

USIII and beyond CPUs have stricter requirements when it comes
to synchronization needed after stores to internal ASIs in order
to make side-effects visible. This mainly requires the MEMBAR #Sync
after such stores to be replaced with a FLUSH. We use KERNBASE as
the address to FLUSH as it is guaranteed to not trap. Actually,
the USII synchronization rules also already require a FLUSH in
pretty much all of the cases changed.
We're also hitting an additional USIII synchronization rule which
requires stores to AA_IMMU_SFSR to be immediately followed by a DONE,
FLUSH or RETRY. Doing so triggers a RED state exception though so
leave the MEMBAR #Sync. Linux apparently also has gotten away with
doing the same for quite some time now, apart from the fact that
it's not clear to me why we need to clear the valid bit from the
SFSR in the first place.

Reviewed by: nwhitehorn


182766 04-Sep-2008 marius

Ensure interrupts are off while in {d,i}tlb_va_to_pa_sun4u().
I think this is necessary in order to make sure the workarounds
in {d,i}tlb_get_data_sun4u() work correctly.


182732 03-Sep-2008 raj

Improve loader support for U-Boot.

- add new diag commands: devinfo, sysinfo for U-Boot-style details about the system
configuration
- better memory info summary
- style corrections

Obtained from: Semihalf


182731 03-Sep-2008 raj

Show info about net devices in loader's 'lsdev' command. While there fix style.


182726 03-Sep-2008 raj

Use current SP instead of global data ptr for the U-Boot API signature search hint.

Global data (pointed by R2 on PowerPC) in principle is not guaranteed to be in
proximity of U-Boot heap (where the API signature is placed) accross different
architectures and platforms. Instead, use U-Boot stack pointer as a hint for
the search instead of the global data; this method tends to be more uniform
accross different platforms.

Obtained from: Semihalf


182724 03-Sep-2008 raj

Make metadata.c shared across all platforms using U-Boot.

This will [soon] be needed for ARM.


182723 03-Sep-2008 raj

Move U-Boot compatibility library to WARNS=2 level.


182478 30-Aug-2008 marius

- Read ASI_{D,I}TLB_DATA_ACCESS_REG twice in order to work around
errata of USIII and beyond (USIII erratum #19, USIII+ erratum #1,
USIIIi erratum #1).
- Use the cheetah PA mask in {d,i}tlb_va_to_pa_sun4u() for USIII
and beyond. This is done so that these functions will still mask
the debug bits of spitfire-class CPUs once we increase TD_PA_BITS
to match the number of bits used for the PA by cheetah-class CPUs.
- Change {d,i}tlb_enter_sun4u() to also set TLB_CTX_KERNEL as the
context of the mappings entered. This is more or less cosmetic as
TLB_CTX_KERNEL is 0.
- Now that we have to distinguish between different sun4u CPUs in
the loader anyway, no longer do trial and error when reading the
portid property.


182194 26-Aug-2008 matteo

Add geom_journal

PR: conf/126829
MFC after: 2 days


182020 22-Aug-2008 marius

cosmetic changes and style fixes


181581 11-Aug-2008 weongyo

Add an entry for the upgt(4) module.


181436 08-Aug-2008 jhb

- Initialize the vm86 structure to a known-good state. Specifically, always
set the %eflags used during a BIOS call via BTX to 0x202. Previously
the flags field was uninitialized garbage, and thus it was "random" if
interrupts were enabled or not during BIOS calls.
- Use constants from <machine/psl.h> for fields in %eflags.

MFC after: 3 days


181433 08-Aug-2008 jhb

Fix the hangs reported with the real mode BTX:
- I had errantly assumed that all user requests should run with interrupts
enabled. User requests for software interrupts, however, need to disable
interrupts (and tracing) just like hardware interrupts.
- Disable alignment checking when emulating a hardware interrupt as well
(based on the description of the real mode operation of the 'INT'
instruction in the IA-32 manuals).
- Use constants for fields in %eflags.

Tested by: bz
MFC after: 3 days


181398 07-Aug-2008 marius

- Reimplement {d,i}tlb_enter() and {d,i}tlb_va_to_pa() in C. There's
no particular reason for them to be implemented in assembler and
having them in C allows easier extension as well as using more C
macros and {d,i}tlb_slot_max rather than hard-coding magic (and
actually spitfire-only) values.
- Fix the compilation of pmap_print_tte().
- Change pmap_print_tlb() to use ldxa() rather than re-rolling it
inline as well as TLB_DAR_SLOT and {d,i}tlb_slot_max rather than
hardcoding magic (and actually spitfire-only) values.
- While at it, suffix the above mentioned functions with "_sun4u" to
underline they're architecture-specific.
- Use __FBSDID and macros instead of magic values in locore.S.
- Remove unused includes and smp_stack in locore.S.


181297 04-Aug-2008 rpaulo

Add coretemp(4) and k8temp(4).

MFC after: 1 day


181282 04-Aug-2008 cperciva

Dereferencing uninitialized pointers considered harmful. Prior to this
commit, calling i386_parsedev(..., X, ...) where X is "ad", "bge", or
any other disk or network device name without a unit number, would
result in dereferencing whatever happened to be on the stack where the
variable "cp" is stored.

Found by: LLVM/Clang Static Checker


181278 04-Aug-2008 cperciva

Setting a variable to the same value twice doesn't actually make it
more likely to have the right value. Remove superfluous assignments.

Found by: LLVM/Clang Static Checker


180733 23-Jul-2008 imp

Only descend into the boot directory for the architecture if it
actually exists and is a directory or symlink to a directory.


180593 18-Jul-2008 dwmalone

Add an accept filter for TCP based DNS requests. It waits until the
whole first request is present before returning from accept.


180265 04-Jul-2008 jhb

Remove the sbni(4) driver. No one responded to calls to test it on
current@ and stable@.


180259 04-Jul-2008 jhb

Remove the oltr(4) driver. No one responded to calls for testing on
current@ and stable@ for the locking patches. The driver can always be
revived if someone tests it.

This driver also sleeps in its if_init routine, so it likely doesn't really
work at all anyway in modern releases.


180253 04-Jul-2008 nyan

Remove Japanese document.


180208 03-Jul-2008 peter

Set magic fbsd:nokeywords property that allows files to bypass
keyword expansion. (file-specific replacement for CVSROOT/exclude)


180194 02-Jul-2008 peter

Attempt to set the charset


180193 02-Jul-2008 peter

Pretend that this file isn't binary.


180145 01-Jul-2008 nyan

Fix off-by-one error.

MFC after: 1 week


180023 26-Jun-2008 ru

Fix a fallout from SSP commit, and make this compile again.
Bonus: including kern.mk just to pick kernel warning flags
was an extremely bad idea anyway, because it also picked
up CFLAGS (it probably wasn't the case at the time of CVS
rev. 1.1, I haven't checked). Remove duplicate CWARNFLAGS
from CFLAGS.


180012 25-Jun-2008 ru

Enable GCC stack protection (aka Propolice) for userland:
- It is opt-out for now so as to give it maximum testing, but it may be
turned opt-in for stable branches depending on the consensus. You
can turn it off with WITHOUT_SSP.
- WITHOUT_SSP was previously used to disable the build of GNU libssp.
It is harmless to steal the knob as SSP symbols have been provided
by libc for a long time, GNU libssp should not have been much used.
- SSP is disabled in a few corners such as system bootstrap programs
(sys/boot), process bootstrap code (rtld, csu) and SSP symbols themselves.
- It should be safe to use -fstack-protector-all to build world, however
libc will be automatically downgraded to -fstack-protector because it
breaks rtld otherwise.
- This option is unavailable on ia64.

Enable GCC stack protection (aka Propolice) for kernel:
- It is opt-out for now so as to give it maximum testing.
- Do not compile your kernel with -fstack-protector-all, it won't work.

Submitted by: Jeremie Le Hen <jeremie@le-hen.org>


179825 16-Jun-2008 olli

Implement a workaround for a long-standing problem in
libi386's time(), caused by a qemu bug. The bug might
be present in other BIOSes, too.

qemu either does not simulate the AT RTC correctly or
has a broken BIOS 1A/02 implementation, and will return
an incorrect value if the RTC is read while it is being
updated.

The effect is worsened by the fact that qemu's INT 15/86
function ("wait" a.k.a. usleep) is non-implmeneted or
broken and returns immediately, causing beastie.4th to
spin in a tight loop calling the "read RTC" function
millions of times, triggering the problem quickly.

Therefore, we keep reading the BIOS value until we get
the same result twice. This change fixes beastie.4th's
countdown under qemu.

Approved by: des (mentor)


179634 07-Jun-2008 kib

Fix the incorrect calculation of a block address within a single indirect
block.

PR: 108215
Submitted by: Yuichiro Goto, y7goto gmail com
MFC after: 2 weeks


179631 07-Jun-2008 jhb

Workaround a bug in the BIOS of Dell R900 machines. Specifically, each
entry in the SMAP is a 20 byte structure and they are queried from the
BIOS via sucessive BIOS calls. Due to an apparent bug in the R900's
BIOS, for some SMAP requests the BIOS overflows the 20 byte buffer
trashing a few bytes of memory immediately after the SMAP structure. As
a workaround, add 8 bytes of padding after the SMAP structure used in
the loader for SMAP queries.

PR: i386/122668
Submitted by: Mike Hibler mike flux.utah.edu, silby
MFC after: 3 days


179343 27-May-2008 yongari

Add an entry for the jme(4) module.


179106 19-May-2008 yongari

Add an entry for the age(4) module.


178037 09-Apr-2008 jhb

Revert the previous change and let PROBE_KEYBOARD function identical to -P
in boot2/gptboot.


177990 08-Apr-2008 weongyo

Add a couple of missing wireless NIC driver modules.

Approved by: thompsa (mentor)


177693 28-Mar-2008 brueffer

Add a couple of missing NIC driver modules.

Approved by: rwatson (mentor)
MFC after: 3 days


177626 26-Mar-2008 brueffer

Fix some "in in" typos in comments.

PR: 121490
Submitted by: Anatoly Borodin <anatoly.borodin@gmail.com>
Approved by: rwatson (mentor), jkoshy
MFC after: 3 days


177152 13-Mar-2008 obrien

style(9) & style.Makefile(9)

Reviewed by: raj


177109 12-Mar-2008 raj

Improve handling U-Boot's "eth%daddr" while PowerPC metadata preparation.

We're now more robust against cases of non-sorted and/or non-continuous
numbering of those entries.

Reviewed by: imp, marcel
Approved by: cognet (mentor)


177108 12-Mar-2008 raj

Eliminate artificial increasing of 'netdev_opens' counter in loader's net_open().

This was introduced as a workaround long time ago for some Alpha firmware
(which is now gone), and actually prevented net_close() to ever be
called.

Certain firmwares (U-Boot) need local shutdown operations to be performed on a
network controller upon transaction end: such platform-specific hooks are
supposed to be called via netif_close() (from within net_close()).

This change effectively reverts the following CVS commit:

sys/boot/common/dev_net.c

revision 1.7
date: 2000/05/13 15:40:46; author: dfr; state: Exp; lines: +2 -1
Only probe network settings on the first open of the network device.
The alpha firmware takes a seriously long time to open the network device
the first time.

Also suppress excessive output while netbooting via loader, unless debugging.

While there, make sys/boot/uboot more style(9) compliant.

Reviewed by: imp
Approved by: cognet (mentor)


177039 10-Mar-2008 jhb

Change the BTX kernel to drop all the way out to real mode to invoke BIOS
routines (V86 requests from the client and hardware interrupt handlers):
- Install trampoline real mode interrupt handlers at IDT vectors 0x20-0x2f
to handle hardware interrupts by invoking the appropriate vector (0x8-0xf
or 0x70-0x78). This allows the 8259As to use vectors 0x20-0x2f in real
mode as well as protected mode will ensuring that the master 8259A
doesn't share IDT space with CPU exceptions in protected mode.
- Since we don't need to reserve space for page tables and a page directory
anymore since dropping paging support, move the TSS and protected mode
IDT up by 16k. Grow the ring 1 link stack by 16k as a result.
- Repurpose the ring 1 link stack to be used as a real mode stack when
invoking real mode routines either via a V86 request or a hardware
interrupts. This simplifies a few things as we avoid disturbing the
original user stack.
- Add some more block comments to explain how the code interacts with the
V86 structure as this wasn't immediately obvious from the prior comments
(e.g. that we explicitly copy the seg regs for real mode out of the V86
struct onto the stack to be popped off when going into real mode, etc.).
Also, document some of the stack frames we create going to real mode and
back.
- Remove all of the virtual 86 related code including having to simulate
various instructions and BIOS calls on a trap from virtual 86 mode.
- Explicitly panic if a user client attempts to perform a V86 CALL
request that isn't a far call.
- Bump version to 1.2.

Assuming this works ok this should fix some of the long standing issues
with USB booting as well as etherboot.

MFC after: 2 weeks
Submitted by: kib (some parts from his original real mode patch)


176882 06-Mar-2008 jhb

In the PROBE_KEYBOARD case, always enable multiple consoles and set the
serial console as the primary console if the keyboard probe fails.

MFC after: 1 week


176656 29-Feb-2008 nyan

MFi386: revision 1.43

Do not attempt to make an NFS rpc call if using tftp


176654 29-Feb-2008 nyan

MFi386: revision 1.55.

Tweak the verbose disk printing a bit.


176646 28-Feb-2008 jhb

Tweak the verbose disk printing a bit:
- Consolidate the code to humanize the size of a disk partition into a
single function based on the code for GPT partitions and use it for
GPT partitions, BSD slices, and BSD partitions.
- Teach the humanize code to use KB for small partitions (e.g. GPT boot
partitions now show up as 64KB rather than 0MB).
- Pad a few partition type names out so that things line up in the
common case.

MFC after: 1 week


176645 28-Feb-2008 nyan

MFi386:

Retire the support for using paging in BTX. It hasn't been used since
before 4.0.


176644 28-Feb-2008 jhb

Rev 1.72 fixed a bug where if /boot.config changed the console its contents
weren't displayed on the new console. However, the config string has been
altered as part of being parsed so we only display the first option. Fix
this by saving a copy of /boot.config before parsing it and displaying the
saved copy after parsing.

MFC after: 1 week
PR: i386/103972
Submitted by: Alexandre Belloni alexandre.belloni of netasq.com


176631 27-Feb-2008 jhb

Retire the support for using paging in BTX. It hasn't been used since
before 4.0.

Submitted by: kib


176490 23-Feb-2008 marcel

o Build and install the U-Boot loader as ubldr.
o Don't build/install the manual pages or configuration
files that are already installed by the OFW loader.
o Hook the U-Boot loader to the build.


176489 23-Feb-2008 marcel

style(9) commit.


176487 23-Feb-2008 marcel

Setup the new bootinfo structure.
While here, make local function static and update copyright.


176486 23-Feb-2008 marcel

o Keep running on U-Boot's stack.
o Disable interrupts while not running U-Boot code. We clobber
registers that the U-Boot interrupt handlers assume to be
fixed as per the U-Boot register usage. At this time this only
applies to r14. U-Boot uses r2 now for what they used r29 for.
After we restore r14 in preparation of doing the syscall, we
re-enable interrupts. When we return from the syscall, we
disable interrupts and restore the callee-saved r14.


176485 23-Feb-2008 marcel

The NFS file system support is conditional upon LOADER_NFS_SUPPORT,
not LOADER_NET_SUPPORT.


176484 23-Feb-2008 marcel

Add __elfN(relocation_offset). It holds the offset between the virtual
(link) address and the physical (load) address. Ideally, the mapping
between link and load addresses should be abstracted by the copyin(),
copyout() and readin() functions, so that we don't have to add kluges
in __elfN(loadimage)(). Then, we could also have paged virtual memory
for the kernel. This can be important under EFI, where you need to
allocate physical memory form the firmware if you want to work in all
scenarios.


176482 23-Feb-2008 marcel

o Include glue.h
o Support multiple memory regions.


176481 23-Feb-2008 marcel

o Build libuboot with -msoft-float like everything else.
o Move the API prototypes to a separate header (glue.h)
o Allow the platform to hint libuboot about where to look
for the API signature. The uboot_address variable is
expected to be defined by the platform.


176480 23-Feb-2008 marcel

Add the appropriate license information. This file is double
licensed under GPL and BSD.

Thanks to: raj@


176479 23-Feb-2008 marcel

We build ficl and libofw with -msoft-float. Build the loader
with -msoft-float too.


176372 17-Feb-2008 marcel

Move the $FreeBSD$ tag in a comment as __FBSDID doesn't work.


176371 17-Feb-2008 marcel

Hook the U-Boot library up to the build.


176349 16-Feb-2008 marcel

MFp4 (e500):

Add support for U-Boot. This uses the U-Boot API as developed by
Rafal and which is (will be) part of U-Boot 1.3.2 and later.

Credits to: raj@


176348 16-Feb-2008 marcel

MFp4 (e500):

Add support for U-Boot. This uses the U-Boot API as developed by
Rafal and which is (will be) part of U-Boot 1.3.2 and later.

Credits to: raj@


176185 11-Feb-2008 raj

Clean up PowerPC loader(8) build config.

Turn off TFTP support by default: when both TFTP and NFS are enabled in the
loader, strange interactions occur in the pure netbooting scenario (i.e.
loader is TFTP-ed, kernel+world mounted over NFS), leading to very slow access
to the NFS-exported files.

Reviewed by: grehan
Approved by: cognet (mentor)


176068 06-Feb-2008 grehan

Make the openfirmware getchar entry point non-blocking. This catches up
with jhb's 2005/05/27 loader multiple-console change.

Tested by: marius/sparc64, grehan/ofwppc


175380 16-Jan-2008 keramida

Bump manpage date for rev 1.27

MFC after: 3 days


175379 16-Jan-2008 keramida

Document that loader(8) stops reading `loader.conf' when it
encounters a syntax error, and add a tip about adding first
the `vital' options and then experimental ones.

PR: docs/119658
Submitted by: Julian Stacey, jhs at berklix.org


174930 26-Dec-2007 marcel

"FreeBSD/Open Firmware/PowerPC ..." is confusing and non-standard.
Use "FreeBSD/powerpc Open Firmware ..." instead.


174878 23-Dec-2007 ticso

- remove code from oroginal file, which is not required on BWCT boards
- Be more chatty on startup, since we have enough code space on
AT91RM9200
- init DS1672 charging
- init USART GPIO


174877 23-Dec-2007 ticso

BWCT boards uses two different SPI flash chips
check for both status codes


174777 19-Dec-2007 ambrisko

Allow negative values to be specified in the loader.


174724 17-Dec-2007 marcel

Remove file after being repocopied to ../ofw, where it lives on.

Repocopy by: simon@


174723 17-Dec-2007 marcel

Build the OFW loader from its new location after the sources
were repocopied from ./loader to ./ofw.


173957 26-Nov-2007 jhb

Add a note to indicate that these files do borrow in part from mbr.s and
boot1.S

Requested by: rnordier


173720 18-Nov-2007 nyan

MFi386: revision 1.18

Add a trailing \0 to the read error string so that read errors don't print
out two error messages.


173697 17-Nov-2007 jhb

Add a trailing \0 to the read error string so that read errors don't print
out two error messages.

MFC after: 3 days


173575 12-Nov-2007 bz

Though we are currently not interested in the EDD3 flag,
Enhanced Disk Drive Specification Ver 3.0 defines that the version
of extension in AH would be 30h.
Correct the check for that to be >=30h instead of >3h.
MFC after: 2 months


173440 08-Nov-2007 ru

Document the per-arch default value of kern.maxbcache.


173118 28-Oct-2007 jhb

- Add constants for the different memory types in the SMAP table.
- Use the SMAP types and constants from <machine/pc/bios.h> in the boot
code rather than duplicating it.


173040 26-Oct-2007 jhb

Use the smaller cgbase() macro in ufsread.c if UFS_SMALL_CGBASE is
defined. This lets each boot program choose which version of cgbase() it
wants to use rather than forcing ufsread.c to have that knowledge.

MFC after: 1 week
Discussed with: imp


173026 26-Oct-2007 jhb

Add . to the include path so that we follow the 'machine' symlink we create
during depend on amd64.

Reported by: rwatson


173024 26-Oct-2007 imp

The arm boot code uses this function as well. Redefining cgbase()
saves about 500 bytes in the boot code. While the AT91RM9200 has 12k
of space for the boot loader, which is more than i386's 8k, the code
generated by gcc is a bit bigger.

I've had this in p4 for about two years now.


172991 25-Oct-2007 cognet

Fix signedness to make gcc happy.


172974 25-Oct-2007 jhb

Break out of the I/O retry loop as soon as an I/O operation succeeds rather
than always retrying operations three times.

Submitted by: nyan


172968 25-Oct-2007 nyan

MFi386: part of 1.52

Split the pc98_partition specific routine in bd_opendisk()
into bd_open_pc98().


172965 25-Oct-2007 nyan

MFi386: part of revision 1.51

Rework the read/write support in the bios disk driver some to cut down
on duplicated code.
- All of the bounce buffer and retry logic duplicated in bd_read() and
bd_write() are merged into a single bd_io() routine that takes an
extra direction argument. bd_read() and bd_write() are now simple
wrappers around bd_io().


172952 25-Oct-2007 imp

Load the bytes into the EMAC's MAC address register in the proper
order. The kernel used to shuffle them around to get things right,
but that was recently fixed. This makes our boot loader match the
behavior of most other boot loaders for the atmel parts. This bug was
inherited from the Kwikbyte loader that we started from.

This bug was discovered by Bj?\027.A?\027Nvrn K?\027Nvnig back in June, but fell on the
floor. He provided patches to the kernel, include backwards
compatibility options that were similar to Olivier's if_ate.c commit.


172940 24-Oct-2007 jhb

First cut at support for booting a GPT labeled disk via the BIOS bootstrap
on i386 and amd64 machines. The overall process is that /boot/pmbr lives
in the PMBR (similar to /boot/mbr for MBR disks) and is responsible for
locating and loading /boot/gptboot. /boot/gptboot is similar to /boot/boot
except that it groks GPT rather than MBR + bsdlabel. Unlike /boot/boot,
/boot/gptboot lives in its own dedicated GPT partition with a new
"FreeBSD boot" type. This partition does not have a fixed size in that
/boot/pmbr will load the entire partition into the lower 640k. However,
it is limited in that it can only be 545k. That's still a lot better than
the current 7.5k limit for boot2 on MBR. gptboot mostly acts just like
boot2 in that it reads /boot.config and loads up /boot/loader. Some more
details:
- Include uuid_equal() and uuid_is_nil() in libstand.
- Add a new 'boot' command to gpt(8) which makes a GPT disk bootable using
/boot/pmbr and /boot/gptboot. Note that the disk must have some free
space for the boot partition.
- This required exposing the backend of the 'add' function as a
gpt_add_part() function to the rest of gpt(8). 'boot' uses this to
create a boot partition if needed.
- Don't cripple cgbase() in the UFS boot code for /boot/gptboot so that
it can handle a filesystem > 1.5 TB.
- /boot/gptboot has a simple loader (gptldr) that doesn't do any I/O
unlike boot1 since /boot/pmbr loads all of gptboot up front. The
C portion of gptboot (gptboot.c) has been repocopied from boot2.c.
The primary changes are to parse the GPT to find a root filesystem
and to use 64-bit disk addresses. Currently gptboot assumes that the
first UFS partition on the disk is the / filesystem, but this algorithm
will likely be improved in the future.
- Teach the biosdisk driver in /boot/loader to understand GPT tables.
GPT partitions are identified as 'disk0pX:' (e.g. disk0p2:) which is
similar to the /dev names the kernel uses (e.g. /dev/ad0p2).
- Add a new "freebsd-boot" alias to g_part() for the new boot UUID.

MFC after: 1 month
Discussed with: marcel (some things might still change, but am committing
what I have so far)


172927 24-Oct-2007 jhb

Rework the read/write support in the bios disk driver some to cut down
on duplicated code and support 64-bit LBAs for GPT.
- The code to manage an EDD or C/H/S I/O request are now in their own
routines. The EDD routine now handles a full 64-bit LBA instead of
truncating LBAs to the lower 32-bits. (MBRs and BSD labels only
have 32-bit LBAs anyway, so the only LBAs ever passed down were 32-bit).
- All of the bounce buffer and retry logic duplicated in bd_read() and
bd_write() are merged into a single bd_io() routine that takes an
extra direction argument. bd_read() and bd_write() are now simple
wrappers around bd_io().
- If a disk supports EDD then always use it rather than only using it if
the cylinder is > 1023. Other parts of the boot code already do
something similar to this. Also, GPT just uses LBAs, so for a GPT disk
it's probably best to ignore C/H/S completely. Always using EDD when
it is supported by a disk is an easy way to accomplish this.

MFC after: 1 week


172925 24-Oct-2007 nyan

MFi386: revision 1.50

Reindent the read/write code of bd_realstrategy() so it is more readable.


172924 24-Oct-2007 nyan

MFi386: revision 1.41

Slightly cleanup the 'bootdev' concept on x86 by changing the various
macros to treat the 'slice' field as a real part of the bootdev instead
of as hack that spans two other fields (adaptor (sic) and controller)
that are not used in any modern FreeBSD boot code.


172922 24-Oct-2007 jhb

Reindent the read/write code of bd_realstrategy() so it is more readable.

MFC after: 1 week


172921 24-Oct-2007 jhb

Slightly cleanup the 'bootdev' concept on x86 by changing the various
macros to treat the 'slice' field as a real part of the bootdev instead
of as hack that spans two other fields (adaptor (sic) and controller)
that are not used in any modern FreeBSD boot code.

MFC after: 1 week


172664 15-Oct-2007 nyan

Optimize for size on pc98. It enables to boot a kernel again.

I don't know what's wrong (loader, boot2 or others), but this change is
effective.

Tested by: NAKAJI Hiroyuki
MFC after: 3 days


172591 12-Oct-2007 ps

Do not attempt to make an NFS rpc call if using tftp

PR: kern/91720
Submitted by: Ruben Kerkhof


172445 04-Oct-2007 obrien

Also boot *.debug if everything else fails.

Approved by: re(gnn)


172327 26-Sep-2007 ru

Mention that autoboot_delay also accepts the "NO" value.

Approved by: re (kensmith)


171876 17-Aug-2007 imp

Don't pass RB_BOOTINFO to the kernel. There's no bootinfo actually
passed into the kernel, and the kernel will soon grow that ability on
arm.

Approved by: re@ (blanket)


171794 09-Aug-2007 imp

Use the .S version for now. I have a version optimized for size p4,
but I'm unsure of its provenance, so rather than add it here, revert
the migration to it.

Approved by: re@ (blanket)


171426 13-Jul-2007 imp

MFp4:
Add support for the CENTIPAD board (http://www.harerod.de/centipad/index.html)
(which is a very cool, very small ARM board)
Add support for KB9202B (it has different memory)
Make BOOT_FLAVOR settable
Minor cleanup nits

Approved by: re@


171023 25-Jun-2007 rafan

- Remove UMAP filesystem. It was disconnected from build three years ago,
and it is seriously broken.

Discussed on: freebsd-arch@
Approved by: re (mux)


170854 17-Jun-2007 marius

- Make better use of the global chosen, memory and mmu handles instead
of obtaining them over and over again and pretending we could do
anything useful without them (for chosen this includes adding a
declaration and initializing it in OF_init()).
- In OF_init() if obtaining the memory or mmu handle fails just call
OF_exit() instead of panic() as the loader hasn't initialized the
console at these early stages yet and trying to print out something
causes a hang. With OF_exit() one at least has a change to get back
to the OFW boot monitor and debug the problem.
- Fix OF_call_method() on 64-bit machines (this is a merge of
sys/dev/ofw/openfirm.c rev 1.6).
- Replace OF_alloc_phys(), OF_claim_virt(), OF_map_phys() and
OF_release_phys() in the MI part of the loader with wrappers around
OF_call_method() in the sparc64. Beside the fact that they duplicate
OF_call_method() the formers should never have been in the MI part
of the loader as contrary to the OFW spec they use two-cell physical
addresses.
- Remove unused functions which are also MD dupes of OF_call_method().
- In sys/boot/sparc64/loader/main.c add __func__ to panic strings as
different functions use otherwise identical panic strings and make
some of the panic strings a tad more user-friendly instead of just
mentioning the name of the function that returned an unexpected
result.


170839 16-Jun-2007 marius

- Remove dupe and unused declarations and prototypes.
- Add missing prototypes.
- Define global variables not used outside of this module as static.
- Replace some outdated hard-coded functions names in panic strings
with __func__.
- Fix some style(9) bugs.


170838 16-Jun-2007 marius

Sync the styles of sys/boot/ofw/libofw/openfirm.c and
sys/dev/ofw/openfirm.c with themselves, with each-other
and with style(9).


170101 29-May-2007 simokawa

MFp4: add FireWire/dcons support in loader for i386/amd64.

It is disabled by default. You need to put
LOADER_FIREWIRE_SUPPORT=yes in /etc/make.conf
and rebuild loader to enable it.
(cd /sys/boot/i386 && make clean && make && make install)

You can find a short introduction of dcons at
http://wiki.freebsd.org/DebugWithDcons


170026 27-May-2007 marcel

Have the processor defer all faults and exceptions for control
speculative loads. This at least makes control speculative loads
work. In the future we should analyze which faults/exceptions
we want to handle rather than defer to avoid having to call the
recovery code when it's not strictly necessary.


169842 21-May-2007 jkim

Use lower cases for UUID string to conform RFC4122 and ISO/IEC-9834-8:2005.


169732 19-May-2007 kan

Tweak inlining parameters a little. Add warning to tell us if function
we declared as inline can not be inlined.


169399 09-May-2007 sepotvin

Add documentation for the vm.kmem_size_min and vm.kmem_size_max tunables.

Approved by: njl (mentor, blanket)


169286 05-May-2007 jmg

fixup talk of kern.maxswzone... It's been 32MB for almost 5 years now...
and only supports just over 7GB of swap...

Sound a bit more professional..

Inspired by: Marc G. Fournier
MFC After: 3 days


168554 09-Apr-2007 pjd

Add zfs_load here.

Reminded by: bmah


168512 09-Apr-2007 pjd

Always try to load zpool.cache instead of trying to find good place to
document it. When there is no such file, it's invisible for the user.


168466 07-Apr-2007 nyan

Fix build.


168457 07-Apr-2007 kato

Added the IPLware 3.33 support.
- Added magic numbers to pretend the NEC original program version
2.70.
- Added string display routine with Shift-JIS code support.
- Added three nop instructions at start1 in start.s since the
installaer of the IPLware put 'call $0x09ab' instruction.
- Put the near return instruction at 0x9ab in selector.s.

Since the Shit-JIS display routine must be located at 0x1243, the
linker script file (ldscript) is applied.


168442 06-Apr-2007 kan

pc98 boot2 is compiled with _KERNEL defined, and that makes non-static
bootinfo variable declaration visible. It conflicts with static
declaration in this file. Declare variable as globally visible in
order to resolve the conflict.


168279 02-Apr-2007 imp

Loop on sdcard init. This helps if one hasn't plugged in the card
fast enough, or there's other issues that cause the first try to fail.


168013 28-Mar-2007 imp

RTC_TIMR's RTC_SEC field is BCD. That makes it unsuitable for
GetSeconds(). Instead, use CRTR register shifted right 15. This
gives us a range of 32 seconds we can do for timeout.

Shift to using == rather than < or > for calculating the timeout,
since if we can't read the ST_CTRT register twice in a second we have
even bigger problems to worry about, and == deals with the 'wrap'
issue.

This lets me type at the boot2 prompt again! Woo Hoo!

Bogusness noticed by: tisco
Pointy Hat to: That silly imp guy


168012 28-Mar-2007 imp

Since we're about to set ST_RTMR to 1 to increase the accuracy of the
CRTR register to be 1/32768th of a second in init, we don't need to do
it here.


168011 28-Mar-2007 imp

All SD cards have a block size of 512. The READ_BL_LEN field in the
CSD is usually 512 (well, 9), but for 2GB (and the rogue 4GB SD cards)
it is 1024 (or 2048 for 4GB). This value doesn't work for the block
read commands (which really want 512). Hardcode 512 for those. This
may break really old MMC cards that don't have a 512 block size (I've
never seen one: make my day and send me one :-), but since the MMC
side of the house is currently broken, it should only have the effect
that 2GB (and non-conforming 4GB) SD cards will work.

My 'non-conforming' 4GB SD card also works now too. The
non-conforming 4GB SD cards were sold for a while before the SD
association was worried they would be (a) incompatible (different FAT
flavor on them) and (b) confusing for the new SDHC standard and
cracked down on suppliers' bogus use of the SD trademark...


168007 28-Mar-2007 imp

Various buglets fixed (from submitter):

The changes to getstr() is so that the character that is
passed in to it, is also processed just as the rest. I also
removed one of the getc() calls otherwise you loose every
second character.

I also changed the strcpy of kname, so that it only happens if
kname is '\0'. This is so that one can pass a kernel in
through /boot.config.

The last change to boot2.c is in parse(). If you tried to type
a kernel name to boot, the first character was lost, the arg--
fix that.

Submitted by: jhay


168006 28-Mar-2007 imp

Fix problem where memcmp would return true in the case where the
character after the character that was the same.

Submitted by: jhay


168005 28-Mar-2007 imp

Fix off by one error in length of the string.

Submitted by: jhay


167914 26-Mar-2007 thomas

Fix setting of serial port speed. A junk value was passed in AX when
bioscom is called to set up serial port parameters because COMSPEED
was treated as an address instead of an immediate value, causing
serial port parameters to never be set.

PR: i386/110828
Reviewed by: jhb
MFC after: 2 weeks


167850 23-Mar-2007 jkim

Update to FICL 3.03 (the last release before FICL4 rewrite).

The relevant changes for FreeBSD (excerpt from the release note):

* Newly implemented CORE EXT words: CASE, OF, ENDOF, and ENDCASE. Also
added FALLTHROUGH, which works like ENDOF but jumps to the instruction
just after the next OF.
* Bugfix: John-Hopkins locals syntax now accepts | and -- in the comment
(between the first -- and the }.)
* Bugfix: Changed vmGetWord0() to make Purify happier. The resulting
code is no slower, no larger, and slightly more robust.


167814 22-Mar-2007 jkim

Catch up with ACPI-CA 20070320 import.


167657 17-Mar-2007 kato

- Moved the uninitialized variables from the data to the bss section.
- Fixed typos in comment.


167586 15-Mar-2007 imp

Remove vestiges of very specific fpga support for my company's board.
It isn't relevant to FreeBSD as a whole, breaks the build, and isn't
even needed for my company's boards anymore...

MFC After: 2 weeks


167191 04-Mar-2007 nyan

MFi386: revision 1.17.

Fix the cdboot twiddle display.


166926 23-Feb-2007 remko

Fix the cdboot twiddle display.
I created and tested this with a custom FreeSBIE cd-image.

PR: i386/96452
Submitted by: Yuichiro Goto <y7goto at gmail dot com>
MFC after: 3 days
Approved by: imp (mentor)


166486 04-Feb-2007 imp

Document the init_chroot and init_script variables.

# I didn't check the markup too closely, so doc people, please check

Submitted by: Oliver Fromme


166005 14-Jan-2007 maxim

o Wrap long lines.


166004 14-Jan-2007 maxim

o Typo: note -> node.

PR: misc/107906
Submitted by: Alex Keda
MFC after: 3 days


166003 14-Jan-2007 maxim

o Move the comment to the correct place.

PR: misc/107904
MFC after: 3 days


165876 07-Jan-2007 marius

Garbage collect the code for auto-loading modules based on ISAPNP IDs,
which is #if'ed out since nearly eight years, along with its outdated
database.

Agreed by: ru (some months ago)


165401 20-Dec-2006 imp

MFp4: differences for bwct ethernet attachment


165400 20-Dec-2006 imp

MFp4: Differences in flash part for bwct. need a more generic way to cope.


165399 20-Dec-2006 imp

MFp4: Add timeout to eeprom access for lame eeprom that go awol


165398 20-Dec-2006 imp

MFp4: bwct memory size and PLL parameters


165397 20-Dec-2006 imp

MFp4: bwct boot rom is different. need a more generic way to cope long term.


165396 20-Dec-2006 imp

MFp4: Delay a second or two after the upload before printing Done.
Add an automatic reset for remote operational luvin' goodness.


165395 20-Dec-2006 imp

MFp4: bwct is a new board choice.


165325 18-Dec-2006 kmacy

add an interface for passing the entire kernel size up front to the
loader so that it can memory can be allocated aligned at the beginning of
the desired large page


165145 13-Dec-2006 yongari

Add an entry for the msk(4) module.


164948 06-Dec-2006 jhb

Ignore any breakpoint instructions (int 3) we encounter in vm86 mode
rather than treating them as a fatal exception and halting. At least one
storage BIOS (some newer mpt(4) parts) have a breakpoint instruction in
their disk read routine.

MFC after: 3 days


164739 29-Nov-2006 yar

Note that not all architectures use sendfile(2) buffers;
refer to the respective manpage for details.

MFC after: 3 days


164563 23-Nov-2006 kmacy

remove CDDL derive hcall.S


164412 19-Nov-2006 marcel

Remove LDR_LOG2_PGSZ, ia64_pgtbl and ia64_pgtblsz. They are part of
a WIP and not used yet.


164335 16-Nov-2006 ru

Remove an unused variable.


164324 16-Nov-2006 imp

Mfp4: Remove mci_device.c. It should have been removed when it was
merged ito sd-card.c, but this is an imperfect world.


164323 16-Nov-2006 imp

Move to using a common arm_init.S. These things are more similar than
different at this point.


164322 16-Nov-2006 imp

MFp4: Don't fix the size at 8k, and some minor cleanups. andre@ contributed
to fixing this problem.


164321 16-Nov-2006 imp

MFp4: Improvements, including the ability to download to an arbitrary
part of the spi flash.


164320 16-Nov-2006 imp

Tweaks for better boot flavor support.


164319 16-Nov-2006 imp

Mfp4: We no longer need ee.h included here.


164138 09-Nov-2006 imp

MFp4: boot2 should now build


164137 09-Nov-2006 imp

MFp4: boot on KB9202 correctly. Also, reduce the size of the SD/MMC driver
somewhat.


164136 09-Nov-2006 imp

MFp4: Support KB9202 booting better


164135 09-Nov-2006 imp

Fix typo


164134 09-Nov-2006 imp

MFp4: Make boot2 work on Kwikbyte KB9202 boards.


164133 09-Nov-2006 imp

MFp4: Merge a slightly more generic build infrastructure.


164132 09-Nov-2006 imp

MFp4: Remove bogus \r


164115 09-Nov-2006 nyan

Add a stub of bios_addsmapdata(). PC98 does not have BIOS SMAP.


164114 09-Nov-2006 nyan

MFi386: revisions from 1.39 to 1.43.


164010 05-Nov-2006 marcel

Major rework of the ia64 loaders. The two primary objectives are:
1. Make libefi portable by removing ia64 specific code and build
it on i386 and amd64 by default to prevent regressions. These
changes include fixes and improvements over previous code to
establish or improve APIs where none existed or when the amount
of kluging was unacceptably high.
2. Increase the amount of sharing between the efi and ski loaders
to improve maintainability of the loaders and simplify making
changes to the loader-kernel handshaking in the future.

The version of the efi and ski loaders are now both changed to 1.2
as user visible improvements and changes have been made.


163929 03-Nov-2006 marcel

Make this compile on EFI32. The EFI_PHYSICAL_ADDRESS type is always
64-bit, even when sizeof(void *) is 32-bit.


163927 03-Nov-2006 marcel

Properly calculate the checksum of the APIC table.


163917 02-Nov-2006 ru

Unbreak compile with ELF_VERBOSE defined, and fix format warnings.


163914 02-Nov-2006 ru

Revert the last change. Masking only 2 MSBs of the virtual address
to get the physical address doesn't work for all values of KVA_PAGES,
while masking 8 MSBs works for all values of KVA_PAGES that are
multiple of 4 for non-PAE and 8 for PAE. (This leaves us limited
with 12MB for non-PAE kernels and 14MB for PAE kernels.)

To get things right, we'd need to subtract the KERNBASE from the
virtual address (but KERNBASE is not easy to figure out from here),
or have physical addresses set properly in the ELF headers.

Discussed with: jhb


163898 02-Nov-2006 marcel

Sync the EFI headers with version 1.10.14.62 of the Intel sample EFI
implementation. This re-introduces C99 style comments that previously
were replaced by original C comments.


163897 02-Nov-2006 marcel

Extend struct devdesc with a unit field, called d_unit. Promote the
device (kind) specific unit field to the common field. This change
allows a future version of libefi to work without requiring anything
more than what is defined in struct devdesc and as such makes it
possible to compile said version of libefi for different platforms
without requiring that those platforms have identical derivatives
of struct devdesc.


163893 02-Nov-2006 marcel

Don't unconditionally compile-in the bcache code. It's only used on
i386/amd64 and pc98. Remove useless calls to bcache_init() from the
ia64 and sparc64 loaders, as well as from the OFW common code.


163891 02-Nov-2006 marcel

o Make sure to clear f->f_devdata if d_dev->dv_open() fails. It
would otherwise cause devclose() to free() the memory again.
o Refactor devopen() so that it's more readable.


163765 29-Oct-2006 ru

Because the BTX mini-kernel now uses flat memory mode and clients
are no longer limited to a virtual address space of 16 megabytes,
only mask high two bits of a virtual address. This allows to load
larger kernels (up to 1 gigabyte). Not masking addresses at all
was a bad idea on machines with less than >3G of memory -- kernels
are linked at 0xc0xxxxxx, and that would attempt to load a kernel
at above 3G. By masking only two highest bits we stay within the
safe limits while still allowing to boot larger kernels.

(This is a safer reimplmentation of sys/boot/i386/boot2/boot.2.c
rev. 1.71.)

Prodded by: jhb
Tested by: nyan (pc98)


163708 26-Oct-2006 ru

Adopt comments borrowed from aout_freebsd.c.


163707 26-Oct-2006 ru

Restore support for -c and -d that were treacherously murdered in
rev. 1.58. (This only costs us four bytes.)

Prodded by: bde
MFC after: 3 days


163706 26-Oct-2006 ru

Back out rev. 1.71 as it breaks directly loading (i386) kernels.

OK'ed by: jhb
PR: i386/96430, i386/104709
MFC after: 3 days


163617 23-Oct-2006 imp

Don't descend into at91 until we sort out the boot loader issues more generally


163598 21-Oct-2006 imp

MFp4: default to not loading the fpga


163597 21-Oct-2006 imp

MFp4: Update to smaller code footprint.


163596 21-Oct-2006 imp

MFp4: Move to smaller code footprint.


163595 21-Oct-2006 imp

MFp4: Move to smaller code. This was somehow forgotten before.


163542 20-Oct-2006 imp

There's no fpga.c, so omit it.


163533 20-Oct-2006 imp

MFp4:

Massive update. The highlights:
o dramatically cut memory usage by writing better, less intertwingled
code.
o implement booting off mmc/sd cards (sd only tested one at the moment)
o start to split out board specific stuff for boot2.


163327 13-Oct-2006 ru

Replace a rarely used "depuration" with "debugging".

PR: docs/85127
Submitted by: Gary W. Swearingen (partially)
MFC after: 3 days


163154 09-Oct-2006 kmacy

more sun4v fallout - missed add
Approved by: rwatson (mentor)


163151 09-Oct-2006 kmacy

unbreak sparc64 loader build
re-add accidentally deleted asi value
remove sun4v only header include

Approved by: rwatson (mentor)
Reviewed by: jmg


163145 09-Oct-2006 kmacy

add sun4v support to the sparc64 boot loader

Approved by: rwatson (mentor)
Reviewed by: jmg
Tested by: kris, dwhite, and jmg


163070 07-Oct-2006 pav

- Update URL of Intel documentation

Submitted by: Rob <spamrefuse@yahoo.com> on freebsd-doc
MFC after: 3 days


163032 05-Oct-2006 jhb

- Fix a couple of improper uses of leal in the previous space saving
commits. For some reason I thought the scale factor was a shift count
rather than the multiplicand (that is, I thought leal (%eax,%edx,4) was
going to generate %eax + %edx << 4 rather than %eax + %edx * 4). What
I need is to multiply by 16 to convert a real-mode (seg, offset) tuple
into a flat address. However, the max multiplicand for scaled/index
addressing on i386 is 8, so go back to using a shl and an add.
- Convert two more inter-register mov instructions where we don't need to
preserve the source register to xchg instructions to keep our space
savings.

Tested by: Ian FREISLICH if at hetzner.co.za
MFC after: 1 week


162934 01-Oct-2006 ariff

Add module loading option for Intel High Definition Audio Controller
- snd_hda(4)


162890 30-Sep-2006 netchild

Add snd_envy24ht and remove the snd_ak4* module.


162815 29-Sep-2006 ru

Fix WARNS=2 warnings.


162814 29-Sep-2006 ru

Fix most of the WARNS=2 warnings.


162813 29-Sep-2006 jhb

Oops, add return values for the smap command function. We must have the
warnings set weird or something because gcc didn't warn about this at all.

Submitted by: ru


162745 28-Sep-2006 jhb

Tweak the code to handle intercepting BIOS calls to int 0x15 to shave
another 16 bytes off of BTX (and thus boot2):
- Compare against the value of %eax that is saved on the stack instead of
loading it into %eax (which requires saving the current %eax on the
stack).
- Use %ch to examine the keyboard flag state in the BIOS to see if
Ctrl-Alt-Del is pressed instead of %al so we don't have to save %eax on
the stack anymore.

MFC after: 1 week


162744 28-Sep-2006 jhb

Optimize the int 15/87 handler for space to shave another 16 bytes off of
BTX (and thus boot2):
- Don't bother saving %eax, %ebx, or %ecx as it is not necessary.
- Use a more compact sequence to load the base value out of a GDT entry
by loading the contiguous low 24 bits into the upper 24 bits of %eax,
loading the high 8 bits into %al, and using a ror to rotate the bits
(2 mov's and a ror) rather than loading the pieces in smaller chunks
(3 mov's and a shl).
- Use movzwl + leal instead of movl + movw + shll + addl.
- Use 'xchgl %eax,%foo' rather than 'movl %eax,%foo' for cases where
it's ok to trash %eax. xchgl %eax, foo is a 1-byte opcode whereas the
mov is a 2-byte opcode.
- Use movzwl rather than xorl + movw.

MFC after: 1 week


162743 28-Sep-2006 jhb

Add an 'smap' command that dumps out the BIOS SMAP.

MFC after: 1 week


162742 28-Sep-2006 jhb

Ignore a sub-topic match if it is inside the command description.
Otherwise, merge-help can get confused by a command description that
includes a word that starts with a capital S.

MFC after: 1 week


162737 28-Sep-2006 jhb

A couple of simple tweaks that trim BTX by 6 bytes. Since BTX is
16-byte aligned within boot2 however, this actually trims boot2 by 16
bytes.


162717 28-Sep-2006 ru

Add -march=i386 to fix amd64 build by generating the same code
as i386 would do.


162710 27-Sep-2006 jhb

Emulate moving cr0, cr2, cr3, or cr4 into any i386 general register
rather than just emulating mov cr0, eax. This fixes some Compaq/HP BIOS
with DMA (as the BIOS tried to read cr3 so it could translate addresses
if paging was enabled).

MFC after: 1 week


162649 26-Sep-2006 tegge

Add mnt_noasync counter to better handle interleaved calls to nmount(),
sync() and sync_fsync() without losing MNT_ASYNC. Add MNTK_ASYNC flag
which is set only when MNT_ASYNC is set and mnt_noasync is zero, and
check that flag instead of MNT_ASYNC before initiating async io.


162046 05-Sep-2006 ru

- Include <sys/reboot.h> to get the RB_* defines.

- Make the PROBE_KEYBOARD option better resemble the -P option in
boot2, i.e., if keyboard isn't present then boot with both
RB_SERIAL and RB_MULTIPLE set.

Reviewed by: jhb


161471 20-Aug-2006 ru

Make the default "init_path" value breakable, so it fits on the
screen's width, thus eliminating a groff(1) warning.

Suggested by: marck


161454 18-Aug-2006 imp

Copy powerpc ficl files sysdep files (maybe we need a common one)


161453 18-Aug-2006 imp

Build at91


161452 18-Aug-2006 imp

Support compiling as part of world


161449 18-Aug-2006 brueffer

Wordsmithing on the ixgb(4) and mxge(4) descriptions.

Suggested by: ru (ixgb)


161448 18-Aug-2006 brueffer

Add more modules, correct alphabetical order.


161431 18-Aug-2006 marck

kern.ipc.nmbclusters is sysctl, not compile-time option. Change Dv to Va.

Touch .Dd.

Pointed out by: ru
MFC after: 1 week


161429 18-Aug-2006 marck

Remove references to NMBCLUSTERS which is obsoleted.

PR: 100427
Approved by: maxim
MFC after: 1 week


161379 17-Aug-2006 imp

MFp4: changes since .s -> .S rename. Use correct header for size


161370 16-Aug-2006 imp

MFp4: First cut at making spi and/or sd card booting work, needs work


161369 16-Aug-2006 imp

MFp4:

Tidy up a bit. Make sure that the burned image matches the downloaded
one.


161368 16-Aug-2006 imp

MFp4:

Simplify life a little for such a simple program.


161286 14-Aug-2006 brueffer

Several updates:

- Added missing file system/network/sound module entries
- Removed obsolete network module entries
- Capitalized (Fast|Gigabit) Ethernet

MFC after: 1 week


161202 10-Aug-2006 imp

MFp4: Integrate a boatload of bug fixes from p4. We're right on the
8k boundary with this program still.

text data bss dec hex filename
7925 4 4476 12405 3075 bootiic.out

so we have like 293 bytes left before we have to play games. There
may be ways to reduce that somewhat, but they start to be very board
specific.


161199 10-Aug-2006 imp

MFp4:

Reach over into the arm tree to grab some at91 definitions.
Better warnings
Lots of build tweaks


161198 10-Aug-2006 imp

MFp4: remove obsolete files


161197 10-Aug-2006 imp

MFp4:
Remove obsolete files in list
Add spi flash reading routines


161196 10-Aug-2006 imp

MFp4: Numerous changes from p4 to try to improve tftp downloading,
reduce code footprint, etc. While some problems still remain, the
reliability of tftp is much improved.


161195 10-Aug-2006 imp

MFp4: consolidate #include files down to lib.h


161194 10-Aug-2006 imp

MFp4: These will migrate to the boot specific directories because they
are too hard to share between the different boot loaders.


161193 10-Aug-2006 imp

MFp4: Make it clearer that the address passed to the eeprom routines is
really an offset within the eeprom device, and not a IIC address.


161192 10-Aug-2006 imp

MFp4: Catchup with migration of some defines.


161191 10-Aug-2006 imp

MFp4: Tweaks for our board.


161190 10-Aug-2006 imp

MFp4: Increase character timeout to 10. Make it a #define for easier
changes in the future. This helps with getting started and to
overcome the really sucky level of granuality this timeout has in
getc. A timeout of 1 means 'wait until top of next second' rather
than 'wait for at least a second'.


161157 10-Aug-2006 imp

Don't need to special case arm here anymore


161156 10-Aug-2006 imp

Add a dummy makefile to keep build happy


160964 04-Aug-2006 yar

Commit the results of the typo hunt by Darren Pilgrim.
This change affects documentation and comments only,
no real code involved.

PR: misc/101245
Submitted by: Darren Pilgrim <darren pilgrim bitfreak org>
Tested by: md5(1)
MFC after: 1 week


160709 26-Jul-2006 ache

Add snd_emu10kx_load


160651 25-Jul-2006 yongari

Add an entry for the stge(4) module.
While I'm here remove a stale wx(4) entry which was removed 4 years,
9 months ago.


159744 18-Jun-2006 imp

Don't descend into ${MACHINE} on the arm platforms.


159096 31-May-2006 iedowse

Increment the disk block offset after writing, not before. This
fixes filesystem corruption when nextboot.conf is located after
cylinder 1023. The bug appears to have been introduced at the time
bd_read was copied to create bd_write.

PR: bin/98005
Reported by: yar
MFC after: 1 week


158569 14-May-2006 marius

- Replace the entry for the no longer existing lnc(4) module with an
entry for the replacement le(4) module.
- Add an entry for the gem(4) module.
- Remove gratuitous whitespace in the description of the hme(4) entry.


158559 14-May-2006 nyan

Add a bootable CD support.


158467 12-May-2006 jhb

Remove more Alpha bits from the boot code including fixing several
stale comments.


158466 12-May-2006 jhb

Remove Alpha bits for ficl.


158458 11-May-2006 jhb

First pass at removing Alpha kernel support.


158378 09-May-2006 nyan

Fix build (s:pc98/cbus/cbus.h:pc98/pc98/pc98_machdep.h:)

Pointyhat to: nyan


158265 03-May-2006 jhb

Restore the pre-5.x behavior of only beeping if the user makes a bad
selection and not always beeping on startup. The two bytes for the extra
'jmp' instruction were obtained by removing recognition of BSD/OS
partitions.

Requested by: many
Tested by: subset of many
Head nod: imp, keramida
MFC after: 2 weeks


158023 25-Apr-2006 jhb

Use PTOV() to convert physical addresses to appropriate virtual addresses
in the loader when searching for the ACPI RSDP. (The loader runs in a flat
mode with va 0 == pa 0xa000.)


157940 21-Apr-2006 imp

MFp4:
Make getc(0) polling (this has the happy side effect of saving
8 bytes in the generated code).


157939 21-Apr-2006 imp

MFp4: Loop forever getting characters... A kludge for now.


157938 21-Apr-2006 imp

MFp4: Integrate support for building tag support for linux booting.


157937 21-Apr-2006 imp

MFp4:
Init eeprom here now that we don't init the eeprom in arm_init.s
and read in the second 8k of the data.
Tweak formatting.


157936 21-Apr-2006 imp

Move from arm_init.s -> .S. #ifdef linux vs freebsd defaults for the
boot loader (linux booting helps regression testing). No repo copy
because of limited history.


157926 21-Apr-2006 imp

MFp4: formatting nits and minor style changes that likely won't matter.


157925 21-Apr-2006 imp

Allow one to enable building tags. Check the size of the boot imag.


157924 21-Apr-2006 imp

MFp4:

On the KB9202 go ahead and enable the flash controller so the boot
loader can access the parallel flash.


157921 21-Apr-2006 imp

MFp4:

Make this compile, assuming that you have linux installed in a
sensible place. tag_list is disabled by default, since we don't
distribute linux, but it is desirable to allow the boot loader to boot
Linux or FreeBSD (mostly for testing).


157918 21-Apr-2006 imp

MFp4:
Minor diffs to reduce diffs to p4.


157917 21-Apr-2006 imp

spi flash updating boot loader. upload this file for the recovery
xmodem download. Then download the image you want in the flash.
This will burn the image into the flash. You must then reset the
unit and the new flash image will be used for booting...


157916 21-Apr-2006 imp

iic eeprom updating boot loader. upload this file for the recovery
xmodem download. Then download the image you want in the eeprom.
This will burn the image into the eeprom. You must then reset the
unit and the new eeprom image will be used for booting...


157915 21-Apr-2006 imp

Add boot0iic and boot0spi. These are 'shortcut' boot loaders designed
to replace either a bad iic eeprom with one you download with xmodem,
or likewise with a spi flash.


157873 19-Apr-2006 imp

MFp4 (checkpoint of work in progress):

o Use a directory layout that is more akin to the i386 boot layout.
o Create a libat91 for library routines that are used by one or more
of the boot loaders.
o Create bootiic for booting from an iic part.
o Create bootspi for booting from an spi part.
o Optimize the size of many of these routines (especially emac.c). Except
for the emac.c optimizations, all these have been tested.
o eliminate the inc directory, libat91 superceeds it.
o Move linker.cfg up a layer to allow it to be shared.


157765 15-Apr-2006 imp

Fix style nit noticed by bde.


157733 13-Apr-2006 imp

Add commented out define for TSC board's boot0.


157732 13-Apr-2006 imp

MFp4:

For 32-bit SDRAM systems, enable D16 to D31 in the PIO controller.
Otherwise they read back as 0xffff.

Shave 8 bytes from the object size by using AT91C_BASE_PIOA directly
and by not assigning PIO_BSR to 0 in the DBGU init. That's a nop in
two ways (everything defaults to peripheral A, and writing 0 changes
nothing).


157731 13-Apr-2006 imp

Merge from p4:

Many places used #define FOO ((unsigned int) 0x23) where a simpler
#define FOO 0x23u would have sufficed. This practice is overly
verbose and has the disadvantage that you can't say

#if FOO == BAR
#endif

because the extra "unsigned int" tokens choke cpp's little brain.
Migrate to the latter style to allow use in preprocessor statements.
The two are the same semantically anyway in a C context (at least for
the uses they are put to presently, C gurus can explain to me how they
differ).


157730 13-Apr-2006 imp

Need at91rm9200_lowlevel.h for SDRAM_BASE definition.


157699 12-Apr-2006 imp

Common register definition for AT91RM9200


157697 12-Apr-2006 imp

Recovery boot loader for the AT91 family of processors. Download it
via xmodem to the DBGU port when the AT91 comes up in recovery mode.
The recovery loader will then load your program via xmodem into SDRAM
at 1MB which can do its things. It needs to be tweaked to the
specific board one is using, but it fits in < 1kB (all of Atmel's ARM
products have at least 8kb of SRAM that I can tell, so this should
work for them all).

Parts of this code were provided by Kwikbyte with copyright
specifically disclaimed. I heavily modified it to act as a recovery
loader (before it was a bootstrap loader) and to optimize for size
(before I started the size was closer to 8k).

Bootstrap loaders for SPI and IIC to follow.


157669 11-Apr-2006 sobomax

Merge in timeout into A20-enable routine from cdboot/boot1.

MFC after: 1 day


157668 11-Apr-2006 jhb

Drop the gateA20() function in the loader as it is unused. All the other
boot loaders that load the loader already handle A20. In fact, they are
required to do so in order to setup the environment that btxldr expects.


157667 11-Apr-2006 jhb

Minor whitespace tweak.


157664 11-Apr-2006 jhb

Tweak comment.


157663 11-Apr-2006 jhb

Use the proper condition to determine that we matched an filename.
Otherwise, we could match on a filename that had the wrong last character
(such as /boot/loaded instead of /boot/loader).

PR: kern/95625
Submitted by: Oliver Fromme <olli@secnetix.de>
MFC after: 1 month


157652 11-Apr-2006 sobomax

When enabling A20 put upper limit on amount of time we wait for the keyboard
controller to get ready (65K x ISA access time, visually around 1 second).
If we have wait more than that amount it's likely that the hardware is a
legacy-free one and simply doesn't have keyboard controller and doesn't
require enabling A20 at all.

This makes cdboot working for MacBook Pro with Boot Camp.

MFC after: 1 day


157339 31-Mar-2006 scottl

Remove the USB keyboard hack now that KBDMUX is enabled by default. Allow
it to be disabled if Safe Mode is selected.


156813 17-Mar-2006 ru

Reimplementation of world/kernel build options. For details, see:

http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html

The src.conf(5) manpage is to follow in a few days.

Brought to you by: imp, jhb, kris, phk, ru (all bugs are mine)


156712 14-Mar-2006 jkim

Export SMBIOS serial numbers by default. To turn it off, use
'BOOT_HIDE_SERIAL_NUMBERS' knob.

Suggested by: ceri


156558 10-Mar-2006 jkim

Micro-optimize invalid UUID check.


156519 09-Mar-2006 jkim

- Implement serial numbers, UUID, and asset tag (turned off by default).
Use 'BOOT_SENSITIVE_INFO=YES' variable to turn them on.
- Use 'uint*_t' instead of 'u_int*_t', correct compilation warnings, and
update copyright while I am here.


154527 18-Jan-2006 marcel

Remove ELF dynamic tag definitions that aren't used. Ideally,
those that are used should come from <machine/elf.h>.


154491 17-Jan-2006 marcel

s/R_IA64_/R_IA_64_/g as per the ia64 psABI.


154257 12-Jan-2006 marius

In moduledir_readhints() cast the value returned by sizeof() to ssize_t
when checking whether it's greater than a struct stat st_size in order
to also catch the case when st_size is -1. Previously this check didn't
trigger on sparc64 when st_size is -1 (as it's the case for a file on
a bzipfs, TFTP server etc.), causing the content of the linker hints
file to be copied to memory referenced by a null-pointer.

PR: 91231
MFC after: 1 week


153600 21-Dec-2005 nyan

MFi386: revisions 1.34 and 1.36.


153599 21-Dec-2005 nyan

MFi386: revision 1.8.


153598 21-Dec-2005 nyan

MFi386: revision 1.46.


153589 21-Dec-2005 sobomax

For the cases when loading bzip2-compressed kernels enabled use last
3MB of physical memory for heap instead of range between 1MB and 4MB.
This makes this feature working with PAE and amd64 kernels, which are
loaded at 2MB. Teach i386_copyin() to avoid using range allocated by
heap in such case, so that it won't trash heap in the low memory
conditions.

This should make loading bzip2-compressed kernels/modules/mfs images
generally useable, so that re@ team is welcome to evaluate merits
of using this feature in the installation CDs.

Valuable suggestions by: jhb


153551 20-Dec-2005 sobomax

Unbreak pc98 after my last changes to i386.


153536 19-Dec-2005 sobomax

If LOADER_BZIP2_SUPPORT is defined allocate heap in the 1MB-4MB range to
provide enough room for decompression (up to 2.5MB is necessary). This
should be safe to do since we load i386 kernels after 8MB mark now, so
that 16MB is the minimum amount of RAM necessary to even boot FreeBSD.

This makes bzip2-support practically useable.


153535 19-Dec-2005 sobomax

Long-long time ago, when the trees were large and memory expensive amount of
memory directly available to loader(8) and friends was limited to 640K on i386.
Those times have passed long time ago and now loader(8) can directly access
up to 4GB of RAM at least theoretically. At the same time, there are several
places where it's assumed that malloc() will only allocate memory within
first megabyte.

Remove that assumption by allocating appropriate bounce buffers for BIOS
calls on stack where necessary.

This allows using memory above first megabyte for heap if necessary.


153504 18-Dec-2005 marcel

Make our ELF64 type definitions match standards. In particular this
means:
o Remove Elf64_Quarter,
o Redefine Elf64_Half to be 16-bit,
o Redefine Elf64_Word to be 32-bit,
o Add Elf64_Xword and Elf64_Sxword for 64-bit entities,
o Use Elf_Size in MI code to abstract the difference between
Elf32_Word and Elf64_Word.
o Add Elf_Ssize as the signed counterpart of Elf_Size.

MFC after: 2 weeks


152979 01-Dec-2005 ariff

Add kernel module loading option for snd_atiixp(4).


152568 18-Nov-2005 ru

-mdoc sweep.


152463 15-Nov-2005 ru

Catch up with loader_color -> loader_logo and document beastie_disable.


152309 11-Nov-2005 pjd

Rename GEOM class kernel module g_md.ko to geom_md.ko for consistency
with the rest.

mdconfig.c: Simplify mdmaybeload() function.
mdioctl.h: Removed (now unused) #define.
loader.conf: Sort GEOM classes properly.

OK'ed by: phk


152307 11-Nov-2005 pjd

Add more GEOM classes to defaults/loader.conf. Add references to manual
pages to those already present.

Reviewed by: brueffer


151999 03-Nov-2005 ru

Consistently use OPT_* macros to test/set boot options.


151882 30-Oct-2005 nyan

MFi386: Enable beastie.4th.


151874 30-Oct-2005 scottl

Add back some bits.


151873 30-Oct-2005 scottl

Replace loader_color with loader_logo


151650 25-Oct-2005 marius

- Add a workaround for the fact that OFW doesn't guarantee that
devices can be opened multiple times simultaneously but we're
expected to be able to do so by the rest of the loader.
This fixes booting from disks attached to the on-board SCSI
controller of Sun Ultra 1 (previously this triggered a trap)
and probably also of AX1115 boards.
- While here, remove unused variables and add empty lines where
style(9) requires such.

Tested on: powerpc (grehan), sparc64
MFC after: 1 month


151649 25-Oct-2005 marius

In ofw_parsedev() check the return value of malloc() and protect
against a NULL pointer dereference when ofw_parsedev() is called
with a NULL path argument.

Tested on: powerpc (grehan), sparc64


151507 20-Oct-2005 marius

Use an ihandle_t to store the instance handle of an opened device
instead of a phandle_t (package handle). Since both are typedefed
to unsigned int, this is more or less cosmetic.


151496 20-Oct-2005 marius

Remove unused variables.


151452 18-Oct-2005 jkim

Export processor socket information. New environment variables are:

smbios.socket.enabled: number of enabled sockets
smbios.socket.populated: number of populated sockets


151382 16-Oct-2005 sobomax

Re-implement rev.1.76 with respect to the code size.


151381 16-Oct-2005 sobomax

Backout previous commit - for some reason it overflows space constrains on
amd64. Better version will follow.


151367 16-Oct-2005 sobomax

Add new option `q', which makes second stage loader quiet unless autoboot
is disabled or fails.

MFC after: 1 week


150751 30-Sep-2005 nyan

MFi386: revision 1.33.
> Cause all flags passed by boot2 to set the respective loader(8)
> boot_* variable. The end effect is that all flags from boot2
> are now passed to the kernel.


150470 22-Sep-2005 ru

Cause all flags passed by boot2 to set the respective loader(8)
boot_* variable. The end effect is that all flags from boot2
are now passed to the kernel.


150469 22-Sep-2005 ru

Add loader(8) variables for RB_DFLTROOT, RB_MUTE, and RB_PAUSE:
"boot_dfltroot", "boot_mute", and "boot_pause" respectively.


150464 22-Sep-2005 ru

- RBX_MASK wasn't updated when RB_PAUSE was changed from 0x40000
to 0x100000 in rev. 1.67.

- NOPT wasn't updated (decremented) in previous revision.


150127 14-Sep-2005 nyan

Remove EPSON PC-386 note A/W/AE/WR support.


150073 13-Sep-2005 nyan

MFi386: revision 1.11.


150072 13-Sep-2005 nyan

MFi386: revisions 1.10 and 1.11.
- Add '-mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3' to CFLAGS.


149661 31-Aug-2005 glebius

net.graph.ngqfreemax has been deprecated.


149213 18-Aug-2005 iedowse

Add a "comconsole_speed" loader variable that can be used to change
the serial console speed (i386 and amd64 only). If the previous
stage boot loader requested a serial console (RB_SERIAL or RB_MULTIPLE)
then the default speed is determined from the current serial port
speed. Otherwise it is set to 9600 or the value of BOOT_COMCONSOLE_SPEED
at compile time.

This makes it possible to set the serial port speed once in
/boot.config and the setting will propagate to boot2, loader and
the kernel serial console.


149212 18-Aug-2005 iedowse

Add the ability to specify the boot2 serial console speed in
/boot.config or on the "boot:" prompt line via a "-S<speed>" flag,
e.g. "-h -S19200". This adds about 50 bytes to the size of boot2
and required a few other small changes to limit the size impact.
This changes only affects boot2; there are further loader changes
to follow.


149111 15-Aug-2005 marius

- Change the code that determines whether to use a serial console and
which serial device to use in that case respectively to not rely on
the OFW names of the input/output and stdin/stdout devices. Instead
check whether input and output refers to the same device and is of
type serial (uart(4) was already doing this) and for the fallback
to a serial console in case a keyboard is the selected input device
but unplugged do the same for stdin and stdout in case the input
device is nonexistent (PS/2 and USB keyboards) or has a 'keyboard'
property (RS232 keyboards). Additionally also check whether the OFW
did a fallback to a serial console in the same way in case the
output device is nonexistent. While at it save on some variables
and for sys/boot/sparc64/loader/metadata.c move the code in question
to a new function md_bootserial() so it can be kept in sync with
uart_cpu_getdev_console() more easily.
This fixes selecting a serial console and the appropriate device
when using a device path for the 'input-device' and 'output-device'
OFW environment variables instead of an alias for the serial device
to use or when using a screen alias that additionally denotes a
video mode (like e.g. 'screen:r1024x768x60') but no keyboard is
plugged in (amongst others). It also makes the code select a serial
console in case the OFW did the same due to a misconfiguration like
both 'input-device' and 'output-device' set to 'keyboard' or to a
nonexisting device (whether the OFW does a fallback to a serial
console in case of a misconfiguration or one ends up with just no
console at all highly depends on the OBP version however).
- Reduce the size of buffers that only ever need to hold the string
'serial' accordingly. Double the size of buffers that may need to
hold a device path as e.g. '/pci@8,700000/ebus@5/serial@1,400000:a'
exceeds 32 chars.
- Remove the package handle of the '/options' node from the argument
list of uart_cpu_getdev_dbgport() as it's unused there and future
use is also unlikely.

MFC after: 1 week


148817 07-Aug-2005 krion

Add if_arl_load, if_axe_load, if_aue_load, if_cs_load, if_cue_load,
if_hme_load, if_nve_load, if_rue_load, if_udav_load to Networking
Drivers section.

Submitted by: matteo


148798 06-Aug-2005 krion

Add if_ath_load (default NO) in Networking Drivers section.

PR: conf/80870
Submitted by: Hasan Cana <vpb at albabsd dot org>


148767 06-Aug-2005 ssouhlal

The kernel is usually at /boot/kernel/kernel nowadays.

PR: i386/81756
Submitted by: trasz <trasz@buziaczek.pl>


148516 29-Jul-2005 brian

Fix a comparison that broke ``set console=vidconsole'' and even the
loader.conf line ``console="vidconsole"''.

Sponsored by: ActiveState/Sophos
MFC after: 1 week


148515 29-Jul-2005 brian

Mention that console= can set multiple consoles.
Relate boot_ options to their kernel command line flags and make it clear
how kenv(1) is used.

Sponsored by: ActiveState/Sophos
MFC after: 1 week


148450 27-Jul-2005 jkim

Simplify SMBIOS loader variables and drop `hint.smbios.0.enabled'.

They are not real hints.

Reported by: des
Pointed out by: peter
Approved by: anholt (mentor)


148398 25-Jul-2005 jmg

remove a pointless comment with a more helpful one...

Submitted by: Tobias Roth
MFC after: 5 days


148319 22-Jul-2005 grehan

Make code match comment: make the smallest unit of page allocation
from OpenFirmware be 16 pages to avoid fragmentation in the list
of mappings returned when the kernel requests it in pmap_bootstrap.

This allows a static buffer to be used when obtaining the existing
mappings - very useful on the G5 when random physical pages can't
be grabbed because they can't be BAT-mapped.

MFC after: 3 days


148046 15-Jul-2005 ache

Add -mno-sse3 for prescott/nocona


148006 14-Jul-2005 jkim

Scan static SMBIOS structures and export the following environment
variables to loader:

hint.smbios.0.enabled "YES" when SMBIOS is detected

hint.smbios.0.bios.vendor BIOS vendor
hint.smbios.0.bios.version BIOS version
hint.smbios.0.bios.reldate BIOS release date

hint.smbios.0.system.maker System manufacturer
hint.smbios.0.system.product System product name
hint.smbios.0.system.version System version number

hint.smbios.0.planar.maker Base board manufacturer
hint.smbios.0.planar.product Base board product name
hint.smbios.0.planar.version Base board version number

hint.smbios.0.chassis.maker Enclosure manufacturer
hint.smbios.0.chassis.version Enclosure version

These strings can be used to detect hardware quirks and to set appropriate
flags. For example, Compaq R3000 series and some HP laptops require

hint.atkbd.0.flags="0x9"

to boot. See amd64/67745 for more detail.

Note: Please do not abuse this feature to resolve general problem when it
can be fixed programmatically. This must be used as a last resort.

PR: kern/81449
Approved by: anholt (mentor)


147366 14-Jun-2005 ru

Improved markup, fixes some spelling and grammar.

Approved by: re (blanket)


146976 04-Jun-2005 marcel

Fix getsecs(). It was not counting the seconds right. The immediate
and visible effect of the bug what that autoboot would boot a kernel
after only a couple of seconds had passed instead of waiting the
full 10 seconds it's supposed to wait by default.
Add my copyright notice, since one was missing and I reimplemented
the one and only function in this file.

MFC after: 1 week


146973 04-Jun-2005 marcel

Fix delay(). The processor cycle counter is a 32-bit wrapping counter.
Hence, mask off the upper 32 bits and deal with wrap-arounds.

MFC after: 1 week


146874 01-Jun-2005 obrien

Temperarly disable building in the bzip2 support by default so we can fit
on the i386 floppies. Sigh, I hate floppies.


146844 31-May-2005 jhb

Add a missing const to alpha_setcurrdev() to quiet a warning.


146843 31-May-2005 jhb

Change the type the buf arg to the strategy routines from void * to char *
to quiet some warnings.


146842 31-May-2005 jhb

Whitespace.


146840 31-May-2005 obrien

Put bzip2 support on equal footing with gzip support.
Enable bzip2 support by default, set LOADER_NO_BZIP2_SUPPORT to disable it.

Pointy hat to: sobomax


146828 31-May-2005 obrien

Ensure GCC does not use FP registers in integer code.
I really don't like cluttering up the compiler invocation,
but this bigger hammer will fix reported problems for now.


146804 30-May-2005 ru

Markup nits.


146698 27-May-2005 jhb

- Add support to the loader for multiple consoles.
- Teach the i386 and pc98 loaders to honor multiple console requests from
their respective boot2 binaries so that the same console(s) are used in
both boot2 and the loader.
- Since the kernel doesn't support multiple consoles, whichever console is
listed first is treated as the "primary" console and is passed to the
kernel in the boot_howto flags.

PR: kern/66425
Submitted by: Gavin Atkinson gavin at ury dot york dot ac dot uk
MFC after: 1 week


146697 27-May-2005 jhb

Fix a warning by adding a missing 'const'.

MFC after: 1 week


146696 27-May-2005 jhb

Print out the commands from /boot.config after parsing them so that they
output is sent to the correct console(s).

PR: kern/66425
Submitted by: Gavin Atkinson gavin at ury dot york dot ac dot uk
MFC after: 1 week


146593 24-May-2005 grehan

Since the BAT mapping was removed a long time back, it can't
be assumed that modules are contiguous in memory (they're not)
so don't blindly __syncicache start/end. In fact, don't bother
syncing the icache for modules since the kernel will do it after
fixing up relocations.

This fixes the trap when loading modules at boot time.

Reported by: orlando at break dot net


146448 20-May-2005 charnier

Remove unused variables. Remove prototype for function that does not exist.


146421 19-May-2005 sobomax

Extend `autoboot_delay' handling - is this variable is set to -1 don't allow
user to interrupt autoboot process at all. Currently, even when
`autoboot_delay' is set to 0, loader(8) still allows autoboot process to be
interrupted by pressing any key on the console when the loader reads kernel
and modules from the disk. In some cases (i.e. untrusted environment) such
behaviour is highly indesirable and user should not be allowed to interfere
with the autoboot process at all.

Sponsored by: PBXpress Inc.
MFC after: 3 days


146368 19-May-2005 grehan

Change ofw_readin/ofw_copyin to map the entire region before
copying, rather than a page at a time. This was creating far
too many single-page mappings, and eventually OFW overflowed
some internal data structure and refused to map any more.
The new algorithm creates far less mappings and fixed a bug
where multiple mappings for the same page would be created.

'Twas known this was a problem, but only became urgent when the
install CD's mfs_root grew large enough to cause the overflow.


146365 19-May-2005 sobomax

Whitespace only: kill trailing spaces.


146049 10-May-2005 nyan

Change a directory layout for pc98.
- Move MD files into <arch>/<arch>.
- Move bus dependent files into <arch>/<bus>.
Rename some files to more suitable names.

Repo-copied by: peter
Discussed with: imp


146011 08-May-2005 nyan

Remove ifdef PC98.


146010 08-May-2005 nyan

Merged from libi386/biosdisk.c revisions 1.37 and 1.41.


146007 08-May-2005 nyan

Use DOSMID_386BSD rather than DOSPTYP_386BSD.


145515 25-Apr-2005 ru

Allow BOOT_BOOT0_COMCONSOLE_SPEED to be derived from BOOT_COMCONSOLE_SPEED
at compile time.


145209 17-Apr-2005 wollman

Pass the hostname we got from DHCP to the kernel so that machines can
share a read-only NFS root.


145158 16-Apr-2005 njl

Extend a local buffer to prevent an overflow of the XSDT address.

Submitted by: Joerg Sonnenberger
Obtained from: DragonflyBSD
MFC after: 1 day


145069 14-Apr-2005 nyan

MFi386: revision 1.20.


144837 09-Apr-2005 stefanf

Fix 'implicit int' instance.


144563 03-Apr-2005 imp

Fix buidling of boot blocks for pc98 with new links.

Submitted by: nyan@


143661 15-Mar-2005 obrien

Ensure GCC does not use FP registers in integer code.
I think all we really need is -fno-sse2.
I really don't like cluttering up the compiler invocation,
but this bigger hammer will fix reported problems for now.


143476 12-Mar-2005 kan

Allow kernels loaded by pxeboot, which was compiled with LOADER_TFTP_SUPPORT,
to stll be able to mount NFS root as prescribed by DCHP configuration. Since
pxeboot is using TFTP to get to the files, pxeboot can not rely on NFS to
provide it a root directory hande as a side effect. pxeboot has to make RPC
mount call itself.


143250 07-Mar-2005 stefanf

Don't try to use 'typedef struct foo' if just 'struct foo' makes more sense
and works on all compilers. This also removes the need for
__CC_SUPPORTS_FORWARD_REFERENCE_CONSTRUCT in <sys/cdefs.h>.

OK'ed by: marcel, dfr


143176 06-Mar-2005 stefanf

Fix typos in a comment.


143063 02-Mar-2005 joerg

netchild's mega-patch to isolate compiler dependencies into a central
place.

This moves the dependency on GCC's and other compiler's features into
the central sys/cdefs.h file, while the individual source files can
then refer to #ifdef __COMPILER_FEATURE_FOO where they by now used to
refer to #if __GNUC__ > 3.1415 && __BARC__ <= 42.

By now, GCC and ICC (the Intel compiler) have been actively tested on
IA32 platforms by netchild. Extension to other compilers is supposed
to be possible, of course.

Submitted by: netchild
Reviewed by: various developers on arch@, some time ago


143053 02-Mar-2005 marius

Remove unused variables.


142012 17-Feb-2005 des

Document the new default init_path.

Reminded by: ru
MFC after: 2 weeks


142009 17-Feb-2005 des

Add /rescue/init to the default init_path, before /stand/sysinstall.

MFC after: 2 weeks


141846 13-Feb-2005 ru

Expand *n't contractions.


141540 08-Feb-2005 des

Remove type 0x4 (FAT12 <32MB) to make room for type 0x7 (NTFS).


141060 30-Jan-2005 rwatson

Insert an explicit McAfee license, as we use a stock two-clause BSD
license rather than the slightly custom licence in ufsread.c.


139948 09-Jan-2005 peadar

Only update the boot sector when there is a valid drive number provided.
(After squeezing a few more bytes out of boot0)

Discussed With: jhb, julian
PR: 66248
Submitted By: Hans Petter Selasky
MFC After: 1 week


139738 05-Jan-2005 imp

Start each of the license/copyright comments with /*-


139737 05-Jan-2005 imp

Remove obsolete note about the boot loader not being ready for stable.
It has been in stable for at least 5 years now.


139123 21-Dec-2004 ru

NOFORTH -> NO_FORTH


139112 21-Dec-2004 ru

NOSHARED -> NO_SHARED


139103 21-Dec-2004 ru

Start the dreaded NOFOO -> NO_FOO conversion.

OK'ed by: core


138427 06-Dec-2004 imp

The 'start' command processes loader.conf variables, not loader.rc.
Fix comment to match.


138258 01-Dec-2004 scottl

Fix a bunch of stack leaks. These were theoretically harmless, except that
they would leave enough elements on the stack that if you escaped to the
loader prompt and then typed 'setenv', it would pull in all of the leaked
junk and cause an exception in the environment. There still seems to be
3 leaked elements, but they don't appear to be coming from this file.


138249 01-Dec-2004 scottl

Remove the last vestiges of the userconfig option. None of this actually
did anything, so this commit should be considered a NO-OP.


138223 30-Nov-2004 scottl

Instead of just not defining a bunch of words when TESTMAIN is set, provide
stubs that at least handle the stack correctly. This makes it much easier to
experiment with loader scripts from userland.


138190 29-Nov-2004 nyan

MFi386: revisions 1.77 and 1.78.


138189 29-Nov-2004 nyan

MFi386: revision 1.38.


138186 29-Nov-2004 ru

Pick up loader.rc from its old home.


138183 29-Nov-2004 scottl

Disable the beastie menu. It offends some and annoys everyone else, and I'm
frankly tired of the controversy. When people ask me why FreeBSD isn't user-
friendly, I'll tell them that I tried. RIP.


138141 28-Nov-2004 marcel

o Introduce efimd_va2pa() to translate addresses in efi_copy{in|out}()
and efi_readin(). This removes MD code from copy.c.
o Don't unconditionally add pal.S to SRCS. It's specific to ia64.


138140 28-Nov-2004 marcel

Add efimd.c. This file contains MD code used by the EFI library. While
changing the Makefile, fail the creation of loader.efi when there are
unresolved symbols in loader.sym. This avoids silently creating a
faulty EFI binary.


138048 24-Nov-2004 jhb

- If the COMSPEED is set to 0, then don't try to initialize the serial port
and assume that the BIOS has set it up for us. This allows folks with a
serial-aware BIOS to set the BIOS to speeds above 9600 and allow boot0 to
just use the existing settings.
- Purge some gratuitous cpp comments as per style(9).

Submitted by: Danny Braniss danny at cs dot huji dot ac dot il (1)
MFC after: 1 month


138046 24-Nov-2004 jhb

Fix comments for serial I/O function prototypes that were broken in the
assembler to cpp(1) comment conversions. This allows btx to compile again
when BTX_SERIAL is defined.

Reported by: Danny Braniss danny at cs dot huji dot ac dot il
MFC after: 1 month


138026 23-Nov-2004 marcel

This file was repocopied to src/sys/boot/ia64/efi.


138004 23-Nov-2004 marcel

Unhook the loader subdirectory. The ia64 EFI loader is now build
under ../ia64/efi.


138003 23-Nov-2004 marcel

Hookup the efi subdirectory.


138002 23-Nov-2004 marcel

This file was repocopied from src/sys/boot/efi/loader.
Updated for the new build location.


138001 23-Nov-2004 marcel

Visit the efi subdirectory before we visit the machine-specific
subdirectory so that the library built there can be used by the
machine specific boot code.


137978 21-Nov-2004 marcel

Remove struct ia64_itir and use a plain old uint64_t instead.


137667 13-Nov-2004 ru

There's no reason for "read" and "echo" commands to not
appear in the online command list.


137615 12-Nov-2004 ru

Pass the "?" command output through the pager.

(This doesn't quite work as this command is overridden by Forth,
and some Forth commands are appended to the output.)


137419 08-Nov-2004 peter

Remove a pre-tier-1 kernel compatability helper. This means a 6.x loader
won't boot a pre-5.1 development amd64 kernel. That's no big loss though.


137344 07-Nov-2004 krion

Document "loader_color" variable.

PR: conf/73396
Submitted by: Aleksander Fafula <alex at fafula dot com>
Approved by: scottl


137298 06-Nov-2004 keramida

Clean up the comments, rewording, adding missing punctuation
and other minor nits.

Approved by: jhb


137071 30-Oct-2004 brooks

Add a loader menu option to set hint.atkbd.0.flags=0x1 which allows USB
keyboards to work if no PS/2 keyboard is attached. The position in the
menu was chosen to avoid moving option 6 (loader prompt). This should
be a no-op on non-i386/amd64 machines.


136910 24-Oct-2004 ru

For variables that are only checked with defined(), don't provide
any fake value.


136895 24-Oct-2004 ru

Collapse several adjacent .if's into .if/.elif.


136893 24-Oct-2004 nyan

ELF64 support is not needed on pc98.


136892 24-Oct-2004 nyan

MFi386: revision 1.4.


136891 24-Oct-2004 nyan

MFi386: Set bi_basemem and bi_extmem variables.
Respect RB_MULTIPLE flag.


136890 24-Oct-2004 nyan

MFi386: Add support for preloading ELF relocatable object format modules.


136780 22-Oct-2004 simokawa

Respect RB_MULTIPLE flag.


136779 22-Oct-2004 simokawa

- Add FireWire subclass and OHCI interface.
- Add some PCI BIOS function calls.
(find_devclass, read_config, write_config)


136549 15-Oct-2004 imp

document host_start_mem.

# feel free to wordsmith.

Suggested by: ru@


136548 15-Oct-2004 ru

Polish the last change.


136525 15-Oct-2004 imp

Document hw.{pci,acpi}.host_start_mem

Requested by: ru@


136144 05-Oct-2004 pjd

Back out changes which were introduced to delay mounting root file system.
Those changes were made on gmirror needs, but now gmirror handles this
by itself.


136097 03-Oct-2004 stefanf

Use the correct printf specifier.

PR: 47187


136036 01-Oct-2004 ru

Document MD commands.


135999 01-Oct-2004 ru

The "autoboot" command also has a third (optional) parameter.


135996 30-Sep-2004 ru

Don't give instructions on how to disable ACPI in the MI section.
For novice users, beastie.4th can just do it. Expert users can
read ACPI instructions by typing "help ACPI".


135995 30-Sep-2004 ru

Setting "kernel" to an absolute path is a bad idea because
after loading such a kernel, "module_path" will be set to
an insane value. Fixed example by providing an equivalent
setting. For the record, when automatically loading a
kernel (commands "boot" and "boot-conf"), the following is
tried, in this order:

path=/boot/${kernel} file=${bootfile}
path=/boot/${kernel} file=${kernel}
path=${kernel} file=${bootfile}
path=${kernel} file=${kernel}
path=${module_path} file=${kernel}


135986 30-Sep-2004 ru

Bring this file more up to date.


135980 30-Sep-2004 ru

Retire now useless userconfig_script_*.


135975 30-Sep-2004 ru

The value of $interpret is "OK", in uppercase.


135974 30-Sep-2004 ru

Fixed the default value of the $prompt variable, document what
happens if $prompt is unset.


135973 30-Sep-2004 ru

Setting dump device from loader(8) has not been supported since 2002.


135970 30-Sep-2004 ru

The default value of "bootfile" has been "kernel" since 2000.


135969 30-Sep-2004 ru

Mention "help index" in the online help, and provide a help for
the `?' command.


135968 30-Sep-2004 ru

Added support for the -D boot option.


135967 30-Sep-2004 ru

Document boot_cdrom, boot_multicons, and boot_serial.
Reduce diffs between help.common and loader(8).
Mention that boot_userconfig is currently a no-op.


135965 30-Sep-2004 ru

`?' is not the same as "help index".


135929 29-Sep-2004 ru

Fixed exiting from pager using the `q' key while paging
"help index" or "help <topic>" with list of subtopics.


135729 24-Sep-2004 pjd

Document vfs.root.mountdelay value.

Reminded by: ru


135702 24-Sep-2004 marcel

Remove. This file was repocopied to ../ski.


135700 24-Sep-2004 marcel

Replace misuse of NULL with 0UL.


135699 24-Sep-2004 marcel

Remove the dependency on the Intel EFI headers in sys/boot/efi. Instead
use <machine/efi.h> for the necessary definitions. This makes the EFI
code in sys/boot/efi totally unused, except for pure EFI loaders. As
such, maintenance and porting (to IA-32) of the EFI code is made as easy
as possible.


135698 24-Sep-2004 marcel

Unhook libski and skiload and hook up ski.


135697 24-Sep-2004 marcel

Post repocopy build fixes.


135630 23-Sep-2004 marcel

Redefine a PTE as a 64-bit integral type instead of a struct of
bit-fields. Unify the PTE defines accordingly and update all
uses.


135538 21-Sep-2004 wes

Trap invalid sector size 0 in disk probe, refusing to add such a
device to the list. This prevents crashes on /0 errors in 'lsdev'
et al.

Reviewed-by: jhb@
MT5 after: RE approval


135442 18-Sep-2004 marcel

Remove useless include of <machine/fpu.h>.


135410 18-Sep-2004 jhb

A long, long time ago in a CVS branch far away (specifically, HEAD prior
to 4.0 and RELENG_3), the BTX mini-kernel used paging rather than flat
mode and clients were limited to a virtual address space of 16 megabytes.
Because of this limitation, boot2 silently masked all physical addresses
in any binaries it loaded so that they were always loaded into the first
16 Meg. Since BTX no longer has this limitation (and hasn't for a long
time), remove the masking from boot2. This allows boot2 to load kernels
larger than about 12 to 14 meg (12 for non-PAE, 14 for PAE).

Submitted by: Sergey Lyubka devnull at uptsoft dot com
MFC after: 1 month


135409 18-Sep-2004 nyan

MFi386: revision 1.56 (Add -fno-unit-at-a-time to CFLAGS).


134944 08-Sep-2004 kensmith

Back out v1.24. v1.40 of sys/sparc64/sparc64/bus_machdep.c fixes the
problem this hack was put in place for.

MFC to be done if the fix to bus_machdep.c is MFC-ed.


134459 29-Aug-2004 iedowse

Add the loader side of support for preloading ELF relocatable object
format modules, which are currently only used on the amd64 platform.
This initial implementation just parses enough of the module to
allow it to extract dependencies and load all the bits into the
right place in memory, so the kernel must still do the full relocation
and linking. The details of the loaded sections are passed to the
kernel by supplying a copy of the ELF section header table as module
metadata with the MODINFOMD_SHDR tag.


134458 28-Aug-2004 iedowse

Separate out the ELF relocation code from the ELF loader, and add
better relocation support for the amd64 and i386 platforms. This
should not result in any change in functionality, but moves a step
towards supporting the relocatable object file modules on amd64.

The same hack/trick as load_elf*.c uses is used here to simultaneously
support both elf32 and elf64 on amd64 and i386.


134441 28-Aug-2004 iedowse

Add a few helper functions for zeroing kernel space and reading
from specified file offsets. Make use of these in load_elf.c.


134431 28-Aug-2004 yar

Don't be too smart, just try packet mode of INT13 first.
This way of operation is more robust than the "AI" used
before.

Add flags to mbr accessible from make.conf as BOOT_MBR_FLAGS.
Only one flag is defined now, "allow using packet mode", which
is 0x80 in accord with the rest of i386 boot code. The "packet"
flag is on by default.

PR: i386/70241
Submitted by: Valentin Nechayev <netch <@> netch.kiev.ua> (inital version)
Discussed with: jhb (by Valentin Nechayev)
Tested on: bochs (with EDD turned on or off by patching the BIOS), PCs


134430 28-Aug-2004 yar

Try packet mode of INT13 on a hard disk first if not prohibited by
the flag, fall back to the old INT13/AH=02 function if that fails.
This way of operation is less likely to fail with modern BIOSes and
large disks of strange geometries.

PR: i386/70241
Submitted by: Valentin Nechayev <netch <@> netch.kiev.ua> (inital version)
Discussed with: jhb (by Valentin Nechayev)
Tested on: bochs (with EDD turned on or off by patching the BIOS), PCs


134382 27-Aug-2004 yar

B1FLAGS -> BOOT_BOOT1_FLAGS, which is consistent with
naming of other boot-related make vars.


134357 27-Aug-2004 obrien

In conjunction with having boot0cfg(8) default boot0 to packet mode.

Submitted by: Tor.Egge@cvsup.no.freebsd.org


134151 22-Aug-2004 maxim

Trim EOL white spaces.


134150 22-Aug-2004 maxim

Check a return code from read(2) correctly.

PR: kern/70815
Submitted by: info [at] haakh.de


134148 22-Aug-2004 marcel

Part 2 of fixing the boot code: gcc 3.4 fixes.

The whole problem seems to be size. Which is odd, because it is said
that size doesn't matter. Anyway... Add -Os to strategic places in the
makefile to have the final loader be as mall as possible. This seems
to be enough to make it work. For now... I think something is more
fundamentally wrong; or something more fundamental is wrong. Potato,
potaato.


134140 22-Aug-2004 marcel

Part 1 of fixing the boot code: binutils 2.15 fixes.

The binutils 2.15 assembler now automaticly and non-optionally adds
the .eh_frame section for unwind information. This section appears
to wreck havoc to the final boot code. Fix this by using a special
linker script that discards the .eh_frame sections, but is otherwise
identical to the linker internal script used for -N.

Compiler used: gcc 3.3.5
Verified with: binutils 2.14 & binutils 2.15 (stock and in-tree)
Tested with: /boot/loader & /boot/netboot


134039 19-Aug-2004 kensmith

Temporary bandaid to help sparc64 systems with ATA disks boot. Recent
changes to the ATA driver cause a kernel crash, no fault of the ATA
code. Work is in progress to add the necessary feature to the sparc64
kernel and this commit will be backed out when it is complete. This
bandaid is being put in mostly in the interests of getting the first
release snapshot done and out the door.

Tested on: Ultra-10 exhibiting the insta-panic.
MFC: Real Soon


133953 18-Aug-2004 grehan

Remove NOMAN so loader man pages are installed.

Noticed by: ru


133948 18-Aug-2004 maxim

Bump the manpage date.

Noticed by: ru


133947 18-Aug-2004 maxim

Retire hw.pci.allow_unsupported_io_range.

PR: bin/70533
Submitted by: Gavin Atkinson


133862 16-Aug-2004 marius

Instead of "OpenFirmware", "openfirmware", etc. use the official spelling
"Open Firmware" from IEEE 1275 and OpenFirmware.org (no pun intended).

Ok'ed by: tmm


133420 10-Aug-2004 marcel

Catch up with change to <machine/pte.h>.


133217 06-Aug-2004 jmg

remove /boot/kernel from the default path.. There is already code that
will prepend the current kernel booting... This prevents a problem of
loading /boot/kernel's modules when a different kernel has no modules,
but you left your module_load="YES" in loader.conf...

Reviewed by: dcs (minus the help part)


133154 05-Aug-2004 kan

Move boot2 BSS zeroing into btx startup code out of boot1. boot1 does not
have clear idea on boot2 BSS size and leaves portion of it not zeroed out.
btxcsu.s is in much better position for this job.

Obtained from: DragonflyBSD (with minor adjustments)


132997 02-Aug-2004 grehan

Add PowerPC bridge instruction flag to the assembler to help out
with test code written in the loader.


132996 02-Aug-2004 grehan

G5 support: handle the case where the OpenFirmware memory array uses
64 bits for the phys address, but only 32 for the virtual address.


132881 30-Jul-2004 nyan

Fix new compiler error (s/bcopy/memcpy/).


132870 30-Jul-2004 kan

Compile boot2 with -fno-unit-at-a-time. GCCs aggressive optimization
breaks boot in spectacular ways otherwise.


132864 30-Jul-2004 kan

Clean up local memcpy implementation to take void * parameters.


132854 29-Jul-2004 ceri

Correct a documentation bug.

Approved by: jhb


132853 29-Jul-2004 ceri

Correct typo in a comment.

Approved by: jhb


132764 28-Jul-2004 kan

Define our own memcpy here instead of relying on GCC to provide one.


132437 20-Jul-2004 marcel

o Support the REL32LSB relocation. It's in the ELF file from which
we construct the EFI image. It doesn't seem to actually end up
in the EFI image, AFAICT.
o Replace .quad, .long and .short with data8, data4 and data2 resp.
The former are gnuisms.
o Redefine _start_plabel as a data16 with @iplt(_start) as its
value. This is the preferred way to create user PLT entries.


132435 20-Jul-2004 marcel

Fix the creation of EFI images that got broken by the import of
binutils 2.15. The linker now creates a .rela.dyn section for
dynamic relocations, while our script created a .rela section.
Likewise, we copied the .rela section to the EFI image, but not
the .rela.dyn section. The fix is to rename .rela to .rela.dyn
in the linker script so that all relocations end up in the same
section again. This we copy into the EFI image.


132248 16-Jul-2004 tanimura

Rename snd_pcm as sound.


131840 08-Jul-2004 brian

Change the following environment variables to kernel options:

bootp -> BOOTP
bootp.nfsroot -> BOOTP_NFSROOT
bootp.nfsv3 -> BOOTP_NFSV3
bootp.compat -> BOOTP_COMPAT
bootp.wired_to -> BOOTP_WIRED_TO

- i.e. back out the previous commit. It's already possible to
pxeboot(8) with a GENERIC kernel.

Pointed out by: dwmalone


131814 08-Jul-2004 brian

Change the following kernel options to environment variables:

BOOTP -> bootp
BOOTP_NFSROOT -> bootp.nfsroot
BOOTP_NFSV3 -> bootp.nfsv3
BOOTP_COMPAT -> bootp.compat
BOOTP_WIRED_TO -> bootp.wired_to

This lets you PXE boot with a GENERIC kernel by putting this sort of thing
in loader.conf:

bootp="YES"
bootp.nfsroot="YES"
bootp.nfsv3="YES"
bootp.wired_to="bge1"

or even setting the variables manually from the OK prompt.


131811 08-Jul-2004 grehan

Use a linker script for the loader. This avoids issues with
command-line options, such as misaligning the data segment.
Exposed by the limited PearPC OFW ELF loader, but a good thing in
general.


131785 08-Jul-2004 grehan

Remove cache flush, 256Mb 1:1 BAT mapping, and BAT clearing. This doesn't
work on a G5 (no BAT registers) or on PearPC (dBAT3 used for mapping
the framebuffer and BATs not re-inited on OpenFirmware calls).

It also hid a number of bugs.


131783 08-Jul-2004 grehan

All hell breaks loose if the loader image is released before
jumping to the kernel. Another bug exposed by removing the
1:1 BAT mapping. Sparc64 doesn't do this either.

Compile tested on: panther (sparc64). Code built, but not used, on sparc64.


131782 08-Jul-2004 grehan

Correctly calculate size of memory to be mapped when copying. Removal
of the 256Mb 1:1 BAT mapping exposed this as copying into memory that
hadn't been claimed from OpenFirmware.

compiled-tested on: panther (sparc64). Code built, but not used, on sparc64


131781 08-Jul-2004 grehan

Extract entry point from elf header before releasing the heap.
This caused a data-miss trap when the BAT init code was removed
on PPC.

Compile tested on: panther (sparc64). Code built, but not used, on sparc64.


131754 07-Jul-2004 ru

mdoc(7) fixes.


131575 04-Jul-2004 stefanf

Consistently use __inline instead of __inline__ as the former is an empty macro
in <sys/cdefs.h> for compilers without support for inline.


131489 02-Jul-2004 ru

Fixed what appeared to be a hard sentence break.


131393 01-Jul-2004 ps

When building a kernel or the loader, let the hostname be overridden


131068 24-Jun-2004 josef

Remove the entry for configuring pcm0 mixer channels.
This is accomplished via device.hints now.


130945 22-Jun-2004 brueffer

Throw out pfsync and pflog, the modules were removed


130943 22-Jun-2004 jhb

Update the copyright to use a 3 clause BSD license rather than one that
is less clear about allowing redistribution of modified copies.

Requested by: Tom Cosgrove tom dot cosgrove at arches-consulting dot com


130942 22-Jun-2004 jhb

Remove a bogus increment of %di when scanning the list of loader paths.
%di will already point to the character after the nul char when the
'repnz scasb' terminates.

Submitted by: Tom Cosgrove tom dot cosgrove at arches-consulting dot com


130793 20-Jun-2004 josef

Document the possibility of setting default values for
mixer channels via boot loader.


130632 17-Jun-2004 phk

Save a couple of bytes for the SIO case.


130630 17-Jun-2004 phk

Fix another beak.

Seen by: pjd


130603 16-Jun-2004 phk

Unspam sys/boot, the dev_t commit should not have touched these.

Spotted by: peter


130601 16-Jun-2004 phk

My new keyboard can't spell.


130585 16-Jun-2004 phk

Do the dreaded s/dev_t/struct cdev */
Bump __FreeBSD_version accordingly.


130579 16-Jun-2004 phk

Premptively fix GCC3.4 issue: add break; after empty default: clauses.

PR: 65493
Submitted by: Pawel Worach <sajd@telia.com>


130343 11-Jun-2004 phk

Merge boot0 and boot0sio so they behave the same.


129993 02-Jun-2004 phk

Some embedded platforms have no keyboard controller. Give up waiting
for it to react after a timeout.


129702 25-May-2004 njl

Use the correct location of the EBDA for searching for the RSDP.
The EBDA is the 1 KB area addressed by the 16 bit pointer at 0x40E.

Pointed out by: robert.moore AT intel.com


129310 16-May-2004 ru

Markup fixes.


129269 16-May-2004 cognet

Try harder not to compile anything in sys/boot for arm.
I wonder how buildworld ever worked for me...


129240 14-May-2004 ru

Back out last revision that unnecessarily changed valid assembler
line comments and damaged the CVS history.

Prompted by: bde, jhb


129239 14-May-2004 ru

Partly back out last revision that unnecessarily changed valid
assembler line comments and damaged the CVS history.

Prompted by: bde, jhb


129218 14-May-2004 cognet

Do not attempt to build anything in sys/boot for arm.


129195 14-May-2004 jdp

Fix a potential stack buffer overflow on systems whose ACPI OEMID
fills its field (6 characters). In that case the OEMID is not
null-terminated, and the sprintf that was used would copy up to the
next null byte, which could be pretty far away.


128741 29-Apr-2004 ru

Convert block comments into C-style that is understood by cpp(1).
Keep line comments in assembler style. A few lines that match
the '^[[:space:]]+#' regexp still need to be fixed, somehow.

OK'ed by: bde, jhb


128736 29-Apr-2004 nyan

MFi386: revisions from 1.15 to 1.17.


128735 29-Apr-2004 nyan

MFi386: revisions from 1.16 to 1.18.


128725 28-Apr-2004 ru

Thanks to David's patches, we can now simplify these makefiles
further, and just use PROG directly (without FILES).

Suggested by: bde


128724 28-Apr-2004 ru

Properly merge boot0sio.s and boot0.s into boot0.S.


128723 28-Apr-2004 ru

Switch to using C99 comments in assembler preprocessed with cpp(1).


128722 28-Apr-2004 ru

- Properly merge boot0sio.s and boot0.s into boot0.S.
boot0sio.s was repo-copied to boot0.S.

- Rename boot0ext.s to boot0ext.S, to stay consistent
with other preprocessed asm files around here, and
for better portability.

Repocopied by: joe


128718 28-Apr-2004 ru

Temporary precaution measure until repocopy requests are
processed: don't forget to clean generated .s sources.


128716 28-Apr-2004 ru

After talking to Bruce Evans and reading more standards specs,
switch to using C99-style comments everywhere in preprocessed
assembler. The reason is that lines starting with the regexp
'^[[:space:]]#' are treated as preprocessing directives, and
while it seems to work now with GCC, it's not necessarily has
to work. Use C99 comments `//' for the trailing comments to
save whitespace.


128710 28-Apr-2004 ru

MFi386: Use C (and CPP) style comments for assembler-with-cpp
sources, for lines that start with a comment.


128709 28-Apr-2004 ru

Use C (and CPP) style comments for assembler-with-cpp sources,
for lines that start with a comment.


128708 28-Apr-2004 ru

Use C (and CPP) style comments for assembler-with-cpp sources,
for lines that start with a comment.


128707 28-Apr-2004 ru

- Use C (and CPP) style comments for assembler-with-cpp sources,
for lines that start with a comment.
- Preserve as(1) style comments for the rest.


128694 27-Apr-2004 ru

Removed now redundant CLEANFILES assignments.

Not read enough of my patch by: obrien ;)


128691 27-Apr-2004 phk

Change from '#' to "//" comment character to allow CPP preprocessing.

Merge boot0.s and boot0sio.s into boot0_512.s controlled by "#ifdef SIO".

Add Makefile magic to generate boot0.s and boot0sio.s from boot0_512.s.

The compile boot0 and boot0sio have unchanged MD5 checksums.


128651 25-Apr-2004 obrien

Use a more compact syntax for passing the "binary" options to 'ld'.


128649 25-Apr-2004 obrien

Simplify the building of our i386 'binary' boot components by directly
producing them using 'ld' options rather than post-processing with 'objcopy'.

Idea by: Ryan Sommers <ryans@gamersimpact.com>


128471 20-Apr-2004 obrien

Fix a last second typo in 'vi' that caused a problem.


128451 20-Apr-2004 obrien

White space style cleanup.


128441 19-Apr-2004 obrien

MFp4: merge version #5 of the 2-sector boot0 from the "jhb boot" branch.


128280 15-Apr-2004 cperciva

s/atspeaker/speaker/
cf. revision 1.2 of src/sys/modules/speaker/Makefile

PR: conf/65195
Submitted by: daichi


128019 07-Apr-2004 imp

Remove advertising clause from University of California Regent's
license, per letter dated July 22, 1999 and email from Peter Wemm,
Alan Cox and Robert Watson.

Approved by: core, peter, alc, rwatson


127919 05-Apr-2004 imp

Remove advertising clause from University of California Regent's license,
per letter dated July 22, 1999.

Approved by: core


127826 04-Apr-2004 marcel

To quote the submitter:
"...If "keyboard" is the selected input-device and "screen" the
output-device (both via /options) but the keyboard is unplugged,
OF automatically switches to ttya for the console, it even prints
a line telling so on "screen". Solaris respects this behaviour and
uses ttya as the console in this case and people probably expect
FreeBSD to do the same (it's also very handy to temporarily switch
consoles)..."
"...I changed the comparison of the console device with "ttya" ||
"ttyb" to "tty" because on AXe boards all 4 onboard UARTs end in
SUB-D connectors (ttya and ttyb being 16550 and ttyc and ttyd a
SAB82532) and there's no Sun keyboard connector (but PS/2). If one
plugs a serial card in a box there also can be more than just ttya
and ttyb available for a console..."

Submitted by: Marius Strobl <marius@alchemy.franken.de>
Has no doubt that the change is correct: marcel


127789 03-Apr-2004 le

mdoc fix: put the end-of-list macro after the last list element.

Approved by: grog (mentor)


127458 26-Mar-2004 obrien

Bring back jhb's two sector (1024 bytes) 'boot0' [rev 1.22] as 'boot0ext'.


127417 25-Mar-2004 jhb

Enable splitfs in the Alpha boot loaders.


126970 14-Mar-2004 nyan

MFi386: revision 1.29.


126969 14-Mar-2004 nyan

MFi386: revision 1.76.


126958 14-Mar-2004 bde

Fixed misspellings of 0 as NULL.


126891 12-Mar-2004 trhodes

These are changes to allow to use the Intel C/C++ compiler (lang/icc)
to build the kernel. It doesn't affect the operation if gcc.

Most of the changes are just adding __INTEL_COMPILER to #ifdef's, as
icc v8 may define __GNUC__ some parts may look strange but are
necessary.

Additional changes:
- in_cksum.[ch]:
* use a generic C version instead of the assembly version in the !gcc
case (ASM code breaks with the optimizations icc does)
-> no bad checksums with an icc compiled kernel
Help from: andre, grehan, das
Stolen from: alpha version via ppc version
The entire checksum code should IMHO be replaced with the DragonFly
version (because it isn't guaranteed future revisions of gcc will
include similar optimizations) as in:
---snip---
Revision Changes Path
1.12 +1 -0 src/sys/conf/files.i386
1.4 +142 -558 src/sys/i386/i386/in_cksum.c
1.5 +33 -69 src/sys/i386/include/in_cksum.h
1.5 +2 -0 src/sys/netinet/igmp.c
1.6 +0 -1 src/sys/netinet/in.h
1.6 +2 -0 src/sys/netinet/ip_icmp.c

1.4 +3 -4 src/contrib/ipfilter/ip_compat.h
1.3 +1 -2 src/sbin/natd/icmp.c
1.4 +0 -1 src/sbin/natd/natd.c
1.48 +1 -0 src/sys/conf/files
1.2 +0 -1 src/sys/conf/files.amd64
1.13 +0 -1 src/sys/conf/files.i386
1.5 +0 -1 src/sys/conf/files.pc98
1.7 +1 -1 src/sys/contrib/ipfilter/netinet/fil.c
1.10 +2 -3 src/sys/contrib/ipfilter/netinet/ip_compat.h
1.10 +1 -1 src/sys/contrib/ipfilter/netinet/ip_fil.c
1.7 +1 -1 src/sys/dev/netif/txp/if_txp.c
1.7 +1 -1 src/sys/net/ip_mroute/ip_mroute.c
1.7 +1 -2 src/sys/net/ipfw/ip_fw2.c
1.6 +1 -2 src/sys/netinet/igmp.c
1.4 +158 -116 src/sys/netinet/in_cksum.c
1.6 +1 -1 src/sys/netinet/ip_gre.c
1.7 +1 -2 src/sys/netinet/ip_icmp.c
1.10 +1 -1 src/sys/netinet/ip_input.c
1.10 +1 -2 src/sys/netinet/ip_output.c
1.13 +1 -2 src/sys/netinet/tcp_input.c
1.9 +1 -2 src/sys/netinet/tcp_output.c
1.10 +1 -1 src/sys/netinet/tcp_subr.c
1.10 +1 -1 src/sys/netinet/tcp_syncache.c
1.9 +1 -2 src/sys/netinet/udp_usrreq.c

1.5 +1 -2 src/sys/netinet6/ipsec.c
1.5 +1 -2 src/sys/netproto/ipsec/ipsec.c
1.5 +1 -1 src/sys/netproto/ipsec/ipsec_input.c
1.4 +1 -2 src/sys/netproto/ipsec/ipsec_output.c

and finally remove
sys/i386/i386 in_cksum.c
sys/i386/include in_cksum.h
---snip---
- endian.h:
* DTRT in C++ mode
- quad.h:
* we don't use gcc v1 anymore, remove support for it
Suggested by: bde (long ago)
- assym.h:
* avoid zero-length arrays (remove dependency on a gcc specific
feature)
This change changes the contents of the object file, but as it's
only used to generate some values for a header, and the generator
knows how to handle this, there's no impact in the gcc case.
Explained by: bde
Submitted by: Marius Strobl <marius@alchemy.franken.de>
- aicasm.c:
* minor change to teach it about the way icc spells "-nostdinc"
Not approved by: gibbs (no reply to my mail)
- bump __FreeBSD_version (lang/icc needs to know about the changes)

Incarnations of this patch survive gcc compiles since a loooong time,
I use it on my desktop. An icc compiled kernel works since Nov. 2003
(exceptions: snd_* if used as modules), it survives a build of the
entire ports collection with icc.

Parts of this commit contains suggestions or submissions from
Marius Strobl <marius@alchemy.franken.de>.

Reviewed by: -arch
Submitted by: netchild


126837 11-Mar-2004 bde

Fixed a misspelling of 0 as NULL.


126764 09-Mar-2004 marcel

Reset the text attributes when initializing the console. The EFI
loader typically doesn't do this so that we end up booting the
with whatever the EFI loader has set it to last.


126455 01-Mar-2004 des

While I'm here, add linprocfs (but not pseudofs, since it is no use on
its own)


126453 01-Mar-2004 des

Add acpi_video_load (default NO) in the ACPI section


126312 27-Feb-2004 ru

For some reason crt0.o needs to be linked first for pxeboot(8) to
work. This is odd because loader(8) doesn't suffer from this problem.
Perhaps pxeboot bootstrap can be fixed to handle this better.
Anyway, PXE booting should work again.


126263 26-Feb-2004 mlaier

Tweak existing header and other build infrastructure to be able to build
pf/pflog/pfsync as modules. Do not list them in NOTES or modules/Makefile
(i.e. do not connect it to any (automatic) builds - yet).

Approved by: bms(mentor)


125932 17-Feb-2004 ru

Re-add sio.S, and properly deal with assembler files.

Repocopied by: joe


125901 16-Feb-2004 obrien

Fix the AMD64 build: this file shouldn't exist.


125837 15-Feb-2004 simon

mdoc(7) janitor:
- Fix hard sentence breaks.
- Quote argument to the Nd macro.
- Use Pa for filenames.


125795 14-Feb-2004 njl

Fix hw.acpi.os_name by renaming it to hw.acpi.osname. The "_name" suffix
is reserved by the loader, and thus any tunable name with that suffix will
be silently discarded.

Document this in the header and man page so that other developers do not
develop so many bumps on the head after banging it against the wall.

Detective work by: Mark Santcroos, grehan


125780 13-Feb-2004 nyan

MFi386: Get rid of unnecessary use of m4(1) by using cpp(1) instead.

Repocopied by: joe


125779 13-Feb-2004 nyan

MFi386: revisions 1.74 and 1.75.
- kzip(8) is long dead.
- Clean CLEANFILES.


125778 13-Feb-2004 nyan

MFi386: revision 1.20 (don't strip kgzldr.o)


125767 13-Feb-2004 marcel

Don't create a mapfile during link. It's not needed for the build.


125766 13-Feb-2004 marcel

o Don't build with -fpic. It's not needed and inconsistent with how
other constributions are compiled.
o Remove powerpc specific additions to CFLAGS.


125753 12-Feb-2004 ru

Fixed the fatal bug introduced in previous commit: don't strip
kgzldr.o -- kgzipping with such a loader produces bad images.


125751 12-Feb-2004 ru

Clean CLEANFILES.


125729 12-Feb-2004 ru

Tidy up makefiles.

Tested by: marcel


125722 11-Feb-2004 ru

kzip(8) is long dead.


125719 11-Feb-2004 ru

Overhaul makefiles.


125717 11-Feb-2004 ru

_start.S -> _start.s as the latter is pure asm file.

Repocopied by: joe


125693 11-Feb-2004 ru

Get rid of unnecessary use of m4(1) by using cpp(1) instead.
(John tells me there were problems when trying this before,
but it appears to be safe these day.)

OK'ed by: jhb
Repocopied by: joe


125674 10-Feb-2004 ru

Since loader(8) on SPARC64 is a pure ELF executable (as opposed
to other architectures), there is no reason not to strip(1) it.

Tested by: kensmith


125634 09-Feb-2004 grehan

Loader makefile cleanup.

Submitted by: ru


125625 09-Feb-2004 nyan

MFi386: Factor out -nostdlib and use PROG.


125622 09-Feb-2004 ru

MFi386.

- Factor out common settings and put them in an upper level Makefile.inc.
- Properly use PROG for real programs, not their products.
- Further reduce diffs to i386 versions.

Tested on: sparc64 (panther)


125621 09-Feb-2004 ru

- Factor out -nostdlib to an upper level Makefile.inc.

- Now that bsd.prog.mk deals with programs linked with -nostdlib
better, and has a notion of an "internal" program, use PROG
where possible. This has a good impact on the contents of
.depend files and causes programs to be linked with cc(1).

XXX: boot2 couldn't be converted as it's actually two programs.

Tested on: i386, amd64


125581 07-Feb-2004 ru

Argh, unbreak "make depend" for AMD64.

Reported by: kris


125567 07-Feb-2004 ru

MFi386: Removed -elf and duplicate -ffreestanding.


125566 07-Feb-2004 ru

- Removed -elf which is not a valid gcc(1) option anymore.
- Removed -ffreestanding; it's enforced by ../Makefile.inc.


125564 07-Feb-2004 ru

Generate .depend file.


125563 07-Feb-2004 nyan

MFi386: Cleanups to sys/boot makefiles.


125561 07-Feb-2004 ru

Style: use the defined() expression explicitly.


125556 07-Feb-2004 ru

Untangle building of AMD64 boot code.

Tested on: amd64 (sledge)


125537 06-Feb-2004 ru

First round of cleanups to sys/boot/ makefiles:

- do not use PROG for what's not a real C program,
- use sys.mk transformation rules where possible,
- only create the "machine" symlink on AMD64,
- removed MAINTAINER lines in individual makefiles,
- added the LIBSTAND defitinion to <bsd.libnames.mk>,
- somewhat better contents in .depend files.

Tested on: i386, amd64
Prodded by: bde


125517 06-Feb-2004 ru

Inherit BINDIR from a parent Makefile.inc.


125516 06-Feb-2004 ru

Only include ../Makefile.inc once in loader/Makefile.


125127 28-Jan-2004 nyan

MFi386: revision 1.33

PR: kern/62005


125117 27-Jan-2004 schweikh

Sync with Oxford Dictionary. Style (add missing full stops) while I'm here.


125091 27-Jan-2004 des

Rename the kern.vm.kmem.size tunable to the more logical vm.kmem_size. To
assure backward compatibility (conditional on !BURN_BRIDGES), look it up
by its old name first, and log a warning (but accept the setting) if it
was found. If both the old and new name are defined, the new name takes
precedence.

Also export vm.kmem_size as a read-only sysctl variable; I find it hard to
tune a parameter when I don't know its default value, especially when that
default value is computed at boot time.


124818 21-Jan-2004 jhb

If a transfer to or from a floppy disk crosses a 64k boundary, we have to
use a bounce buffer for the actual transfer to avoid crossing a 64k
boundary. To do this, we malloc a buffer twice as big as we need and then
find an aligned block within that buffer to do the transfer. The check
to see which part of the block we use used the wrong variable for part of
the condition meaning that in certain edge cases we would ask the BIOS to
cross a 64k boundary. The BIOS request would then fail resulting in file
transfers that just magically fail in the middle without any apparent
reason. Specifically, my tests for the splitfs boot floppies managed to
trigger this edge case.

MFC after: 1 week
X-MFC-info: along with fixes to libstand filesystems


124648 18-Jan-2004 nyan

PC98 uses the different frame code.


124647 18-Jan-2004 nyan

Fix to support KANA and graphics characters which code are over 0x80.


124445 12-Jan-2004 jhb

- Use constant for shift when converting file length in bytes to a sector
count.
- Fix the twiddle output so that it actually spins.
- Save %cx around BIOS calls to read in sectors from the disc as at least
one BIOS trashes %cx when called to read off of a USB CD-ROM drive.

Submitted by: Martin Nilsson <martin@gneto.com>
MFC after: 1 week


124306 09-Jan-2004 scottl

Disable the APIC when selecting the 'Safe Mode' option of the loader. This
will disable both APIC interrupt routing and SMP.


124179 06-Jan-2004 obrien

Allow one to specify the com port settings for boot0sio.


124140 04-Jan-2004 obrien

Convert to __FBSDID.


124139 04-Jan-2004 obrien

Convert to __FBSDID.


123703 21-Dec-2003 grehan

- Add ':' as a separator between the OpenFirmware device space and
the file path. Commonly used on Macs e.g. "hd:9".
- Update the ofw_setcurrdev routine to match libstand setenv prototype

Not objected to by: sparc64


123702 21-Dec-2003 grehan

Make __elfN(ofw_loadfile) match parameter declaration for file_format
in boot/common/bootstrap.h. Having a 32-bit size when a 64-bit param
is declared wreaks havoc on PPC.

Not objected to by: sparc64


123701 21-Dec-2003 grehan

Only print out an error if returned data size is < 0. A value of 0
happens almost every time at the end of a file when using NFS.

No objection by: sparc64


123700 21-Dec-2003 grehan

Use daddr_t instead of u_long for byte offset in strategy
routine to avoid >4G truncation on 32-bit systems.

no objection by: sparc64


123699 21-Dec-2003 grehan

- use correct pointer arithmetic in heapsize calculation
- handle multiple Ofw memory regions when determining mem size
- allow currdev to be set as a loader command-line option.
parse() is used to allow future options to be processed.


123476 11-Dec-2003 jhb

- Change the lookup() function to report success or failure using the carry
flag rather than explicitly halting if a lookup failed.
- Add a loop around the call to lookup() to traverse an array of
nul-terminated strings for possible paths to the boot loader. A double
nul character denotes the end of the list.
- Add a new message to say that the boot failed if all of the path lookups
for a boot loader file failed.
- Add '/boot/loader' as a second boot path. If you build an ISO using
risky options to mkisofs such as -U then the loader will be called
'/boot/loader' rather than '/BOOT/LOADER;0'. This allows cdboot to work
with such risky ISO images.
- Bump version to 1.2 to denote added functionality.

The basic idea as well as some of the code were provided by the submitter,
but I added some extra code to use a loop rather than hard-code just 2
possible paths.

PR: misc/43543
Submitted by: kientzle
MFC after: 1 week


123470 11-Dec-2003 jhb

Properly fix a typo that the previous revision made even worse.


123399 10-Dec-2003 jhb

Fix typo in comment.


123377 10-Dec-2003 grehan

Enable FICL build on powerpc


123376 10-Dec-2003 grehan

Update libstand filesystems to be in-line with tier-1 platforms.


123375 10-Dec-2003 grehan

- Bring Makefile up to rev with sparc64 in terms of config options and rules
- Move loader relocation up to 0x1C00000. This is in line with OSX bootx,
and allows more space for boot-time modules/ramdisks without conflicting
with OpenFirmware's use of RAM


123374 10-Dec-2003 grehan

Disable floating point on PowerPC for the ficl library.


123373 10-Dec-2003 grehan

Define 'arch-powerpc'


123372 10-Dec-2003 grehan

FICL system-dependent files for powerpc. Taken from the i386 versions,
which were the most relevant.


123343 09-Dec-2003 marcel

Fix the build of libski now that we use the "official" MADT table
definitions. Those are slightly different than the ones we used
before ACPI-CA 20031203 got imported. No structural or functional
change.


123336 09-Dec-2003 obrien

Sync these two files.


123302 08-Dec-2003 obrien

Hook boot0sio to the build. Use 'boot0cfg -b /boot/boot0sio' to use.


123301 08-Dec-2003 bms

Add a serial console capable version of the FreeBSD boot manager. This has
been lying around my tree(s) for the past year or so. It could do with TLC.

Requested by: obrien
Sponsored by: Weyland-Yutani Corporation


122942 21-Nov-2003 dcs

With the beastie menu a problem was introduced in which selecting a
different kernel to boot with kernel="NAME" would load the kernel and
loader.conf-selected modules from /boot/NAME, but it would not change
module_path. So, for instance, the automatically loaded acpi.ko would come
from /boot/kernel/acpi.ko, *always*.

Mind you, this happened for unassisted boot. If you interrupted, typed
"unload" and then "boot NAME", it would Do The Right Thing.

The source of the problem is the double initialization with beastie's
loader.rc. One would happen inside "start", and would load the kernel. The
next one would happen later in the loader.rc script, resetting module_path.

Because module_path is set to the Right Value by the functions in support.4th
that actually load the kernel, when beastie.4th proceeded to boot
module_path would remain wrong, as the kernel was already loaded.

This can be corrected by removing either initialization, and also by changing
the command used by beastie.4th from "boot" to "boot-conf", which makes sure
you use the right kernel and modules.

I chose to remove the second initialization, since this let you interrupt
(or confirm) boot before beastie even comes up. I avoid also doing the
boot-conf change because that would simply cause the kernel and modules to
be loaded twice (in fact, that was my original patch, until, in writing this
very commit message, I saw the error of my ways).

This commit changes the semantics of module loading when using the beastie
menu. Now it does what one would expect it to, but not what it was actually
doing, so something may break for unusual setups depending on broken
behavior. As our japanese friends so nicely put it, shikata ga nakatta. :-)

Approved by: re (scottl)


122923 20-Nov-2003 jhb

Update the size of the OS string table that wasn't updated in the previous
commit that removed the UNIX entry.

Submitted by: Rudolf Cejka <cejkar@fit.vutbr.cz>
Approved by: re (rwatson)


122806 16-Nov-2003 phk

When rebooting the machine jump to 0xf000:0xfff0 instead of 0xffff:0x0.

While we end up the same place, we end up with two different CS register
values after the jump and 0xf000 is compatible with the hardware reset
value.

This makes a difference if the BIOS does a near jump before a far jump.

Detective work and patch by: Adrian Steinmann <ast@marabu.ch>


122753 15-Nov-2003 nyan

MFi386: revision 1.13.


122749 15-Nov-2003 bde

Changed the RB_PAUSE flag from 0x40000 to 0x100000 and marked the old
value as reserved for internal use in boot blocks, because RB_PAUSE
broke binary compatibility by usurping the RB_DUAL flag. Probably no
one except me has boot blocks for which this matters, since most boot
blocks based on biosboot including pc98's boot2 can't boot elf kernels,
and /boot/loader doesn't properly pass flags set by the previous stage.

reboot.h:
Also mark the historical RB_PROBEKBD flag (0x80000) as reserved for
internal use in boot blocks.

boot2.c:
Added comments to inhibit usurping of other flags.

Approved by: guido, imp
MFC after: 1 week


122499 11-Nov-2003 jake

Set RB_SERIAL in boothowto if the firmware output-device is ttya or ttyb.
This ensures that uart gets a higher console priority than syscons when
a serial console is being used. Testing against the "console" environment
variable doesn't make sense since we only have one loader console driver.


122463 11-Nov-2003 bde

Include <sys/reboot.h> the definition of RB_BOOTINFO. The previous
commit broke the world because it depended on namespace pollution that
was only in my version of <machine/bootinfo.h>. The include was removed
in rev.1.63 after the last reference to it went away in rev.1.61.


122433 10-Nov-2003 bde

Fixed loss of setting of the RB_BOOTINFO flag in rev.1.43. Fixed wrong
comment about this flag in rev.1.61. It is not historical like the
comment said; it is the flag that says that most of what is laboriously
put in the bootinfo struct is actually there. Newer kernels were
bootable by even the broken boot2 without losing anything except the
symbol table, but older kernels need at least the memory sizes.

Restoring the "|" with RB_BOOTINFO that was lost in rev.1.43 costs 5
bytes. The fix can be done in only 4 bytes by fixing some code that
was removed in rev.1.61 (put RB_BOOTINFO back in in the initial value
of "opts" and fix RBX_MASK to not clobber it.)


122351 09-Nov-2003 marcel

Implement PAL_HALT_LIGHT now that the kernel halts the processor
when idle. All we have to do is return.


122350 09-Nov-2003 marcel

Do not strip skiload when installed. The stripped binary does not load
in the simulator.


122177 06-Nov-2003 jhb

Fix an incorrect quote character in an M4 test conditon. Basically, one
of the verbose print statements that BTXLDR_VERBOSE enables wasn't properly
enabled.


121973 03-Nov-2003 iedowse

Override the root server address if an IP address is specified in
the root path. This is reported to make non-PXE netbooting, such as
is used on sparc64 systems, work correctly when the TFTP server is
not the same as the root server.

PR: kern/57328
Submitted by: Per Kristian Hove <Per.Hove@math.ntnu.no>


121632 28-Oct-2003 scottl

Directly call the 'reboot' word instead of indirectly evaluating it.


121618 27-Oct-2003 scottl

Directly call the 'boot' word instead of indirectly evaluating it.

Submitted by: dcs


120118 16-Sep-2003 bde

Don't repeat selected defines from ns16550.h or sioreg.h. Just
include ns16550.h. The missing installation of ns16550.h was fixed
long ago and the misplaced defines in sioreg.h were fixed recently.


120031 13-Sep-2003 scottl

Apply Aleksander Fafula's crayons to the beastie. Add the this line to
/boot/loader.conf to see the pretty colors =-)

loader_color="YES"


119880 08-Sep-2003 obrien

Use __FBSDID().
Also some minor style cleanups.


119714 03-Sep-2003 phk

Add BOOT_PXELDR_ALWAYS_SERIAL option which forces serial console.


119483 25-Aug-2003 obrien

Use __FBSDID().
Also some minor style cleanups.


119482 25-Aug-2003 obrien

Use __FBSDID().
Also some minor copyright style cleanups.


119253 22-Aug-2003 imp

Many newer CF do not handle having the entire track read from them at
boot time. Instead, read it a sector at a time. While this sounds
like a significant slowdown, I've not been able to measure any
signficant difference.

Submitted by: luigi
Reviewed by: jhb, sam (both a while ago)
MFC After: 3 days


118982 16-Aug-2003 obrien

FICL doesn't build on PowerPC yet, so disable.


118607 07-Aug-2003 jhb

Consistently use the BSD u_int and u_short instead of the SYSV uint and
ushort. In most of these files, there was a mixture of both styles and
this change just makes them self-consistent.

Requested by: bde (kern_ktrace.c)


118604 07-Aug-2003 njl

Null terminate the OEM hint. This rids my laptop of the smiley face that
would follow the 6 valid chars of the table entry.


118485 05-Aug-2003 grehan

Fix asm string newlines to keep gcc3.3 happy. Use register prefixes
to make the asm a bit more readable.


118346 02-Aug-2003 marcel

Don't hardcode unit 0 for the current device if we're loaded from an
EFI file system. When booting from a CD and there's already an EFI
system partition on the disk, setting the current device to unit 0
will select the harddisk. This invariably breaks installing FreeBSD
when other operating systems have been installed before.

We obviously want to do the same when we're booting over the network.
Maybe later.

Based on a patch (from memory) from: arun


117677 17-Jul-2003 marcel

Fix the ski loader, broken by the gcc upgrade. Update the linker
script to match the one for the EFI loader and rewrite __start()
in assembly to have gp defined without getting in the way of the
compiler.


117676 17-Jul-2003 marcel

Have the linker script look more like the default linker script
on ia64. This fixes the breakage caused by the gcc upgrade that
resulted in a broken executable.


117529 13-Jul-2003 njl

Add include file so this builds with new acpica

Reported by: Kevin Oberman <oberman@es.net>


117511 13-Jul-2003 nyan

Fixed build error with GCC 3.3.1


117448 11-Jul-2003 tmm

NFS support should be conditional on LOADER_NFS_SUPPORT, not
LOADER_NET_SUPPORT.


117160 02-Jul-2003 ru

Revert non-style part of the recent two deltas that dealt with
using as(1) to compile plain assembler source files; bsd.lib.mk
has been fixed (in revision 1.147).


117158 02-Jul-2003 ru

sys/ia64/ia64/pal.s has been repocopied to pal.S.

Approved by: marcel
Repocopied by: joe


117156 02-Jul-2003 ru

pal_stub.s has been repo-copied to pal_stub.S.

Approved by: marcel
Repocopied by: joe


117090 01-Jul-2003 brueffer

Add the beastie_disable variable which allows to turn the beastie
boot menu on and off.

Reviewed by: scottl


117081 30-Jun-2003 ru

bsd.lib.mk,v 1.143 no longer uses ld(1) directly to strip
symbols from intermediate object files, so these hacks to
get AMD64 compile are no longer needed.

Tested on: sledge.FreeBSD.org


117075 30-Jun-2003 ru

Switch to using bsd.prog.mk; this gives us back the standard
.s.o transformation rule.


117053 30-Jun-2003 ru

MFi386: revision 1.16.


117052 30-Jun-2003 ru

Revision 1.13, besides its useful part, replaced bsd.prog.mk by
bsd.lib.mk and thus broke the build since AFLAGS were not taken
into considered anymore, as bsd.lib.mk currently has wrong .s.o
rule that uses cc(1) instead of as(1).

Revision 1.14 reverted to using as(1), and revision 1.15 brought
AFLAGS back to the business, but revision 1.14 also broke "make
clean".

To fix this, but not break anything that was fixed in revisions
1.13-1.15, we revert mostly to revision 1.13 except for switching
back to using bsd.prog.mk. This gives us back the default .s.o
rule from sys.mk that uses as(1), and fixes "make clean" by
restoring the full contents of OBJS.

Also fixed LDFLAGS.


117044 29-Jun-2003 brueffer

Capitalize an occurrence of 'ficl' for consistency.

Submitted by: Andre Guibert de Bruet <andy@siliconlandmark.com>
MFC after: 3 days


116864 26-Jun-2003 peter

Build on amd64. Yes, I know this isn't particularly nice.


116451 16-Jun-2003 iedowse

When looking for the ':' separator in the root path, don't go past
the terminating '\0'. Since the initialisation of rootpath in
libstand/bootp.c may copy junk into the rest of the buffer, it was
possible for the code to find a ':' after the '\0' and do the wrong
thing.

Reviewed by: ps
MFC after: 1 week


116415 15-Jun-2003 jake

Remember to release the loader's heap.

Reviewed by: tmm


116175 10-Jun-2003 scottl

Don't start the beastie menu if the 'beastie_disable' variable is set to
'YES'.

If the user selects to escape to the loader prompt, set 'autoboot_delay'
to 'NO' so that the prompt timer doesn't run.


116003 08-Jun-2003 nyan

Add help file for pc98.


116002 08-Jun-2003 nyan

Enable new boot menu.


116001 08-Jun-2003 nyan

Don't load the acpi module.


116000 08-Jun-2003 nyan

Set arch-pc98 env to true for pc98.


115964 07-Jun-2003 obrien

Add ${AFLAGS} to 'as' invocation.


115946 07-Jun-2003 nyan

MFi386: revisions 1.13 and 1.14.


115944 07-Jun-2003 nyan

MFi386: revision 1.30.


115941 07-Jun-2003 obrien

Don't use a C compiler to assemble a pure asm file.


115899 06-Jun-2003 kuriyama

Tweak make values and targets not to build kgzldr.o at
installation stage.

Reviewed by: bde


115670 02-Jun-2003 obrien

Don't use a C compiler to assemble a pure asm file.


115638 01-Jun-2003 obrien

Accpet '1'..'5' in place of F1..F5 for serial console users.

Reviewed by: Bruce M Simpson <bms@spc.org>


115451 31-May-2003 scottl

Man, I'm not on the ball. 4th does not need to escape '\' chars. This
should make our beloved friend look less like he has a massive head wound.


115434 31-May-2003 scottl

Flag when ACPI has been disabled by the user so that sysinstall can do
something with it.


115423 31-May-2003 scottl

Enable the new bootloader for i386 only. The new loader.rc is will only
be installed if an old one does not exist, i.e. only during install, not
during upgrades.

Approved by: re


115410 30-May-2003 scottl

Add a new bootloader menu. Pull in screen.4th and frames.4th from the
examples directory to support it. This is installed only on i386 for
now. It will be enabled in a later commit.

Approved by: re


115113 17-May-2003 ru

Fixed the markup and wording of the kern.ipc.nsfbufs tunable.
(It does not modify NSFBUFS, but just overrides it if set.)

Approved by: re (blanket)


115091 17-May-2003 peter

Fix a bug in the AMD64 trampoline. I misunderstood the implicit
32->64 bit zero extend. This changes a movl to an orq.

Approved by: re (amd64 bits)


115054 16-May-2003 murray

Add variables for missing network drivers.

PR: kern/51911
Submitted by: David Yeske <dyeske@yahoo.com>
Approved by: re


114937 12-May-2003 peter

Fix lookup of module metadata on amd64 systems. While this is in
common code, the non-trivial part is #ifdef'ed and only executes when
loading amd64 kernels. The rest is trivial but needed for the the amd64
case. (Two variables changed from char ** to Elf_Addr).

Approved by: re (amd64 "low-risk" stuff)


114933 12-May-2003 peter

Revert leftover AMD64 disable-acpi-module stuff.


114920 11-May-2003 peter

For amd64 kernels, repeat the 1GB mapping over the entire address space
instead of just at 0GB and 1GB marks. This gives more flexibility for
the choice of KERNBASE.

Approved by: re (amd64 stuff)


114707 05-May-2003 obrien

Since we insist on loading the POS ACPI by default, give the poor user
instructions on the main help screen for disabling it.


114654 04-May-2003 murray

Fix a bunch of typos and grammatical errors.

PR: docs/40234
Submitted by: Chris Pepper <pepper@rockefeller.edu> (mostly)
MFC After: 3 days


114521 02-May-2003 kato

IPLware support. The `IPLware' program assumes boot menu program
begins with the `jmp 0x2d4' near jump.


114407 01-May-2003 nyan

Fix to build pc98 boot loader after support amd64.


114386 01-May-2003 peter

Commit a missed change to keep in sync with the MI elf loader.


114385 01-May-2003 peter

Argh. This was broken by the last-minute elf32/elf64/"elf kernel" changes.


114380 01-May-2003 peter

Nuke; repocopied to elf32_freebsd.c where it lives on.


114379 01-May-2003 peter

Enable the i386 loader to load and run an amd64 kernel. If this puts
things over floppy size limits, I can exclude it for release builds or
something like that. Most of the changes are to get the load_elf.c file
into a seperate elf32_ or elf64_ namespace so that you can have two
ELF loaders present at once. Note that for 64 bit kernels, it actually
starts up the kernel already in 64 bit mode with paging enabled. This
is really easy because we have a known minimum feature set.

Of note is that for amd64, we have to pass in the bios int 15 0xe821
memory map because once in long mode, you absolutely cannot make VM86
calls. amd64 does not use 'struct bootinfo' at all. It is a pure loader
metadata startup, just like sparc64 and powerpc. Much of the
infrastructure to support this was adapted from sparc64.


114343 30-Apr-2003 peter

We use i386 boot code on AMD64.


114339 30-Apr-2003 peter

ACPI will always be present on AMD64 - it will never be an autodetect
module.


114338 30-Apr-2003 peter

Also look for an "elf64 kernel" (for sparc64) and "elf32 kernel" (for
powerpc) when building metadata.


114246 29-Apr-2003 njl

Support functions for the new ACPI import.
* AcpiOsDerivePciId(): finds a bus number, given the slot/func and the
acpi parse tree.
* AcpiOsPredefinedOverride(): use the sysctl hw.acpi.os_name to
override the value for _OS.

Ideas from: takawata, jhb
Reviewed by: takawata, marcel
Tested on: i386, ia64


113583 16-Apr-2003 phk

Cut&Paste considered far too easy:

Don't include <sys/disklabel.h>


113161 06-Apr-2003 peter

Zap some a.out leftovers


113083 04-Apr-2003 phk

Libdisk does not need to include <sys/diskslice.h> any more.

Move the remaining bits of <sys/diskslice.h> to <i386/include/bootinfo.h>

Move i386/pc98 specific bits from <sys/reboot.h> to
<i386/include/bootinfo.h> as well.

Adjust includes in sys/boot accordingly.


113042 04-Apr-2003 marcel

Remove `#ifndef lint' left behind after previous change.


113038 03-Apr-2003 obrien

Use __FBSDID rather than rcsid[].


112091 11-Mar-2003 ru

FreeBSD 5.0 has stopped shipping /modules 2.5 years ago. Catch
up with this further by excluding /modules from the (default)
kern.module_path.


111957 07-Mar-2003 trhodes

Fix a few spelling errors.

Submitted by: Stefan Farfeleder <stefan@fafoe.dyndns.org> via -doc.


111890 04-Mar-2003 seanc

Document the tunable kern.ipc.nsfbufs in help.common and loader.8. Small
nearby grammar fixup that saves a line of display while in the loader
(help set tunables), but reuses the line for kern.ipc.nsfbufs.

Approved by: roam


111852 03-Mar-2003 ru

FreeBSD 5.0 has stopped shipping /modules 2.5 years ago. Catch
up with this further by excluding /modules from the (default)
kern.module_path.


111764 02-Mar-2003 ru

Fixed sys/boot/pc98/boot2/Makefile to use kern.mk and
get rid of bsd.kern.mk completely.

OK'ed by: bde


111749 02-Mar-2003 harti

Add two loader tuneables that allow one to change the maximum number of
queue items that can be allocated by netgraph and the number of free queue
items that are cached on a private list.

Netgraph places an upper limit on the number of queue items it may allocate.
When there is a large number of netgraph messages travelling through the
system (100k/sec and more) there is a high probability, that messages get
queued at the nodes and netgraph runs out of queue items. In this case the data
flow through netgraph gets blocked. The tuneable for the number of free
items lets one trade memory for performance.

The tunables are also available as read-only sysctls.

PR: kern/47393
Reviewed by: julian
Approved by: jake (mentor)


111693 01-Mar-2003 marcel

Speed up debugging in the context of unexpected traps by printing
the address of the image base of the loader. Given cr.iip, we can
use the symbol table to figure out what function caused the trap.


111692 01-Mar-2003 marcel

Paranoia: Don't use the length of the option string alone to
determine whether we have command line options. We expect a
valid string pointer as well.


111543 26-Feb-2003 marcel

Increase the block size for reading and writing from 8KB to 1MB and
introduce a preprocessor define for it. The larger block size
significantly speeds up the loading of the kernel.

Submitted by: Arun Sharma <arun.sharma@intel.com>


111536 26-Feb-2003 obrien

Consistently use NOFORTH to control the usage of ficl.


111490 25-Feb-2003 ru

Fixed CLEANFILES.

Submitted by: cron


111456 25-Feb-2003 obrien

Only apply rev 1.10 (which hacks around the i386 boot2 being too big for
both ufs1 and ufs2 support) on i386.


111410 24-Feb-2003 mckusick

Revert to old (broken for over 1.5Tb filesystems) version of cgbase
so that boot loader once again will fit.

Sponsored by: DARPA & NAI Labs.


111168 20-Feb-2003 marcel

Simplify page alignment.


110783 13-Feb-2003 benno

Don't bother to build ficl if NOFORTH is defined.


110554 08-Feb-2003 trhodes

s/hw.pci_allow_unsupported_io_range/hw.pci.allow_unsupported_io_range/

The former was incorrect and gave an `unknown oid' error.


110211 01-Feb-2003 marcel

Remove special casing for running in the simulator from the kernel
and instead add platform, firmware and EFI stubs to the loader.
The net effect of this change is that besides a special console and
disk driver, the kernel has no knowledge of the simulator. This has
the following advantages:
o Simulator support is much harder to break,
o It's easier to make use of more feature complete simulators.
This would only need a change in the simulator specific loader,
o Running SMP kernels within the simulator. Note that ski at this
time does not simulate IPIs, so there's no way to start APs.

The platform, firmware and EFI stubs describe the following hardware:
o 4 CPU Itanium,
o 128 MB RAM within the 4GB address space,
o 64 MB RAM above the 4GB address space.

NOTE: The stubs in the skiloader describe a machine that should in
parts be defined by the simulator. Things like processor interrupt
block and AP wakeup vector cannot be choosen at random because they
require interpretation by the simulator. Currently the simulator is
ignorant of this.

This change introduces an unofficial SSC call SSC_SAL_SET_VECTORS
which is ignored by the simulator.

Tested with: ski (version 0.943 for linux)


110206 01-Feb-2003 marcel

SSC calls use break immediate 0x80000. 0x80001 only works for
break.i. Ski is rather broken in this respect.


110102 30-Jan-2003 nyan

MFi386: Install the "boot" image which is boot1 + boot2.


109888 26-Jan-2003 phk

Link /boot/boot1 to the name /boot/boot to avoid per-arch naming of the
bootstrap code for disklabel using architectures.


109886 26-Jan-2003 phk

Build a file "boot" which consists of boot1 and boot2 concatenated.

There is little if any reason to treat the two components separately
and it will simplify disklabel(8) and libdisk if we didn't.


109638 21-Jan-2003 nyan

Use NDOSPART instead of NEXTDOSPART.


109637 21-Jan-2003 nyan

MFi386: revision 1.63.


109616 21-Jan-2003 jake

Fix module dependency (pre)loading on sparc64 by relocating the variables
read from the raw kld files.

Submitted by: Hartmut Brandt <brandt@fokus.gmd.de>
PR: 46870
Tested on: alpha (obrien), i386, sparc64


109559 20-Jan-2003 phk

Use NEXTDOSPART instead of MAX_SLICES.


109498 18-Jan-2003 obrien

Simplify the Makefile by just using our standard PROG variable.


109281 15-Jan-2003 mdodd

Minimally document hw.syscons.sc_no_suspend_vtswitch.

Requested by: Nate Lawson <nate@root.org>


109235 14-Jan-2003 imp

Save 4 more bytes by not initializing opts to 0. This moves it from
the data section to the bss section givig us initialization for free.

Noticed by: bde


109197 13-Jan-2003 imp

Fix interactive booting:
o Revision 1.38 introduced the -n flag. It conflicted with the
RB_BOOTINFO flag, so was in effect always on. Change the -n flag to
be bit 0x1c instead of 0x1f. This also had the consequence that a mal-formed
/boot.config would render the system unbootable because the user was
unable to enter anything at all on the command line.
o Remove the initialization of opt to be RB_BOOTINFO since we filter that bit
out and do not otherwise use it.

Reviewed by: jhb
MFC after: 3 days


108791 06-Jan-2003 nyan

Add SCSI MO device support.

Submitted by: Kawanobe Koh <kawanobe@st.rim.or.jp>


108650 04-Jan-2003 nyan

Rename the dos_partition structure for pc98 to pc98_partition.


108476 31-Dec-2002 obrien

RIP liloldr.
It is not complete (the LILO root= specification isn't passed to our
loader for instance), it has not been touched in over 2 years. Linux has
moved on to GRUB, so this is OBE now. If someone creeps up to work on it,
it could become a port.


108470 30-Dec-2002 schweikh

Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/
Add FreeBSD Id tag where missing.


108149 21-Dec-2002 obrien

-mno-align-long-strings can make things smaller, so lets use it in hopes
that it does here.


108119 20-Dec-2002 imp

Put back the casts to unsigned. While no strictly necessary for its
current uses, the name strcmp has strong connotations that shouldn't
lightly be discarded. This doesn't cost us anything.

Submitted by: bde


108115 20-Dec-2002 jake

Fix breakage from earlier inadvertant changes.


108100 19-Dec-2002 jake

Renamed the loader's zipfs to gzipfs. zipfs.c was repo-copied to gzipfs.c.


108025 18-Dec-2002 marcel

Add command `hcdp'. This command dumps the DIG64 HCDP table if one
exists.


108016 18-Dec-2002 imp

I didn't intend to delete this rm from the Makefile. It snuck in at
the last second before the commit.

# likely we can remove this hack now that gcc generates better aligned code
# in the align to word case.

Noticed by: bde


108005 17-Dec-2002 imp

Reduce diffs with Peter's expanded diffs:
1) Put back the keyboard printing printf, at the cost of 58 bytes.
2) Minor tweak to getstr at no apparent cost.


108000 17-Dec-2002 imp

Make both UFS1 and UFS2 fit on the same boot blocks. These are a
subset of Peter's patchs that are believed to be safe.

Makefile tweaks:
o -fomit-frame-pointer
o Change default to building both UFS1 and UFS2 bootblocks.

Lots of boot2 tweaks:
o lookup is only ever called with kname, so use it directly.
o inline memsize
o getstr are only ever called with cmd, so hardware that.
o tweaks to the parsing code to test after the conversion rather than
before since we tested after anyways.
o eliminate support for %x in printf.
o eliminate a few bytes in printfs.
o Tweak the boot banner.
o eliminate support for wd and " " devices (I might add wd back to
keep bde happy).
o eliminate support for a few arguments.

This takes us from -162 bytes free to 67 bytes free.

I've tested this only on a few systems, so be careful when updating to
this change.

Submitted by: peter, imp, ian


107889 15-Dec-2002 obrien

Remove unneeded casts. Add others to make WARNS=5 happy.


107879 14-Dec-2002 phk

Employ the unused bytes after the disklabel in the second sector. This makes
it possible to make UFS1_ONLY and UFS2_ONLY versions which fit inside the
traditional 16 sectors.

Remove assorted now unneeded hackery.

UFS1_AND_UFS2 still needs another 150 bytes to work, and that is probably
not within our reach, ever.


107878 14-Dec-2002 phk

Remove unnecessary call to fsread().


107877 14-Dec-2002 phk

Restructure so we can compile UFS1_ONLY, UFS2_ONLY or UFS1_AND_UFS2
versions from the same basic function.


107875 14-Dec-2002 phk

Always use the smaller GCC builtin memcpy


107874 14-Dec-2002 phk

Remove unused variable.


107869 14-Dec-2002 phk

Don't fill in the table with the BIOS idea about disk-geometry, we don't
use it. This saves a surprising number of bytes.


107788 12-Dec-2002 ru

Uniformly refer to a file system as "file system".

Approved by: re


107733 10-Dec-2002 marcel

Pass the HCDP table address to the kernel. If no such table exists,
NULL is passed. The address of the HCDP table can be found by
iterating over the configuration tables in the EFI system table.
To avoid more duplication, a function can be called with the GUID
of interest. The function will do the scanning. Use the function
in all places where we iterate over the configuration tables in
an attempt to find a specific one.

Bump the loader version number as the result of this.

Approved by: re (blanket)


107724 10-Dec-2002 marcel

The exit() function has been moved to libefi.c to better deal with
cleaning up after ourselves.

Approved by: re (blankoscheck)
German corrections: Alexander (both :-)


107723 10-Dec-2002 marcel

Change the startup code to fix a memory leak and to allow us to
accept load options (=command line options).

The call graph changes from *entry*->efi_main->efi_init, where
efi_main is the EFI equivalent of main to *entry*->efi_main->main,
where main is what you'd expect. efi_main now is what efi_init was.
The prototype of main follows that of C. The first argument is argc
and the second is argv. There is no third argument.
Allocation of heap pages is now handled by the EFI library and it
now deallocates the pages when main() returns or when exit() is
called. This allows us to safely return to the boot manager (or
EFI shell) without leaks. EFI applications are responsible to free
all memory themselves.

Handling of the load options is a bit tricky. There are either no
load options, load options in ASCII or load options in Unicode.
The EFI library will translate the ASCII options to Unicode options
as to simplify user code. Since the load options are passed as a
single string (if present) and main() accepts argc and argv, the
startup code also has to split the string into words and build the
argv vector. Here the trickiness starts. When the loader is started
from the EFI shell, argv[0] will automaticly load the program name.
In all other cases (ie through the boot manager), this is not the
case. Unfortunately, there's no trivial way to check. Hence, a
set of conditions is checked to determine if we need to fill in
argv[0] ourselves or not. This checking is not perfect. There are
known cases where it fails to do the right thing. The logic works
for most expected cases, though. This includes the case where no
options are given.

Approved by: re (blanket)


107722 10-Dec-2002 marcel

o Make all GUID variables global to maximize reuse.
o Recognize the HCDP configuration table.
o Dump the GUID of tables we don't recognize.

Approved by: re (carte blanche)


107721 10-Dec-2002 marcel

Build EFI with -fshort-wchar so that L"some string" works with the
EFI has defined CHAR16.


107720 10-Dec-2002 marcel

Remove _putchar, _puts and _puthex. These functions are unused.

Approved by: re (blanket)


107686 08-Dec-2002 marcel

Add the GUID of the DIG64 HCDP table.


107683 08-Dec-2002 marcel

The boot manager sets the watchdog timer to 5 minutes before invoking
a boot option. When the timer expires the machine is rebooted.
Disable the watchdog timer for 2 reasons:
o We're an interactive program. We cannot guarantee that we've
booted the kernel in the time available to us. There have been
situations where netbooting the right kernel took 2 tries and
more time than given. Not to speak of the normal behaviour to
have the loader sitting at the prompt while the user is off
doing other things (such as figuring out what to type next ;-)
o We may not boot a kernel at all. We may exit as the result of
the user typing quit (assuming it took less than 5 minutes to
type it :-). It is documented that loaders should have disabled
the watchdog timer if they return to the boot manager. Not doing
so would cause a reboot while in the boot manager. This appears
to be harmless, besides of course the actual reboot.

Approved by: re (weisse karte)


107682 08-Dec-2002 marcel

In efi_cons_poll we check if a key is present (pending) by checking
the signaled state of the apropriate event. As a side-effect of
checking the event, it's signaled state is cleared if it was set.
In efi_cons_getchar we used to wait for the apropriate event to be
signaled before reading a character. This however does not work if
we poll before reading the characteri, such as during autoboot. On
a more compliant EFI implementation this resulted in the behaviour
that hitting a key during autoboot would stop the countdown, but
would then wait for a new character to arrive instead of reading
the already pending key that stopped the countdown.

The correct behaviour for efi_cons_getchar is to try to read a key
and if none is pending, to wait for the apropriate event to signal
the arrival of a new key.

Note that with the previous behaviour, the second key would determine
how the autoboot was interrupted. This would indicate that the first
key got lost. This indicates that EFI does not necessarily maintain
a queue of pending keys. FWIW...

Approved by: re (carte blanche)
French corrected by: various people :-)


107483 02-Dec-2002 jake

Fix a dumb bug that broke net booting on sparc64. The wrong length was
passed to strncmp.

Noticed by: tmm
Approved by: re
Pointy hat to: jake


107367 28-Nov-2002 marcel

Remove a left-over virtual mapping of uncached I/O port space.
Previous kernels unwantingly depended on this mapping, but as
of version 1.123 of src/sys/ia64/ia64/machdep.c this dependency
has been removed. Consequently, one has to update the kernel
before updating the loader. The documented/recommended upgrade
will suffice in this case.

Due to a visible (from the kernels point of view) change in
behaviour, bump the loader version number from 0.3 to 1.0.

Approved by: re (carte blanc)


107352 27-Nov-2002 jhb

Enable UFS2 support in boot1. Just as with sparc64 the same boot1 works
great with both UFS1 and UFS2 filesystems.

Approved by: re


107294 27-Nov-2002 mckusick

Create a new 32-bit fs_flags word in the superblock. Add code to move
the old 8-bit fs_old_flags to the new location the first time that the
filesystem is mounted by a new kernel. One of the unused flags in
fs_old_flags is used to indicate that the flags have been moved.
Leave the fs_old_flags word intact so that it will work properly if
used on an old kernel.

Change the fs_sblockloc superblock location field to be in units
of bytes instead of in units of filesystem fragments. The old units
did not work properly when the fragment size exceeeded the superblock
size (8192). Update old fs_sblockloc values at the same time that
the flags are moved.

Suggested by: BOUWSMA Barry <freebsd-misuser@netscum.dyndns.dk>
Sponsored by: DARPA & NAI Labs.


107266 26-Nov-2002 yar

Eliminate references to defunct kernel tunables.

Approved by: re
PR: bin/43343


107203 24-Nov-2002 marcel

MFp4:
o Show the contents of the AP wakeup descriptor when dumping SAL
information.
o Increase S/N ratio when listing the itr and dtr. Only show valid
mappings and give the total number of TRs.

Approved by: re (blanket)


107175 22-Nov-2002 dcs

The new "all sound drivers" driver name is snd_driver. Loader.conf didn't
knew about it, though. Now it does.

MFC after: 2 weeks


106845 13-Nov-2002 mdodd

Document loader tunables hw.pci.enable_io_modes and
hw.pci.allow_unsupported_io_range.

Submitted by: Hiten Pandya <hiten@angelica.unixdaemons.com>
Approved by: re (murray)


106842 13-Nov-2002 mdodd

Loader tunable 'machdep.disable_mtrrs'.
Sysctl of same name to reflect status.

Submitted by: jhb
Approved by: re (murray)
MFC after: 1 day


106738 10-Nov-2002 jake

Change the device path representation in libofw to use the full firmware
path, instead of an internal i386 specific one. Don't try to interpret
a disklabel in ofw_disk.c, open the partition's device node directly and
let the firmware do it. This fixes booting from a partition other than 'a'
on sparc64, which is needed to support more installation methods.

No objection: ppc


106385 03-Nov-2002 phk

Correctly recognize both bogus and genuine BSD disklabels.

Don't expect me to participate in a discussion which is which.

Sponsored by: DARPA & NAI Labs.


106335 02-Nov-2002 mini

Fix indentation of comments.


106330 02-Nov-2002 mini

Add loader variables to control the loading of various networking modules.

Submitted by: David Yeske <dyeske@yahoo.com>


105852 24-Oct-2002 marcel

o Fix a size calculation based on a 8KB page, while under EFI
pages are 4KB.
o As a second order fix, don't assume we have enough space
after the bootinfo block left in a page to hold the memory
map.
o A third order fix as that we removed the assumption that a
bootinfo block fits in a single 8KB page.

PR: ia64/39415
submitted by: Espen Skoglund <esk@ira.uka.de>


105427 18-Oct-2002 tmm

Pass the right number of tlb slots to the kernel. The allocation scheme
was changed in r1.4, but I neglected to update most of the code in
metadata.c.

Pointy hat to: tmm


105065 13-Oct-2002 jake

Compile in support for zipfs and bzipfs so we can load the gzipped mfsroot
that releases use.


104777 10-Oct-2002 nyan

Remove '-DUFS1_ONLY' from CFLAGS. It is not needed.


104683 08-Oct-2002 jhb

Revert MEM_USR back to 0xa000 for BTX clients. Instead, adjust boot2
to run at 0xc000 by changing its virtual start address from 0x1000 to
0x2000.

Tested by: phk


104680 08-Oct-2002 phk

Now that ufsread.c doesn't do 64bit divide remainder operations,
don't bother with libkern.

Sponsored by: DARPA & NAI Labs.


104679 08-Oct-2002 phk

Save a couple of bytes by not returning ints nobody care about.

Sponsored by: DARPA & NAI labs


104678 08-Oct-2002 phk

It seems that the only problem with UFS2 booting on i386 is the 64bit
divide/remainder calls. For reasons not resolved, compiling the
relevant routines from libkern into boot2 results in stack corruption.

Do the simple thing: Don't use 64bit divide/remainder operations.

Sponsored by: DARPA & NAI Labs


104673 08-Oct-2002 green

Reinstate rev 1.36 with an important line that got missed. Note this
also improves the "random undocumented offsets into various memory
spaces" a little bit.


104671 08-Oct-2002 phk

Remove unused TYPE_WD and TYPE_WFD.


104670 08-Oct-2002 phk

Correctly calculate dmadat: We need to take the address of _end, it's
contents is irrelevant and likely to be zero;

This doesn't change the resultant value, but it does save a couple of bytes
because &_end is constant.


104668 08-Oct-2002 phk

Unbreak boot2 by backing out rev 1.36 to Makefile, which does not
work as advertised:

bang# pwd
/bang/src/sys/boot/i386/boot2
bang# make clean >& /dev/null
bang# cvs -q update -r 1.35 Makefile >& /dev/null
bang# make >& /dev/null
bang# cat /usr/obj/`pwd`/boot2.h
#define XREADORG 0x725
bang# cvs -q update -r 1.36 Makefile > & /dev/null
bang# make clean > & /dev/null
bang# make > & /dev/null
bang# cat /usr/obj/`pwd`/boot2.h
#define XREADORG 0x25
bang#


104666 08-Oct-2002 phk

Save four bytes by shortening a string two chars.

Sponsored by: DARPA & NAI Labs.


104636 07-Oct-2002 green

Correct a bug in adding 0x700 to a number.


104635 07-Oct-2002 phk

Conditionalize the number of sectors loaded by boot1.s on UFS1/UFS12.

Conditionalize the "XX bytes left" checks reference on UFS1/UFS12.

Conditionally build the necessary 64bit math for boot2 if UFS12.

Sponsored by: DARPA & NAI Labs.


104632 07-Oct-2002 phk

Change the comment character from # to // in boot1.s and run
it through CPP so we can conditionalized things.

Sponsored by: DARPA & NAI Labs


104629 07-Oct-2002 phk

Correctly adjust for moved start address.

It seems that the existence of a "depend" target in src/sys/boot is not
to be taken as an indication that it actually does what one would expect,
at least it clearly threw my testing off.

Apologies to: jhb


104621 07-Oct-2002 nyan

Added '#include <sys/diskpc98.h>'.

Submitted by: kawanobe@st.rim.or.jp (Kawanobe Koh)


104620 07-Oct-2002 phk

Correctly compensate for both offset and unoffset on-disk BSD disklabels.

Sponsored by: DARPA & NAI Labs.


104618 07-Oct-2002 phk

Move MEM_USR a page upwards to make space for larger UFS1 boot2.

Load 4 sectors more than we used to. This is harmless overhead for
the UFS1_ONLY case, but sufficient for boot2(UFS1+2).

Sponsored by: DARPA & NAI Labs


104613 07-Oct-2002 phk

Ups, forgot to tell cvs commit about this file.
Move UFS1_ONLY to Makefiles instead of common/ufsread.c

Sponsored by: DARPA & NAI Labs


104612 07-Oct-2002 phk

Move the definition of UFS1_ONLY into the Makefiles where it belongs.

Sponsored by: DARPA & NAI Labs.


104413 03-Oct-2002 nyan

Connected boot2.


104412 03-Oct-2002 nyan

Added some header files from -stable and fixed the boot[12] programs.


104315 01-Oct-2002 iwasaki

Don't call INT 12H anymore in boot program.
Many recent machine have a broken INT 12H (Get base memory size)
implementation and boot program stops if INT 12H is called.

This commit should solve the problem at very first step of FreeBSD
installation occurred on newer some machines.

Reviewed by: bde, jhb
MFC after: 1 week


104272 01-Oct-2002 phk

Split MBR and PC98 on-disk sliceformats out from disklabel.h, step 1:

Peter had repocopied sys/disklabel.h to sys/diskpc98.h and sys/diskmbr.h.

These two new copies are still intact copies of disklabel.h and
therefore protected by #ifndef _SYS_DISKLABEL_H_ so #including them
in programs which already include <sys.disklabel.h> is currently a
no-op.

This commit adds a number of such #includes.

Once I have verified that I have fixed all the places which need fixing,
I will commit the updated versions of the three #include files.

Sponsored by: DARPA & NAI Labs.


104234 30-Sep-2002 peter

Use as's --defsym switch to compensate for the loss of the M4 substitution
of SIOPRT which broke kgzldr and therefore make release.

Pointed out by: murray


103877 24-Sep-2002 nyan

Fixed to build after removing a.out suppot.


103870 23-Sep-2002 alfred

use __packed.


103834 23-Sep-2002 peter

At great personal risk, add a __packed and __aligned(x) define that
expand to __attribute__((packed)) and __attribute__((aligned(x)))
respectively. Replace the handful of gcc-ism's that use
__attribute__((aligned(16))) etc around the kernel with __aligned(16).

There are over 400 __attribute__((packed)) to deal with, that can come
later. I just want to use __packed in new code rather than add more
gcc-ism's.


103641 19-Sep-2002 nyan

MFi386: Remove a.out support.


103639 19-Sep-2002 nyan

Remove -elf option.


103436 17-Sep-2002 peter

Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports. As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL. It has already lasted WAY beyond
that.

Notable exceptions:
gcc - I have not touched the a.out generation stuff there.
ldd/ldconfig - still have some code to interface with a.out rtld.
old as/ld/etc - I have not removed these yet, pending their move to ports.
some includes - necessary for ldd/ldconfig for now.

Tested on: i386 (extensively), alpha


102960 05-Sep-2002 iwasaki

Parse hint.acpi.0.disabled correctly.
Now that hint.acpi.0.disabled="0" won't disable acpi as expected.

Pointed-out by: bde


102862 02-Sep-2002 brooks

Make SCSI_DELAY setable at boot time and runtime via the
kern.cam.scsi_delay tunable/sysctl.

Reviewed by: mdodd, njl


102829 02-Sep-2002 jake

Remove NOFORTH=yes, it seems to work now thanks to scottl.


102807 01-Sep-2002 kan

Restore Rev. 1.40 (remove "Keyboard yes/no" printf).
GCC 3.2 overflows boot2 by 12 bytes, this patch brings it back
within the boundaries, with 12 bytes available for future bloat.

Approved by: obrien


102657 31-Aug-2002 scottl

Make ficl work on sparc64. The assumption that int == long == void * is
very pervasive in this code. This fixes a few of those assumptions and
band-aids over some others.

Tested on: ia32 alpha sparc64

Reviewed by: peter jake (in concept)


102623 30-Aug-2002 jhb

Revert previous untested revision. The i386 loader consists of three parts:
At the front is btxldr, in the middle is BTX itself (our mini-kernel), and
then the 'client' (loader.bin) which is the actual loader itself. boot2
just executes a raw ELF or a.out binary with the only setup provided being
that a bootinfo structure is passed on the stack. Now, since loader.bin
is a BTX client, the loader needs to be able to locate a BTX kernel for
the client to execute in the context. Thus, just like pxelder, btxldr
uses the a.out header on the loader binary to find the BTX kernel stored
in the loader and set it up. It does _not_ just reuse the BTX kernel
that boot2 invoked it with. This is because it can't assume that it will
_have_ a "spare" BTX kernel lying around. For example, when cdboot
loads the loader there isn't an existing BTX kernel. In fact, cdboot
will only work with an a.out loader as well since it also "borrows" the
BTX kernel in the loader binary (which it finds by parsing the a.out
header) just as pxeldr does. The only difference between cdboot and
pxeldr is where they get /boot/loader from.

If we wanted to make /boot/loader be an actual ELF binary we would need
to change the following utilites to handle that (and they all have to be
able to handle locating the BTX kernel inside of an ELF binary somehow):
- btxldr
- pxeldr
- cdboot

If we didn't want to require a flag day but make the transition smooth
then we need to be able to support both a.out and ELF versions of
/boot/loader which isn't exactly trivial since all three of these utilities
are written in assembly.

Pointy-hat to: peter


102612 30-Aug-2002 iwasaki

s/hint.acpi.0.disable/hint.acpi.0.disabled/

Fix device hints entry for disabling acpi(4).
This also should fix the arbitration with apm(4) when both drivers
are enabled.

Note that your /boot/device.hints needs to be updated if you want to
stop auto-loading acpi.ko or disable acpi(4).


102591 29-Aug-2002 peter

Try #2 at having /boot/loader default to ELF. Have pxeldr build its
own a.out version of loader.bin rather than depend on ../loader/loader
being a.out.


102588 29-Aug-2002 peter

Actually remove the stale a.out kld support. This is the stuff that was
never updated for the metadata infrastructure.


102556 29-Aug-2002 peter

Initiate deorbit burn of i386 a.out kld "support" in loader. Note that
this was quite broken, it never was updated for metadata support.
The a.out kld file support was never really used, as it wasn't necessary.
You could always load elf kld's, even in an a.out kernel.


102466 27-Aug-2002 trhodes

Whitespace fix from last commit.


102465 27-Aug-2002 trhodes

Fix some grammar errors in loader.conf.5

PR: 40237
Submitted by: Chris Pepper <pepper@rockefeller.edu>


102226 21-Aug-2002 robert

- Do not pretend to compile a kernel and remove the definition
of the _KERNEL macro.
- Do not include <sys/pcpu.h> for no reason.

Suggested by: jake


102219 21-Aug-2002 robert

- Define the macro _KERNEL to pretend we are compiling a kernel.
This is required by recent changes to <sys/pcpu.h>, which uses
the #error preprocessor directive to keep non-kernel
applications from using it.
_KERNEL is defined below the #include <stand.h>, because <stand.h>
removes the definition of _KERNEL.
- Move the inclusion of <sys/queue.h> above the inclusion of
<sys/linker.h> to avoid syntax errors.


102215 21-Aug-2002 scottl

Fix for stand-alone compiling

Reviewed by: mini


102011 17-Aug-2002 orion

Support for VIA VT8233 audio controller.


101824 13-Aug-2002 ru

mdoc(7) police: Get rid of hard sentence breaks.


101823 13-Aug-2002 ru

mdoc(7) police: revert unapproved changes in rev. 1.43, added missing markup bits in rev. 1.45.


101602 09-Aug-2002 iwasaki

Add help about hint.acpi.0.disable.


101558 09-Aug-2002 obrien

Restore autoloading of ACPI module.

Document the approved ways of disabling it.
Submitted by: Daniel O'Connor <doconnor@gsoft.com.au>


101556 09-Aug-2002 obrien

Don't auto load ACPI -- it causes trouble with my laptop and is TOTALLY
undocumented how to control its loading and queries to freebsd-current
go unanswered.


101287 04-Aug-2002 jake

Print out the strings in vers.o instead of hardcoding the loader banner.


101187 01-Aug-2002 rwatson

Sample loader.conf lines for various MAC modules.


101112 31-Jul-2002 jake

Stash various networking paramters in the environment for the kernel
to pick up, ala pxe.


100872 29-Jul-2002 ru

Drop support for COPY, -c has been the default mode of install(1)
for a long time now.

Approved by: bde


100391 20-Jul-2002 peter

Turn on -Wformat


100390 20-Jul-2002 peter

Fix printf format errors


100389 20-Jul-2002 peter

Work around some nasty bugs on the [beta] Itanium2's E1000 UNDI driver.

Bug#1: The GetStatus() function returns radically different pointers that
do not match any packets we transmitted. I think it might be pointing to
a copy of the packet or something. Since we do not transmit more than
one packet at a time, just wait for "anything".

Bug#2: The Receive() function takes a pointer and a length. However, it
either ignores the length or otherwise does bad things and writes outside
of ptr[0] through ptr[len-1]. This is bad and causes massive stack
corruption for us since we are receiving packets into small buffers on
the stack. Instead, Receive() into a large enough buffer and bcopy the
data to the requested area.


100388 20-Jul-2002 peter

Disable loader ufs support. It causes the loader to crash on the Itanium2
box that I have. We have no EFI disk drivers yet anyway (maybe that is the
problem).


100387 20-Jul-2002 peter

Fix printf format errors


100325 18-Jul-2002 nyan

Remove boot2 temporarily.


100318 18-Jul-2002 benno

Major rework of how we copy data into kernel space.

We now talk to the memory and mmu instances directly rather than using the
OpenFirmware "claim" method.


100187 16-Jul-2002 mp

Don't imply that setting the boot_ variables to "NO" will disable them.

MFC after: 3 days


100174 16-Jul-2002 nyan

Change include order.


100016 15-Jul-2002 keramida

Use present tense in all the verbs, when describing loader's startup.
Most of them are not in a future tense already.


99976 14-Jul-2002 charnier

The .Nm bootloader


99975 14-Jul-2002 charnier

The .Nm set of commands


99974 14-Jul-2002 charnier

The .Nm


99727 10-Jul-2002 benno

Add support for passing metadata.


99682 09-Jul-2002 iwasaki

Resolve conflicts arising from the ACPI CA 20020611 import.


99560 07-Jul-2002 jake

Enable netboot support by default, since it can now coexist with disk and
cdrom support. This avoids having to distribute separate loaders.


99546 07-Jul-2002 mp

Change help documentation for bootfile and module_path to reflect
the actual code. Both use a ";" (not a ",") to delimit entries.

PR: 39679
Submitted by: Cyrille Lefevre <cyrille.lefevre@laposte.net>
MFC after: 3 days


99541 07-Jul-2002 jake

Make building with ficl work. Unfortunately booting with it doesn't.


99539 07-Jul-2002 jake

Build ficl on sparc64 fwiw. It doesn't work.


99332 03-Jul-2002 mini

Add missing kernal tunables to loader.conf.

PR: i386/39085
Submitted by: David Yeske <dyeske@yahoo.com>


99170 30-Jun-2002 iwasaki

Fix a build problem for the ACPI CA 20020404 import.
Add definition of COMPILER_DEPENDENT_INT64 and also
fix definition of COMPILER_DEPENDENT_UINT64.

Pointed-out by: Michael Nottebrock <michaelnottebrock@gmx.net>


99013 29-Jun-2002 peter

Remove a couple of __P() stragglers.


98594 21-Jun-2002 jake

Enable cd9660 support by default.


98593 21-Jun-2002 jake

Enable UFS1_AND_UFS2 support for sparc64 by default. Booting from ufs1 or
ufs2 filesystems seems to work fine.


98556 21-Jun-2002 phk

Revert the part of Kirks UFS2 commit which added divdi3.c and moddi3.c
to libi386, this issue was resolved already in a cleaner way.


98542 21-Jun-2002 mckusick

This commit adds basic support for the UFS2 filesystem. The UFS2
filesystem expands the inode to 256 bytes to make space for 64-bit
block pointers. It also adds a file-creation time field, an ability
to use jumbo blocks per inode to allow extent like pointer density,
and space for extended attributes (up to twice the filesystem block
size worth of attributes, e.g., on a 16K filesystem, there is space
for 32K of attributes). UFS2 fully supports and runs existing UFS1
filesystems. New filesystems built using newfs can be built in either
UFS1 or UFS2 format using the -O option. In this commit UFS1 is
the default format, so if you want to build UFS2 format filesystems,
you must specify -O 2. This default will be changed to UFS2 when
UFS2 proves itself to be stable. In this commit the boot code for
reading UFS2 filesystems is not compiled (see /sys/boot/common/ufsread.c)
as there is insufficient space in the boot block. Once the size of the
boot block is increased, this code can be defined.

Things to note: the definition of SBSIZE has changed to SBLOCKSIZE.
The header file <ufs/ufs/dinode.h> must be included before
<ufs/ffs/fs.h> so as to get the definitions of ufs2_daddr_t and
ufs_lbn_t.

Still TODO:
Verify that the first level bootstraps work for all the architectures.
Convert the utility ffsinfo to understand UFS2 and test growfs.
Add support for the extended attribute storage. Update soft updates
to ensure integrity of extended attribute storage. Switch the
current extended attribute interfaces to use the extended attribute
storage. Add the extent like functionality (framework is there,
but is currently never used).

Sponsored by: DARPA & NAI Labs.
Reviewed by: Poul-Henning Kamp <phk@freebsd.org>


98472 20-Jun-2002 peter

Add boot_serial and boot_multicons variables to set RB_SERIAL and
RB_MULTIPLE since this seems to be the easiest way to add these flags
for non-forth loaders etc.


98113 11-Jun-2002 phk

#include <sys/disklabel.h> to get BBSIZE.


98110 11-Jun-2002 phk

Make the alpha architecture use the common ufsread().

Submitted by: ticso


98014 07-Jun-2002 benno

Uncomment some bits that we now need.


98013 07-Jun-2002 benno

Fix up the DMA buffer allocation call.


97867 05-Jun-2002 phk

Add explicit dependency on ufsread.c


97865 05-Jun-2002 phk

Remove UFS related #includes, they're read in ufsread.c now.


97864 05-Jun-2002 phk

Make sparc64 share ufsread.c with i386.

Sponsored by: DARPA & NAI Labs.


97863 05-Jun-2002 phk

Avoid entering IOCCC with a memcpy turned bcopy.


97861 05-Jun-2002 phk

Indent this file more like style(9).

Sponsored by: DARPA & NAI Labs.


97860 05-Jun-2002 phk

Preparation for UFS2 commit:

Factor the ufs reading code out of the i386/boot2 loader so it can
be reused by for instance sparc64.

Sponsored by: DARPA and NAI Labs.


97568 30-May-2002 schweikh

Fix a handful of typos and grammar bogons. No content changes.
Translators can ignore this commit.

MFC after: 2 weeks


97525 29-May-2002 schweikh

Fix a handful of typos and grammar bogons. No content changes.
Translators can ignore this commit.

MFC after: 2 weeks


97510 29-May-2002 jake

Add needed include of queue.h. Remove unneeded include of smp.h.


97445 29-May-2002 jake

Use a contrived 'tlb_entry' structure for passing the mappings for the
kernel text and data from the loader to the kernel, so that the tte format
is not part of the loader->kernel ABI.


97432 28-May-2002 jake

Sync with i386. The loader was being installed before the beforeinstall
target, which conventiently moved it to loader.old, leaving no loader.


97301 26-May-2002 n_hibma

Cosmetic change (align with other boot blocks):

CONSPEED -> COMSPEED

Approved by: nyan


97201 24-May-2002 gordon

Add support for reading an additional loader configuration file. By default,
this is called /boot/nextboot.conf. This file is required to have it's first
line be nextboot_enable="YES" for it to be read. Also, this file is
rewritten by the loader to nextboot_enable="NO"<space> after it is read.
This makes it so the file is read exactly once. Finally, the nextboot.conf
is removed shortly after the filesystems are mounted r/w.

Caution should be taken as you can shoot yourself in the foot. This is only
the loader piece. There will be a tool called nextboot(8) that will manage
the nextboot.conf file for you. It is coming shortly.

Reviewed by: dcs
Approved by: jake (mentor)


97065 21-May-2002 nyan

Fixed to conflict labels.

Submitted by: Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>


97060 21-May-2002 nyan

MFi386: revision 1.22


96962 19-May-2002 jake

MD ficl files for sparc64.


96912 19-May-2002 marcel

o Remove namespace pollution from param.h:
- Don't include ia64_cpu.h and cpu.h
- Guard definitions by _NO_NAMESPACE_POLLUTION
- Move definition of KERNBASE to vmparam.h

o Move definitions of IA64_RR_{BASE|MASK} to vmparam.h
o Move definitions of IA64_PHYS_TO_RR{6|7} to vmparam.h

o While here, remove some left-over Alpha references.


96893 19-May-2002 marcel

An almost mechanical sweep to replace C++ style comments with C
style comments. This is not an attempt to conform to style(9).
Such has lower priority.


96843 18-May-2002 phk

Fix one of the va_arg() with less than int sized type probelms.


96755 16-May-2002 trhodes

More s/file system/filesystem/g


96654 15-May-2002 jhay

DEV_BSIZE lives in sys/param.h and not in machine/param.h anymore.


96583 14-May-2002 ru

Even more BBSIZE related breakage.


96581 14-May-2002 nyan

Fixed to build for GCC 3.1


96579 14-May-2002 nyan

Add -ffreestanding to CFLAGS.


96533 13-May-2002 ru

Align CLEANFILES with revision 1.25 changes.


96532 13-May-2002 ru

Fixed CLEANFILES after bsd.lib.mk sweep.


96513 13-May-2002 ru

Removed now unused INTERNALSTATICLIB.
INTERNALLIB now implies NOPIC and NOPROFILE.
Removed gratuitous NOMAN.


96512 13-May-2002 ru

Major cleanup of bsd.lib.mk.

Get rid of the INTERNALSTATICLIB knob and just use plain INTERNALLIB.
INTERNALLIB now means to build static library only and don't install
anything. Added a NOINSTALLLIB knob for libpam/modules. To not
build any library at all, just do not set LIB.


96497 13-May-2002 obrien

Match the default newfs UFS block size.


96460 12-May-2002 bde

Saved 176 bytes by compiling with -fno-guess-branch-probability. The
default of -fguess-branch-probablility causes time optimizations (?)
like rewriting `if (foo) x++;' as
`if (!foo) goto forth; back: ; ...; forth: x++; goto back;". This is
pessimizes space especially well on i386's because one short branch
gets converted to 2 long ones.

Removed -fno-align-foo since it is implied by -Os. Previous commit
messages seem to have overstated the new alignment bugs in gcc. The
only case that affects boot2 is that -fno-align-functions (or
equivalently -falign-functions=1) actually gives -falign-functions=2.
This is caused by FUNCTION_BOUNDARY being 2 (bytes) instead of 1.
The default case where the optimization level is 1 and no alignment
options are given is more broken. All alignments are minimal, modulo
the bug in FUNCTION_BOUNDARY. This is caused by toplev.c setting
defaults too early.

Some hacks in previous commits ar not needed now, but may as well be
kept until gcc is fixed. The previous on in the Makefile saved 96
bytes of text due to the wrong FUNCTION_BOUNDARY and 32 bytes of data
due to unrelated bloat in the alignment of large objects. There aren't
even any options to control alignment of data.


96455 12-May-2002 obrien

Back out last commit. I expect our bsd.*.mk gods to remove the need for
defining so many extra things in addition to INTERNALLIB. We don't like
repetitive C code and we shouldn't for make code either.


96428 11-May-2002 jake

Attempt to not crash and burn on UltraSPARC III machines; the cpuid property
is named differently.


96426 11-May-2002 peter

Save about 60 bytes by #define memcpy __builtin_memcpy and removing
the function we provided. Restore the Keyboard: yes/no printf for the
probe diagnostics. We end up with 40 bytes free.


96425 11-May-2002 peter

Reconnect boot2. I'm sure I'll regret this though. :-)


96424 11-May-2002 peter

Use a crowbar and duct-tape to make boot2 fit again. This gets it down
to 4 bytes free. I removed a printf (the Keyboard yes/no) since it is of
marginal value and sed'ed the generated asm output to remove the unwanted
aligns. There's probably a better way to gain a few extra bytes than
losing the printf. Shortening strings is probably a better option but this
should get us over the hurdle.


96423 11-May-2002 jake

Change the disk probing so that it will actually find disks other
than the first one on a controller, and work for secondary
controllers.
Due to the prom not having nodes for each disk, but a catch-all one,
we have to iterate over each device, trying to open it to determine
whether it is actually present.
Since probing this way takese some time (and spews some spurious
warnings), it should maybe be short-circuited if we use the
device we were booted from.
Implement lazy device probing, and correct slice/partiniton
handling in the ofwd_open() code. With this, I can now actually boot
a kernel from disk, and the loader does not create unnecessary
delays.

Submitted by: tmm


96415 11-May-2002 obrien

NOPIC, NOPROFILE, NOMAN, and INTERNALSTATICLIB are redundant when using
INTERNALLIB now.


96342 10-May-2002 obrien

-ffreestanding is the word.
(also resort some CFLAGS such that the more "important" value are first so
they are easier to see)


96327 10-May-2002 jhb

- Axe -mpreferred-stack-boundary=2 as -Os turns this on by default.
- Axe -fdata-sections as turning it on or off makes no difference. If
it did make a difference it would serve to bloat boot2 even further with
extra padding.
- Axe -fforce-addr. This gets us 32 bytes so we are down to only being
64-bytes over.

We still can't compile this with gcc 3.1. The problem seems to be that
the -fno-align-foo options don't actually work. Comparing the new and
old output it turns out that gcc is 4-byte padding all the functions and
labels and what not despite the passed in arguments thus adding the
unfortunate bloat to boot2.


96310 10-May-2002 obrien

We don't need bootinfo any more, and sparc64 doesn't have it anyways.


96309 10-May-2002 obrien

Don't be redundant.


96306 10-May-2002 obrien

-ffreestanding is the word for /sys.


96305 10-May-2002 obrien

Turn off boot2 -- it gained over 96 bytes dieting on the in-tree Gcc 3.1.


96269 09-May-2002 obrien

Ficl doesn't build on sparc64.


96261 09-May-2002 obrien

Partical style cleanup.


96247 09-May-2002 joe

Replace /kernel with /boot/kernel/kernel.

PR: docs/37757
Submitted by: Hiten Pandya <hiten@uk.FreeBSD.org>


95531 26-Apr-2002 wes

Rename the file used to specify the nextboot to make it clear that this
is a loader configuration file and can be used for more than just a
kernel name.

Submitted by: Gordon Tetlow <gordont@gnf.org>


95524 26-Apr-2002 dcs

A long, long time ago, msmith introduced vfs.root.mountfrom
loader variable, which let users specify the root mount point
the exact way one does after booting the kernel.

Let's take this opportunity to document it...


95485 26-Apr-2002 wes

Add a -k option to reboot to specify the kernel to boot next time
around. If the kernel boots successfully, the record of this kernel
is erased, it is intended to be a one-shot option for testing
kernels.

This could be improved by having the loader remove the record of
the next kernel to boot, it is currently removed in /etc/rc immediately
after disks are mounted r/w.

I'd like to MFC this before the 4.6 freeze unless there is violent
objection.

Reviewed by: Several on IRC
MFC after: 4 days


95450 25-Apr-2002 nyan

MFi386: revision 1.56


95449 25-Apr-2002 nyan

MFi386: revision 1.8


95351 24-Apr-2002 jake

Split file system setup code out into a function called mount.
Implement vsnprintf. Implement panic in terms of it.


95346 24-Apr-2002 jake

Add support for loading files other than /boot/loader. Useful if you're
loader is screwed and you want loader.old.
Rewrite the scaled down printf so it actually works right, and add support
for more formats.


95342 24-Apr-2002 jake

Add an exit function.


95341 24-Apr-2002 jake

Add -Wno-unused.


95340 24-Apr-2002 jake

memcpy, memset -> bcopy, bzero.


95339 24-Apr-2002 jake

Clean up elf loading to not make assumptions about the ordering of sections.
Don't load the symbol table; this is only needed for loading kernels and we
load the loader.


95338 24-Apr-2002 jake

Remove xfsread. Just call fsread directly.


95337 24-Apr-2002 jake

Remove a bunch of unused variables, functions and macros. Allocate storage
statically instead of using a faked up malloc.


95190 21-Apr-2002 marcel

Improve self-relocation:
o We don't expect the PLT relocations to follow the .rela section
anymore. We still assume that PLT relocations are long formed,
o Document register usage,
o Improve ILP,
o Fix the FPTR relocation by creating unique OPDs per function.
Comparing functions is valid now,
o The IPLT relocation naturally handles the addend. Deal with it.
We ignore the addend for FPTR relocations for now. It's not at
all clear what it means anyway.

Fix ABI misinterpretation:
o For Elf_Rela relocations, the addend is explicit and should not
be loaded from the memory address we're relocating. Only do that
for Elf_Rel relocations (ie the short form).
o DIR64LSB is not the same as REL64LSB. DIR64LSB applies to a
symbol (S+A), whereas REL64LSB applies to the base address (BD+A),


95172 21-Apr-2002 obrien

o Use our own elf2aout now.
o Generalize a little.


95026 19-Apr-2002 marcel

Allocate sufficient pages to hold the bootinfo block and stop
hardwiring the location.


94956 17-Apr-2002 ru

Install files via FILES, there's no reason to compare them before installing.


94952 17-Apr-2002 ru

Really unbreak it this time (clean and install were still broken).


94765 15-Apr-2002 nyan

MFi386: revision 1.7.


94510 12-Apr-2002 ru

Unbreak this as well.
At the extra bonus of fixing the contents of the .depend file.

Not really my day.


94419 11-Apr-2002 peter

Bandaid for a buffer overrun in the module searching code. When breaking
up the module_path string, we would walk one past the end of the buffer.
This hurting ia64 originally, but it was probably also happening on i386
occasionally as well. The effects were usually harmless, it would add
bogus "binary" search directories to the places it actually looked for
files.


94418 11-Apr-2002 peter

Finally fix loader completely for IA64. efifs_stat() wasn't setting
the S_IFREG bit for regular files. This caused the path search code to
skip it when it finally did find the kernel (after the common/module.c
buffer overrun bug was fixed)


94411 11-Apr-2002 pb

Code cleanup, no functional change.
Patch adapted from PR.

PR: i386/36015
Submitted by: thomas@cuivre.fr.eu.org
MFC after: 1 week


94313 09-Apr-2002 dcs

Upgrade FICL to 3.02. Forgot this one, sorry.

PR: 36308
Submitted by: dcs


94290 09-Apr-2002 dcs

Upgrade to FICL version 3.02. Anything wrong is my fault, everything right is
due Jon Mini.

PR: 36308
Submitted by: Jon Mini <mini@haikugeek.com>
MFC after: 4 weeks


94248 09-Apr-2002 jake

Fix another unsigned long used to index the symbol table which should be
Elf_Hashelt.


94024 07-Apr-2002 peter

We must not let install(1) strip loader.efi when installing it, or the
resulting binary will be damaged and no longer work.


94023 07-Apr-2002 peter

Set BINDIR


94022 07-Apr-2002 peter

Add loader bootforth infrastructure and install it.


93926 06-Apr-2002 peter

Make it a bit closer to the EFI build and tie up some loose ends.


93925 06-Apr-2002 peter

Try and tidy up some very loose ends with paths to various libraries etc.


93924 06-Apr-2002 peter

Do not add the ficl/alpha subdir to the ia64 include path. Try ficl/ia64
instead.


93923 06-Apr-2002 peter

Do not assume that ${OBJCOPY} variable exists. It was hidden by the
fact that the 'ia64-make' wrapper explicitly set it.


93922 06-Apr-2002 peter

Use the correct elf hash table entry type. This matches a similar fix
in the kernel side of things some time ago. The hash table entries are
always 32 bits wide, even on 64 bit machines.


93921 06-Apr-2002 peter

Fix self hosted loader building. When you use a self configured gcc, it
detects and uses the gas section merge support. As a result, a whole bunch
of new sections arrive, including .rodata.str1.8, which was not included
in our custom ldscript.ia64. The result was a loader binary that EFI
rejected.

While here, collect the loader shell commands linker set and include it
in the data area rather than having its own section.

/boot/loader.efi was the last holdout for having a 100% self built ia64
system.


93753 04-Apr-2002 peter

Use a relative path to libstand.. /usr/src/lib/libstand may not exist
or may have the wrong header files.


93678 02-Apr-2002 tmm

Do not use semi-fixed TLB slots for the 4M kernel pages any more.


93677 02-Apr-2002 tmm

1.) Rename locore.s to locore.S (by repocopy), to be able to remove
special-case make rule
2.) Cleanups, remove superfluous expicit rules, add -nostdlib to LDFLAGS,
remove -X and -g, remove -g from CFLAGS
3.) Add BINDIR
4.) Build install the loader help file, add an empty help.sparc64
5.) Change the default configuration to only support booting from disk
6.) Get libofw.a from a path relative ${.OBJDIR}, not ${.CURDIR}

Submitted by: jake (1 - 5), obrien (6)


93606 01-Apr-2002 tmm

Add support for booting from CD-ROM. Make it possible to enable UFS
support using make arguments.


93605 01-Apr-2002 tmm

1.) Produce a boot1 disklabel template of the format disklabel(8) expects.
2.) Clean up and change over to using bsd.prog.mk

Submitted by: jake (2)


93485 31-Mar-2002 marcel

Only install the help file if we can find it. Use ${BASE}.help
in both the condition and for the install. We expect to find
the help file in ${.OBJDIR}.


93459 30-Mar-2002 marcel

Pass the address of the bootinfo block to the kernel in register
r8. Keep it at the hardwired address for now. Bump the version.


93454 30-Mar-2002 marcel

Pass the physical address of the bootinfo block to the kernel in
register r8. We continue to write the bootinfo block at the same
hardwired address, because the kernel still expects it there.
It is expected that future kernels use register r8 to get to the
bootinfo block and don't depend on the hardwired address anymore.

Bump the loader version once again due to the interface change.


93416 30-Mar-2002 nyan

MFi386: revision 1.55


93411 30-Mar-2002 marcel

Add a quick and dirty way to determine where we're loaded from. We
only care if it's network or not at this time. If we're loaded from
the network, we set currdev (=loaddev) so that the kernel is loaded
from the network as well. In all other cases we initialize to disk.
This makes netbooting more convenient and can easily be enhanced to
do more elaborate checking.


93410 30-Mar-2002 marcel

The EFI loader has been improved a lot since it was first added.
Most significantly (from an interfacing point of view) is the
support for the FPSWA pointer passing. Even though that was added
4 months ago, it's probably not a bad idea to bump the version
number to reflect this.


93409 30-Mar-2002 marcel

Fix the initialization of the protocol:
o Query the state field of the protocol mode to determine whether
we need to start and/or initialize the protocol. When we're
loaded across the network, the protocol has already been started
and is already initialized. When no networking has happened yet,
we have to start and initialize the protocol ourselves.
o After initialization, we have to set the receive filters. Not
doing this results in a deaf interface. We set the unicast and
broadcast filters. Multicast may not be supported. This specific
change fixes the problem we had that we could not netboot if
the loader was started from the EFI shell.
o To help future debugging, add a function that dumps the current
mode of the interface. It's conditional on EFINET_DEBUG.
o To help in runtime problems, emit a diagnostic message when we
could not initialize the protocol properly.


93405 30-Mar-2002 marcel

Don't blindly dereference f->f_devdata as if it's always a pointer to
an efi_devdesc structure. When we're netbooting, f->f_devdata holds
the address of the network socket variable. Dereferencing this caused
some very unpredictable behaviour, including proper functioning.
So, as a sanity check, we first make sure f->f_dev points to our
own devsw. If not, the open will fail before we use f->f_devdata.

This solves the netboot hangs I invariably got whenever I used the
latest toolchain to compile the EFI loader.


93403 29-Mar-2002 marcel

o Make efinet_put a blocking call by waiting for the protocol
layer to signal transmission of the packet. This resolves the
problem I'm seeing that an immediate call to net->Receive
after calling net->Transmit returns EFI_DEVICE_ERROR. This
condition seems to be sufficiently persistent that BOOTP and
RARP fail.
o While here, unify all functions to have 'nif' defined. Some
have it as arguments. The others now have them as locals. We
now always get the protocol interface by using the 'nif' var.

The current status of netbooting is that even though we now reliably
have BOOTP working (again), opening a file (ie loading a kernel)
across the network causes the loader to hang. I'm working on that now.


93400 29-Mar-2002 marcel

Fix the beforeinstall target. We install ${PROG}.help if loader.help
exists, otherwise we install it anyway. I interpret this as a very
high desire to install ${PROG}.help. Alas, ${PROG}.help doesn't exist
at the moment and neither does loader.help, so in practice this just
doesn't work, no matter how you interpret it. The compromise is to
install ${PROG}.help IFF it exists. I realize we lost creativity with
this commit, but style should have been preserved, AFAICT :-)


93352 28-Mar-2002 obrien

Needs a.out support built into the loader.


93321 28-Mar-2002 marcel

o Don't include sys/cdefs.h


93320 28-Mar-2002 marcel

o Add -L${DESTDIR}${LIBDIR} on the link line for -lstand.
o Add -j .dynstr to objcopy. This makes .efi binaries work
when built with a 3.x based toolchain.


93319 28-Mar-2002 marcel

Duplicate the logic used elsewhere to define LIBSTAND.


93313 28-Mar-2002 obrien

was repocopied to ../boot1


93311 28-Mar-2002 obrien

Apparently either gcc or ld, in their infinite wisdom, want to
put a bunch of crap before the code in .text. Since the firmware
doesn't seem to honour the a.out entry point, we need to include
a little assmbler file which jumps to where we want to be in C.

Submitted by: jake


93308 28-Mar-2002 obrien

Opps, bootblock component is no more.


93307 28-Mar-2002 obrien

sparc64 is an ofw consumer.


93306 28-Mar-2002 obrien

Not all platforms have and want a.out format support.


93302 28-Mar-2002 obrien

Add a Makefile for sparc64 at this level.


93044 23-Mar-2002 pb

Add option -n to i386 boot2 to disallow boot interruption by keypress.

PR: i386/36016
Submitted by: Thomas Quinot <thomas@cuivre.fr.eu.org>
Reviewed by: rnordier
MFC after: 1 week


92766 20-Mar-2002 alfred

Remove __P.


92731 19-Mar-2002 peter

Add EFI write support to loader


92658 19-Mar-2002 peter

Add -ffreestanding to avoid printf/puts/putchar conversions


92657 19-Mar-2002 peter

Boot from efifs first.


92656 19-Mar-2002 peter

gcc-3.1 likes to have extra { } around the internal array initializers in
the GUID templates.


92494 17-Mar-2002 sobomax

Add splitfs vfs layer into libstand, which allows loading big kernels and
modules split across several physical medias. Following is how it works:

The splitfs code, when asked to open "foo" looks for a file "foo.split"
which is a text file containing a list of filenames and media names, e.g.

foo.aa "Kernel floppy 1"
foo.ab "Kernel floppy 2"
foo.ac "Kernel and modules floppy"

For each file segment, the process is:

- try to open the file
- prompt "Insert the disk labelled <whatever> and press any key..."
- try to open the file
- return error if file could not be located

RE team is free to use this feature in the upcoming 5.0-DP1.

Reviewed by: msmith, dcs


92339 15-Mar-2002 ru

mdoc(7) police: fix a typo and markup.


92225 13-Mar-2002 ru

Implement -m and -p loader(8) "boot" command options in boot2.
(This is more useful for 4.x where boot blocks can still load
kernels, modulo the PR kern/17422.)


92224 13-Mar-2002 ru

Further document "console" (nullconsole).


92030 10-Mar-2002 sobomax

CG superfluous prototype.


91696 05-Mar-2002 robert

Change every occurrence of "bootblock" into "boot1" after
the repo-move from "src/sys/boot/sparc64/bootblock".


91678 05-Mar-2002 robert

- Fix seeking for offsets requiring more than 32 bits.
- Add sanity checks to lookup().
- Implement the 'l' modifier in printf().

Submitted by: tmm


91609 04-Mar-2002 alfred

Support for USB fm radio.

Submitted by: David Yeske <dyeske@yahoo.com>


91519 01-Mar-2002 jake

Catch up to change in tte format.

Forgetten by: jake
Submitted by: tmm


91480 28-Feb-2002 nyan

Add -D_KERNEL to CFLAGS for ntohl().


91295 26-Feb-2002 robert

- Fix indentation and return statements to conform to style(9).
- Use the __FBSDID macro.
- Fix some warnings.

Submitted by: obrien (partly)


91219 25-Feb-2002 bde

Declare time(not3) instead of depending on namespace pollution 3 layers
deep in <stand.h> to eventually include <time.h> to declare the user
version.

This is not quite the right place to declare it, but <stand.h> would
be worse because time() is very MD so it isn't in libstand.

Many places in the boot sources still get the user version using only
1 layer of pollution (#include <sys/time.h>. Some pollute themselves
directly (#include <time.h>). But the boot Makefiles are too broken
to enable warnings for redeclarations.


91218 25-Feb-2002 bde

Removed mounds of unused variables.


91139 23-Feb-2002 jake

Keep track of the ttes used to map the kernel and pass them to it as loader
metadata. Modify tlb handling functions to take a tte, instead of virtual
address, physical address and flags.


91115 23-Feb-2002 jake

Add -ffreestanding to CFLAGS.


91114 23-Feb-2002 jake

Add make variables for fs support and propagate them to CFLAGS. Put
-ffreestanding in CFLAGS. Remove unnecessary LDFLAGS.


91113 23-Feb-2002 jake

Fix test for != 0 that should be > 0.


91112 23-Feb-2002 jake

Check the return values of index() and don't dereference it if its null;
the path may not have a ':' in it. The mac address property is called
mac-address for sparc64. Don't allocate a dma buffer for sparc64 either.


91111 23-Feb-2002 jake

#if 0 more bootinfo stuff.


91110 23-Feb-2002 jake

Fix fs support ifdefs. Add tftp support. Add physical and virtual
watchpoint support for debugging (under LOADER_DEBUG). Claim the
physical and virtual addresses used to map the kernel from the prom;
we map it ourselves behind the scenes though. Add a reboot command.

Submitted by: tmm


91109 23-Feb-2002 jake

Allocate a frame on our initial stack so that it doesn't run off into
random memory. Disable interrupts while loading the tlb.

Submitted by: tmm


91108 23-Feb-2002 jake

Add OF_claim_virt() and OF_release_phys().

Submitted by: tmm


91107 23-Feb-2002 jake

Include <machine/metadata.h>.


91008 21-Feb-2002 davidc

Document the hw.physmem kernel environment variable.

Reviewed by: alfred


90703 15-Feb-2002 robert

- Remove unneeded variable.
- Remove change for my local configuration that slipped in with
the last commit; I am having problems booting when multiple SCSI
disks are attached, so I will change this part as soon as I find
a solution, anyway.


90701 15-Feb-2002 robert

This file is now unneeded.


90700 15-Feb-2002 robert

- Do not include a NetBSD header as it is not needed anymore.
- Remove two constants that were needed in conjuction with the
NetBSD disklabel header. Use the FreeBSD equivalents.
To boot from NetBSD/sparc64 partitions, define LABELOFFSET to
be 128.
- Do not use the complete open firmware path to filter out cdrom drives.
No path containing "cdrom" is detected as a disk now.
- Simplify some code.


90699 15-Feb-2002 robert

Add the FreeBSD/sparc64 bootblock and its make file.


90063 01-Feb-2002 nyan

Expand COMBRD(x) macro.


89699 23-Jan-2002 sobomax

CG hard sentence breaks.

Submitted by: ru


89601 21-Jan-2002 sobomax

Allow dump device be configured as early as possible using loader(8) tunable.
This allows obtaining crash dumps from the panics occured during late stages
of kernel initialisation before system enters into single-user mode.

MFC after: 2 weeks


89519 18-Jan-2002 iedowse

Cut more than 500 bytes off the size of the alpha boot1 by adding
a simple version of bcopy() so we avoid picking up the overly-complex
implementation in libc (via libstand). This is not necessary on
-current, but RELENG_4 has apparently just exceeded the 15-sector
limit for boot1.

Reviewed by: wilko


89495 18-Jan-2002 nyan

Added kgzldr for pc98.
crt.s is based on btx.s.


89481 17-Jan-2002 iedowse

Oops, the previous revision (1.35) broke booting from floppies
because the buffers we use could end up spanning a 64k boundary.
Unfortunately it causes too much bloat (228 -> 72 bytes free) to
just reinstate the old malloc() function.

Instead, define a structure that contains all 4 buffers which must
not cross 64k boundaries. We allocate a 64k-aligned instance in
main() using the magic that was in the old boot2 malloc() function.
This brings the free space down to 168 bytes, but that is still
better than it was before revision 1.35 (136 bytes).

Reported by: Mike Brancato <funnyguy@digitalsmackdown.net>
Pointy-hat to: iedowse


89368 14-Jan-2002 iedowse

Make the i386 boot2 fully blocksize-agnostic, as has already been
done with boot1 on the alpha. We use 4k buffers regardless of the
actual filesystem block size.

Remove the simple malloc() implementation, as it is no longer used.


89265 11-Jan-2002 iedowse

Make the alpha boot1 work on filesystems that have a block size
larger than 8k. We now use 4k buffers regardless of the filesystem
block size, so there is no longer a static limit.

Simply increasing the buffer size from 8k to 16k as done on the
i386 doesn't work on the alpha, probably because it causes us
to overshoot boot1's 48k runtime memory limit.

Tested by: naddy


89242 11-Jan-2002 jhb

Catch the netboot version up to the main loader. This is pretty bogus.
All the alpha loaders should use the same version file. Also, we might
should merge the various loaders (cdboot, loader, netboot) into one loader
that can boot off of disks, CD's, and network devices. The version bump
is needed so the FICL scripts won't bomb out thinking that the netboot
binary is too old.


89240 10-Jan-2002 jhb

Unrevert revision 1.12. Revision 1.14 backed this out saying it was
backing out the 1024 sector boot0, but revision 1.12 had nothing to do with
that. Instead, it documented various compile time options for boot0 and
allowed them to be overridden via make.conf or options on the make
command line.


89154 09-Jan-2002 iedowse

Increase BSIZEMAX from 8k to 16k, so that we can reliably boot from
filesystems with 16k blocks.


88874 04-Jan-2002 jhb

Don't turn on RB_CDROM if the rootdev is a BIOS cd device for now as this
breaks when cdboot is used with an MFS root.


88597 28-Dec-2001 robert

Avoid having the text and data sections merged into one program
header table entry by removing the -N flag from the LDFLAGS.


88253 20-Dec-2001 jim

Add missing snd_ich_load entry.

Noticed by: will
MFC after: 2 days


87855 14-Dec-2001 ru

mdoc(7) police: remove hard sentence break which I didn't
submit to Jonathan Mini.


87734 12-Dec-2001 nyan

MFi386: revision 1.35 (Add support for writing to BIOS disks)


87636 11-Dec-2001 jhb

- Add 'fwrite' and 'fseek' words for writing to and seeking on files.
- Change the 'fopen' keyword to accept a mode parameter. Note that this
will break existing 4th scripts that use fopen. Thus, the loader
version has been bumped and loader.4th has been changed to check for a
sufficient version on i386 and alpha. Be sure that you either do a full
world build or install or full build and install of sys/boot after this
since loader.old won't work with the new 4th files and vice versa.

PR: kern/32389
Submitted by: Jonathan Mini <mini@haikugeek.com>
Sponsored by: ClickArray, Inc.


87634 11-Dec-2001 jhb

Add support for writing blocks to the loader's disk cache.

PR: kern/32389
Submitted by: Jonathan Mini <mini@haikugeek.com>
Sponsored by: ClickArray, Inc.


87633 11-Dec-2001 jhb

Add support for writing to BIOS disks.

PR: kern/32389
Submitted by: Jonathan Mini <mini@haikugeek.com>
Sponsored by: ClickArray, Inc.


87620 10-Dec-2001 guido

Add new boot flag to i386 boot: -p.
This flag adds a pausing utility. When ran with -p, during the kernel
probing phase, the kernel will pause after each line of output.
This pausing can be ended with the '.' key, and is automatically
suspended when entering ddb.

This flag comes in handy at systems without a serial port that either hang
during booting or reser.
Reviewed by: (partly by jlemon)
MFC after: 1 week


87599 10-Dec-2001 obrien

Update to C99, s/__FUNCTION__/__func__/,
also don't use ANSI string concatenation.


87505 07-Dec-2001 rwatson

o Expand list of tunables documented in loader.8 to include kern.maxusers,
since other related tunables were also documented here. Add a cross
reference to tuning(7) for information on setting this value
appropriately.


87344 04-Dec-2001 des

The entry for the 'set' command no longer has a list of variables.

PR: 32454
Submitted by: Gary W. Swearingen <swear@blarg.net>
MFC after: 3 days


87265 03-Dec-2001 dcs

Remove unused filed.

PR: kern/32395
Submitted by: Jonathan Mini <mini@haikugeek.com>


87261 03-Dec-2001 murray

Fix typo.

PR: 32455
Submitted by: "Gary W. Swearingen" <swear@blarg.net>


87058 28-Nov-2001 dcs

Waits for a keypress before rebooting on panic.

PR: kern/32351
Submitted by: Jonathan Mini <mini@haikugeek.com>
MFC after: 1 week


87004 27-Nov-2001 rwatson

Document the "console" setting in loader.conf, suggesting vidconsole
or comconsole.


86902 26-Nov-2001 rwatson

o Add 'kern.maxusers' to the list of commented out sample tunable
variables, since that can now be tuned at boot-time without a
recompile.


86753 21-Nov-2001 jhb

Bump the CD boot loader up to 1.1 so that the FICL upgrade a while back
will not fail thinking that the loader version is stale. This lets us
use the Forth code on the CD now.


86608 19-Nov-2001 obrien

Upper case the FreeBSD loader prompt.
On OFW based machines, it is just too confusing having the firmware and
OS loader giving the same prompt. This is a nice compromise that 99% of the
users on non-OFW platforms will probably not even notice.


86588 19-Nov-2001 peter

Lookup the EFI_FPSWA driver and pass the interface pointer through to the
kernel before we call ExitBootServices(). I've typed the definitions
in efifpswa.h from the Intel FPSWA manual (urk).


86586 19-Nov-2001 peter

Remove bootinfo.bi_kernel. It isn't used by the kernel. struct bootinfo
should go away on ia64, we should be loader metadata based since that is
the only way we can boot (loader, skiload).


86585 19-Nov-2001 peter

Fix a dependency violation, same as in libefi/elf_freebsd.c a while back.


86584 19-Nov-2001 peter

This is used in C, not C++. functions with no args have func(void) in our
kernel.


86497 17-Nov-2001 nyan

MFi386: revisions from 1.26 to 1.30.


86496 17-Nov-2001 nyan

MFi386: revision 1.12


86469 16-Nov-2001 iedowse

Fix a number of misspellings of "dependency" and "dependencies" in
comments and function names.

PR: kern/8589
Submitted by: Rajesh Vaidheeswarran <rv@fore.com>


86168 07-Nov-2001 fenner

Initialize first to -1; this will create a (nearly) empty file on failure,
instead of looping until the disk is full. This kind of failure can
especially happen when a version of awk that doesn't support POSIX
character classes is used.

Submitted by: David Wolfskill <david@catwhisker.org>


86164 07-Nov-2001 jhb

Remove a few more debugging bits and turn on twiddle output while reading
from the CD. This turns off the dual console output to COM1.


86133 06-Nov-2001 iwasaki

Add S4BIOS sleep (BIOS hibernation) and DSDT overriding support.
- Add S4BIOS sleep implementation. This will works well if MIB
hw.acpi.s4bios is set (and of course BIOS supports it and hibernation
is enabled correctly).
- Add DSDT overriding support which is submitted by takawata originally.
If loader tunable acpi_dsdt_load="YES" and DSDT file is set to
acpi_dsdt_name (default DSDT file name is /boot/acpi_dsdt.aml),
ACPI CA core loads DSDT from given file rather than BIOS memory block.
DSDT file can be generated by iasl in ports/devel/acpicatools/.
- Add new files so that we can add our proposed additional code to Intel
ACPI CA into these files temporary. They will be removed when
similar code is added into ACPI CA officially.


86131 06-Nov-2001 nyan

MFi386: sys/boot/i386/loader/main.c revision 1.25


86130 06-Nov-2001 nyan

MFi386: sys/boot/i386/libi386/Makefile revision 1.21


86094 05-Nov-2001 jhb

- If we are booted via cdboot, use bc_add() to instantiate the cd0 device
from the loader.
- Cleanup extract_currdev() some and add support for setting the currdev
to cd0 when booted via cdboot.


86093 05-Nov-2001 jhb

Hook up the bioscd driver and the cd9660 filesystem.


86091 05-Nov-2001 jhb

Add a device driver for the BIOS device for CD-ROM's booted via El Torito
no emulation mode. Unlike other BIOS devices, this device uses 2048 byte
sectors. Also, the bioscd driver does not have to worry about slices
or partitions.


86090 05-Nov-2001 jhb

Add a DEVT_CD type for CD drivers.


86001 04-Nov-2001 jhb

Trim all the extra debugging output including hexdumps, debug messages,
etc. The only bit of debugging left is performing dual output to both
the screen and COM1. Also, the twiddle is still disabled since it seems
to do weird things to the serial dump. cdboot now has 880 bytes to spare.


86000 04-Nov-2001 jhb

Axe the old cdldr.


85999 04-Nov-2001 jhb

Use the new cdboot instead of cdldr.


85998 04-Nov-2001 jhb

This is a new CD bootstrap utility designed to replace cdldr. According
to the El Torito standard for CD booting, a CD may boot in "No emulation"
mode without using a floppy image. In this mode, the BIOS loads a program
off of the CD into memory and creates a BIOS device using 2048 byte sectors
for the CD. According to the standard, this program can be up to 0xFFFF
virtual (512-byte) sectors long. The old cdldr depended on this by having
the BIOS load the entire loader and the small cdldr stub as one binary
similar to pxeboot so that cdldr didn't have to read the CD to find the
loader. However, the NT no emulation loader just uses 1 disk sector
(4 virtual sectors), so it seems that at least some BIOS writers just did
enough to get NT to boot by only loading 1 sector and ignoring the sector
count. Thus, while cdldr should have worked in theory, it doesn't in
practice. This replacment fits entirely in 1 sector and includes simple
ISO 9660 support. It looks for /boot/loader on the CD and loads it up
using the BIOS. This allows us to not have to depend on the limited size
of floppy images but use a full GENERIC kernel for CD-ROM installs in the
future, among other things.

This version of cdboot is a bit bloated as it includes some useful
debugging routines that people can pull to use in other x86 assembly
modules. Even with all the debugging cruft, we still have 272 bytes to
spare.


85997 04-Nov-2001 jhb

Print out 'foo devices:' as the line before displaying a group of
devices in 'lsdev' output rather than printing out a pointer to the
print function since the user really could care less about the pointer
value. Perhaps this was intended to be a debugging printf?


85995 03-Nov-2001 jhb

Whoops, missed these bits in the previous commit.


85994 03-Nov-2001 jhb

Add support for sending messages to the serial console which is helpful
when debugging boot problems. It is not on by default but is enabled via
the BTX_SERIAL variable. The port and speed can be set via the same
variables used by boot2 and the loader.


85993 03-Nov-2001 jhb

Add support for outputting multiple lines when dumping memory during the
register dump. Change the default to bump 2 lines of output (32 bytes)
instead of 1 line (16 byte).


85990 03-Nov-2001 jhb

Add support for trace traps by returning from them just as for breakpoint
traps rather than halting. Ideally, we should avoid printing the
'BTX halted' message for debug register dumps.


85989 03-Nov-2001 jhb

Output a newline at the end of a dump so that there are blank lines between
dumps when using breakpoints or tracing.


85935 03-Nov-2001 obrien

Revert rev 1.3 which moved us away from POSIX character classes.
The community feels our base AWK must handle them.


85934 03-Nov-2001 obrien

Revert rev 1.7 which moved us away from POSIX character classes.
The community feels our base AWK must handle them.


85892 02-Nov-2001 mike

o Add new header <sys/stdint.h>.
o Make <stdint.h> a symbolic link to <sys/stdint.h>.
o Move most of <sys/inttypes.h> into <sys/stdint.h>, as per C99.
o Remove <sys/inttypes.h>.
o Adjust includes in sys/types.h and boot/efi/include/ia64/efibind.h
to reflect new location of integer types in <sys/stdint.h>.
o Remove previously symbolicly linked <inttypes.h>, instead create a
new file.
o Add MD headers <machine/_inttypes.h> from NetBSD.
o Include <sys/stdint.h> in <inttypes.h>, as required by C99; and
include <machine/_inttypes.h> in <inttypes.h>, to fill in the
remaining requirements for <inttypes.h>.
o Add additional integer types in <machine/ansi.h> and
<machine/limits.h> which are included via <sys/stdint.h>.

Partially obtain from: NetBSD
Tested on: alpha, i386
Discussed on: freebsd-standards@bostonradio.org
Reviewed by: bde, fenner, obrien, wollman


85875 02-Nov-2001 nyan

Fixed sioreg.h path.


85842 01-Nov-2001 obrien

Substitute "[:space:]" with the character constants it expands to.
This was a silent 'failure' when using Bell-Labs awk.

Submitted by: David Wolfskill <david@catwhisker.org>


85808 01-Nov-2001 obrien

Bell-Labs AWK does not support POSIX "bracket expressions" (POSIXese for
"character classes", basically). So change them to their character
representation.

Submitted by: David Wolfskill <david@catwhisker.org>


85805 01-Nov-2001 peter

Fix the ILLEGAL fdisk table that is there for supporting "dangerously
dedicated" mode. This was specifying that there are 256 (illegal!)
heads on the disk. If bioses store that in a byte, and it gets truncated
to 0, then that almost certainly causes the infamous divide-by-zero
nightmare.

This is also most likely the reason why the Thinkpad T20/A20 series
were locking up when FreeBSD was installed. This is also the most likely
reason why a boot1 being present causes an IA64 box to lock up at boot.
(removing the "part4" stuff from boot1.s fixes the IA64 boxes and would
most likely have fixed the T20/A20 and some TP600E series thinkpads)


85720 30-Oct-2001 jake

Add code to copy the enironment and loader metadata into kernel space.


85719 30-Oct-2001 jake

Add definitions for network support, doesn't work yet.
Pass the right arguments to the kernel.
Replace magic numbers with symbolic constants.
Pass the real openfirmware entry point to OF_init.


85718 30-Oct-2001 jake

Use ENTRY() for defining functions in asm.
Remove asm functions to call the openfirmware and kernel entry points;
we can just call them directly.
Don't use the stack pointer for an intermediate result in setx.
Put the stack in the bss.


85717 30-Oct-2001 jake

Make the openfirmware entry point function pointer non-static so that it
can be passed to the kernel.


85652 29-Oct-2001 marcel

Set RB_MULTIPLE (multiple console support) if the kernel is booted
with the -D flag.


85477 25-Oct-2001 ru

Just use ${MACHINE}, it's already special-casing pc98.


85476 25-Oct-2001 dfr

Call ExitBootServices and disable interrupts before we start hacking
the VM registers. This ought to make things slightly more reliable here.


85475 25-Oct-2001 dfr

Add the two sections used for PLT entries to the text and sdata sections
respectively. This makes IPLTLSB relocations work properly (these are
generated for weak symbols, particularly for _longjmp).


85436 24-Oct-2001 dfr

Try to get the self-relocator to work with IPLTLSB relocations. Doesn't
work right though - I can't figure out why.


85376 23-Oct-2001 jlemon

Set RB_MULTIPLE (multiple console support) if the kernel is booted
with the -D flag.


85374 23-Oct-2001 jlemon

Allow the RBX_DUAL flag to appear in bootinfo.


85065 17-Oct-2001 nyan

Use a array to convert from a attribute for AT to one for PC98.
(merged from sys/pc98/pc98/scvtbpc98.c)


85063 17-Oct-2001 nyan

Merged from sys/boot/i386/libi386/vidconsole.c revisions 1.16, 1.17 and 1.18.


85061 17-Oct-2001 nyan

fix style(9)


85060 17-Oct-2001 nyan

Merged from sys/boot/i386/loader/Makefile revision 1.54.


84998 15-Oct-2001 robert

Add a prototype for OF_alloc_phys.


84997 15-Oct-2001 robert

Fix some warnings.


84996 15-Oct-2001 robert

Add the FreeBSD/sparc64 boot loader source files.


84975 15-Oct-2001 robert

Make the ofw_reg structure and ofw_alloc_heap 64-bit save.


84974 15-Oct-2001 robert

Add a Makefile for the sparc64 boot loader.


84973 15-Oct-2001 robert

Do not include openfirm.h; it is now included by libofw.h.


84972 15-Oct-2001 robert

- Use the cell_t type definition for Open Firmware arguments in
combination with requisite casts as this avoids fatal side
effects on 64-bit architectures.
- Add the OF_alloc_phys function.


84970 15-Oct-2001 robert

- Fill dummy functions with code to read from disk using Open
Firmware.
- Add a temporary disklabel header to boot off a NetBSD/sparc64
partition. This file can be deleted when we have got a FCode
bootblock.

The disklabel header was obtained from NetBSD.


84969 15-Oct-2001 robert

- Include openfirm.h for phandle_t.
- Add some necessary members to the ofwdisk structure.
- Add a prototype for ofw_parseofwdev.


84968 15-Oct-2001 robert

Add a function for parsing an Open Firmware boot path into the
ofw_devdesc structure.


84967 15-Oct-2001 robert

- Add an ifdef guard.
- Use unsigned types for the (32-bit) Open Firmware device handles
to avoid sign extension on 64-bit architectures.
- Add a standard type definition for Open Firmware arguments.


84802 11-Oct-2001 dfr

Fix typo in comment.


84644 08-Oct-2001 marcel

s/alpha/${MACHINE_ARCH}/g


84620 07-Oct-2001 benno

Whitespace fixes.


84619 07-Oct-2001 benno

Add new files needed by previous commit.


84617 07-Oct-2001 benno

Mega-patch for OpenFirmware loader support.

- Flesh out ofw_readin routine.
- Add OpenFirmware load and exec routines.
- Make sure memory allocation for the kernel is done correctly.
- Change the way the heap is allocated so as to make it easier to deallocate
when we hand over.
- Add a command to print memory maps similar to the one for ia64.

With this patch, I can now load and hand over to a kernel on my iMac. There
are some problems with OpenFirmware routines failing after the hand over that
still need to be addressed.


84461 04-Oct-2001 jhb

Whitespace fixes.


84371 02-Oct-2001 yokota

Fix the ANSI color escape sequence \E[m.

- Corretly map the ansi color number to a PC BIOS color.
- Handle multiple arguments to the escape sequence.


84354 02-Oct-2001 yokota

Fix the local macro: isvisible().

- The space char (0x20) IS a visible char :-)


84337 01-Oct-2001 silby

grammar fix: to -> too


84277 01-Oct-2001 yokota

Fix the function CD(): "Clear to the end of the screen".

- When the video BIOS is called to clear the region (x, y)-(79, 24)
(by scrolling), the slashed region in Fig.1 is cleared. CD() is
supposed to clear the region shown in Fig.2.
x x
+-------+ +-------+
| | | |
y| ////| y| ////|
| ////| |///////|
| ////| |///////|
+-------+ +-------+
Fig.1 Fig.2

- Don't move the cursor during this operation.


84276 01-Oct-2001 yokota

This is white-space only change. No functional difference.

- Be consistent about placing spaces around keywords and
operators; don't mix statements like "if(A==B)" and "if (X == Y)",
"return(0)" and "return (-1)", "P=10" and "Q = 0", etc.

- Consitently indent lines. It's not good to indent by 8 columns
in one part of the file, and by 4 columns in the other part.


83948 26-Sep-2001 peter

Make this 'make obj' safe


83939 25-Sep-2001 dfr

Calculate the valid flag for ITRs and DTRs correctly. Also fix a couple
of minor problems and remove some debugging code.


83904 24-Sep-2001 dfr

Add commands to dump the itrs and dtrs.


83903 24-Sep-2001 dfr

Return the mapkey which EFI gave us when we read the memory map - we need
it to call ExitBootServices.


83902 24-Sep-2001 dfr

Tidy up a little - don't try to print anything or enable interrupts after
we start changing translation registers. Also, call ExitBootServices
before we jump into the kernel.


83901 24-Sep-2001 dfr

Pick up pal.s from the kernel sources.


83857 23-Sep-2001 dfr

Add commands to dump the configuration tables and the SAL System Table.


83829 22-Sep-2001 dfr

Add EFI network support.


83828 22-Sep-2001 dfr

* Flesh out elf_exec and bootinfo.
* Add EFI network support.


83825 22-Sep-2001 dfr

Add getsecs() for the libstand network code.


83824 22-Sep-2001 dfr

Add a twiddle meter when reading from files. Gives me something to look
at when a kernel is loading from a floppy.


83710 20-Sep-2001 dfr

Add definition of SSC_GET_RTC.


83666 19-Sep-2001 dfr

Implement time().


83616 18-Sep-2001 sobomax

Add support for loading bzip2-compressed kernels and modules. This support
is turned off by default and could be enabled by defining LOADER_BZIP2_SUPPORT
make variable. Also make gzip support optional (turned on by default) -
it could be turned off via LOADER_NO_GZIP_SUPPORT make variable.

Please note, that due to limit on the amount of memory available to the
loader(8), it is possible to load modules/kernels compressed with the smallest
block size supported by the bzip2 - 100k (`-1' bzip2(1) option), however
even in this mode bzip2(1) usually provides better compression ratio than
gzip(1) in its best compression mode.

MFC after: 1 month


83532 16-Sep-2001 nyan

MFi386: sys/boot/i386/loader/main.c revision 1.24.


83531 16-Sep-2001 nyan

MFi386: sys/boot/i386/libi386/Makefile revision 1.20.


83521 15-Sep-2001 dfr

Add a fake memory descriptor for the I/O port space.


83502 15-Sep-2001 dfr

Fill in the bootinfo's memory map.


83498 15-Sep-2001 dfr

Remove dead code.


83439 14-Sep-2001 dfr

Plug in ELF backend.


83438 14-Sep-2001 dfr

Add ELF backend to the build.


83437 14-Sep-2001 dfr

Make this do the right thing (mostly). We should still reserve the pages
that the kernel loads into using the EFI AllocatePages call.


83408 13-Sep-2001 dfr

Update code which creates bootinfo.


83370 12-Sep-2001 dfr

A command file for SKI which runs the loader up to the first instruction
of the loaded kernel.


83368 12-Sep-2001 ru

Create backup copies using install(1).


83365 12-Sep-2001 dfr

Build ficl on all architectures.


83364 12-Sep-2001 dfr

Add a version of the loader which runs under SKI, the HP ia64 simulator.
This loader is quite functional and can load and run kernels. The kernels
don't quite work right after loading but that should be easily fixable.


83321 11-Sep-2001 peter

Implement the long-awaited module->file cache database. A userland
tool (kldxref(8)) keeps a cache of what modules and versions are inside
what .ko files. I have tested this on both Alpha and i386.

Submitted by: bp


83216 08-Sep-2001 dfr

Add missing entry to memory type name table and adjust field widths.


83215 08-Sep-2001 dfr

Add a command 'memmap' to print out the EFI memory map.


83193 07-Sep-2001 dfr

Hook up the native EFI filesystem reader.


83192 07-Sep-2001 dfr

Set currdev and loaddev variables.


83191 07-Sep-2001 dfr

Add a libstand filesystem for accessing EFI native filesystems.


83190 07-Sep-2001 dfr

Reformat.


83078 05-Sep-2001 dfr

Merge linker set relocations with the rest.


82965 04-Sep-2001 dfr

Enable bootforth.


82960 04-Sep-2001 dfr

Avoid an alignment fault on 64bit architectures.

Reviewed by: dcs


82942 04-Sep-2001 dfr

Make sure we copy over the linker set sections to the EFI executable.


82941 04-Sep-2001 dfr

Add definition for arch-ia64.


82940 04-Sep-2001 dfr

Add ia64 system dependancies.


82645 31-Aug-2001 bde

Don't clobber the default for CFLAGS.

Reviewed by: dfr


82542 30-Aug-2001 msmith

Mention that the ACPI module load can be disabled by unsetting $acpi_load


82531 30-Aug-2001 msmith

Teach the loader how to find the system ACPI information, and autoload
the ACPI module if the system apperars to be ACPI compliant.

This is an initial cut; the load should really be done by Forth support
code, and we should check both the BIOS build date and a blacklist.


82343 26-Aug-2001 benno

Pass NULL instead of MAXPHYS to the DMA allocation method. Be a bit more
verbose if we fail to allocate the DMA buffer.


82133 22-Aug-2001 peter

OK, now I am scared of pxeldr. It had /boot/loader appended onto
the end of it and decoded the headers.

Submitted by: jhb


82128 22-Aug-2001 peter

Generate an ELF /boot/loader instead of fake a.out. The fake a.out wrapper
did not work with old a.out-only bootblocks anyway. :-(


81955 20-Aug-2001 ru

mdoc(7) police: markup nits.


81933 20-Aug-2001 dillon

Limit the amount of KVM reserved for the buffer cache and for swap-meta
information. The default limits only effect machines with > 1GB of ram
and can be overriden with two new kernel conf variables VM_SWZONE_SIZE_MAX
and VM_BCACHE_SIZE_MAX, or with loader variables kern.maxswzone and
kern.maxbcache. This has the effect of leaving more KVM available for
sizing NMBCLUSTERS and 'maxusers' and should avoid tripups where a sysad
adds memory to a machine and then sees the kernel panic on boot due to
running out of KVM.

Also change the default swap-meta auto-sizing calculation to allocate half
of what it was previously allocating. The prior defaults were way too high.
Note that we cannot afford to run out of swap-meta structures so we still
stay somewhat conservative here.


81588 13-Aug-2001 ru

Spell "FreeBSD" with "F" and "BSD" in uppercase.


81488 10-Aug-2001 obrien

Style cleanup.


81462 10-Aug-2001 ru

mdoc(7) police: join split punctuation to macro calls.


81367 09-Aug-2001 mp

Allow for text section alignment to properly align the "end" symbol at the
actual end of the section. The new gas (binutils) puts in additional padding
which was misaligning the concatenated btx loader.

Reported by: Oliver Hartmann <ohartman@klima.physik.uni-mainz.de>,
Harti Brandt <brandt@fokus.gmd.de>
Tested by: Oliver Hartmann <ohartman@klima.physik.uni-mainz.de>,
David Wolfskill <dhw@whistle.com>, ps
Reviewed by: jhb
MFC after: 1 day


81363 09-Aug-2001 jhb

Trim trailing whitespace.


80751 31-Jul-2001 jhb

Add in a hack to support IBM "El Torito" CD-ROM booting BIOS's which expect
the first sector of the emulated floppy to contain a valid MS-DOS BPB that
it can modify. Since boot1 is the first sector of boot.flp, this resulted
in the BIOS overwriting part of boot1: specifically the function used to
read in sectors from the disk.

Submitted by: Mark Peek <mark@whistle.com>
Submitted by: Doug Ambrisko <ambrisko@ambrisko.com>
PR: i386/26382
Obtained from: NetBSD, OpenBSD (the example BPB)
MFC after: 1 month


80203 23-Jul-2001 kris

s/adress/address/

Inspired by: OpenBSD
MFC After: 1 week


80084 21-Jul-2001 rnordier

Unset MAINTAINER.


79757 15-Jul-2001 dd

Remove whitespace at EOL.


79540 10-Jul-2001 dfr

Make this build again after breakage from previous commits.


79454 09-Jul-2001 dd

mdoc(7) police: remove extraneous .Pp before and/or after .Sh.


78696 24-Jun-2001 dwmalone

Get rid of some constness warnings.


78650 23-Jun-2001 kato

Merged from sys/boot/i386/btx/btx/btx.s revision 1.25.


78522 21-Jun-2001 peter

Remove -DNEW_LINKERSET, it is not used here anymore. This is now native.


78465 19-Jun-2001 peter

Convert the elf loader to the new linker set layout for elf files.
This should make dependencies at load time work like before. Oops.

Noticed by: markm


78463 19-Jun-2001 peter

Fix some of the worst formatting bug (seperate commit)


78335 16-Jun-2001 peter

Work around what looks like a bad make(1) bug. For some reason,
make(1) wants to build loader.sym *before* the .o files. Eliminating
one seeminly intermediate step avoids the problem. Somehow, it seems
that variables are not getting expanded at the right time.
Any explanations would be appreciated...

Changing:
${BASE}.sym: ${OBJS} ${LIBSTAND} ${LIBFICL} ${LIBALPHA} ${CRT} vers.o
${LD} ...
To:
BASEOBJS= ${OBJS} ${LIBSTAND} ${LIBFICL} ${LIBALPHA} ${CRT} vers.o

${BASE}.sym: ${BASEOBJS}
echo ${BASEOBJS}
${LD} ...
.. the echo only shows LIBFICL, CRT and vers.o. ${OBJS} is not included.


78332 16-Jun-2001 obrien

style(9) and remove a left over Alpha comment


78331 16-Jun-2001 obrien

style cleanup


78329 16-Jun-2001 obrien

style police


78328 16-Jun-2001 obrien

This Intel derived file uses C++ style comments.
(I'll be we know which compiler and platform they developed this on...)
Minimally change them to C89 comments to make GCC happy. (this is kinda funny
as the file has piece derived from FreeBDS 3.2)

Also fix FreeBSD id style.


78327 16-Jun-2001 obrien

Fix FreeBSD id style.


78326 16-Jun-2001 obrien

style(9)


78320 16-Jun-2001 obrien

style(9) + fix FreeBSD id's.


78195 14-Jun-2001 peter

Nuke old gensetdefs based linker sets with extreme prejudice


77979 10-Jun-2001 dfr

Move the first section up one page. The firmware bogusly uses the first
page of the image to load section headers and if we let the text section
start at zero, it corrupts the section table when its loaded. With this
change, the loader gets as far as the 'ok' prompt.


77978 10-Jun-2001 dfr

Remove a 'return' statement which I put in while I was trying to debug
the startup code.


77971 10-Jun-2001 jesper

Fix a minor style bug in the last commit.

Submitted by: Adrian Steinmann <ast@marabu.ch>
MFC after: 2 days


77943 09-Jun-2001 dfr

First approximation of an ia64 EFI loader. Not functional.


77575 01-Jun-2001 ru

Remove vestiges of MFS.


77444 29-May-2001 dcs

Go back to 1.20 again.


77443 29-May-2001 dcs

Turn dictthreshold and dictincrease into cell-sized variables, so
they can be used with cell operators like !.

As I did this, I noticed the whole CELL thing might have problems with
big endian architectures with sizeof(int)!=sizeof(void*).


77377 29-May-2001 obrien

Revert the ugly band-aide[tm] hack of rev 1.12.
The offending loader.4th commit (rev 1.20) has been backed out.


77376 29-May-2001 dcs

Revert 1.20, as it causes mysterious problems to the Alpha people.


77327 28-May-2001 obrien

One needs to introduce things with a `.file' directive before trying to
do a .loc on it. BTW, the .loc needs to be in a .text section.
gas 2.11.0 catches these oversights where previous versions did not.


77297 28-May-2001 obrien

grep -v offending lines from loader.4th until the master version of it
is fixed.


77295 28-May-2001 obrien

Add the generated help files to CLEANDIRS.

Found by: rm -rf /usr/obj/usr/src/sys/boot ; make ; make clean ; cvs -q up


77285 27-May-2001 jesper

In sys/boot/common/module.c, near line 105 a request for a raw
file is processed by passing its name in argv[1]:
return(mod_loadobj(typestr, argv[1]));
however, it is not tested to see if argv[1] actually is defined.

At best, mod_loadobj() near line 244 returns an error like
"can't find 'garbage'" but if the "filename" entered is sufficiently
long, some buffer gets overrun. Of course, "load -t filename" is
actually a typo because we meant to type "load -t mfs_root filename";
nevertheless, a hung machine seems like too harsh a punishment for
such a small typo...

PR: i386/27693
Submitted by: Adrian Steinmann <ast@marabu.ch>
MFC after: 1 week


77273 27-May-2001 rnordier

Fix reboot buglet when BOOT_BTX_NOHANG is defined.

Submitted by: Umesh Krishnaswamy <umesh@juniper.net>


77268 27-May-2001 dcs

As in with ":", check dictionary space and increase it if necessary before
"create".


77162 25-May-2001 ru

- sys/msdosfs moved to sys/fs/msdosfs
- msdos.ko renamed to msdosfs.ko
- /usr/include/msdosfs moved to /usr/include/fs/msdosfs


77125 24-May-2001 nyan

(Re-)enabled boot2.


77124 24-May-2001 nyan

Update boot[12] program to compile ELF binary.

Submitted by: Nobuyuki Koganemaru <n-kogane@syd.odn.ne.jp> and
kawanobe@st.rim.or.jp (Kawanobe Koh)


77034 23-May-2001 ru

The following modules were renamed:

fdesc -> fdescfs
portal -> portalfs
umap -> umapfs
union -> unionfs


76948 22-May-2001 dd

Fix a grammar nit.

PR: 27520
Submitted by: Michael Lucas <mwlucas@blackhelicopters.org>


76927 21-May-2001 nyan

Merged from sys/boot/i386/btx/btx/btx.s revision 1.24.


76714 17-May-2001 dcs

Allocate more memory if necessary.


76421 10-May-2001 dcs

FICL 2.05 has a flawed definition of BASE. Fix it.

Spotted by: Peter Jeremy <peter.jeremy@alcatel.com.au>


76224 02-May-2001 obrien

* include/elf.h has been repo copied to include/elf-hints.h, and it no
longer includes machine/elf.h.
* consumers of elf.h now use the minimalist elf header possible.

This change is motivated by Binutils 2.11.0 and too much clashing over
our base elf headers and the Binutils elf headers.


76116 29-Apr-2001 dcs

Bring in ficl 2.05.

This version has a step debugger, which now completely replaces the
old trace feature. Also, we moved all of the FreeBSD-specific MI
code to loader.c, reducing the diff between this and the official
FICL distribution.


75659 18-Apr-2001 ru

mdoc(7) police: fixed whatis(1) entry.


75300 08-Apr-2001 gallatin

no longer needed now that we are able to build cdboot from sources again


75299 07-Apr-2001 gallatin

build cdboot from sources now that the cd9660 fs support works
MFC candidate


75230 05-Apr-2001 dfr

Don't call prom_open() multiple times. This confuses some versions of SRM
and makes it impossible to boot from floppy and CD on some AlphaServer
platforms.

Detective work by: Michael Richards <michael@fastmail.ca>


74850 27-Mar-2001 ru

MAN[1-9] -> MAN.


74798 25-Mar-2001 obrien

Turn off building the ARC loader. I don't know of anyone currently working
on advancing this WIP.


74592 21-Mar-2001 jhb

Always disable paging when exiting back to real mode after receiving a
fatal trap. Also, reload the GDT register to point to BTX's GDT before
playing around with the segment registers to return to real mode. This is
helpful if the kernel causes a fatal exception before it has setup its own
IDT and fault handlers. For example, if one happens to break mtx_init().
Without these changes BTX would recursively page fault (if paging was not
disabled) or triple fault and reset the CPU (without the GDT reload)
instead of providing a potentially useful register dump.

Reviewed by: rnordier


74265 14-Mar-2001 ps

Don't set the gateway address if the netmask is zero or we're on
the same network. PXE does not do netmask calculations, so if the
gateway is set it will use it.

Submitted by: peter & FreeBSD cluster ACLs


74263 14-Mar-2001 jhb

Use better descriptions (ones invovling words from the English language
anyways) for the accept filter modules.


74255 14-Mar-2001 dcs

Improve comments about the sound drivers.
Correct accf lines.


74212 13-Mar-2001 jhb

- Sync up with stable by adding in the Netgraph and Sound module sections,
the agp module, and the accept filter modules.
- Remove an extraneous blank line.


73953 07-Mar-2001 dcs

Goodbye vn, welcome md.


73403 04-Mar-2001 obrien

Fix whitespace.


73349 02-Mar-2001 ru

setlocale(3) has been fixed to match POSIX standard:
LC_ALL takes precedence over other LC_* envariables.


73233 28-Feb-2001 ru

Eliminate mdocNG warnings caused by misplaced or extraneous macro calls.


72879 22-Feb-2001 dcs

Whenever the user might be offered a chance to quit through
pager_output(), respect that choice.

PR: 15747


72640 18-Feb-2001 asmodai

Preceed/preceeding are not english words. Use precede or preceding.


72091 06-Feb-2001 asmodai

Fix typo: seperate -> separate.

Seperate does not exist in the english language.


71897 01-Feb-2001 des

Add atspeaker_load.


71895 01-Feb-2001 ru

mdoc(7) police: split punctuation characters + misc fixes.


71102 16-Jan-2001 ru

Prepare for mdoc(7)NG.


70706 06-Jan-2001 jhb

Add commented out examples for the new KTR loader tunables.


70519 30-Dec-2000 phk

Use <sys/queue.h> macro API.

Submitted by: "Jason" <jsmethers@pdq.net>
Reviewed by: /sbin/md5


70426 28-Dec-2000 des

Retire kernfs (kernel part).


70405 27-Dec-2000 ru

Prepare for mdoc(7)NG.


70333 24-Dec-2000 kato

Disabled boot2 for the moment, because it needs aout tools.


70177 19-Dec-2000 rnordier

Fix column alignment (whitespace-only change).


70082 16-Dec-2000 kato

Merged from sys/boot/i386/loader/Makefile revision 1.49.


70020 14-Dec-2000 ru

mdoc(7) police: removed duplicate .Os call.


69985 13-Dec-2000 rnordier

Strip the .comment and .note sections when stripping. There's no
point in retaining this info, particularly under BTX.


69921 12-Dec-2000 rnordier

Add a magic number, for easier identification of boot0. At present,
this is used only by libdisk.


69738 08-Dec-2000 marcel

Add "empty" makefile. Cross-building fails without it.


69430 01-Dec-2000 ache

Cosmetique: don't use localized `date`


69395 30-Nov-2000 jhb

Set the proper bit in the howto flags for a serial console rather than
setting the index of the bit. (0xc vs. 0x1000)


69391 30-Nov-2000 ps

Add support for probing the keyboard from pxeboot which will behave
exactly the same as passing -P to boot2.

Submitted by: jhb


69242 27-Nov-2000 obrien

`cdboot' is broken as it cannot load a kernel.
The release engineer keeps using the wrong /boot/cdboot when creating the
ISO images. So we'll add the 4.0-RELEASE cdboot to the tree until someone
bothers to fix the source so a working `cdboot' is built.


69027 22-Nov-2000 ru

mdoc(7) police: do not split author names in the AUTHORS section.


68961 20-Nov-2000 ru

mdoc(7) police: use the new features of the Nm macro.


68854 17-Nov-2000 ru

mdoc(7) police: use certified section headers wherever possible.


68851 17-Nov-2000 msmith

The default kernel filename is "kernel" again, not "kernel.ko".

Submitted by: mckusick


68755 15-Nov-2000 ben

remove period from SEE ALSO.


68729 14-Nov-2000 obrien

Don't use the Gawkism strftime(). Pass in the date stamp on the awk
command line instead.

Approved by: dcs


68716 14-Nov-2000 ru

Use Fx macro wherever possible.


68713 14-Nov-2000 mjacob

init booted_kernel from environment kernelname (if there)


68712 14-Nov-2000 mjacob

move init of booted_kernel to bootinfo.c


68548 10-Nov-2000 benno

OpenFirmware/PowerPC loader, part 2.

As of this patchset, the loader builds (under NetBSD/macppc), boots, interacts
and talks to BOOTP/NFS servers.

(main.c was moved from boot/ofw/libofw to boot/ofw/common but has no revision
history)

Reviewed by: obrien


68547 10-Nov-2000 benno

Give the network device a print method.

Reviewed by: obrien


68546 10-Nov-2000 benno

OpenFirmware/PowerPC loader, part 2.
This brings the loader up to the point where I can compile it under
NetBSD/macppc and have it boot, interact and talk to NFS servers.

sys/boot/ofw/libofw/main.c has been deleted (it has no revision history) and
replaced with sys/boot/ofw/common/main.c

Reviewed by: obrien


68362 05-Nov-2000 ps

Honor the ip address given in the root-path dhcp option.

PR: 21743
Submitted by: Brian Candler <B.Candler@pobox.com>


68358 05-Nov-2000 nyan

Merged from the following changes.

sys/boot/i386/btx/btx/Makefile 1.9
sys/boot/i386/btx/btx/btx.s 1.23
sys/boot/i386/libi386/biosdisk.c 1.32 and 1.33
sys/boot/i386/libi386/biosmem.c 1.5
sys/boot/i386/libi386/comconsole.c 1.8
sys/boot/i386/libi386/gatea20.c 1.3
sys/boot/i386/libi386/time.c 1.4
sys/boot/i386/libi386/vidconsole.c 1.13
sys/boot/i386/loader/Makefile 1.48
sys/boot/i386/loader/main.c 1.22


68314 04-Nov-2000 rnordier

Support a.out: avoid (%dx) in in/out instructions, and use an m4
macro to supply underscores for externals.


68310 04-Nov-2000 ps

MF4: Add LOADER_TFTP_SUPPORT make.conf flag.


68264 02-Nov-2000 jhb

The Number of Fixed Disks at memory location 0x475 is only 1 byte, not a
2 byte word. This fixes machines that probe 30-odd hard drives during boot
in the loader.

Submitted by: Helpful folks at Tyan via ps


68136 01-Nov-2000 mph

"it's" --> "its" (possessive).

Correct a malformed sentence.


67955 30-Oct-2000 n_hibma

Add entry for umodem


67699 27-Oct-2000 dfr

Backout revision 1.7 which was a bad idea since it would force people
to reinstall boot1 after a 'make world'.

Unfortunately this means that people who have already installed a new
boot1 from a 'make world' after 2000/09/18 *must* reinstall it after
their next build using something like:

# disklabel -B /dev/da0c


67655 26-Oct-2000 obrien

Install the loader manpages.


67593 25-Oct-2000 dfr

Move the call to extend_heap() from main to start so that if our BSS
expands beyond the limit we will extend the address space before trying
to zero the BSS. This should give us plenty of headroom for modest
expansion of the loader.


67592 25-Oct-2000 dfr

Don't build start.S as part of libalpha.a - its built specially.


67591 25-Oct-2000 dfr

Don't indirect through a null pointer if we run out of kernel filenames.


67590 25-Oct-2000 dfr

Make a few functions inline to save space.


67562 25-Oct-2000 n_hibma

The USB scanner driver. To be used together with SANE.


67227 16-Oct-2000 obrien

Convert from the Alpha compontents to PowerPC ones.


67204 16-Oct-2000 obrien

"Ok, my loader's now up to putting up a prompt. It probes disks partially
but can't boot from them yet."

Thanks to Stephane Potvin for the some of the code in this set.

Submitted by: Benno Rice <benno@jeamland.net>


67136 15-Oct-2000 nyan

Merged from sys/boot/i386/loader/main.c revision 1.21.


66871 09-Oct-2000 dcs

Now I see the error of my ways.

Previous revision of this file changed the "boot" commands to take
no arguments from the stack. This is only valid in the case where
a kernel has not been loaded. In that case, load_kernel_and_modules
will be called, which takes a list of arguments from the stack.

When a kernel is presently loaded, though, the list of arguments must
be passed to the boot command, which was the behaviour before the last
revision.

Fix things for both cases.

Noticed by: S-Max and others on that chat room


66556 02-Oct-2000 rnordier

Go back to occupying just a single sector, reverting r1.17 - r1.20.
Taking over the sector following the MBR causes problems on some
machines, and the actual gains are fairly small in terms of how
the space is presently used.

Since we need a number of further features (eg. handling extended
partitions) that can't be readily accommodated in the basic boot0
design anyway, rather choose to implement the additional stuff
separately and concentrate on compatibility rather than features
here.


66555 02-Oct-2000 rnordier

Set MAINTAINER.


66349 25-Sep-2000 dcs

Get rid of garbage left on the stack.


66346 25-Sep-2000 dcs

What could possibly have possessed me to forget the "0 (arguments)"
in two of the three boot words in the "boot" redefinition, I have no
clue. Fix it.

Noticed by: bp
Noticed by: adrian


66246 22-Sep-2000 kato

Merged from sys/boot/i386/loader/main.c revision 1.23.


66245 22-Sep-2000 kato

Merged from sys/boot/i386/libi386/Makefile revision 1.19.


66133 20-Sep-2000 archie

Add support for the "nullconsole" console type, for systems with
neither a video console nor a serial port. Use it if the RB_MUTE
flag is set.

Submitted by: Doug Ambrisko <ambrisko@whistle.com>
Reviewed by: jhb


66046 18-Sep-2000 dcs

Check for the correct minimum version required by the current code.

I hope I got this right... :-)


66027 18-Sep-2000 mjacob

Steal 512KB more from system memory for heap instead of 256KB. We died
without the extra space. What a pity.


66026 18-Sep-2000 mjacob

Run SECONDARY_LOAD_ADDRESS down to 0x2000a000- this still leaves
(barely) enough room for boot1 and gives us 8KB more to play with
in the loader.


66025 18-Sep-2000 mjacob

Make the stack 12K- we seem to need a bit more.
Rename 'stack' to 'stackbase' as this variable
more correctly denotes what it is.


65949 16-Sep-2000 dcs

Use _ instead or - where proper, according to the style I have been
using.

Overload "?" so it will also show loader.4th commands.


65945 16-Sep-2000 dcs

Solve a name clash.
Add something to help debugging.


65940 16-Sep-2000 dcs

The default search path for kernel and modules was bogus. It makes no
sense for /boot/kernel to come last.


65939 16-Sep-2000 dcs

The module_path set by default was bogus. It had /boot/kernel last,
which makes little sense.


65938 16-Sep-2000 dcs

Both boot and boot-conf were using a different algorithm from the one
used by start to find the kernel. Fix this.

Also, boot would proceed immediately in the absence of a path as
argument. Check first if a kernel has already been loaded, and, if
not, fall back to load kernel&modules behavior.

Some further factorizing. I deem this code to be mostly readable by
now! :-)

Many thanks to: Makoto MATSUSHITA <matusita@jp.FreeBSD.org>


65883 15-Sep-2000 dcs

Factorize, reorganize, and move code around.

The boot-conf and boot code had various bugs, and some of it was big,
ugly, unwieldy, and, sometimes, plain incorrect. I'm just about
completely replaced these ugly parts with something much more manageable.

Minor changes were made to the well-factorized parts of it, to accomodate
the new code.

Of note:

* make sure boot-conf has the exact same behavior wrt boot order
as start.

* Correct both boot and boot-conf so they'll work correctly when
compiled in, as they both had some bugs, minor and major.

* Remove all the crud from loader.4th back into support.4th, for
the first time since boot-conf was first improved. Hurray!

I'm fairly satisfied with the code at this time. Time to see about those
man pages...


65881 15-Sep-2000 dcs

Start countdown only _after_ the kernel was loaded. Not very fair otherwise.


65785 12-Sep-2000 dcs

New world order wrt to kernel location and name. This doesn't actually
changes anything (in theory), just better document it. I'm waiting for
the final word before I tackle the man pages.


65769 12-Sep-2000 roger

Back out bktr_mem_load. It is not needed because I'm use MODULE_DEPEND
elsewhere.
Reminded by: Mike Smith


65738 11-Sep-2000 roger

Add bktr_mem_loader, default to NO.
In the near future the bktr module will need the bktr_mem module too.


65698 10-Sep-2000 dfr

Fix this so that we actually define HAVE_PNP when its available.


65689 10-Sep-2000 markm

The entropy driver module has changed name.


65685 10-Sep-2000 dcs

Bump up version as a result of the recent changes to kernel path,
and boot-conf&boot semantic changes.

Also, make it 1.0.

Reminded by: peter (even though he doesn't know it)


65684 10-Sep-2000 dcs

Bump up version as a result of the recent changes to kernel path,
and boot-conf&boot semantic changes.

Reminded by: peter (even though he doesn't know it)


65683 10-Sep-2000 dcs

Change NOFORTH comment character from # to \ followed by space,
to make things more interchangeable between it and the FORTH case.

Perhaps requiring the space is a bit too much, but...

Nothing in the tree seems to produce loader.rc files with comment
line, at this time.


65677 10-Sep-2000 dfr

Only build PnP parts if the platform supports PnP.


65641 09-Sep-2000 dcs

Upon reflection, I decided that bootfile must have priority over kernel
as the kernel name. The one very unfortunate consequence is that kernel
as an absolute path loses the priority. It will only be tried after
/boot/${kernel}/${bootfile}. I'll see what can be done about it later.


65640 09-Sep-2000 rnordier

Correct BSD/OS slice type.

PR: 21099
Submitted by: Alan Clegg <abc@bsdi.com>


65630 09-Sep-2000 dcs

First tackle at trying to handle the New Deal on kernels.

Load the first of the following kernels to be found:

${kernel} if ${kernel} is an absolute path
/boot/${kernel}/${kernel}
/boot/${kernel}/${bootfile}
${kernel}/${kernel}
${kernel}/${bootfile}
${kernel}
${bootfile}

The last instance of ${kernel} and ${bootfile} will be treated as a
list of semicolon separated file names, and each will be tried in turn,
from left to right.

Also, for each filename loader(8) will try filename, filename.ko,
filename.gz, filename.ko.gz, in that order, but that's not related
to this code.

This resulted in a major reorganization of the code, and much of what
was accumulating on loader.4th was rightly transfered to support.4th.

The semantics of boot-conf and boot also changed. Both will try to load
a kernel the same as above.

After a kernel was loaded, the variable module_path may get changed. Such
change will happen if the kernel was found with a directory prefix. In
that case, the module path will be set to ${directory};${module_path}.

Next, the modules are loaded as usual.

This is intended so kernel="xyzzy" in /boot/loader.conf will load
/boot/xyzzy/kernel.ko, load system modules from /boot/xyzzy/, and
load third party modules from /boot/modules or /modules. If that doesn't
work, it's a bug.

Also, fix a breakage of "boot" which was recently introduced. Boot without
any arguments would fail. No longer. Also, boot will only unload/reload
if the first argument is a path. If no argument exists or the first
argument is a flag, boot will use whatever is already loaded. I hope this
is POLA. That behavior is markedly different from that of boot-conf, which
will always unload/reload.

The semantics introduced here are experimental. Even if the code works,
we might decide this is not the prefered behavior. If you feel so, send
your feedback. (Yeah, this belongs in a HEADS UP or something, but I've
been working for the past 16 hours on this stuff, so gimme a break.)


65622 08-Sep-2000 dcs

Update boot and boot-conf descriptions to reflect new and old changes.
Add a warning in loader(8) that boot might be changed by loader.4th.


65621 08-Sep-2000 dcs

Enhance boot-conf.

Now boot-conf can also receive parameters to be passed to the kernel
being booted. The syntax is the same as in the boot command, so one
boots /kernel.OLD in single-user mode by typing:

boot-conf /kernel.OLD -s instead of
boot-conf -s /kernel.OLD

The syntax still supports use of directory instead of file name, so

boot-conf kernel.OLD -s

may be used to boot /boot/kernel.OLD/kernel.ko in single-user mode.

Notice that if one passes a flag to boot-conf, it will override the
flags set in .conf files, but only for that invocation. If the user
aborts the countdown and tries again without passing any flags, the
flags set in .conf files will be used.

Some factorization was done in the process of enhancing boot-conf,
as it has been growing steadly as features are getting added, becoming
too big for a Forth word. It still could do with more factorization,
as a matter of fact.

Override the builtin "boot" with something based on boot-conf. It will
behave exactly like boot-conf, but booting directly instead of going
through autoboot.

Since we are now pairing kernel and module set in the same directory,
this change to boot makes sense.


65618 08-Sep-2000 dcs

Strictly speaking, this works. It enumarates the PnP devices, and
load the modules needed according to a file relating module names
(actually, _file_ names, not really modules -- the dependency
stuff is not exported to loader's UI) to PnP IDs.

But it still lacks a number of desired features, and it's too crude
for my tastes. But since I don't have time to work on it, it might
be preferable to make it available to those who might. It's not
installed by default, much less loaded. In fact, it wouldn't even
had a copyright message (who? me? assume responsibility for _this_?),
if the cvs commit hadn't aborted for lack of $FreeBSD$, and I decided
to just cut&paste the stuff from elsewhere.


65617 08-Sep-2000 dcs

Add the infrastructure necessary to handle PnP from a Forth script.

Also, export the file_findfile() function. Again, this is taken from
work in progress but frozen for the time being. Since it works, I'd
rather commit and remove any uglyness later than hide it on my tree.


65616 08-Sep-2000 dcs

Fix an error message which was using the wrong variable to get the
kernel name from.


65615 08-Sep-2000 dcs

Add constructors to crude structure support. Rework some of the
code into a more modular interface, with hidden vocabularies and
such. Remove the need to a lot of ugly initialization.

Also, add a few structure definitions, from stuff used on the C
part of loader. Some of this will disappear, and the crude structure
support will most likely be replaced by full-blown OOP support
already present on FICL, but not installed by default. But it was
getting increasingly inconvenient to keep this separate on my tree,
and I already lost lots of work once because of the hurdles, so
commit this.

Anyway, it makes support.4th more structured, and I'm not proceeding
with the work on it any time soon, unfortunately.


65614 08-Sep-2000 dcs

Make the pnp structure a global variable, so it can be used elsewhere.


65613 08-Sep-2000 dcs

Fix autoboot. Now autoboot *always* show the correct kernel name. It
gets the name from the environment variable kernelname, which is set
when a kernel is loaded. For this reason, autoboot will _first_ try
to load a kernel, and only proceed with the wait prompt after that
succeeds. If it fails, it will abort immediately.

While I understand some may think this behavior undesirable, I think
it is, overall, the best thing to do, even if we do not consider the
aesthetic issue. Notice that anyone using the default loader.rc
already has the kernel loaded before autoboot.

On unload, unset kernelname.

Separate the code that tries to load a kernel from the list of options
to the function loadakernel(). It is used by both boot() and
autoboot().


65607 08-Sep-2000 kato

Merged from sys/boot/i386/loader/Makefile revision 1.47.


65598 08-Sep-2000 imp

Look for libstand in the built tree rather than in /usr/lib. This
likely could be done better, but the tree is broken and I wanted to
get a fix into the tree.

Reviewed by: msmith


65549 06-Sep-2000 obrien

With the committed changes to the loaders modules path code, the kernel
path does not need to be hard coded.


65502 05-Sep-2000 obrien

Fix the kernel default load from "/boot/modules" to "/boot/kernel".

Reported by: dcs


65501 05-Sep-2000 obrien

The kernel is now known as `kernel.ko' and it and its matching modules
live in ``/boot/kernel/''.


65499 05-Sep-2000 msmith

Fix a bug which prevents parsing this Makefile without having a
previously-built loader binary elsewhere.


65498 05-Sep-2000 msmith

Export the salient configuration items in a non-pxe-specific namespace
to allow commonality between varying platforms. This is a step
towards parsing the diskless configuration information with MI code
inside the kernel.

Export the interface hardware address to the kernel, so that it is possible
to determine the boot interface with certainty.

Export the NFS filehandle for the root mount to the kernel, so that the
kernel does not need to perform a mount RPC call.


65385 03-Sep-2000 obrien

This is real released software, let people think that.


65271 31-Aug-2000 kato

The INT 1B BIOS call is used to obtain geometries of SASI/IDE hard
drives. Some IDE cards don't set propler information into BIOS work
are and their sector size were always recognized as 256 bytes/sector.

Pointed out by: jagarl@creator.club.ne.jp


65063 24-Aug-2000 jhb

Add a new compile-time tweak to BTX. If you set the make(1) variable
BOOT_BTX_NOHANG, then BTX will be compiled with the appropriate flags so
that it reboots after a fault instead of hanging forever.

Requested by: ps
Approved by: rnordier


65042 24-Aug-2000 sheldonh

List loader.conf and friends in the FILES section.

Requested by: obrien


64660 15-Aug-2000 kato

Fixed determination method for sector size of the 2nd IDE HDD.


64553 12-Aug-2000 kato

Merged from sys/boot/i386/Makefile.inc revision 1.2.


64550 11-Aug-2000 peter

Add -mpreferred-stack-boundary=2 to CFLAGS for i386. This and libstand
reduces /boot/loader from 163840 bytes to 155648 and pxeboot from 165888
bytes to 157696 bytes.


64532 11-Aug-2000 dcs

Add missing "is".

PR: 20524
Submitted by: Peter Pentchev <roam@orbitel.bg>


64527 11-Aug-2000 ps

Add support to send the string 'PXEClient' as the Vendor class
identifier to the DHCP server. Now you can check for this string
in your dhcp configuration to decide whether you will hand out a
lease to the client or not.


64522 11-Aug-2000 ps

Pass along the interesting variables we were given from DHCP so we
can utilize them in the kernel and with kenv.


64385 08-Aug-2000 rnordier

Typo/spelling fixes.


64295 06-Aug-2000 kato

- Fixed missing initialization of current device number.
- Fixed comment.

Pointed out by: nyan


64260 04-Aug-2000 jhb

Argh! Fix a brainfart of mine. In the old boot0, we relocated ourself
to 0x600 via a 'rep movsw'. Once that was done, %cx was zero, so we could
simply use 'movb' to update the lower byte of %cx in preparation for
zeroing out the fake partition entry used to boot to other drives via F5.
Well, in the new boot0, we don't actually relocate ourselves, instead it
is easier to create the fake partition entry first and then just use it to
get the BIOS to load all of boot0 into memory at 0x600. However, since we
aren't doing the relocate code anymore, we don't know that %cx == 0 when
we hit the 'movb' to setup %cx for clearning the fake partition entry.
Thus, if %ch != 0 when the BIOS started boot0, then it would end up zeroing
a lot more memory than just 8 words. The solution is to do a word move of
$8 into %cx.

Debugging help from: David Wolfskill <dhw@whistle.com>


64230 04-Aug-2000 obrien

Fix this so it is a Makefile and not a shell script -- now issuing `make'
a second time does not rebuild the binary.


64221 04-Aug-2000 jhb

Fix some of the arcdisk devsw functions to catch up with warning fixes in
<stand.h>. Also, since bcache_strategy() used to not have a prototype,
arcdisk happily called bcache_strategy() with 6 parameters instead of 7,
leaving out the disk unit number, which is the 2nd parameter. Add in the
unit number to the bcache_strategy() call to fix this.


64220 04-Aug-2000 jhb

Bring back the perform() function. However, conditionionalize it on
BOOT_FORTH as it is only used if BOOT_FORTH is not defined.


64190 03-Aug-2000 kato

- Fixed %si (offset to partition table) in boot.
- Fixed comment.


64188 03-Aug-2000 jhb

Fix the more obvious warnings to deal with my earlier warning cleanups.


64187 03-Aug-2000 jhb

Cleanup warnings. Most of these are signed/unsigned warnings, as well as
some added const's.


64186 03-Aug-2000 jhb

Fix several BDECFLAGS warnings. Also, actually use the 'verbose' parameter
for lsdev when printing out slice information. Now, you only get the
sizes and LBA's of slices if you use 'lsdev -v'.


64183 03-Aug-2000 kato

- Fixed pointer to the partition table in the buffer.
- Use shift by %cl instead of five shifts by 1.


64123 02-Aug-2000 kato

Added PC-98 HDD boot manager. The boot0 is the `IPL' which occupies
sector 0 of a disk and boot0.5 is the `boot selector' which starts
from address 0x400. The IPL loads boot0.5 and boot0.5 loads bootblock
of a slice.

The boot manager stuff was developed by me (kato) with Borland C++,
and then, translated into bcc in the ports collection by Nokubi-san.
After that, boot0 has been translated into gas with the .code16
directive by Takahashi-san (nyan) and boot0.5 has been rewritten in
gas by me.


64019 30-Jul-2000 nyan

Merged from sys/boot/i386/btx/btx/btx.s revisions from 1.18 to 1.22.


63962 28-Jul-2000 sheldonh

Rename the loadable nullfs kernel module: null -> nullfs


63742 21-Jul-2000 jhb

Remove an unnecessary .PATH entry.


63373 18-Jul-2000 obrien

Declare our DEC Alpha cdboot to be a fully released version 1.0.


63328 17-Jul-2000 jhb

Oops. Remove some debugging code used to display a hexdump of the sector
we just loaded from the disk. The code to call it was commented out, and
it easily fit into the extra sector, but remove it anyway as it is
unneeded.


63321 17-Jul-2000 jlemon

Unbreak the build -- no manual page for this yet.


63315 17-Jul-2000 jlemon

Hook up liloldr


63314 17-Jul-2000 jlemon

This is `liloboot', which creates a file which can be treated like a
Linux kernel image, and is designed to be dropped into a Linux system
and booted via LILO. Once booted, the user is greeted by the FreeBSD
loader. This still isn't quite complete, as the the root= specification
from LILO isn't currently passed to the loader yet.


63101 14-Jul-2000 nyan

Merged from sys/boot/i386/libi386/biosdisk.c revision 1.31.


63032 12-Jul-2000 jhb

The new and improved boot0, v1.1. This version adds the following:
- Autodetection and support of the BIOS EDD extensions to work around the
1024 cylinder limit on all but really ancient BIOS's.
- To work around some BIOS's which break when EDD is used with older drives,
we only attempt to use EDD if the cylinder is > 1023.
- Since this new code required more space than we had left, expand boot0 to
2 sectors (1024 bytes) in length.
- Add support for boot0 being multiple sectors using predefined constants.
If boot0 needs to be extended in the future, all that is required is
bumping the NUM_SECTORS constant.
- Now that we have more room to work with, add a few more fs type
descriptions while making others more verbose.


62913 10-Jul-2000 jhb

Always install loader.4th, defaults/loader.conf, and support.4th instead of
only doing so if loader.rc does not exist. This fixes the problem where
installworld doesn't update /boot/loader.4th, resulting in device.hints not
being loaded after updating past the config(8) changes, which resulted in
mcclock0 not being probed, and a nice kernel panic during boot.


62874 10-Jul-2000 kris

Don't call printf with no format string.


62873 10-Jul-2000 kris

Don't call printf with no format string. This is technically a security
vulnerability and could in principle be used to upload a new kernel from the
bootloader :-)


62787 07-Jul-2000 jhb

Remove commented out NOMAN variable.


62665 06-Jul-2000 jhb

- Inline all the functions that are only called once. This results in a
savings of 68 bytes in boot2.
- Also add a comment warning that you can't remove the empty exit()
function.


62660 06-Jul-2000 jhb

Doh. The disklabel is not 0x200 bytes of zeros, but it is 0x200 bytes long.


62658 06-Jul-2000 jhb

Clarify the comments in here a bit. The first sector of boot2 is not just
zeros, it is actually the disklabel itself. boot2.ldr is simply a
placeholder in the boot2 binary.


62657 06-Jul-2000 jhb

Emulate the WBINVD instruction when it is called by the BIOS.


62242 29-Jun-2000 jhb

Change the fault message to say 'BTX halted' isntead of 'System halted' to
avoid confusion.

Submitted by: George Scott <George.Scott@its.monash.edu.au>


62233 29-Jun-2000 ache

Add randomdev_load="NO"


62229 29-Jun-2000 jhb

Rework the detecting of the rdmsr and wrmsr instructions in the v86
monitor so that the codepath is cleaner and easier to maintain in the
future.


62176 27-Jun-2000 jhb

- Don't blindly assume that there are 8 hard drives installed. Instead,
use the BIOS Equipment List to determine how many hard drives are
installed and if the drive number we received in %dl is valid.
- Don't bother to disable interrupts when setting up the stack. The 8086
and beyond implicitly disable interrupts after an instruction that sets
%ss (for example, a pop or a mov) so that you can safely set %ss and %sp
in two consecutive instructions. An exception to this is the lss
instruction, which can set both registers simultaneously and thus doesn't
need this hack.
- Add support for EDD BIOS extensions to support booting off of hard drives
of nearly arbitrary length.


62146 26-Jun-2000 jhb

Comment this.


62138 26-Jun-2000 jhb

Add in support for EDD to support large disks via LBA. This uses a
method similar to that of the loader to avoid potentially breaking older
drives in that we only use EDD if the desired cylinder is > 1023.


62049 25-Jun-2000 mph

Typo fix: tunnable.
Backslash-parsing is not the role of printf(3), but is provided
by the C language.


61943 22-Jun-2000 sheldonh

Whitespace-only changes: apply accepted line breaking style as a
pre-cursor to other markup changes.

Accepted in principle by the author.


61836 19-Jun-2000 jhb

Comment this bad boy. Hopefully the next person that comes along won't
have to spend a few hours reading the code to figure all this out.


61823 19-Jun-2000 jhb

- Add some more details to the 'lsdev' output for FAT file systems.
- Add in support for the EDD (Enhanced Disk Drive) BIOS extensions to
use LBA mode for accessing drives past cylinder 1024. This should allow
us to load a kernel from anywhere on a newer drive up to 2 TB. Part
of this came from the PR below.

PR: i386/13847
Submitted by: Tor Egge <Tor.Egge@fast.no>


61757 17-Jun-2000 mjacob

Add wx and ispfw loadable module defaults.


61743 17-Jun-2000 jhb

Add support for emulating the RDMSR and WRMSR instructions into BTX. In
theory, this should allow the K7V Athlon motherboard to boot ok with boot
virus protection enabled. However, I have no hardware to test this. It
shouldn't break anything though. :)

Prodded by: Kelly Yancey <kbyanc@posi.net>


61720 16-Jun-2000 dcs

Fix vocabulary juggling so that builtins voc is always searched before
forth vocabulary when initially creating the builtins. FICL 2.05 has a
better way to do this, but this works for now.

Fixes "?".


61694 14-Jun-2000 dcs

Revert to 1.8


61693 14-Jun-2000 dcs

Remove the setting of sourceid from bf_vm(), as bf_vm() really has
no clue.

Set sourceid to 0 when booting, which is the correct setting for stdin.

Set sourceid to an arbitrary fd when include'ing, preserving and restoring
the previous sourceid. This is possibly broken(), as 0 is a valid fd. Maybe
we should +1 to this value.

This fixes the version problem widely reported.


61659 14-Jun-2000 ps

Delay calling the device cleanup routines until the absolute last
moment. We were cleaning up after PXE too early and the module
dependancy code would not be able to load any files if it needed
too.


61653 14-Jun-2000 ps

Make typing 'q' or 'Q' work for the show command as the pager prompt
says it should.


61650 14-Jun-2000 peter

With apologies to dcs, temporarily comment out the version check code. It
is failing for everybody that I have spoken with that has tried it.

FreeBSD/i386 bootstrap loader, Revision 0.8
(root@outback.netplex.com.au, Tue Jun 13 23:26:49 PDT 2000)
Loader version 0.3+ required
Aborted!
start not found

Note that the 0.3+ message is from inside the arch-alpha block, not the
i386 block of code. And even then, 0.8 is higher than 0.3.

This prevents the rest of the loader.conf stuff working. :-/


61640 13-Jun-2000 peter

Borrow phk's axe and apply the next stage of config(8)'s evolution.

Use Warner Losh's "hint" driver to decode ascii strings to fill the
resource table at boot time.

config(8) no longer generates an ioconf.c table - ie: the configuration
no longer has to be compiled into the kernel. You can reconfigure your
isa devices with the likes of this at loader(8) time:
set hint.ed.0.port=0x320

userconfig will be rewritten to use this style interface one day and will
move to /boot/userconfig.4th or something like that.

It is still possible to statically compile in a set of hints into a kernel
if you do not wish to use loader(8). See the "hints" directive in GENERIC
as an example.

All device wiring has been moved out of config(8). There is a set of
helper scripts (see i386/conf/gethints.pl, and the same for alpha and pc98)
that extract the 'at isa? port foo irq bar' from the old files and produces
a hints file. If you install this file as /boot/device.hints (and update
/boot/defaults/loader.conf - You can do a build/install in sys/boot) then
loader will load it automatically for you. You can also compile in the
hints directly with: hints "device.hints" as well.

There are a few things that I'm not too happy with yet. Under this scheme,
things like LINT would no longer be useful as "documentation" of settings.
I have renamed this file to 'NOTES' and stored the example hints strings
in it. However... this is not something that config(8) understands, so
there is a script that extracts the build-specific data from the
documentation file (NOTES) to produce a LINT that can be config'ed and
built. A stack of man4 pages will need updating. :-/

Also, since there is no longer a difference between 'device' and
'pseudo-device' I collapsed the two together, and the resulting 'device'
takes a 'number of units' for devices that still have it statically
allocated. eg: 'device fe 4' will compile the fe driver with NFE set
to 4. You can then set hints for 4 units (0 - 3). Also note that
'device fe0' will be interpreted as "zero units of 'fe'" which would be
bad, so there is a config warning for this. This is only needed for
old drivers that still have static limits on numbers of units.
All the statically limited drivers that I could find were marked.

Please exercise EXTREME CAUTION when transitioning!

Moral support by: phk, msmith, dfr, asmodai, imp, and others


61627 13-Jun-2000 ru

Treat \t and \n inside /boot.config as whitespaces.

PR: 19215


61586 12-Jun-2000 dcs

Fix REFILL. It must throw RESTART instead of OUTOFTEXT so that
execution can take place at the point where it stopped after the
input buffer has been refilled.

Add ANS Forth CORE EXT and FILE word SOURCE-ID.


61585 12-Jun-2000 dcs

The word environment? returns a flag indicating whether the variable
was found or not. Fix it's usage. Alas, it caused no problem before,
besides leaving garbage in the stack, because refill, used by [if]
[else] [then], was broken.


61584 12-Jun-2000 dcs

Make abort" functional in interpret mode. This behavior is undefined
by ANS Forth standard, but it's useful.

Also, define the constant true in a more strict way. C might garantee
2-complement math, but Forth doesn't.


61583 12-Jun-2000 dcs

Make comment reflect reality.


61379 07-Jun-2000 dcs

Put some version checking.


61378 07-Jun-2000 dcs

Bump loader version due to FICL (duh!) and copyin, copyout, setenv&cia.


61377 07-Jun-2000 dcs

Bump loader version due to copyin, copyout, setenv&cia.


61376 07-Jun-2000 dcs

Modify boot-conf so it can take a kernel or directory name as
a parameter and dtrt.

Also, make boot-conf always unload first. There wasn't really any
point in not doing this, as the kernel _has_ to be loaded before
any other modules.

Tested by: dwhite


61374 07-Jun-2000 dcs

Add setenv, getenv, setenv?, unsetenv, copyin and copyout to FICL.


61373 07-Jun-2000 dcs

Remove AGAIN definition, as FICL 2.04 provides it.

Add strlen, to help handling data generated by C code.

Add 2>r 2r>, because OO programming without them sucks.


61372 07-Jun-2000 dcs

Remove a bug that caused local variables declarations in the format
{ | internal -- } to be rejected.


61371 07-Jun-2000 dcs

Place original builtins in a vocabulary called "builtins". This
is intended mainly for debuging purposes, but it can be used by
other words if done carefully.


61353 07-Jun-2000 dcs

Remove residual printf.

Prodded by: msmith


61205 03-Jun-2000 dfr

Record the new PALcode revision in the pcs structure after changing to
run OSF/1 PALcode.

Obtained from: NetBSD


61182 02-Jun-2000 dcs

Apply a number of fixes for the Alpha platform.


61177 02-Jun-2000 dcs

Add something that was missing from the original 2.04 distribution.


61149 01-Jun-2000 dcs

Add "int" sized manipulation words.


61064 29-May-2000 nyan

Sync with the following changes.

sys/boot/i386/btx/btx/Makefile 1.8
sys/boot/i386/btx/btx/btx.s 1.16 and 1.17
sys/boot/i386/btx/btxldr/btxldr.s 1.10
sys/boot/i386/loader/Makefile 1.45


60962 26-May-2000 dcs

Strip spaces and comments more agressively.


60959 26-May-2000 dcs

Bring in FICL 2.04. No bump of loader version is required by this
commit.


60938 26-May-2000 jake

Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by: msmith and others


60846 24-May-2000 jhb

Convert the short stub of real-mode code into 16-bit assembly.


60833 23-May-2000 jake

Change the way that the queue(3) structures are declared; don't assume that
the type argument to *_HEAD and *_ENTRY is a struct.

Suggested by: phk
Reviewed by: phk
Approved by: mdodd


60823 23-May-2000 jhb

Grrr, fix a silly 'movl' -> 'movw' typo in both pxeldr and cdldr. Also,
remove unnecessary cruft from the Makefiles for both.


60822 23-May-2000 jhb

Clean up some more 16-bit code and get rid of more m4 macros.


60821 23-May-2000 jhb

Clean up all of the 16-bit assembly code in the x86 bootstrap to work
with the new binutils. Now that we have a decent assembler, all the old
m4 macros are no longer needed. Instead, straight assembly can be used
since as(1) now understands 16-bit addressing, branches, etc. Also,
several bugs have been fixed in as(1), allowing boot0.s to be further
cleaned up.


60820 23-May-2000 dcs

Document abial's .#.


60752 21-May-2000 hoek

Make this compile in case anyone ever wants to use the PC98 booter
on an IBM machine. This fix matches i386/boot2/boot.c.

PR: kern/7903


60710 19-May-2000 dcs

One of loaders' bugs disappeared somewhere along the way.


60704 19-May-2000 dcs

Move man page directives to common/Makefile.inc.


60703 19-May-2000 dcs

This file got repo-copied to common/.


60702 19-May-2000 dcs

Move man page directives to common/Makefile.inc.


60701 19-May-2000 dcs

Remove INSTALL_FORTH stuff.


60700 19-May-2000 dcs

Move man page directives to common/Makefile.inc.
Remove INSTALL_FORTH stuff.


60684 18-May-2000 dcs

Make corrections to allow for Alpha.


60506 13-May-2000 dfr

Only probe network settings on the first open of the network device.
The alpha firmware takes a seriously long time to open the network device
the first time.


60490 13-May-2000 obrien

The loader was written so that if /kernel was missing /kernel.old would
be booted. Due to a bug, this wasn't happening.

There is still a lesser bug in that the loader decides which file to boot
after the 10sec count down. This means the bootfile listed in the count
down in is wrong in the case where the loader will boot /kernel.old.


60487 12-May-2000 peter

Install the bootforth config files for the Alpha too. loader.conf should
be functional now.


60482 12-May-2000 peter

Reactivate the FICL hooks to make it be compiled in, but also initialize
FICL. bootforth is now live on the Alpha!

**BEWARE** - you *MUST* build and install a current libstand or you will
most likely get zfree() panics at loader startup.

We should now be able to set up the loader.conf stuff on the Alpha too.


60480 12-May-2000 peter

Stop libficl from using floating point registers - this was cauing
dictDelete() to fault early on the Alpha and was the original cause of
the Alpha ficl failures.


60434 12-May-2000 peter

Fix the Alpha loader the rest of the way. If FICL is present in
/boot/loader (even though it is 100% dormant in the Alpha version),
then the loader panics with a zfree error:Loading /boot/loader.test
*** keyboard not plugged in...
Console: SRM firmware console
panic: zfree(0x2003cb58,4096): wild pointer
versus the exact same code but without FICL linked in:
Loading /boot/loader
Console: SRM firmware console
VMS PAL rev: 0x1000600010114
OSF PAL rev: 0x1000600020116
Switch to OSF PAL code succeeded.

FreeBSD/alpha SRM disk boot, Revision 0.1

This is almost certainly an alpha infrastructure bug, not a FICL
problem. It's probably the same thing that made FICL fail for no
apparent reason on the Alpha.


60432 12-May-2000 bp

long != int on Alphas.


60277 09-May-2000 dwhite

Remove metion of the 'magic options.' Apparently PXE doesn't require the
special options on 0.99c (it mumbles something about 'PXE server not found'
but works anyway), and it won't work at all with PXE 2.0.


60108 06-May-2000 msmith

Teach the alpha loader install process to make backup copies of the
boot programs when installing new versions.


60046 05-May-2000 jhb

Switch to using the .code16 as(1) directive and using 16-bit assembly
code instead of using 32-bit code and having to just "know" that it's
really 16-bit instructions when things run. This also allows the code
to use fewer macros and more actual assembly statements, which eases
maintenance. Unfortunately, due to as(1) brokenness, we still use m4
macros for all 16-bit addresses, and all short jumps (i.e., 8-bit
relative addresses in the jump instruction) must be wrapped in .code32
directives to avoid useless bloat by as(1). This also fixes a few
problems that were preventing boot0 from compiling with the latest
and greatest version of as(1).


60023 05-May-2000 ps

Remove the static heap. It is unknown why it was needed in the
beginning, but it no longer is required. This has been tested with
many different revisions of the PXE rom from Intel.


60014 05-May-2000 dcs

Lay the groundwork for on-demand dictionary expansion.


60007 04-May-2000 dcs

Correct a bug whereby allocations to the dictionary would not be allowed
unless four times the space requested was available.


60006 04-May-2000 dcs

Make documentation on recently added heap? command reflect reality.


60005 04-May-2000 dcs

Add "heap?" to loader's man page.


60003 04-May-2000 dcs

Further improve ordering.


60002 04-May-2000 dcs

Sort entries in FreeBSD-specific FICL commands.


60000 04-May-2000 dcs

Add heap?, so we can tell how much free space we have left.


59912 03-May-2000 nyan

- Removed hi-resolution mode supports.
- Added a dummy partition table.


59895 02-May-2000 n_hibma

Add the udbp module


59887 02-May-2000 dwhite

Add man page for pxeboot.

Reviewed By: asmodai


59874 01-May-2000 peter

Add $FreeBSD$


59857 01-May-2000 peter

GC unused variable (size)


59856 01-May-2000 peter

Fix some warnings on the Alpha. sizeof() returns different things on
x86 and Alpha. Sigh.


59855 01-May-2000 ps

Wrap the failure warnings around PXE_DEBUG in the cleanup routine.
It does not matter if they fail, so dont print anything about it
unless we are debugging.


59854 01-May-2000 bp

Update loader logic to distinguish modules vs. files.
Add support for module metadata. The old way of dependancy
handling will be supported for a while.

Reviewed by: peter


59777 30-Apr-2000 nyan

Sync with sys/boot/i386/libi386/biosdisk.c revision 1.30.


59768 29-Apr-2000 ps

Fall back to /pxeroot as the location of the NFS exported directory
if we are not given one by dhcp.
Remove extra includes while I am here.

Reminded by: jlemon


59767 29-Apr-2000 jlemon

Teach the loader about the ext2fs filesystem, extended partitions, and
the new readdir function.


59686 27-Apr-2000 ps

Make PXE do a dhcp request to find out where its files are. The
DHCP server is no longer required to also act as the NFS/TFTP
server.


59673 27-Apr-2000 ps

Don't report errors when we UDP_WRITE fails with a status of 1.


59659 26-Apr-2000 jhb

Now that we are compiling PXE into libi386, we don't need ../libi386 in
.PATH anymore.


59644 26-Apr-2000 ps

Bring support in for Intel Wired for Management 1.1 (PXE 0.99 and
below). This did not work previously because interrupts were
disabled when PXE calls were being made, and they must be enabled.
This should also allow us to be compliant with all newer PXE rom's
from Intel.

For PXE 0.99, this has been tested using the Intel N440BX motherboard
and I am confident it will work on the Intel L440GX motherboard.

Lots of help/information from: jhb, peter

I would like to thank Michael Johnston <michael.johnston@intel.com>,
Mike Henry <mike.henry@intel.com>, and all the other PXE developers
at Intel for their help, and information in helping solve this
problem.


59634 26-Apr-2000 jhb

Don't disable interrupts when calling a vm86 mode interrupt or routine
from user mode. Don't disable interrupts when returning from vm86 mode
to user mode either. Now, we only disable interrupts before calling a
hardware interrupt handler, which is the only time we _should_ be
disabling interrupts.

Because of this, err, feature, any routine that one called in vm86 mode
had to re-enable interrupts by setting the interrupt flag or interrupts
would remain disabled even after the routine returned. For example, I
have a simple debugging routine that uses a vm86 mode function to dump
any arbitrary memory word that I use to read the BIOS timer or any other
memory location. This function does 1 load instruction from memory and
then returns. Since it didn't re-enable interrupts, the first time I
called it to read the BIOS timer, it disabled interrupts. This also
affected the PXE bootstrap as it needs interrupts enabled while it is
processing. This patch fixes both of those situations so that those
functions do not worry about having to enable interrupts. Hardware
interrupt handlers worked fine with the old code because they always
enable interrupts as part of their routine.

If you have any problems with the loader after this commit, please
let me know. I'd like to MFC it in a week or two since PXE support
needs it.

Noticed by: ps, Michael Johnston <michael.johnston@intel.com>


59535 23-Apr-2000 nyan

Sync with the following changes.

sys/boot/i386/libi386/Makefile 1.16 and 1.17
sys/boot/i386/loader/Makefile 1.44
sys/boot/i386/loader/main.c 1.20


59473 21-Apr-2000 ps

Move the building of the PXE module into libi386.


59456 21-Apr-2000 ps

Make the loader a little smarter about when it is and is not allowed
to call PXE.


59455 21-Apr-2000 ps

Don't call the PXE cleanup routine if PXE is not enabled. This
should fix the "Invalid partition table" error people were seeing.


59408 20-Apr-2000 ps

Add a cleanup function. This is needed for PXE where you should
shutdown the UNDI and unload the stack.


59390 19-Apr-2000 ps

Use !PXE api over PXENV+ api.
Magic trampoline by: peter (at 4am and after a good whipping at airhockey)
Do a better job of returning and detecting errors.


59294 16-Apr-2000 msmith

Some more i386-only BIOS-friendliness:

- Add support for using the PCI BIOS functions for configuration space
accesses, and make this the default.

- Make PNPBIOS the default (obsoletes the PNPBIOS config option).

- Add two new boot-time tunables to disable each of the above.


59230 14-Apr-2000 nyan

The printf function of boot2 can't recognize "%lx" format.

Submitted by: Nobuyuki Koganemaru <kogane@koganemaru.co.jp>


59228 14-Apr-2000 nyan

Merged from sys/boot/i386/loader/Makefile revision 1.43.


59167 12-Apr-2000 kato

Merged from sys/boot/i386/loader/main.c rev 1.19.


59150 11-Apr-2000 jhb

Add a missing dependency: boot2 depends on the BTX kernel.


59100 08-Apr-2000 jkh

Nuke duplicate struct declaration from somebody's paste-o


59087 08-Apr-2000 ps

Make PXE use the UDP API. This allows for both TFTP and NFS support.
You may specify TFTP or NFS via compile time options in the loader,
but not both at this time.

Also, remove a warning about not knowing how to boot from network
devices. We can obviously do that now.


58999 04-Apr-2000 ps

Add a missing PXE API call and structure.


58993 04-Apr-2000 ps

Add all the PXE related structures from the 2.1 PXE spec from Intel.
Fix exsisting code to match the spec.


58871 31-Mar-2000 kato

Synced with following files:
src/sys/boot/i386/Makefile.inc 1.1
src/sys/boot/i386/btx/btx/btx.s 1.15
src/sys/boot/i386/btx/btxldr/Makefile 1.8
src/sys/boot/i386/btx/btxldr/btxldr.s 1.9
src/sys/boot/i386/libi386/biosdisk.c 1.29
src/sys/boot/i386/loader/Makefile 1.42
src/sys/boot/i386/loader/main.c 1.18
(entry point address of loader was not changed.)

Reviewed by: nyan


58829 30-Mar-2000 kato

Separated serial boot block interface routine into NS16550 stuff and
i8251 stuff.


58713 28-Mar-2000 jhb

Mega i386 loader commit.
- Don't hard code 0x10000 as the entry point for the loader. Instead add
src/sys/boot/i386/Makefile.inc which defines a make variable with the
entry point for the loader. Move the loader's entry point up to
0x20000, which makes PXE happy.
- Don't try to use cpp to parse btxldr for the optional BTXLDR_VERBOSE,
instead use m4 to achieve this. Also, add a BTXLDR_VERBOSE knob in the
btxldr Makefile to turn this option on.
- Redo parts of cdldr's Makefile so that it now builds and installs cdboot
instead of having i386/loader/Makefile do that. Also, add in some more
variables to make the pxeldr Makefile almost identical and thus to ease
maintainability.
- Teach cdldr about the a.out format. Cdldr now parsers the a.out header
of the loader binary and relocates it based on that. The entry point of
the loader no longer has to be hardcoded into cdldr. Also, the boot
info table from mkisofs is no longer required to get a useful cdboot.
- Update the lsdev function for BIOS disks to parse other file systems
(such as DOS FAT) that we currently support. This is still buggy as
it assumes that a floppy with a DOS boot sector actually has a MBR and
parses it as such. I'll be fixing this in the future.
- The biggie: Add in support for booting off of PXE-enabled network
adapters. Currently, we use the TFTP API provided by the PXE BIOS.
Eventually we will switch to using the low-level NIC driver thus
allowing both TFTP and NFS to be used, but for now it's just TFTP.

Submitted by: ps, alfred
Testing by: Benno Rice <benno@netizen.com.au>


58165 17-Mar-2000 nyan

Sync with sys/boot/i386/libi386/biosdisk.c revision 1.27 and 1.28.

Submitted by: Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>


58098 15-Mar-2000 jhb

Remove some extra spammage that made it into this commit. This will be
revisited later with a better fix, or at least one that compiles. :)

Approved by: dcs


58081 15-Mar-2000 dcs

Pass an unit number to bcache_strategy, so it can flush the cache when
necessary. Pass an absolute block number too, instead of receiving a
relative one in realstrategy(), as bcache_strategy() requires this.

The fix is sligthly different from the one in the PR.

PR: 17098
Submitted by: John Hood <jhood@sitaranetworks.com>


58080 15-Mar-2000 dcs

bcache_strategy() now receives an unit number, and keep track of what
was the last unit number received. If it changes, it flushes the cache.
Add bcache_flash().

The actual fix is sligthly different from the one in the PR.

PR: 17098
Submitted by: John Hood <jhood@sitaranetworks.com>


58079 15-Mar-2000 dcs

Pass unit number to bcache_strategy(), so that the cache can be
flushed if the unit changes. Compute the absolute offset before
bcache_strategy() instead of after.

The actual fix is sligthly different for the one in the PR.

PR: 17098
Submitted by: John Hood <jhood@sitaranetworks.com>


57468 25-Feb-2000 bp

Fix the loader to handle module dependencies properly. More fixes
will be provided after modmetadata appears in the kernel.

Reviewed by: msmith
Approved by: jkh


57269 17-Feb-2000 msmith

Close a file descriptor leak in the code which loads file objects.

Submitted by: Paul Saab <paul@mu.org>
Approved by: jkh


57254 16-Feb-2000 jhb

This patch to BTX fixes several small things:

1) Fix a bug in the int15 function 87 emulation where we only copied half
of what the BIOS asked for. This caused the Mylex RAID adapter to go
haywire and start trashing memory when you tried to boot from it.
2) Don't use interrupt 19 to reboot. Instead, set the reboot flag to a warm
boot and jump to the BIOS's reboot handler. int 19 doesn't clear memory
or restore the interrupt vector table, and thus really isn't safe. For
example, when booting off of PXE, the PXE BIOS eats up a chunk of memory
for its internal data and structures. Since we rebooted via int 19,
using the 'reboot' command in the loader resulted in that memory not
being reclaimed by the BIOS. Thus, after a few PXE boots, the system
was out of lower memory.
3) Catch any int 19 calls made by a BTX client or a user pressing
Ctrl-Alt-Delete and shutdown BTX and reboot the machine cleanly. This
fixes Ctrl-Alt-Delete in the loader and in boot2 instead of presenting
the user with a BTX fault.

Approved by: jkh
Found by: 1) by msmith


57090 09-Feb-2000 ru

Support the new ata(4) syntax, while providing backward compatibility for wd(4).

Reviewed by: jkh, msmith, sos
Approved by: jkh


56994 05-Feb-2000 kato

Synced with sys/boot/i386/loader/Makefile rev 1.41.


56992 04-Feb-2000 luigi

Add a NOFORTH variable so we can build a smaller loader without
Forth support, for use with PicoBSD

Approved-By: jordan


56903 30-Jan-2000 jhb

Fix bogon in previous commit. Re-enable Forth in the loader.

Noticed by: dcs
Approved by: jkh


56813 29-Jan-2000 kato

Synced with sys/boot/i386/btx/btx/btx.s rev 1.14.


56752 28-Jan-2000 jhb

Allow for cdldr to be built in ${.OBJDIR}/../cdldr/cdldr instead of
only looking for it in ${.CURDIR}/../cdldr/cdldr. This fixes world.


56719 28-Jan-2000 dcs

Implement a machine-independent (word size-independent) FICL_TRUE.


56718 28-Jan-2000 dcs

ANS Forth for logical not is 0=, not invert. Replace wrong usage.


56717 28-Jan-2000 dcs

Add testmain.o to CLEANFILES.


56716 28-Jan-2000 dcs

Try my hand again at removing ugly testmain target.


56693 27-Jan-2000 jhb

Add the new cdldr CD bootstrap loader. This patch includes the following:

- Fix btxldr to preserve a NULL bootinfo pointer when it copies the kernel
arguments.
- Add the cdldr bootstrap program. This program is tacked onto the
beginning of the standard 3rd stage boot loader (/boot/loader) to form
the CD boot loader (/boot/cdboot). When a CD is booted, the cdboot file
is copied into memory instead and executed. The cdldr stub emulates the
environment normally provided by boot2 and then starts the loader. This
booting method does not emulate a floppy drive, but boots directly off of
the CD. This should fix the problems some BIOS's have with emulating a
2.88 MB floppy image.
- Add support to the loader to recognize that it has been booted by cdldr
instead of boot2 and use a simpler method of extracting the BIOS boot
device.


56691 27-Jan-2000 jhb

Fix brokenness introduced with the PAGING conditional variable. The value
of %cr0 wasn't reloaded into %eax before being modified to turn protected
mode off if PAGING was not defined. The result was that the processor did
not exit protected mode, so when it tried to jump to segment 0x0 in the
next instruction to clear the prefetch cache like one should when leaving
protected mode, it actually tried to jump to a null selector, causing a
GPF.


55992 14-Jan-2000 wpaul

Add driver support for the Aironet 4500/4800 series wireless 802.11
NICs. (Finally!) The PCMCIA, ISA and PCI varieties are all supported,
though only the ISA and PCI ones will work on the alpha for now.
PCCARD, ISA and PCI attachments are all provided. Also provided an
ancontrol(8) utility for configuring the NIC, man pages, and updated
pccard.conf.sample. ISA cards are supported in both ISA PnP and hard-wired
mode, although you must configure the kernel explicitly to support the
hardwired mode since you have to know the I/O address and port ahead
of time.

Special thanks to Doug Ambrisko for doing the initial newbus hackery
and getting it to work in infrastructure mode.


55944 14-Jan-2000 wpaul

Add device driver support for USB ethernet adapters based on the CATC
USB-EL1202A chipset. Between this and the other two drivers, we should
have support for pretty much every USB ethernet adapter on the market.
The only other USB chip that I know of is the SMC USB97C196, and right
now I don't know of any adapters that use it (including the ones made
by SMC :/ ).

Note that the CATC chip supports a nifty feature: read and write combining.
This allows multiple ethernet packets to be transfered in a single USB
bulk in/out transaction. However I'm again having trouble with large
bulk in transfers like I did with the ADMtek chip, which leads me to
believe that our USB stack needs some work before we can really make
use of this feature. When/if things improve, I intend to revisit the
aue and cue drivers. For now, I've lost enough sanity points.


55429 05-Jan-2000 wpaul

Add device driver support for USB ethernet adapters based on the
Kawasaki LSI KL5KUSB101B chip, including the LinkSys USB10T, the
Entrega NET-USB-E45, the Peracom USB Ethernet Adapter, the 3Com
3c19250 and the ADS Technologies USB-10BT. This device is 10mbs
half-duplex only, so there's miibus or ifmedia support. This device
also requires firmware to be loaded into it, however KLSI allows
redistribution of the firmware images (I specifically asked about
this; they said it was ok).

Special thanks to Annelise Anderson for getting me in touch with
KLSI (eventually) and thanks to KLSI for providing the necessary
programming info.

Highlights:
- Add driver files to /sys/dev/usb
- update usbdevs and regenerate attendate files
- update usb_quirks.c
- Update HARDWARE.TXT and RELNOTES.TXT for i386 and alpha
- Update LINT, GENERIC and others for i386, alpha and pc98
- Add man page
- Add module
- Update sysinstall and userconfig.c


55342 03-Jan-2000 nyan

Merge from the following changes.

sys/boot/i386/libi386/biosmem.c Rev 1.4
sys/boot/i386/libi386/time.c Rev 1.3
sys/boot/i386/loader/main.c Rev 1.16


55339 03-Jan-2000 nyan

Fixed to get the BIOS geometry.


55211 29-Dec-1999 msmith

Substantially revamp the way that we determine the amount of memory available
for our use. Use the same search order for BIOS memory size functions
as the kernel will later use.

Allow the loader to use all of the detected physical memory (this will
greatly help people trying to load enormous memory disk images).

More correctly handle running out of memory when loading an object.

Use the end of base memory for the top of the heap, rather than
blindly hoping that there is 384k left.

Add copyrights to a couple of files I forgot.


55206 29-Dec-1999 peter

Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot). This is consistant with the other
BSD's who made this change quite some time ago. More commits to come.


55173 28-Dec-1999 msmith

Correctly handle a user-requested abort in the middle of displaying a
help subtopic.

PR: kern/13196
Submitted by: MIHIRA Sanpei Yoshiro <sanpei@sanpei.org>


55162 28-Dec-1999 wpaul

This commit adds device driver support for the ADMtek AN986 Pegasus
USB ethernet chip. Adapters that use this chip include the LinkSys
USB100TX. There are a few others, but I'm not certain of their
availability in the U.S. I used an ADMtek eval board for development.
Note that while the ADMtek chip is a 100Mbps device, you can't really
get 100Mbps speeds over USB. Regardless, this driver uses miibus to
allow speed and duplex mode selection as well as autonegotiation.
Building and kldloading the driver as a module is also supported.

Note that in order to make this driver work, I had to make what some
may consider an ugly hack to sys/dev/usb/usbdi.c. The usbd_transfer()
function will use tsleep() for synchronous transfers that don't complete
right away. This is a problem since there are times when we need to
do sync transfers from an interrupt context (i.e. when reading registers
from the MAC via the control endpoint), where tsleep() us a no-no.
My hack allows the driver to have the code poll for transfer completion
subject to the xfer->timeout timeout rather that calling tsleep().
This hack is controlled by a quirk entry and is only enabled for the
ADMtek device.

Now, I'm sure there are a few of you out there ready to jump on me
and suggest some other approach that doesn't involve a busy wait. The
only solution that might work is to handle the interrupts in a kernel
thread, where you may have something resembling a process context that
makes it okay to tsleep(). This is lovely, except we don't have any
mechanism like that now, and I'm not about to implement such a thing
myself since it's beyond the scope of driver development. (Translation:
I'll be damned if I know how to do it.) If FreeBSD ever aquires such
a mechanism, I'll be glad to revisit the driver to take advantage of
it. In the meantime, I settled for what I perceived to be the solution
that involved the least amount of code changes. In general, the hit
is pretty light.

Also note that my only USB test box has a UHCI controller: I haven't
I don't have a machine with an OHCI controller available.

Highlights:

- Updated usb_quirks.* to add UQ_NO_TSLEEP quirk for ADMtek part.
- Updated usbdevs and regenerated generated files
- Updated HARDWARE.TXT and RELNOTES.TXT files
- Updated sysinstall/device.c and userconfig.c
- Updated kernel configs -- device aue0 is commented out by default
- Updated /sys/conf/files
- Added new kld module directory


55139 27-Dec-1999 peter

Connect up the bootforth glue and compile it, but don't initialize it
at runtime as it has a nasty habit of crashing on the Alpha :-(.
This is being done this way so we have a common starting point for
debugging.


55017 23-Dec-1999 wpaul

Close PR #15422; fix loader.conf to reflect new driver support (old
tulip clone NICs merged into if_dc driver).

PR: conf/15422


54819 19-Dec-1999 nyan

- Supported the bd_getbigeom function and use this function to get BIOS
geometry.
- Use i386/libi386/bootinfo.c instead of pc98/libpc98/bootinfo.c.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


54695 16-Dec-1999 marcel

Don't build gensetdefs when we can use /usr/bin/gensetdefs. The latter
also creates setdef{0|1}.c so there's no need to have those in the
repository. Using /usr/bin/gensetdefs has no consequences for the
output.


54649 15-Dec-1999 marcel

Add -L${DESTDIR}${LIBDIR} to ld's command line so that the right
libstand is used.


54294 08-Dec-1999 phk

Remove BAD144 support, it has already been disabled for some time.


54265 07-Dec-1999 msmith

Update the sample for $init_path to reflect the kernel default.


54264 07-Dec-1999 msmith

Update to reflect use of : not ; as separator in paths passed to the
kernel.


54247 07-Dec-1999 dcs

Make some examples reflect defaults.


54086 03-Dec-1999 nyan

Supported to sound beep.

Submitted by: chi@bd.mbn.or.jp (Chiharu Shibata)


54020 02-Dec-1999 dcs

Add bus suffix to mii.


54019 02-Dec-1999 dcs

Add if_ prefix to network drivers.


53993 01-Dec-1999 dcs

Add fairings. Do not depend on user actually supplying the arguments
he is supposed to supply.


53786 27-Nov-1999 dcs

Make the prompt look like on OpenBoot.


53777 27-Nov-1999 dcs

Zeroes structure before using it.


53708 26-Nov-1999 dcs

Belatedly add splash_pcx_load to the documented variables. Reword
splash_bmp_load.


53688 25-Nov-1999 nyan

Sync with sys/boot/i386/loader/Makefile revision 1.37.


53673 24-Nov-1999 dcs

Activates password protection (if a password is defined).

Adds $FreeBSD$.


53672 24-Nov-1999 dcs

Add silly password feature. If people want to depend on a flawed
security measures, so be it. It costs us almost nothing.

Document some code in support.4th that I was unable to understand
just by reading.


53637 23-Nov-1999 dcs

Add machine-specific include path to ficl's sysdep.h. Wishes I had
gone to bed earlier.

Pointed by: peter


53636 23-Nov-1999 dcs

Revert ill-considered simplification in 1.13.

Pointed by: peter


53635 23-Nov-1999 dcs

Improve Makefile by using .PATH.

Taught by: peter


53634 23-Nov-1999 dcs

Improve on ficl port to alpha.

Files sysdep.[ch] are now in ${MACHINE_ARCH} subdirectory. Internal
#if's used to identify the platform where removed.

Make rule for target testmain was greatly simplified, because it was
easier simplifying it than changing it to support the new location of
sysdep.[ch].

(a repo-copy was done on sysdep.[ch], of course)


53633 23-Nov-1999 dcs

(Hopefully) make all necessary changes for ficl to support alpha.


53548 22-Nov-1999 n_hibma

Add comments on what it the USB modules are. Add the usb module.

The USB module contains the OHCI and UHCI controllers as well.
Sticking them into separate modules might be possible after I have
untangled the mess.


53315 17-Nov-1999 n_hibma

Change the name of the modules from <name>_mod to <name>

Suggested by: David O'Brien <obrien@FreeBSD.ORG>


53243 16-Nov-1999 n_hibma

Add the USB modules.


53218 16-Nov-1999 nyan

Fixed warnings.


53217 16-Nov-1999 nyan

Remove -mno-486 option and add -mpreferred-stack-boundary=2 option.


53207 16-Nov-1999 nyan

Cosmetic changes.


53206 16-Nov-1999 nyan

Install loader.rc.


53181 15-Nov-1999 marcel

PC-98 has MACHINE_ARCH=i386 and MACHINE=pc98. Make it a special case.
This should fix the breakage reported by nyan.


53174 15-Nov-1999 obrien

Add -fdata-sections, which is a new GCC 2.95 optimization. Remove
-fschedule-insns as it wasn't such a big win with 2.95 after all.

Add the *BIG* win "-mpreferred-stack-boundary=2" optimiztion submitted by
Dima. GCC 2.95 ensures the stack frame is always properly [opitimally]
aligned by surrounding every function call by code simular to
"addl $-12, %esp" / "addl $12, %esp". Here we need the reduction in space,
with speed not an issue.


53159 14-Nov-1999 obrien

Return this file to its pre-spammed version. Thanks to some new compiler
optimizations, we can go from 3 bytes free with the spammed version, to
279 bytes free with the full version.


53152 14-Nov-1999 marcel

${MACHINE} -> ${MACHINE_ARCH}

All Makefiles now use MACHINE_ARCH for the target architecture.
Unification is required for cross-building.

Tags added to:
sys/boot/Makefile
sys/boot/arc/loader/Makefile
sys/kern/Makefile
usr.bin/cpp/Makefile
usr.bin/gcore/Makefile
usr.bin/truss/Makefile

usr.bin/gcore/Makefile:
fixed typo: MACHINDE -> MACHINE_ARCH


53135 14-Nov-1999 obrien

Enter complier upgrade mode again. We need to cut 169 bytes from this:
Remove some printf() calls, reduce size of buffers, and abbreviate
some strings.

Hopefully the boot people will fix this spamage after the cut over to
Gcc 2.95.2 as the system compiler.


53134 13-Nov-1999 obrien

Turn on the -fforce-addr and -fschedule-insns optimizations. Adding
either one gives us an additional 32 bytes of additional space available
when using EGCS 1.1.2. With GCC 2.95.2 -fforce-addr gives us 12 more bytes,
and adding -fschedule-insns gives us an additional 4 bytes.


52848 03-Nov-1999 dfr

Add back netboot since it compiles just fine. Note that you need a full
source tree to build netboot since it depends on headers from libstand.


52847 03-Nov-1999 dfr

* Don't wait forever for the boot2 filename if the PCC wraps.
* If the user presses return, load boot2 immediately.


52827 03-Nov-1999 nyan

Sync with sys/boot/i386/btx/btx/btx.s revision 1.13.


52825 03-Nov-1999 nyan

Sync with sys/boot/i386/libi386/Makefile revision 1.15.


52749 01-Nov-1999 dcs

Changes prompt to "ok". This line is actually commented out, and serves only
as an example and to reflect the builtin default.


52748 01-Nov-1999 dcs

Changes the default prompt to "ok".

Mike says the whole idea of a current device was a bad idea in first place,
and will be doing away with currdev.

Anyway, people are not supposed to even notice this. :-)


52674 30-Oct-1999 phantom

Remove comments left since mdoc.template time or just useless comments


52545 27-Oct-1999 jhb

If PAGING is defined then actually turn it on when entering protected
mode.


52395 19-Oct-1999 dcs

Make the "machine" target a prequisite to all source files.

Hinted-at by: bde


52202 13-Oct-1999 kato

Sync with sys/boot/i386/btx/btx/Makefile and btx.s revisions 1.7 and
1.12, respectively.


52173 12-Oct-1999 jhb

aThis patch updates the BTX to emulate the BIOS function "Copy Extended
Memory" called as function 0x87 of interrupt 0x15. Since the Mylex RAID
adapter's BIOS used this function to access memory (actually PCI bus
space) beyond 16 MB, this patch also allows BTX to address all 4 Gig of
possible address space on i386+. Since the loader does not have room for
4 MB of page tables, this was done by turning off paging.

Paging was turned off via a compile time setting which defaults to off.
To enable paging, simply define the make variable PAGING.

rnordier might want to clean this up later.

Submitted by: W. Gerald Hicks <wghicks@bellsouth.net>,
Bosko Milekic <bmilekic@ares.dsuper.net>
Reviewed by: msmith
Required by: Mylex RAID adapter's BIOS


52168 12-Oct-1999 dfr

Allow this driver to open disks with no labels (CDROMS don't).


52148 12-Oct-1999 brian

Blank out the twiddly thing when outputting the ``BTX loader'' message.


52058 09-Oct-1999 dfr

Fix build break.

Submitted by: Thomas Valentino Crimi <tcrimi+@andrew.cmu.edu>


52057 09-Oct-1999 dfr

Add net device to netboot.


51789 29-Sep-1999 dcs

Fix world-breaking bug, add $FreeBSD$ tag.

This happened to be my first "for real" broken world. I had broken
it once before, but nobody noticed, so it didn't count.

So, how do I get the "I broke world and all I got was the lousy t-shirt"
t-shirt?


51786 29-Sep-1999 dcs

Bring in ficl version 2.03. No version bump for loader.


51586 23-Sep-1999 kato

- Fixed DMA 64k boundary problem.
- Test the processor flag to detect disk I/O BIOS errors.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


51104 09-Sep-1999 mjacob

netboot removed until somebody fixes it so it compiles


51053 07-Sep-1999 msmith

Add more missing files from the reorganisation.

Submitted by: dfr


51045 07-Sep-1999 wpaul

Add mii_load entry to the network drivers section. Also add entries for
a few additional drivers that have recently been module-ized.


51029 06-Sep-1999 dfr

Change NetBSD/Alpha to FreeBSD/alpha.


51007 06-Sep-1999 msmith

Common Alpha loader Makefile, omitted accidentally from the previous set
of commits.


50959 05-Sep-1999 peter

$Id$ -> $FreeBSD$


50859 03-Sep-1999 msmith

Slight reorganisation of the Alpha/SRM loader build:

- Make as much of the makefile for each of the three flavours
(disk, CDROM, net) common.
- Special-case the libalpha startup module on its use in boot1, not
the other way around.
- Build the loader out of a "loader" directory

Reviewed by: mjacob, dfr


50822 03-Sep-1999 julian

Remove accidental cut&paste garbage in a comment.


50820 03-Sep-1999 julian

Comment the boot manager. So I don't have to work it all out again :-)

Reviewed by: rnordier@freebsd.org


50739 01-Sep-1999 dfr

Change $Id$ to $FreeBSD$


50737 01-Sep-1999 dfr

* Fix a stack of warnings.
* Make it possible to type a filename to boot1 so that it is possible to
recover from fatally broken versions of /boot/loader.
* Make a start at a CD boot program (not yet functional).


50477 28-Aug-1999 peter

$Id$ -> $FreeBSD$


50000 18-Aug-1999 chris

Fix a bunch of broken cross-references


49782 14-Aug-1999 jdp

Append the flags from the "boot" command to those which came from
the SRM environment. This makes the traditional "boot [/kernel] -s"
and similar things work on the Alpha. Since the flags are appended,
they augment and/or override those from the SRM environment.


49673 13-Aug-1999 kato

Merge from sys/boot/i386/libi386/bootinfo.c revision 1.21.


49611 10-Aug-1999 wpaul

Convert the Winbond driver to newbus and have it compiled as a module.


49610 10-Aug-1999 wpaul

Convert the VIA Rhine driver to newbus and set it up to be compiled as
a module. Also modified the code to work on FreeBSD/alpha and added
device vr0 to the alpha GENERIC config.

While I was in the neighborhood, I noticed that I was still using
#define NFPX 1 in all of the Makefiles that I'd copied from the fxp
module. I don't really use #define Nfoo X so it didn't matter, but
I decided to customize this correctly anyway.


49426 05-Aug-1999 kato

- Don't assume that SCSI ID numbers of HDD units are contiguous. That
is, don't assume that SCSI ID corresponds to a unit number of da
device. Unit number of da device is provided by 2nd stage loader
and 3rd stage loader now use it.
- Fix drive letter to display.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


49425 05-Aug-1999 kato

Provides discontinuous unit number support to make external FDD
bootable on 1 FDD PC98 machines. (When an external FDD unit is
installed, unit numbers become discontinuous.)

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


49412 04-Aug-1999 green

Add various network cards that have been new-busified and made into KLDs
(thanks Bill!)

Remove lkm.


49381 02-Aug-1999 dfr

Make this build if there is an obj directory.


49379 02-Aug-1999 se

Add missing "path mnemonics" as given in Table 4-3 of rev. 1.2 of the
ARC Specification.


49234 29-Jul-1999 se

Fix install target (install loader.exe, not loader).


49192 28-Jul-1999 se

Activate "arc" (ARC / AlphaBIOS loader) on Alpha.


49191 28-Jul-1999 nik

Fix some typos.

PR: docs/11955
Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>


49188 28-Jul-1999 se

This commit was generated by cvs2svn to compensate for changes in r49187,
which included commits to RCS files with non-trunk default branches.


49060 24-Jul-1999 rnordier

Recognise NetBSD slices.

Submitted by : Lars Koeller <lkoeller@cc.fh-lippe.de>
PR : 12772


48952 21-Jul-1999 msmith

Walk around the end of all the silly guessing of device types and unit
numbers that we have been doing in the past, and read /etc/fstab off the
proposed root filesystem to determine the actual device name and vfs
type for the root filesystem. These are then exported to the kernel
via the environment variable vfs.root.mountfrom.


48919 20-Jul-1999 rnordier

Reintroduce LBA (cyl > 1023) support in the bootblocks, enabled by
means of a build option.


48913 19-Jul-1999 rnordier

Activate kgzldr.


48912 19-Jul-1999 rnordier

Use M4FLAGS for m4.


48908 19-Jul-1999 rnordier

This commit was generated by cvs2svn to compensate for changes in r48907,
which included commits to RCS files with non-trunk default branches.


48829 15-Jul-1999 n_hibma

The boot countdown timer says it will boot in 1 seconds,
which is grammatically incorrect.

PR: 12628
Submitted-By: R. Matthew Emerson <rme@nightfly.apk.net>


48477 02-Jul-1999 msmith

Document the hw.physmem tunable. (There should be arch-specific tunable
help sections.)


48352 29-Jun-1999 peter

Fix typo (wrong path)


48351 29-Jun-1999 peter

Reconcile all the loader newvers.sh's into one common one.


48350 29-Jun-1999 peter

Don't use head/tail - they don't exist in a 'make world' environment.
(Why do we have three copies of this script anyway?)


48243 26-Jun-1999 peter

ABS_SET() and BSS_SET() are no longer used. The sole remaining user of
TEXT_SET() is DDB's command tables.


48135 23-Jun-1999 ru

-mdoc fix.


48083 21-Jun-1999 rnordier

Fill in bi_bios_geom[] in the bootinfo structure passed to the kernel.
This should resolve the problem raised in PR 12315, and incidentally
makes it easier to determine what geometry the BIOS is actually using
(by way of boot -v and dmesg).


48037 19-Jun-1999 rnordier

Provide for enabling/disabling each slice individually.


48034 19-Jun-1999 rnordier

Fix use of e_phoff in place of e_phnum.


48033 19-Jun-1999 rnordier

Correct and clarify some comments.


48010 18-Jun-1999 rnordier

Change active flag handling; sanity check passed drive number; pass
partition pointer to bootstrap; optimise away 10 bytes; cosmetics.


47890 13-Jun-1999 roger

Add bktr_load for the loadable Bt848/Bt878 driver.


47780 06-Jun-1999 kato

Sync with sys/boot/i386/libi386/bootinfo.c revision 1.19.


47727 04-Jun-1999 ghelmer

Modify the boot loader to recognize the -C flag and pass the RB_CDROM
flag to the kernel to mount a CDROM as the root filesystem. Alternatively,
the boot_cdrom env var can be set.

As Mike Smith noted, "-C is the "wrong" way to do this", but this is
an acceptable stopgap in lieu of a better way.

PR: bin/11884
Reviewed by: msmith@freebsd.org


47609 30-May-1999 dfr

Typo: "can't boot 'boot'" should be "can't boot 'kernel'"


47576 28-May-1999 brian

Always output a linefeed when we've decided whether to boot
or display a loader prompt; either we've said
"Booting [%s]..." or we've received a non-line-feed character
and need a '\n' anyway.


47473 24-May-1999 rnordier

Activate mbr.


47472 24-May-1999 rnordier

This commit was generated by cvs2svn to compensate for changes in r47471,
which included commits to RCS files with non-trunk default branches.


47395 22-May-1999 rnordier

Fix a reference to the mysterious Mike Smisth.


47332 20-May-1999 kato

Sync with sys/boot/i386/btx/Makefile revision 1.5.


47312 18-May-1999 rnordier

Drop some non-existent commented-out targets.


47198 14-May-1999 dcs

Add "initialize" to loader.4th, so running "start" is not actually needed.


47175 14-May-1999 dcs

Add fxp on a category of it's own.


47173 14-May-1999 dcs

Remove atapi and joy, add svr4 and streams. I wonder if removing vinum
is in order or not... (things are _not_ loaded by default, but it serves
as a reference to people tweaking their own loader.conf files)


47171 14-May-1999 dcs

Add ntfs and splash_pcx, remove pcic and wcd (yikes! what was THAT
doing here?).

Candidate for 3.2.


47113 13-May-1999 brian

Better English.


47011 11-May-1999 jb

Found the needle in the haystack!

Use colons instead of semi-colons in the default init_path to behave like
UNIX instead of DOS.

Suggested by: bde
Reminded by: des (with no hint as to *which* man page).


46356 03-May-1999 dfr

Changes to support diskless booting on the alpha:
* Make the network code in the bootstrap more chatty (helps debugging)
* Add nfs root stuff to cpu_rootconf(). I also added a check to make sure
it really was netbooting which allows the use of the same kernel for local
and network boots.
* Tweak the de driver so that it takes the speed setting from the console
for the alpha (some PWSs have broken de chipsets). This is the same
behaviour as NetBSD/alpha.

Submitted by: Andrew Gallatin <gallatin@cs.duke.edu>


46354 03-May-1999 jkoshy

Correct typos.

PR: docs/11445
Submitted by: Kazuo Horikawa <horikawa@jp.freebsd.org>


46352 03-May-1999 jkoshy

Correct misuse of .Nm.

PR: docs/11449
Submitted by: Kazuo Horikawa <horikawa@jp.freebsd.org>


46074 25-Apr-1999 dcs

Make man page reflect reality on parsing rules. Now I know Jordan
never read this man page... :-)


46043 25-Apr-1999 kato

Sync with sys/boot/i386/loader/Makefile revision 1.34.


46012 24-Apr-1999 dcs

Minor nit. It is probably still incorrect, but at least don't
claim to use i386-specific files on alpha...


46009 24-Apr-1999 dcs

Move loader.conf.5, while it is still in it's first revision.


46005 24-Apr-1999 dcs

Add loader.4th man page (worst man page I ever wrote -- reviews
are welcomed). Correct a nasty bug in loader.4th before anyone
notices, add a couple of features.


45983 24-Apr-1999 kato

Optimize better for space.

Submitted by: Takahashi Yoshihiro <nyan@wyvern.cc.kogakuin.ac.jp>


45945 22-Apr-1999 jdp

Update #include statements to reflect the new location of "sioreg.h".
With these changes plus the egcs fix I committed a few minutes ago,
"make -DWANT_AOUT world" works again. Most likely, "make upgrade"
is fixed too, though I haven't tested that.


45881 20-Apr-1999 des

Make the location of init(8) tunable at boot time.


45867 20-Apr-1999 joerg

Don't clobber the "prompt" variable if it has already been set (e. g.
from within loader.conf).

Reviewed by: dcs


45814 19-Apr-1999 kato

Sync with sys/boot/i386/loader/Makefile revision 1.32.


45759 18-Apr-1999 dcs

Installs a default loader.rc if none exists. Document loader.conf.


45758 18-Apr-1999 dcs

A default loader.rc to be installed.


45720 16-Apr-1999 peter

Bring the 'new-bus' to the i386. This extensively changes the way the
i386 platform boots, it is no longer ISA-centric, and is fully dynamic.
Most old drivers compile and run without modification via 'compatability
shims' to enable a smoother transition. eisa, isapnp and pccard* are
not yet using the new resource manager. Once fully converted, all drivers
will be loadable, including PCI and ISA.

(Some other changes appear to have snuck in, including a port of Soren's
ATA driver to the Alpha. Soren, back this out if you need to.)

This is a checkpoint of work-in-progress, but is quite functional.

The bulk of the work was done over the last few years by Doug Rabson and
Garrett Wollman.

Approved by: core


45355 06-Apr-1999 dcs

Reactivate trace! after making it egcs-friendly.


45335 05-Apr-1999 rnordier

Fix damage introduced in previous commit.


45334 05-Apr-1999 rnordier

Optimize better for space.
Thanks to: jdp


45309 04-Apr-1999 obrien

Remove the string ">>> FreeBSD/i386 BOOT". I need to reduce the size of
boot2 by 16 bytes. I expect this to be temperary until the boot2 authors
can do the proper fix.


45241 02-Apr-1999 kato

Use files under sys/boot/i386 instead of copying under sys/boot/pc98.

Submitted by: Takahashi Yoshihiro <nyan@dd.catv.ne.jp>


45175 31-Mar-1999 joerg

Make <DEL> an alternative rubout character for command input; many
serial terminals use this as their default rubout key.


44914 20-Mar-1999 dcs

Revert bootinfo to 1.4 and use a different solution to NULL m_args
instead (don't copy).


44912 20-Mar-1999 dcs

Fix a couple of nasty errors in the README.


44897 19-Mar-1999 kato

Sync with sys/boot/i386/loader/version revision 1.4.


44896 19-Mar-1999 kato

Sync with sys/boot/i386/libi386/bootinfo.c revision 1.18.


44861 18-Mar-1999 dcs

Avoid copying m_args if none exists. (Perhaps this is a better solution,
Doug?)


44859 18-Mar-1999 kato

Install the manual page in sys/boot/i386/loader.

Sumbmitted by: Takahashi Yoshihiro <nyan@dd.catv.ne.jp>


44858 18-Mar-1999 dfr

Don't choke in MOD_ARGS() if mp->m_args is NULL.


44842 17-Mar-1999 chuckr

This is a temporary README file, to help those trying to experiment
with the new boot loader configuration process. I got a lot of
help from Daniel Sobral, and both Dan and I got help from Mike
Smith. This really belongs in Warner's UPDATING, but he's not
been answering his email recently, so that will wait a little.

Robert Nordier also gave me a lot of help, but he hasn't seen the
last version, and can't be blamed for my errors.

Approved by: jkh

Reviewed by: Mike Smith


44840 17-Mar-1999 dcs

Version bump: kvm & dictionary size.


44839 17-Mar-1999 dcs

Disable trace! until it gets fixed.


44780 15-Mar-1999 dcs

The man page, version 0.1.


44774 15-Mar-1999 dcs

Remove redundant code.


44758 14-Mar-1999 dcs

Replace /kernel.config with /boot/kernel.conf.


44750 14-Mar-1999 msmith

Fix syntax for boot command

Noticed by: Ruslan Ermilov <ru@ucb.crimea.ua>


44630 10-Mar-1999 kato

Sync with sys/boot/i386/loader/Makefile revision 1.30.


44629 10-Mar-1999 kato

Sync with sys/boot/i386/libi386/bootinfo.c revision 1.17.


44622 10-Mar-1999 dcs

Install new loader.rc stuff.


44603 09-Mar-1999 dcs

New loader.rc stuff.

Reviewed by: jkh


44572 08-Mar-1999 dcs

Add MODINFO_ARGS, parameters passed to a module at load time.

VS: ----------------------------------------------------------------------


44571 08-Mar-1999 dcs

Increase ficl's dictionary size, in preparation for the newer loader.rc.


44570 08-Mar-1999 dcs

Fix a number of memory leaks and other memory-related disorders.

Also, unbreak the breakage introduced at the last revision of module.c.
This changes the semantics of mod_searchfile() (and mod_searchmodule())
to make the caller's responsibility freeing the buffer returned. This
is different from other functions in loader's code, and was done as a
fix for kern/9631. If someone wants to revert this to the original
behavior, don't forget to fix kern/9631 in another way.

This should also fix bin/10462, which was introduced as a result of the
first try at kern/9631 (module.c last revision).

PR: bin/10462
Submitted by: Takanori Saneto <sanewo@ba2.so-net.ne.jp>


44467 04-Mar-1999 kato

Make loader be able to load 1.2MB fd on machines w/ 1.44MB fdd.

Sumbmitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


44466 04-Mar-1999 kato

Added an entry for 1.44MB fd.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


44465 04-Mar-1999 kato

Oops, forgot to read boot.config file.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


44463 04-Mar-1999 kato

When SCSI IDs are not contiguous, the loader could not find correct
unit number for da device. This commit fixes this problem.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


44462 04-Mar-1999 kato

boot2 doesn't need to say 'Can't find file boot.config.'

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


44461 04-Mar-1999 kato

Fix character code of backslash. PC98 should use 0xfc instead of 0x5c.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


44427 02-Mar-1999 dcs

Don't treat empty lines as end-of-file in include(). (I can't
believe this bug is still here... :-( )


44368 01-Mar-1999 kato

Sync with sys/boot/i386/btx/btx/btx.s revision 1.10.


44357 01-Mar-1999 rnordier

Save option, rather than slice, selected. This permits unattended
booting from other than drive 0, as the F5 keypress is saved and
"replayed."

Requested (some time ago) by: archie


44322 28-Feb-1999 dcs

Make $ print different lines in, well, different lines.


44296 26-Feb-1999 rnordier

Implement "setdrv" option


44274 25-Feb-1999 rnordier

Emulate a V86 "movl %cr0,%eax" instruction.

Feedback and testing: Kurt Hopfensperger <kjhmdjd@ix.netcom.com>


44255 25-Feb-1999 kato

Sync with sys/boot/i386/loader/Makefile revision 1.29.


44243 24-Feb-1999 msmith

Don't try protecting page 0; it seems that BIOS writers now feel it's
appropriate to check for Windows95 by polling for state in low
memory, with fatal results.

Submitted by: rnordier@freebsd.org


44210 22-Feb-1999 dcs

Fix assorted memory leak/buffer reuse problems.

Not restricted to, but including:

PR: kern/9631
Submitted by: Bill Fenner <fenner@parc.xerox.com>


44069 15-Feb-1999 tegge

Enable load of i386 ELF kernels with larger KVA range (e.g. starting at
0xe0100000u or 0xc0100000u instead of the usual 0xf0100000u).


43801 09-Feb-1999 jkh

Remove dictHashSummary internal function; it used doubles.

Submitted by: Daniel C. Sobral <dcs@newsguy.com>


43768 08-Feb-1999 kato

Sync with sys/boot/i386/loader/version revision 1.3.


43759 08-Feb-1999 dcs

Bumb up loader's version.

Reviewed by: Michael Smith <msmith@freebsd.org>


43738 07-Feb-1999 dcs

Remove strange-looking quotes. This part of the code is #if'ed out,
and the variable doesn't even exist (though it is referenced elsewhere).
Just make sure it produces error messages when Mike get back to it.

PR: kern/9934
Submitted by: Adrian Filipi-Martin


43615 04-Feb-1999 dcs

Make FICL_TRACE default.

Add freebsd.fr, for FreeBSD specific forth source. Add $ and %, to
replace the lost @ and - functionality of include. $ has the opposite
behavior of @ though, since the default behavior was inverted.


43614 04-Feb-1999 dcs

Make use of prototypes to silence warnings.

Change include() so it will be able to load files with forth code,
instead of just builtins. Remove #@- from the include section of the
help file, since they don't work in the new version of include, unless
BOOT_FORTH is not defined.

Change bf_run() so it will return the result returned by ficlExec(). Also,
make bf_run() push "interpret" to be executed by ficlExec(), since ficlExec()
doesn't do it by itself. (Things worked previously because nothing
recursed through ficlExec() by the way of bf_run()).

Change/extend comments on builtin behavior.

Search for "interpret" at the end of bf_init(), so /boot/boot.4th can
provide it's own version.

Remove dead code.


43613 04-Feb-1999 dcs

Make ficlExec recursive. This removes vmReset and vmQuit from the
error cases, but the replacement should be doing everything they
did, except what did shouldn't be doing, and might do a little more
they ought to be doing.


43602 04-Feb-1999 dcs

Fix ficlExecFD to take kern/9412 changes into account. Also modify it
not to vmThrow errors. This is not what the comments say it does, and
it doesn't work when there is no ficlExec environment (like it's only
use in sys/boot/common/interp_forth.c).

PR: bin/9772


43601 04-Feb-1999 dcs

The trace facility was full of bugs. Correct that by using the
right variable.

PR: bin/9756


43600 04-Feb-1999 dcs

Silence a warning.
PR: bin/9754


43599 04-Feb-1999 dcs

The previous fix for "type" was absolutely lousy. Not only the buffer
allocated was not big enough, but it ended up to being used where it
was supposed to be used. The person who did that ought to be shot, but
since I'm a good person, I'll forgive myself...

PR: bin/9743


43598 04-Feb-1999 dcs

Add conditional compilation facilities to ficl. This had been previously
committed to RELENG_3 instead of HEAD, so let's HEAD catch up.

PR: bin/9662


43563 03-Feb-1999 msmith

Mention the net.inet.tcp.tcbhashsize tunable.


43561 03-Feb-1999 kato

PC98 version of new boot loader. Because boot2 has not yet ported,
files in boot2 directory are copies from legacy biosboot.

Submitted by: IMAI Takeshi <take-i@ceres.dti.ne.jp>


43491 01-Feb-1999 jkh

Whoops! Forgot to include Mr. Sobray's more command in the last set
of commits.

Submitted by: Daniel C. Sobral <dcs@newsguy.com>


43374 29-Jan-1999 rnordier

Check size of partition before using it.


43368 29-Jan-1999 msmith

Document the machdep.pccard.pcic_irq tunable, which allows the user to tune
the interrupt which will be given to the PCIC. If the value supplied is
illegal or not available, interrupts will be turned off and polled mode
used instead.


43321 28-Jan-1999 jkh

Make builtin's state-aware in loader.

Submitted by: Daniel C. Sobral
PR: 9663


43205 25-Jan-1999 rnordier

Fix a couple of further bugs: missing argument to sprintf() and
"==" used for "=".


43189 25-Jan-1999 rnordier

Correctly record the end of the a.out symbol table. In practice, a
bootinfo structure where bi_esymtab < bi_symtab was being passed
to the kernel. In the case of older 2.x kernels, this was causing
garbage to be printed to the video console, followed by an exception.

This should resolve a problem reported on -current by Peter Jeremy
<peter.jeremy@auss2.alcatel.com.au>.


43139 24-Jan-1999 msmith

From the PR:

I added a FICL_TRACE-conditioned trace facility based on "see".
It is ugly because words' functions are almost all static, and ficlExec,
where the trace has to be located, can't get their pointers. So, #ifdef
this staticization, and add most of see's body into ficlExec. Duplication
of code, uglyness, etc. But it is cleanly #ifdef'ed, and works like a
charm.

It does not provide "step" facility, though, just trace. It is
tunable at run-time through "trace!". If anyone (most likely me :) ever
wants a step facility, I'll add it. Should be easy.

PR: bin/9652
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


43137 24-Jan-1999 msmith

Bleh. Missing 'unit =' doesn't help legacy num_ide_disks code.

PR: bin/9651
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


43135 24-Jan-1999 msmith

From the PR:

FICL's TYPE copies the counted string to HERE, as abial has
remarked. Answering to abial's question, this is NOT garanteed to have
enough space.
...
We have dynamic memory. Even before memory-alloc got in, we
already had dynamic memory. Use it, then! (ficlMalloc is sysdep, so I
suppose that's why it was not used for TYPE; ficl is probably designed
to work without a working ficlFree).

Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


43115 24-Jan-1999 msmith

Document root_disk_unit


43114 24-Jan-1999 msmith

biosdisk.c
Implement a new variable 'root_disk_unit' which supersedes
'num_ide_disks' and makes it possible to explicitly set the
root device unit number regardless of type considerations.

bootinfo.c
If we can't calculate a dev_t for the root disk, complain and
don't proceed to boot with an invalid boot device.


43113 24-Jan-1999 msmith

Fill in the bi_bios_dev field in the bootinfo struct; the loader doesn't
guess this value well in anything other than the simplest of situations.


43078 22-Jan-1999 msmith

Add EXCEPTION word set.

Make TIB handling use buffer size to conform with ANS Forth.

Add ANS MEMORY-ALLOC word set.

See the PRs for extensive details.

PR: kern/9412 kern/9442 kern/9514
Submitted by: PRs from Daniel Sobral <dcs@newsguy.com>


43077 22-Jan-1999 msmith

bootstrap.h
help.common
interp.c
Rename the 'source' command to 'include' in order to avoid conflict
with the ANS Forth command of the same name. (kern/9473)

interp_forth.c:
Changes from kern/9412 (EXCEPTION word), kern/9442 (TIB buffer
sizing) and an improved version of kern/9460 (set
version numbers).

load_aout.c:
Trim some obsolete #if 0'ed cruft.

pnp.c:
Tidy the pnpscan output, turn off the module scanning until we
sort out how to do it right.

PR: kern/9412 kern/9442 kern/9460 kern/9473
Submitted by: PRs from Daniel Sobral <dcs@newsguy.com>


43072 22-Jan-1999 rnordier

Fix extraneous free() on error.


43068 22-Jan-1999 rnordier

Fix read error not being detected.


43059 22-Jan-1999 rnordier

Push version numbers up to 1.00. This is just intended to reflect
that the BTX code can be regarded as stable: there are no associated
code changes.

Suggested by: obrien


43016 21-Jan-1999 msmith

Add 'set tunables' help, list the kernel tunable values that can currently
be overridden.


42807 18-Jan-1999 msmith

Transition from using Perl to using awk for our text-manipulation
needs. This removes the dependancy on Perl for the generation of the
loader, allowing the world to be built on a perl-free system.

Submitted by: Joe Abley <jabley@clear.co.nz>


42713 16-Jan-1999 jdp

Replace duplicated "old" linker set definitions with an include of
<sys/linker_set.h>. Note, this isn't used on the i386.


42682 15-Jan-1999 abial

Fall back to /boot/boot.conf, if /boot/loader.rc was not fount. This is
to cover the transition period.

Suggested by: msmith


42679 14-Jan-1999 abial

Change counter-intuitive pc@ and pc! to inb and outb.

Submitted by: jkh


42638 13-Jan-1999 rnordier

In the event of a disk error, boot2 is expecting an error
code to be returned: give it one


42636 13-Jan-1999 abial

Change /boot/boot.conf to /boot/loader.rc - this name reflects what it
really is.

Agreed upon by: jkh, msmith and many others


42634 13-Jan-1999 abial

Add words "pc!" and "pc@" which allow to manipulate I/O ports. This can
be helpful when directly fiddling with PC hardware.

Also, define "arch-i386" appropriately, as suggested by Daniel C. Sobral.


42620 13-Jan-1999 msmith

Typo in patch application.

PR: kern/9459
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


42519 11-Jan-1999 rnordier

Drop boot.help support.


42512 11-Jan-1999 msmith

No builtin command resets getopt before using it, causing
problems in case a wrong option was given previously, and no option
is given to the next command.

PR: kern/9371
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


42510 11-Jan-1999 msmith

Preserve the previous loader as loader.old.

Note no matching commit for the Alpha, as the alpha boot0 stage does
not have the ability to prompt for user input.

PR: kern/9406
Submitted by: "Daniel C. Sobral" <dcs@newsguy.com>


42493 10-Jan-1999 msmith

Disable kzipping the loader; it seems to be breaking the aout-to-elf build


42488 10-Jan-1999 steve

Remove redundant line of code.

PR: 9364
Submitted by: Daniel C. Sobral <dcs@newsguy.com>


42480 10-Jan-1999 rnordier

Use etc/make.conf settings for serial port and speed.

Submitted by: rvb
Reviewed by: bde


42478 10-Jan-1999 peter

Damn, I thought I had committed this already, but it seems not.

Move the relocated boot1 and arg transfer space from 0x600/0x800 to
0x700/0x900. In theory this should make no difference, apart from the fact
that Buslogic controllers happen to use a few bytes at 0x600 for some sort
of scratch space for it's int 0x13 hook (!!!), causing the machine to crash
badly when the boot2 code makes it's callbacks into boot1 for disk IO.

Submitted by: Robert Nordier <rnordier@freebsd.org>


42465 10-Jan-1999 msmith

Enable escapes for $ to make it possible to insert variable names into
other variable values.


42446 09-Jan-1999 msmith

Explicitly look for kzip in /usr/bin, again this is a stopgap, to avoid
making kzip a build tool.


42420 09-Jan-1999 msmith

kzip the loader, this shrinks it to about 60% of its original size.
Note that this is a stopgap with dependancies on the a.out tools.


42419 09-Jan-1999 msmith

Extend bd_print() so that it displays slices and partitions on disks.


42418 09-Jan-1999 msmith

Add a description for 'lsdev' so that it shows up in the '?' display


42318 05-Jan-1999 msmith

Alpha-specific help topics (currently empty)


42291 04-Jan-1999 peter

Fix a potential sign extension bug on 8-bit chars.
Outputting a backspace isn't supposed to be destructive.. It isn't on
most terminals, nor on the standard bios output (vs. TERM_EMU mode)


42290 04-Jan-1999 peter

Fix variable initialization.. It was written with '==' instead of '-'.
#include <string.h> for string prototypes.


42289 04-Jan-1999 peter

Clean some unused variables lint


42288 04-Jan-1999 peter

Don't forget a trailing \n when loading a kernel that has been stripped.
(This might make ELF_VERBOSE look funny, but I'm tempted to delete that
anyway)


42274 04-Jan-1999 msmith

Restore dependancy to build loader.help here


42273 04-Jan-1999 msmith

Add dependancy to build loader.help here


42269 03-Jan-1999 msmith

First cut at generating loader.help for the alpha


42268 03-Jan-1999 msmith

Reenable generation of the loader.help file


42255 02-Jan-1999 jkh

Update for new boot block location.


42209 31-Dec-1998 abial

Add support for some FACILITY words:

key? ( -- flag) \ check to see if there's a key to be read from input
ms ( u -- ) \ wait that many milliseconds
seconds ( -- u ) \ get number of seconds from midnight.

'words' now outputs the list page by page - this probably should go
through libstand's pager, but will have to wait for closer integration of
built-ins with Forth...

Submitted partially by: W Gerald Hicks <wghicks@bellsouth.net>


42207 31-Dec-1998 abial

Add back ability to make beeps when using new TERM_EMU.

Submitted by: W Gerald Hicks <wghicks@bellsouth.net>


42002 22-Dec-1998 abial

Add simple terminal emulator, compatible with cons25. Currently supported
capabilities are: AF, AB, cm, ho, me, cd. The code is hidden behind
-DTERM_EMU - should it cause any problems, you can remove this define
to get back the old behaviour.

You'll find some examples how to use it in src/share/examples/bootforth.

Reviewed by: jkh


42001 22-Dec-1998 abial

Add new word ".#" which acts like "." but doesn't output a space separator.
I found it impossible to output parametrized strings like "\033[%d;%dH"
without building them first in pad area.


42000 22-Dec-1998 abial

* Begin integration of built-ins with Forth: leave the exit code from
a built-in command on Forth stack.
* Fix a bug which was causing a panic when loading stripped aout kernels.

Reviewed by: jkh


41861 16-Dec-1998 n_hibma

Removed dynamic loading of FileHandle


41838 16-Dec-1998 msmith

Disable build/install of boot.help until we sort out how to construct it
in the makeworld environment.


41822 15-Dec-1998 msmith

Reformat help to improve subtopic display appearance, other minor
cleaning. The 'help' command in the loader should now be usable and
hopefully informative.


41821 15-Dec-1998 msmith

Build the composite help file from the generic and architecture-specific
help files, sorting topics and subtopics to allow maximum flexibility.


41810 15-Dec-1998 msmith

unlocalise build date (merge from i386)


41587 07-Dec-1998 ache

unlocalize date
Submitted by: Cejka Rudolf <cejkar@dcse.fee.vutbr.cz>


41540 05-Dec-1998 rnordier

Revise some comments and labels.


41412 29-Nov-1998 rnordier

Drop EDD support detection, though retain configurable use of disk
packet interface. Add booteasy-style F5 support. Add no-update
option. Implement various space optimizations and consistency fixes.


41285 22-Nov-1998 rnordier

Drop use of BIOS int 0x14 services in favor of direct port I/O.

Feedback and testing: Adrian Filipi-Martin <adrian@ubergeeks.com>


41259 20-Nov-1998 archie

Fix misallocation of buffer bug (too short)


41254 19-Nov-1998 paul

This fixes a bug in the bcache code whereby false cache hits occur
the first time block 0 is read. This fix initialises the block
numbers to -1 which isn't the most correct thing for a daddr_t but
it isn't likely to cause a problem in the boot blocks and it could
do with a more thought out fix later.

The bug is probably benign on the i386 but on the alpha it can
cause initial file opens to fail. This is the cause of the "can't
open /boot/boot.conf" errors.

It appears on the alpha because of a number of combining factors.
On the alpha the LABELSECTOR is 0 so block 0 needs to be read in
from the media. The first time this happens you get a false hit
because the bc_blkno field is zero initially. Also, the timestamp
check against this cache hit succeeds because on the alpha a hacked
getsecs() function can return 0 when it starts counting so that
the zero initial timestamp + BCACHE_TIMEOUT is greater than the
current time until getsecs() has counted passed BCACHE_TIMEOUT.

The overall effect is that the first open() that occurs gets a
false cache hit and returns garbage to the bd_strategy() function
which then fails the open() call. This false hit then stays in the
cache until BCACHE_TIMEOUT getsecs() ticks have passed; all open()
calls during this time fail.

This explains why you can generally access the media by the time
you get to interp() and start issuing commands but the earlier
attempts to run the boot scripts are failing.

It's possible that this is causing the problem switching to the
mfsroot floppy as well but I haven't confirmed that.


41140 13-Nov-1998 msmith

Add documentation for $rootdev.


41139 13-Nov-1998 msmith

Add a new variable $num_ide_disks which is used to offset the unit number
for SCSI disks when converting from BIOS unit numbers to da unit numbers.

Prompted by Kevin Street <street@iname.com>


41107 12-Nov-1998 jkh

bootforth seems to be working well enough for me and others to turn
on by default. If it causes trouble, it's very easy to switch off again.


41085 11-Nov-1998 rnordier

Revise error messages.


41013 08-Nov-1998 rnordier

Prevent boot.config being parsed more than once.


41010 08-Nov-1998 rnordier

Drop the familiar 'text=xxxx data=xxxx bss=xxxx ...' display while
loading. This eliminates noise when loading boot/loader; and when
loading a kernel, they generally flash by too fast to be
intelligible anyway.


41008 08-Nov-1998 rnordier

boot1: Eliminate EDD detection and optional use of disk packet
interface. Do some general consistency fixes and space optimizations.
Use of some freed-up space to defend against possible BIOS misfeatures.

boot2: Revise disk read interface to provide for boot1 changes. Free
up space for this.


40995 07-Nov-1998 jkh

o Add proper stack checking to all file words
o add fkey and fread
o eliminate fexists now that this can be expressed in HLL forth
( : fexists fopen dup -1 <> if fclose 1 else drop 0 then ; ) :-)

Once we get the ability to write files, it should be possible to do
stand-alone rescue work from the 3rd stage boot. :)


40989 07-Nov-1998 jkh

Eliminate much code cruft by extending simple file I/O API to include
fopen and fclose.


40988 07-Nov-1998 jkh

Eliminate much code cruft by extending simple file I/O API to include
fopen and fclose. Also look for /boot/boot.4th now and, if found,
load its contents.


40987 07-Nov-1998 jkh

Take init out of here - it's a layering violation.


40984 07-Nov-1998 jkh

Don't have debugging on by default - it makes testing annoying. :)


40982 07-Nov-1998 jkh

OK, fload/fexec work properly when both compiling and interpreting
now. Gack.


40978 06-Nov-1998 jkh

switch words to default mode.


40977 06-Nov-1998 jkh

Submit better fix to the prompt bug.


40976 06-Nov-1998 jkh

Make fexists/fload work with existing string literals instead. Doing
my own string literal handling is just too wonky.


40971 06-Nov-1998 jkh

Argh, I had this right[er] before. More commits to follow.


40951 06-Nov-1998 jkh

Use proper literal names.


40950 06-Nov-1998 msmith

Ack. Create parseable command tail properly, and eat args out of the TIB.


40949 06-Nov-1998 msmith

Don't not print the prompt string; not doing this has funny side-effects.
Make the prompt an empty string instead.


40948 06-Nov-1998 msmith

Don't use the poxy vmGetString interface (who uses counted strings these
days?), get the input buffer ourselves. Add some debugging code.


40940 05-Nov-1998 rnordier

Make use of BIOS int 0x13 extensions configurable, and disabled
by default.


40929 05-Nov-1998 jkh

Remember a bit more of my forth and do:

o Add fexists word to check for the presence of a file
o make fexists and fload immediate words which DTRT both interpreted
and compiled (doh!)
o add an init word which gets run at bootstrapping time to do extra
post-coldload initialization (in the default implementation, we
look for /boot/boot.4th and load it if found).


40927 05-Nov-1998 jkh

1. rebuild all elements of testmain properly for safety.
2. add fload and key prims for doing simple file and terminal I/O, respectively


40924 05-Nov-1998 msmith

Explicitly invoke perl to run the softwords.pl script in case the
script is not executable.
Submitted by: Don Lewis <Don.Lewis@tsc.tdk.com>


40890 04-Nov-1998 msmith

Improve the assertion testing for successful softword compilation.
The excessive use of assert() vs. robust error checking is annoying.


40884 04-Nov-1998 msmith

Turn off -g accidentally left in from testing.


40883 04-Nov-1998 msmith

Fix includes; we were still pulling in <stdlib.h> in some places.
Support building a standalone interpreter with 'make testmain', remove
win32 and egregious gets() in testmain.c


40882 04-Nov-1998 msmith

Use a smaller default dictionary to waste less space.


40879 04-Nov-1998 jkh

Respect ${.OBJDIR} properly when looking for libficl.a


40877 04-Nov-1998 msmith

Add required parts for BootForth building (currently disabled and
untested). Only suitable for i386 at the moment, as we are missing
setjmp/longjmp on the Alpha.


40876 04-Nov-1998 msmith

Make this work in the libstand environment; don't use stdio/stdlib headers.


40875 04-Nov-1998 msmith

Add BootForth hooks; if BOOT_FORTH is defined, pass every line read
to the Forth interpreter. Instantiate all of our inbuilt commands
as Forth words, and handle them being called from there.

Add my copyright to the bcache module (oops).


40871 03-Nov-1998 msmith

Include "bootstrap.h" to get a definition for bcache_devdata.

Submitted by: jkh


40843 03-Nov-1998 msmith

Add the Ficl (Forth Inspired Command Language) interpreter. If all goes well,
this will allow us to manage bloat in the loader by using a bytecoded HLL
rather than lots of C code. It also offers an opportunity for vendors
or others with special applications to significantly customise the boot
process without having to commit to a divergent code branch.

This early commit is to allow others to experiment with the most effective
mechanisms for integrating FICL with the loader as it currently stands.

Ficl is distributed with the following license conditions:

"Ficl is freeware. Use it in any way that you like, with the understanding
that the code is not supported."

All source files contain authorship attributions.

Obtained from: John Sadler (john_sadler@alum.mit.edu)


40835 02-Nov-1998 msmith

Ok, the entry aging algorithm sucked; 1s time resolution is not enough for
LRU. Use a 31-bit counter instead. If we decide to do heavy I/O through
the bootloader this will have to be revisited.


40834 02-Nov-1998 msmith

Implement a simple LRU block cache. By default this is initialised to 16k,
and will bypass transfers for more than 8k. Blocks are invalidated after
2 seconds, so removable media should not confuse the cache.

The 8k threshold is a compromise; all UFS transfers performed by
libstand are 8k or less, so large file reads thrash the cache.
However many filesystem metadata operations are also performed using
8k blocks, so using a lower threshold gives poor performance.

Those of you with an eye for cache algorithms are welcome to tell me
how badly this one sucks; you can start with the 'bcachestats' command
which will print the contents of the cache and access statistics.


40833 02-Nov-1998 rnordier

Revise a few comments.


40832 02-Nov-1998 msmith

Standardise on ';' as a component separator; it seems to be a little more
common than ','.


40807 01-Nov-1998 rnordier

Ignore, rather than emulate, an i386 'hlt' instruction (though for
most practical purposes, this should be indistinguishable from a
more strictly correct approach).

Feedback and testing: msmith


40793 31-Oct-1998 dfr

* Extend the memory available for the heap from 256k to 512k.
* Embed the stack into the bss section for loader and netboot. This
is required for netboot since otherwise the stack would be inside our
heap.
* Install loader and netboot in /boot by default.
* Fix getbootfile so that it searches for a ',' instead of a ';'
when terminating the filename.


40775 31-Oct-1998 msmith

- Add a new command 'lsdev' to list devices which might be likely to host
filesystems.
- New 'help' command and data in the help.* files (not yet installed),
provides topic and subtopic help, indexes, etc.
- Don't crash if the user tries to set an invalid console. Be helpful
instead.
- Expand tabs (badly) on the i386 video console.
- Some minor cosmetic changes.


40753 30-Oct-1998 luoqi

Fix an uninitialized variable in the `dangerously dedicated disk' case.


40745 30-Oct-1998 msmith

Make the BTX loader much more quiet about what it's doing. This removes
most of the "what the (*^&%(*^ was that?" stuff that normally flies by.


40705 28-Oct-1998 msmith

Simplify the "is a character ready" test, so that we don't return a false
negative for keypresses with zero ascii values. This is in line with the
comconsole test, rather than being more ambitious.

Submitted by: rnordier


40675 27-Oct-1998 rnordier

Avoid interruptions while talking to keyboard controller.


40674 27-Oct-1998 rnordier

biosboot compatibility fix: change behavior of backspace in getstr().
Noticed by: abial

Optimize away a few bytes to make space for the above.


40621 24-Oct-1998 msmith

Reserve some space for the stack in the region we recover from the initial
bootloader.
Submitted by: dfr


40620 23-Oct-1998 msmith

Clean the ${BASE}.sym file as well.


40619 23-Oct-1998 msmith

Remove a debugging copy of offsetof() that snuck in.


40618 23-Oct-1998 msmith

Enable the PCI BIOS PnP enumerator.


40617 23-Oct-1998 msmith

PnP enumerator using the PCI BIOS. This is needlessly complex due to the
lack of a simple "enumerate all PCI devices" function.


40601 22-Oct-1998 msmith

PnP BIOS enumerator; mostly useful for hunting PnP devices that are supported
by the system BIOS rather than supporting ISA PnP.


40600 22-Oct-1998 msmith

Add a dependancy on the BTX crt0 object
Add the biospnp handler to the pnp handler array
Drop some old debugging code


40599 22-Oct-1998 msmith

Add biospnp.c


40598 22-Oct-1998 msmith

Pop the return address off the stack before making a V86_CALLF call;
this allows us to implement what look like C function calls from user
space "directly" to v86 mode code. (Used for calling the PnP BIOS)


40597 22-Oct-1998 msmith

Export an interface for presetting the ISA PnP read port address.
Make the EISA ID formatter generally available


40556 21-Oct-1998 msmith

Bye-bye setdefs.


40555 21-Oct-1998 msmith

- Enable PnP and ISA PnP code.
- Use the ISA PnP enumerator.
- Use the new linker set code, throw out the gensetdefs stuff.
- Produce an intermediate loader image that has symbols stripped, to aid
- in debugging.
- Supply ISA port access functions required for ISA PnP


40554 21-Oct-1998 msmith

Don't depend on being part of the kernel tree. If we are, use the kernel's
<machine> includes rather than the system's.


40553 21-Oct-1998 msmith

Make ISA PnP work. This successfully enumerates as many ISA devices as I
can fit into my test machine.

- Move to using STAILQs rather than ad-hoc singly-linked lists.
- Use a mostly procedural interface to the PnP information. This
improves data-hiding.

Implement a new linker-set technique (currently on i386 only but should work
on Alpha as well). This is a good candidate for replacing the current
gensetdefs cruft completely.


40541 20-Oct-1998 rnordier

Make serial port, data format, and bps configurable.


40531 20-Oct-1998 msmith

Hex constants should only have one '0x' prefix.


40524 19-Oct-1998 rnordier

Make configurable (a) whether to use int 0x13 extensions; (b) timeout
value. Ignore failure to update mbr sector. Disable interrupts while
using extended registers. Default to F1 not F2.


40521 19-Oct-1998 dfr

Reclaim the 48k used by the first bootstrap stage by adding it to the malloc
pool.


40518 18-Oct-1998 dfr

Rename boot2 to loader.


40493 17-Oct-1998 rnordier

Set BINMODE to 444.


40477 17-Oct-1998 rnordier

Fix some glitches in the input routine:
Don't display a \b if not acting on it.
Don't process binary zero chars (which result from pressing function
keys, etc. on the PC).


40476 17-Oct-1998 rnordier

Having probed the keyboard, turn off the -P flag.


40474 17-Oct-1998 rnordier

Treat all options as toggles (ie. -c -c is the same no -c). Since
the boot.config settings are persistent, this seems to provide a
useful override capability, and should break only on broken
boot.config's.

Output a cosmetic newline if booting with no input.


40472 17-Oct-1998 rnordier

biosboot compatibility fix:
If we have a boot.config command, display it.


40471 17-Oct-1998 rnordier

biosboot compatibility fix:
Read boot.help before parsing boot.config. We were parsing
boot.config first, which could result in boot.help being read
from a different location (or not found), which would probably
just cause surprise, without being useful.


40465 17-Oct-1998 peter

Load the first page of the file and use the headers in it. This should
avoid the need to seek back to offset zero which is causing trouble on
the Alpha with a gzipped kernel.


40459 16-Oct-1998 msmith

Turn of disk debugging by default (suppress annoying "partition marked as
unused" diagnostic on floppies).


40429 16-Oct-1998 peter

"fix" the gzipped kernel load problem by having the loader check that it
can seek back to the first PT_LOAD and doing a close/reopen if it cannot.
This is because the first PT_LOAD section includes the ELF headers.
This fixes gzipped kernels on the i386, it should solve mike's problem
for the Alpha.


40416 15-Oct-1998 rnordier

Fix path to sio.s


40414 15-Oct-1998 dfr

Change some printfs so that ELF_VERBOSE prints meaningful values on the alpha.


40413 15-Oct-1998 dfr

Fix the bootinfo so that the right values actual make it into the kernel.


40404 15-Oct-1998 rnordier

Add serial, dual, and probe-keyboard support.


40393 15-Oct-1998 peter

Get the last used address via a more conservative method, don't depend
on the module chain being in increasing address order.


40358 14-Oct-1998 rnordier

Activate boot2.


40348 14-Oct-1998 peter

Link fdboot to boot1 as well.


40341 14-Oct-1998 peter

Initial attempt to update the Alpha loader and kernel to use the machine
independent elf loader and have access to kld modules. Jordan and I were
not sure how to create boot floppies, and the things we tried just made
SRM laugh in our faces - but it was upset at boot1 which was not touched
by these changes. Essentially this has been untested. :-(

What this does is to steal the last three slots from the nine spare longs
in the bootinfo_v1 struct to pass the module base pointer through.

The startup code now to set up and fills in the module and environment
structures, hopefully close enough to the i386 layout to be able to use
the same kernel code. We now pass though the updated end of the kernel
space used, rather than _end. (like the i386).

If this does not work, it needs to be beaten into shape pronto. Otherwise
it should be backed out before 3.0.

Pre-approved in principle by: dfr


40338 14-Oct-1998 peter

Try and get the sys/* and machine/* includes via relative paths. This
saves having to do a 'make includes' after touching any header file for
the boot code.


40336 14-Oct-1998 peter

Align to sizeof(long) rather than sizeof(int32_t). It needs to be
long because this code is shared with the alpha. I hope the alpha can
read 32 bit ints at 32 bit alignment (vs. 64 bit alignment).


40330 14-Oct-1998 rnordier

Fix btx include path.


40327 14-Oct-1998 peter

Tweak the output one more time again. The kernel or module pathname
is useful, and usually fits all on one line with the load sizes.


40326 14-Oct-1998 rnordier

Include <bsd.prog.mk>. Add install target (to /boot for now).


40325 13-Oct-1998 rnordier

Fix flow of control after directory listing; enable EDD support;
cosmetics.


40323 13-Oct-1998 rnordier

Make v86.ctl default more explicit; simplify read error-handling;
twiddle.


40320 13-Oct-1998 rnordier

Adjust NDEV value.
Optimize reading of system time.


40314 13-Oct-1998 rnordier

Change to a 15-sector boot2.
Refine slice-handling.


40308 13-Oct-1998 rnordier

Don't use an absolute path to objcopy.
Noticed by: Scott Mace <smace@intt.org>


40307 13-Oct-1998 rnordier

Improve drive recognition and handling.


40291 13-Oct-1998 peter

Make the ELF load messages cleaner.


40270 12-Oct-1998 rnordier

This commit was generated by cvs2svn to compensate for changes in r40269,
which included commits to RCS files with non-trunk default branches.


40269 12-Oct-1998 rnordier

New boot blocks: support for /boot/loader; a.out & ELF; cyl > 1023;
multiple 0xa5 slices; etc.


40254 12-Oct-1998 peter

Only print kernel entry point during load.
Drastically quieten down the verbose load progress messages. They were
more useful for debugging than anything, but are beyond a joke when loading
a few dozen modules.
Simplify the ELF extended symbol table load format. Just take the main
symbol table and the string table that corresponds. This is what we will
be getting local symbols from. (needed for the alpha stack tracebacks).
Use the (optional) full symbol tables in lookups. This means we have to
furhter distinguish between symbols that can come from the dynamic linking
table and the complete table.
The alpha boot code now needs to be adapted as ddb/db_elf.c cannot use
the simpler format.
I have not implemented loading the extended symbol tables from the syscall
interface yet, just for preloaded modules.
I am not sure about the symbol resolution. I *think* it's possible that
a local symbol can be found in preference to a global, depending on the
search sequence and dependency tree.


40253 12-Oct-1998 peter

Only print filename and entry address for the kernel itself. The rest
have a meaningless entry as they are relocatable.


40245 12-Oct-1998 rnordier

Drop .MAKEFLAGS: hack.


40244 12-Oct-1998 rnordier

Do without head and tail: they're pretty unnecessary here anyway.


40243 12-Oct-1998 rnordier

Use rather than for linking. This allows the new rather
than stale version of libstand.a to be found.

After this change, the new boot code is apparently building correctly
in a make world.


40218 11-Oct-1998 rnordier

Override for ELF.


40217 11-Oct-1998 rnordier

Override for ELF. Override .s.o suffix rule.


40216 11-Oct-1998 peter

Fix a warning that's been bugging me for ages.


40215 11-Oct-1998 peter

Fix a warning


40214 11-Oct-1998 peter

Probe all consoles, not just the first. It doesn't make a lot of
difference, but might later on when we implement some sort of multi-head
console mode. Select a console after probing them all.
Don't strdup a potentially NULL return from getenv().
If we don't select an active console, choose the first regardless.
Call the console init function, at startup time and on a manual change.
The env_setenv() function needs EV_VOLATILE because it's pointing to
data that isn't malloc'ed and will cause a fault if it's freed later.


40213 11-Oct-1998 peter

Cosmetic: After the autoboot timeout, print a \n.


40212 11-Oct-1998 peter

Only call vidc_init() once (unless forced).
Cosmetic change to the init-time character eater (like, make it increment
the index counter - if there's a problem, it would sit there in an infinite
loop instead of only running 10 times).


40211 11-Oct-1998 peter

Fix comconsole mode. The int 0x14 read and status commands were reversed.
Also, make sure we set %dx each time around otherwise the commands
suddenly start trying to work on things like com92 instead of com1.
Make sure comc_init() is only run once.
Cosmetic change to init-time character eater.


40210 11-Oct-1998 peter

Warn that one of the DEBUG statements has a v86 recursion bug.


40209 11-Oct-1998 peter

Fix comment to match code


40195 11-Oct-1998 dima

add <sys/linker.h>


40182 10-Oct-1998 rnordier

Fix a typo.
Output another newline before invoking bootstrap.


40149 09-Oct-1998 rnordier

Turn off the new /sys/boot stuff (except boot0) unless OBJFORMAT
is elf. (The BTX client must be ELF, though it is packaged as a.out
for compatibility.)


40146 09-Oct-1998 peter

Attempt to at least align MODINFO_* blocks. IMHO, decoding this stuff
should be MD code since one day we'll have to recover pages from deleted
preload data. MI code can't be expected to know how to deal with pmap
internals, assuming it gets done via pmap that is. :-)


40145 09-Oct-1998 peter

Turn symbol table info passing back on, although it's probably not
particularly useful in this form. KLD can deal with it much better.
setenv kernelname moved earlier.


40144 09-Oct-1998 peter

Remove kernelname setenv, the common code does it.
Use the metadata for symtab pointers, mainly to keep it common with
elf_freebsd.c.


40143 09-Oct-1998 peter

Implement preloading for elf modules
- get dependency info from PT_DYNAMIC's DT_NEEDED tags.
- store MODINFOMD_DYNAMIC for the kernel's later use
setenv kernelname when we have it
Fix firstaddr/lastaddr calculation (duh! :-)
Explicitly skip string table with section names in it.


40142 09-Oct-1998 peter

Preload support for a.out KLD not implemented yet. (almost)
KLD modules are *not* PIC. (Shared libs are pic to avoid relocations
causing copy-on-write, that's irrelevant here).
setenv kernelname when we load it.
Use MODINFO_SSYM/ESYM for each symbol section when (if) there are
more than one being loaded.


40141 09-Oct-1998 peter

Use a consistant module search path (same as kernel will be).
Use new dependency mechanism.


40140 09-Oct-1998 peter

loader <-> kernel preload module interface constants moved to common file.
Remove Mike's explicit data structures for dependency info. This is
done via DT_NEEDED etc in the dynamic section for now. This may need
to be revisited later on.


40124 09-Oct-1998 rnordier

Get this building as a.out or ELF.

With thanks to: jdp


40107 09-Oct-1998 msmith

Remove some debugging code.
Do a much better job of DWIM with partial device specifications.
Fix the module metadata build process, which was completely broken.
Use a larger read buffer when copying large objects in; this
improves performance marginally and will avoid flushning any small caches
we might choose to implement.


40106 09-Oct-1998 msmith

Sync the MODINFO constants with <sys/linker.h>
Remove debugging in command_read().
Correctly strip leading controls on script commands.
Make 'ls' more DWIM in regard to pathnames. We can still do better.


40034 07-Oct-1998 peter

Fix that pesky boot aguments parsing bug. (I think :-)


40032 07-Oct-1998 msmith

Request the flags back when checking for keyboard status.
Submitted by: rnordier


40017 07-Oct-1998 msmith

Enable the DOS filesystem. NOTE: you will have to rebuild libstand in
order to be able to build again.


40016 07-Oct-1998 msmith

- Drain the keyboard buffer when initialising.
- Be pedantic about the return from int 16 fn 01.


40015 07-Oct-1998 msmith

- VERBOSE_LS is obsolete, as the heap is much better behaved now.
- Don't whine about nodes we can't stat(); these are usually
symlinks that lead out of the filesystem.
- Autoboot is now controlled by $autoboot_delay, which is a value
in seconds or NO to disable autoboot.
- Don't autoboot at the end of boot.conf if we have already tried.
- Add a 'read' command to complement 'echo'. Both are still hidden.
- Improve the 'source' command/function so that it is possible to
source scripts off removable media. The entire script is read and
saved before beginning execution. Script lines beginning with
'@' will not be echoed when being executed. Script execution will
normally terminate at the first error, however if the script line
begins with '-' this behaviour is overriden for that command.


40014 07-Oct-1998 msmith

VERBOSE_LS is obsolete


39989 06-Oct-1998 msmith

bootinfo.c
Strip any device name information from the kernel name
before passing it in.

biosdisk.c
Be more strict about matching device names to slice entries.
Only allow unsliced syntax on unsliced disks.


39988 06-Oct-1998 rnordier

Fix for "get base memory" bug found and mostly fixed by Mike.


39987 06-Oct-1998 msmith

The BIOS memory size is only a word. Some BIOSsen have garbage in the other
16 bits we were reading here, causing loss of arguments.


39986 06-Oct-1998 msmith

Build boot0 as well.


39980 05-Oct-1998 rnordier

Install in /boot.


39974 05-Oct-1998 rnordier

This commit was generated by cvs2svn to compensate for changes in r39973,
which included commits to RCS files with non-trunk default branches.


39968 05-Oct-1998 msmith

Insert whitespace between unargv'd arguments.
Submitted by: "Louis A. Mamakos" <louie@TransSys.COM>


39962 04-Oct-1998 rnordier

Adjust setting of argument pointer for BTX 0.87.


39961 04-Oct-1998 rnordier

Allocate space for storing of arguments at the end of conventional
memory.


39960 04-Oct-1998 msmith

Don't include ELF symbol information yet - it causes the ELF DDB to
explode.


39944 04-Oct-1998 msmith

Improve the handling of the initial bootdev value from the previous loader.
Remove some unused code.


39943 04-Oct-1998 msmith

biosdisk.c
Allocate space for, and copy, NDOSPART slice entries from the
MBR, not just one. Add some extra debugging while we're at it.

elf_freebsd.c
Initialise the symbol table start/end pointers in case we don't
have them.


39931 03-Oct-1998 rnordier

Missing newline in heap command display.
Noticed by: jkh


39930 03-Oct-1998 rnordier

For system calls, reboot without prompting; for exceptions, display
message and await reset.


39921 03-Oct-1998 rnordier

Map all BTX system pages readable at ring 3.
This resolves the firmware problem first raised in connection
with PR 8105, although unrelated.


39919 03-Oct-1998 rnordier

bootinfo bi_vesa no longer exists.


39902 02-Oct-1998 msmith

Consolidate the bootinfo-loading code, greatly simplifying the _exec
functions.


39901 02-Oct-1998 msmith

Fix an egregious precedence bug.


39897 02-Oct-1998 msmith

Set $currdev according to our best guess at the BIOS device that the previous
bootstrap loaded us from.


39896 02-Oct-1998 msmith

aout_freebsd.c
Use bd_getdev() to work out a dev_t for the root device.
Allow $rootdev to override $currdev as the root device.

biosdisk.c
Save the slice table and disklabel when opening a disk.
Add bd_getdev(), which attempts to return a dev_t corresponding
to a given device. Cases which it still doesn't get right:
- The inevitable da-when-wd-also-exists
- Disks with no slice table (the slice number is not set correctly)
The first is difficult to get right, the second will be
fixed in an upcoming commit.

comconsole.c
vidconsole.c
getchar() should return an 8-bit value; some BIOSsen pack extra
information in %eax.

libi386.h
Remove some stale prototypes, add new ones.


39895 02-Oct-1998 msmith

Mark exit() as __attribute__((__noreturn__))


39894 02-Oct-1998 msmith

boot.c
Increase the robustness of the "is it time to boot yet" test;
if the time skipped the "when" time, we would miss it.
Don't spin in an endless loop if we don't find the first possible
kernel suggested. When we run out, don't try to load an empty
kernel name.

load_aout.c
printf format warnings


39887 02-Oct-1998 peter

First shot at loading elf symbols. Things are a bit strange because
of the ..umm.. "wierd" way binutils lays out the file. The section
headers are nearly at the end of the file and this is a problem when
loading from a .gz file which can't seek backwards (or has a limited
reverse seek, ~2K from memory).

This is intended to be compatable with the ddb/db_elf.c code and the
alpha/libalpha/elf_freebsd.c layout. I've studied these (which are NetBSD
derived) but did it a bit differently. Naturally the process is similar
since it's supposed to end up with the same result.


39857 01-Oct-1998 jkh

Override STRIP so installation doesn't try to strip the loader.


39851 30-Sep-1998 peter

Make 'make install' do something that might be useful.


39850 30-Sep-1998 peter

Stop libi386.a from being installed..


39834 30-Sep-1998 peter

Turn on i386-elf


39833 30-Sep-1998 peter

i386 ELF loader startup backend. On an ELF kernel booted with the 3-stage
bootblocks, the kernel shows up as the primary module:

[3:24am]~-100# kldstat
Id Refs Address Size Name
1 1 0xf0100000 ff00000 /kernel
^^^^ oops.. :-)

Based heavily on aout_freebsd.c. Hmm.. There's so much in common that
these could probably be combined and just check the metadata to see which
format it is.


39832 30-Sep-1998 peter

Save booted kernel name. Cosmetic cleanups.


39831 30-Sep-1998 peter

Fix typos.. The vector for "int 0x12" (get base mem) is not written in
hex as "0x1a". :-)
Fix a comment about the extended memory checks, that's int 0x15.


39830 30-Sep-1998 peter

ELF loader, part 1. It works with ELF kernels generated on the i386
so far, and should probably be able to be made to work for the alpha
without too much trouble once it's connected up and my assumptions tested.

I think (but have not tested) it will also load "old" ELF kernels that
were not linked with DYNAMIC headers.

The module glue is yet to come. (oh fun.. :-)

It does not explicitly load symbols [yet]. The _DYNAMIC data contains a
runtime symbol set that ddb can use via ddb/db_kld.c. It'll be missing
some detail that stabs normally provides (eg: number of args to a function,
line numbers, etc). On the other hand, those minimal symbols will always
be available even on a stripped kernel.

This is mostly stolen from load_aout.c with some ideas from
alpha/libalpha/elf_freebsd.c.


39828 30-Sep-1998 peter

s/out_loadmodule/aout_loadmodule/ in a printf diagnostic.


39827 30-Sep-1998 peter

Uncomment prototype for elf_loadmodule


39756 29-Sep-1998 peter

The bootinfo struct was getting clobbered or not passed through correctly.
Presumably VTOP doesn't work for static objects.
The easiest way to get it working was to reserve some space after the
environment strings and copy the bootinfo struct there.
Also, set RB_BOOTINFO, it's needed.

I got the code to load and run an unmolested kernel OK for the first time
with this system a few minutes ago - at last!. I did have to stop it
looking at the floppy though as BTX was trapping a mode 14 fault when
it look for /boot/boot.conf when no disk was in the drive. (I'm booting
from a scsi disk (bios disk 0x80)).

Now to teach it about ELF and modules :-)


39733 28-Sep-1998 peter

Only bcopy the correct amount of data from the buffer in case it is ever
in an overrun situation.


39732 28-Sep-1998 peter

Use the variable with the path in it for the error message.


39731 28-Sep-1998 peter

Reactivate the a.out kernel loader code.


39730 28-Sep-1998 peter

Missing return value that was kinda important.


39729 28-Sep-1998 peter

Argh, I don't believe how much time I wasted looking for this...
Bytes of extended memory = (extkb * 1024), not (extkb + 1024)


39725 28-Sep-1998 peter

The comconsole mode is accessed as 'comconsole' not 'com'.


39724 28-Sep-1998 peter

MBR magic is 0x55aa not 0xffaa.


39723 28-Sep-1998 peter

Precedence bug (?) causing probe problems.


39673 26-Sep-1998 dfr

* Add old UFS compatibility code to alpha/boot1.
* Fix a raft of warnings, printf and otherwise.
* Allocate the correct amount in mod_searchmodule to prevent an overflow.
* Fix the makefiles so they work outside my home directory (oops).


39664 26-Sep-1998 msmith

Recover the arguments passed in from the previous load stage, use them to set
the default console.
Print malloc stats from the new libstand allocator.


39662 26-Sep-1998 msmith

The BIOS can't perform a floppy operation where the destination crosses
a physical 64k boundary. Allocate a bounce buffer for such a transaction.


39660 26-Sep-1998 msmith

console.c
Allow the MI code to override the preferred console (eg. so that
an RB_SERIAL flag from the i386 boot2 can override the default
first active console)

isapnp.c
Use the standard format for ISA PnP IDs.

pnp.c
Allow trailing comments on lines, be less picky about line
contents.

ls.c
Cosmetic error message fix.

panic.c
Print the right arguments.


39646 25-Sep-1998 peter

Make these compile when there is an obj dir.


39530 20-Sep-1998 dfr

Make the alpha bootstrap build again, fix some warning and change sdboot to daboot.


39474 19-Sep-1998 msmith

Make libstand movable.

This completes the basic work required to make the loader work with BTX. We
now have a third-stage bootstrap shared by the i386 and Alpha.


39473 19-Sep-1998 msmith

- Improve debugging code.
- Make the "what do we do with a drunken disklabel" if-then-else-regardless
tangle easier to read.
- Don't count on the v86 structure being preserved between loop iterations,
as it may be trampled eg. by the DEBUG call.


39472 19-Sep-1998 msmith

Add a generic hexdump tool for debugging purposes.


39450 18-Sep-1998 msmith

Enable the biosdisk driver, duplicate -lstand as it both calls and is called
by the i386 platform library.


39449 18-Sep-1998 msmith

Synch with development version. Compiles and opens but doesn't work yet.


39448 18-Sep-1998 msmith

Remove 'panic' command (it works), don't ask for a keypress in panic, as
exit() does. Perhaps it shouldn't?


39447 18-Sep-1998 msmith

We lost all the files in crt/, so define the BIOS sector size here instead.


39446 18-Sep-1998 msmith

Use a.out.h to get all the correct bits in one place.


39444 18-Sep-1998 msmith

Oops, missed these. Machine-independant ISA PnP enumerator.


39441 17-Sep-1998 msmith

Initial integration of the i386 bootloader and BTX.

- Discard large amounts of BIOS-related code in favour of the more compact
BTX vm86 interface.
- Build the loader module as ELF, although the resulting object is a.out,
make gensetdefs 32/64-bit sensitive and use a single copy of it.
- Throw away installboot, as it's no longer required.
- Use direct bcopy operations in the i386_copy module, as BTX
maps the first 16M of memory. Check operations against the
detected size of actual memory.


39274 15-Sep-1998 rnordier

Add exec syscall.


39178 14-Sep-1998 msmith

Resynch with working sources before BTX integration.

- Use format-independant module allocator.
- Conditionalise ISA PnP support.
- Simplify PnP enumerator interface.
- Improve module/object searching.
- Add missing depend/install targets in BTX makefiles.
- Pass the kernel environment and module data in extended bootinfo fields.
- Add a pointer to the end of the kernel + modules in bootinfo.
- Fix parsing of old-style kernel arguments.


39165 14-Sep-1998 rnordier

Add BTX startup/interface code.


39125 13-Sep-1998 rnordier

Enable client entry point support.


39091 12-Sep-1998 rnordier

Add btxldr, a BTX loader for ELF clients.


39089 12-Sep-1998 rnordier

This commit was generated by cvs2svn to compensate for changes in r39088,
which included commits to RCS files with non-trunk default branches.


39088 12-Sep-1998 rnordier

BTX (aka the boot extender) is an i386 kernel that hosts 32-bit
bootstrap programs, and provides page-level protection, hardware
interrupt reflection, a virtual-8086 mode interface to BIOS, etc.


38789 04-Sep-1998 msmith

Generic plug-and-play enumerator infrastructure. Query supplied
enumerators, crossreference returned identifiers with a text-format
database and automatically load corresponding modules and dependancies.


38765 03-Sep-1998 jkh

Allow quoted strings (single or double) for grouping whitespace separated
items. Eliminate warnings.


38764 03-Sep-1998 msmith

Bootstrap updates.

- Move some startup code from MD to MI sections
- Add a 'copyout' and some copyout-related functions. These will be
obsoleted when BTX is available for the 386 and the kernel load
area becomes directly addressable.
- Add the ability load an arbitrary file as a module, associating
and arbitrary type string with it. This can be used eg. for loading
splash-screen images etc.
- Add KLD module dependancy infrastructure. We know how to look for
dependancies inside KLD modules, how to resolve these dependancies
and what to do if things go wrong. Only works for a.out at the
moment, due to lack of an MI ELF loader. Attach KLD module information
to loaded modules as metadata, but don't pass it to the kernel (it
can find it itself).
- Load a.out KLD modules on a page boundary. Only pad the a.out BSS
for the kernel, as it may want to throw symbols away. (We might want
to do this for KLD modules too.)
- Allow commands to be hidden from the '?' display, to avoid cluttering
it with things like 'echo'. Add 'echo'.
- Bring the 'prompt' command into line with the parser syntax.
- Fix the verbose 'ls'; it was using an uninitialised stack variable.
- Add a '-v' flag to 'lsmod' to have it display module metadata as well
(not terribly useful for the average user)
- Support a 'module searchpath' for required modules.
- The bootstrap file on i386 is now called 'loader' to permit the
/boot directory to use that name.
- Discard the old i386 pread() function, as it's replaced by
arch_readin()


38716 01-Sep-1998 msmith

New commandline/script parser, supports backslash quoting and environment
variable substitution.

Submitted by: Jordan Hubbard <jkh@freebsd.org>


38712 31-Aug-1998 msmith

Bootloader update.

- Implement a new copyin/readin interface for loading modules.
This allows the module loaders to become MI, reducing code duplication.
- Simplify the search for an image activator for the loaded kernel.
- Use the common module management code for all module metadata.
- Add an 'unload' command that throws everything away.
- Move the a.out module loader to MI code, add support for a.out
kld modules.

Submitted by: Alpha changes fixed by Doug Rabson <dfr@freebsd.org>


38475 22-Aug-1998 dfr

Minor tweaks to track a couple of i386 changes and to make it compile.


38466 21-Aug-1998 msmith

This commit was generated by cvs2svn to compensate for changes in r38465,
which included commits to RCS files with non-trunk default branches.


38465 21-Aug-1998 msmith

This is the new unified bootstrap, sometimes known previously as the
'three-stage' bootstrap.
There are a number of caveats with the code in its current state:
- The i386 bootstrap only supports booting from a floppy.
- The kernel and kld do not yet know how to deal with the extended
information and module summary passed in.
- PnP-based autodetection and demand loading of modules is not implemented.
- i386 ELF kernel loading is not ready yet.
- The i386 bootstrap is loaded via an ugly blockmap.

On the alpha, both net- and disk-booting (SRM console machines only) is
supported. No blockmaps are used by this code.

Obtained from: Parts from the NetBSD/i386 standalone bootstrap.