svn commit: r329140 - in stable/11: . share/mk sys/arm/include sys/arm64/include sys/boot sys/boot/arm/at91 sys/boot/arm/at91/boot0 sys/boot/arm/at91/boot0iic sys/boot/arm/at91/boot0spi sys/boot/ar...
Kyle Evans
kevans at FreeBSD.org
Sun Feb 11 20:58:03 UTC 2018
Author: kevans
Date: Sun Feb 11 20:58:00 2018
New Revision: 329140
URL: https://svnweb.freebsd.org/changeset/base/329140
Log:
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.
Added:
stable/11/sys/boot/arm/loader/
- copied from r325775, head/sys/boot/arm/loader/
stable/11/sys/boot/defs.mk
- copied, changed from r324654, head/sys/boot/defs.mk
stable/11/sys/boot/efi/boot1/boot_module.h
- copied unchanged from r324709, head/sys/boot/efi/boot1/boot_module.h
stable/11/sys/boot/efi/boot1/ufs_module.c
- copied unchanged from r324709, head/sys/boot/efi/boot1/ufs_module.c
stable/11/sys/boot/efi/boot1/zfs_module.c
- copied unchanged from r324709, head/sys/boot/efi/boot1/zfs_module.c
stable/11/sys/boot/efi/loader/efi_main.c
- copied unchanged from r324709, head/sys/boot/efi/loader/efi_main.c
stable/11/sys/boot/efi/loader/framebuffer.c
- copied unchanged from r324995, head/sys/boot/efi/loader/framebuffer.c
stable/11/sys/boot/efi/loader/framebuffer.h
- copied unchanged from r324995, head/sys/boot/efi/loader/framebuffer.h
stable/11/sys/boot/fdt.mk
- copied unchanged from r325689, head/sys/boot/fdt.mk
stable/11/sys/boot/loader.mk
- copied, changed from r329139, stable/11/sys/boot/common/Makefile.inc
stable/11/sys/boot/uboot.mk
- copied, changed from r324881, head/sys/boot/uboot.mk
stable/11/sys/boot/zfs32/
- copied from r325176, head/sys/boot/zfs32/
stable/11/tools/build/options/WITHOUT_LOADER_GEIL
- copied unchanged from r325693, head/tools/build/options/WITHOUT_LOADER_GEIL
stable/11/tools/build/options/WITH_LOADER_FIREWIRE
- copied unchanged from r325692, head/tools/build/options/WITH_LOADER_FIREWIRE
Replaced:
stable/11/sys/boot/arm/loader/loader.conf
- copied unchanged from r329139, stable/11/sys/boot/arm/uboot/loader.conf
Deleted:
stable/11/sys/boot/arm/at91/Makefile
stable/11/sys/boot/arm/at91/Makefile.inc
stable/11/sys/boot/arm/at91/boot0/Makefile
stable/11/sys/boot/arm/at91/boot0/README
stable/11/sys/boot/arm/at91/boot0/linker.cfg
stable/11/sys/boot/arm/at91/boot0/main.c
stable/11/sys/boot/arm/at91/boot0iic/Makefile
stable/11/sys/boot/arm/at91/boot0iic/main.c
stable/11/sys/boot/arm/at91/boot0spi/Makefile
stable/11/sys/boot/arm/at91/boot0spi/main.c
stable/11/sys/boot/arm/at91/boot2/Makefile
stable/11/sys/boot/arm/at91/boot2/board.h
stable/11/sys/boot/arm/at91/boot2/boot2.c
stable/11/sys/boot/arm/at91/boot2/bwct_board.c
stable/11/sys/boot/arm/at91/boot2/centipad_board.c
stable/11/sys/boot/arm/at91/boot2/kb920x_board.c
stable/11/sys/boot/arm/at91/bootiic/Makefile
stable/11/sys/boot/arm/at91/bootiic/README
stable/11/sys/boot/arm/at91/bootiic/env_vars.c
stable/11/sys/boot/arm/at91/bootiic/env_vars.h
stable/11/sys/boot/arm/at91/bootiic/loader_prompt.c
stable/11/sys/boot/arm/at91/bootiic/loader_prompt.h
stable/11/sys/boot/arm/at91/bootiic/main.c
stable/11/sys/boot/arm/at91/bootspi/Makefile
stable/11/sys/boot/arm/at91/bootspi/README
stable/11/sys/boot/arm/at91/bootspi/ee.c
stable/11/sys/boot/arm/at91/bootspi/ee.h
stable/11/sys/boot/arm/at91/bootspi/env_vars.c
stable/11/sys/boot/arm/at91/bootspi/env_vars.h
stable/11/sys/boot/arm/at91/bootspi/loader_prompt.c
stable/11/sys/boot/arm/at91/bootspi/loader_prompt.h
stable/11/sys/boot/arm/at91/bootspi/main.c
stable/11/sys/boot/arm/at91/libat91/Makefile
stable/11/sys/boot/arm/at91/libat91/arm_init.S
stable/11/sys/boot/arm/at91/libat91/at91rm9200.h
stable/11/sys/boot/arm/at91/libat91/at91rm9200_lowlevel.c
stable/11/sys/boot/arm/at91/libat91/at91rm9200_lowlevel.h
stable/11/sys/boot/arm/at91/libat91/delay.c
stable/11/sys/boot/arm/at91/libat91/eeprom.c
stable/11/sys/boot/arm/at91/libat91/emac.c
stable/11/sys/boot/arm/at91/libat91/emac.h
stable/11/sys/boot/arm/at91/libat91/emac_init.c
stable/11/sys/boot/arm/at91/libat91/getc.c
stable/11/sys/boot/arm/at91/libat91/lib.h
stable/11/sys/boot/arm/at91/libat91/lib_AT91RM9200.h
stable/11/sys/boot/arm/at91/libat91/mci_device.h
stable/11/sys/boot/arm/at91/libat91/memcmp.c
stable/11/sys/boot/arm/at91/libat91/memcpy.c
stable/11/sys/boot/arm/at91/libat91/memset.c
stable/11/sys/boot/arm/at91/libat91/p_string.c
stable/11/sys/boot/arm/at91/libat91/printf.c
stable/11/sys/boot/arm/at91/libat91/putchar.c
stable/11/sys/boot/arm/at91/libat91/reset.c
stable/11/sys/boot/arm/at91/libat91/sd-card.c
stable/11/sys/boot/arm/at91/libat91/sd-card.h
stable/11/sys/boot/arm/at91/libat91/spi_flash.c
stable/11/sys/boot/arm/at91/libat91/spi_flash.h
stable/11/sys/boot/arm/at91/libat91/strcmp.c
stable/11/sys/boot/arm/at91/libat91/strcpy.c
stable/11/sys/boot/arm/at91/libat91/strcvt.c
stable/11/sys/boot/arm/at91/libat91/strlen.c
stable/11/sys/boot/arm/at91/libat91/tag_list.c
stable/11/sys/boot/arm/at91/libat91/tag_list.h
stable/11/sys/boot/arm/at91/libat91/xmodem.c
stable/11/sys/boot/arm/at91/linker.cfg
stable/11/sys/boot/arm/ixp425/Makefile.inc
stable/11/sys/boot/arm/ixp425/boot2/Makefile
stable/11/sys/boot/arm/ixp425/boot2/arm_init.S
stable/11/sys/boot/arm/ixp425/boot2/boot2.c
stable/11/sys/boot/arm/ixp425/boot2/cf_ata.h
stable/11/sys/boot/arm/ixp425/boot2/ixp425_board.c
stable/11/sys/boot/arm/ixp425/boot2/lib.h
stable/11/sys/boot/arm/uboot/loader.conf
stable/11/sys/boot/common/Makefile.inc
stable/11/sys/boot/efi/libefi/efi_main.c
stable/11/sys/boot/efi/loader/arch/amd64/framebuffer.c
stable/11/sys/boot/efi/loader/arch/amd64/framebuffer.h
stable/11/sys/boot/forth/Makefile.inc
stable/11/sys/boot/powerpc/kboot/help.kboot
stable/11/sys/boot/powerpc/ofw/help.ofw
stable/11/sys/boot/powerpc/ps3/help.ps3
stable/11/sys/boot/powerpc/uboot/help.uboot
stable/11/sys/boot/uboot/common/Makefile.inc
stable/11/sys/boot/userboot/ficl/Makefile
stable/11/sys/boot/userboot/ficl/Makefile.depend
stable/11/sys/boot/userboot/zfs/Makefile
stable/11/sys/boot/userboot/zfs/Makefile.depend
Modified:
stable/11/UPDATING
stable/11/share/mk/src.opts.mk
stable/11/sys/arm/include/metadata.h
stable/11/sys/arm64/include/metadata.h
stable/11/sys/boot/Makefile
stable/11/sys/boot/Makefile.amd64
stable/11/sys/boot/Makefile.arm
stable/11/sys/boot/Makefile.arm64
stable/11/sys/boot/Makefile.i386
stable/11/sys/boot/Makefile.inc
stable/11/sys/boot/Makefile.powerpc
stable/11/sys/boot/Makefile.sparc64
stable/11/sys/boot/arm/uboot/Makefile
stable/11/sys/boot/common/disk.c
stable/11/sys/boot/common/md.c
stable/11/sys/boot/efi/Makefile
stable/11/sys/boot/efi/Makefile.inc
stable/11/sys/boot/efi/boot1/Makefile
stable/11/sys/boot/efi/boot1/boot1.c
stable/11/sys/boot/efi/fdt/Makefile
stable/11/sys/boot/efi/include/efilib.h
stable/11/sys/boot/efi/libefi/Makefile
stable/11/sys/boot/efi/libefi/devpath.c
stable/11/sys/boot/efi/libefi/efipart.c
stable/11/sys/boot/efi/loader/Makefile
stable/11/sys/boot/efi/loader/arch/amd64/Makefile.inc
stable/11/sys/boot/efi/loader/arch/arm/Makefile.inc
stable/11/sys/boot/efi/loader/arch/arm64/Makefile.inc
stable/11/sys/boot/efi/loader/arch/i386/Makefile.inc
stable/11/sys/boot/efi/loader/bootinfo.c
stable/11/sys/boot/fdt/Makefile
stable/11/sys/boot/ficl.mk
stable/11/sys/boot/ficl/Makefile
stable/11/sys/boot/ficl32/Makefile
stable/11/sys/boot/forth/Makefile
stable/11/sys/boot/forth/loader.conf
stable/11/sys/boot/geli/Makefile
stable/11/sys/boot/i386/Makefile
stable/11/sys/boot/i386/Makefile.inc
stable/11/sys/boot/i386/boot0/Makefile
stable/11/sys/boot/i386/boot2/Makefile
stable/11/sys/boot/i386/btx/btx/Makefile
stable/11/sys/boot/i386/btx/btxldr/Makefile
stable/11/sys/boot/i386/btx/lib/Makefile
stable/11/sys/boot/i386/cdboot/Makefile
stable/11/sys/boot/i386/gptboot/Makefile
stable/11/sys/boot/i386/gptzfsboot/Makefile
stable/11/sys/boot/i386/kgzldr/Makefile
stable/11/sys/boot/i386/libfirewire/Makefile
stable/11/sys/boot/i386/libi386/Makefile
stable/11/sys/boot/i386/loader/Makefile
stable/11/sys/boot/i386/mbr/Makefile
stable/11/sys/boot/i386/pmbr/Makefile
stable/11/sys/boot/i386/pxeldr/Makefile
stable/11/sys/boot/i386/zfsboot/Makefile
stable/11/sys/boot/i386/zfsloader/Makefile
stable/11/sys/boot/libsa/Makefile
stable/11/sys/boot/libsa/ip.c
stable/11/sys/boot/libsa32/Makefile
stable/11/sys/boot/man/Makefile
stable/11/sys/boot/mips/beri/Makefile.inc
stable/11/sys/boot/mips/beri/boot2/Makefile
stable/11/sys/boot/mips/beri/loader/Makefile
stable/11/sys/boot/mips/uboot/Makefile
stable/11/sys/boot/ofw/Makefile.inc
stable/11/sys/boot/ofw/libofw/Makefile
stable/11/sys/boot/powerpc/Makefile
stable/11/sys/boot/powerpc/Makefile.inc
stable/11/sys/boot/powerpc/boot1.chrp/Makefile
stable/11/sys/boot/powerpc/kboot/Makefile
stable/11/sys/boot/powerpc/ofw/Makefile
stable/11/sys/boot/powerpc/ps3/Makefile
stable/11/sys/boot/powerpc/uboot/Makefile
stable/11/sys/boot/sparc64/Makefile
stable/11/sys/boot/sparc64/Makefile.inc
stable/11/sys/boot/sparc64/boot1/Makefile
stable/11/sys/boot/sparc64/loader/Makefile
stable/11/sys/boot/sparc64/zfsloader/Makefile
stable/11/sys/boot/uboot/Makefile
stable/11/sys/boot/uboot/Makefile.inc
stable/11/sys/boot/uboot/fdt/Makefile
stable/11/sys/boot/uboot/lib/Makefile
stable/11/sys/boot/userboot/Makefile
stable/11/sys/boot/userboot/test/Makefile
stable/11/sys/boot/userboot/test/test.c
stable/11/sys/boot/userboot/userboot/Makefile
stable/11/sys/boot/zfs/Makefile
stable/11/sys/boot/zfs/zfs.c
stable/11/sys/boot/zfs32/Makefile
stable/11/tools/boot/universe.sh
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/UPDATING
==============================================================================
--- stable/11/UPDATING Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/UPDATING Sun Feb 11 20:58:00 2018 (r329140)
@@ -16,6 +16,11 @@ from older versions of FreeBSD, try WITHOUT_CLANG and
the tip of head, and then rebuild without this option. The bootstrap process
from older version of current across the gcc/clang cutover is a bit fragile.
+20180211:
+ The LOADER_FIREWIRE_SUPPORT build variable as been renamed to
+ WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed
+ to WITH/OUT_LOADER_GELI.
+
20180210:
The geli password typed at boot is now hidden. To restore the previous
behavior, see geli(8) for configuration options.
Modified: stable/11/share/mk/src.opts.mk
==============================================================================
--- stable/11/share/mk/src.opts.mk Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/share/mk/src.opts.mk Sun Feb 11 20:58:00 2018 (r329140)
@@ -123,6 +123,7 @@ __DEFAULT_YES_OPTIONS = \
LIB32 \
LIBPTHREAD \
LIBTHR \
+ LOADER_GELI \
LOCALES \
LOCATE \
LPR \
@@ -188,6 +189,7 @@ __DEFAULT_NO_OPTIONS = \
HESIOD \
LIBSOFT \
LINT \
+ LOADER_FIREWIRE \
LOADER_FORCE_LE \
NAND \
OFED \
Modified: stable/11/sys/arm/include/metadata.h
==============================================================================
--- stable/11/sys/arm/include/metadata.h Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/arm/include/metadata.h Sun Feb 11 20:58:00 2018 (r329140)
@@ -39,4 +39,19 @@ struct efi_map_header {
uint32_t descriptor_version;
};
+/*
+ * Placeholder for now
+ */
+struct efi_fb {
+ uint64_t fb_addr;
+ uint64_t fb_size;
+ uint32_t fb_height;
+ uint32_t fb_width;
+ uint32_t fb_stride;
+ uint32_t fb_mask_red;
+ uint32_t fb_mask_green;
+ uint32_t fb_mask_blue;
+ uint32_t fb_mask_reserved;
+};
+
#endif /* !_MACHINE_METADATA_H_ */
Modified: stable/11/sys/arm64/include/metadata.h
==============================================================================
--- stable/11/sys/arm64/include/metadata.h Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/arm64/include/metadata.h Sun Feb 11 20:58:00 2018 (r329140)
@@ -31,11 +31,24 @@
#define MODINFOMD_EFI_MAP 0x1001
#define MODINFOMD_DTBP 0x1002
+#define MODINFOMD_EFI_FB 0x1003
struct efi_map_header {
size_t memory_size;
size_t descriptor_size;
uint32_t descriptor_version;
+};
+
+struct efi_fb {
+ uint64_t fb_addr;
+ uint64_t fb_size;
+ uint32_t fb_height;
+ uint32_t fb_width;
+ uint32_t fb_stride;
+ uint32_t fb_mask_red;
+ uint32_t fb_mask_green;
+ uint32_t fb_mask_blue;
+ uint32_t fb_mask_reserved;
};
#endif /* !_MACHINE_METADATA_H_ */
Modified: stable/11/sys/boot/Makefile
==============================================================================
--- stable/11/sys/boot/Makefile Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile Sun Feb 11 20:58:00 2018 (r329140)
@@ -13,10 +13,8 @@ SUBDIR+= man
.include <bsd.arch.inc.mk>
-# Pick the machine-dependent subdir based on the target architecture.
-ADIR= ${MACHINE:S/powerpc64/powerpc/}
-.if exists(${.CURDIR}/${ADIR}/.)
-SUBDIR+= ${ADIR}
+.if exists(${.CURDIR}/${MACHINE}/.)
+SUBDIR+= ${MACHINE}
.endif
.include <bsd.subdir.mk>
Modified: stable/11/sys/boot/Makefile.amd64
==============================================================================
--- stable/11/sys/boot/Makefile.amd64 Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile.amd64 Sun Feb 11 20:58:00 2018 (r329140)
@@ -1,16 +1,18 @@
# $FreeBSD$
-SUBDIR+= efi
SUBDIR+= libsa32
-SUBDIR+= zfs
-SUBDIR+= userboot
-
-.if !defined(LOADER_NO_GELI_SUPPORT)
-SUBDIR+= geli
+.if ${MK_ZFS} != "no"
+SUBDIR+= zfs zfs32
.endif
-
.if ${MK_FORTH} != "no"
SUBDIR+= ficl32
+.endif
+
+SUBDIR+= efi
+SUBDIR+= userboot
+
+.if ${LOADER_GELI_SUPPORT:Uyes} == "yes"
+SUBDIR+= geli
.endif
SUBDIR+= i386
Modified: stable/11/sys/boot/Makefile.arm
==============================================================================
--- stable/11/sys/boot/Makefile.arm Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile.arm Sun Feb 11 20:58:00 2018 (r329140)
@@ -3,5 +3,8 @@
.if ${MK_FDT} != "no"
SUBDIR+= fdt
.endif
+.if ${MK_ZFS} != "no"
+SUBDIR+= zfs
+.endif
SUBDIR+= efi uboot
Modified: stable/11/sys/boot/Makefile.arm64
==============================================================================
--- stable/11/sys/boot/Makefile.arm64 Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile.arm64 Sun Feb 11 20:58:00 2018 (r329140)
@@ -3,5 +3,8 @@
.if ${MK_FDT} != "no"
SUBDIR+= fdt
.endif
+.if ${MK_ZFS} != "no"
+SUBDIR+= zfs
+.endif
SUBDIR+= efi
Modified: stable/11/sys/boot/Makefile.i386
==============================================================================
--- stable/11/sys/boot/Makefile.i386 Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile.i386 Sun Feb 11 20:58:00 2018 (r329140)
@@ -1,9 +1,10 @@
# $FreeBSD$
-SUBDIR+= efi
-SUBDIR+= libsa32
-SUBDIR+= zfs
-
-.if !defined(LOADER_NO_GELI_SUPPORT)
+.if ${LOADER_GELI_SUPPORT:Uyes} == "yes"
SUBDIR+= geli
.endif
+.if ${MK_ZFS} != "no"
+SUBDIR+= zfs
+.endif
+
+SUBDIR+= efi
Modified: stable/11/sys/boot/Makefile.inc
==============================================================================
--- stable/11/sys/boot/Makefile.inc Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile.inc Sun Feb 11 20:58:00 2018 (r329140)
@@ -1,15 +1,9 @@
# $FreeBSD$
-.include <src.opts.mk>
+.include "defs.mk"
.if !defined(__BOOT_MAKEFILE_INC__)
__BOOT_MAKEFILE_INC__=${MFILE}
-
-SASRC=${SRCTOP}/sys/boot/libsa
-# Normal Standalone library
-LIBSA=${OBJTOP}/sys/boot/libsa/libsa.a
-# Standalone library compiled for 32-bit version of the processor
-LIBSA32=${OBJTOP}/sys/boot/libsa32/libsa32.a
CFLAGS+=-I${SASRC}
Modified: stable/11/sys/boot/Makefile.powerpc
==============================================================================
--- stable/11/sys/boot/Makefile.powerpc Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile.powerpc Sun Feb 11 20:58:00 2018 (r329140)
@@ -4,6 +4,5 @@
SUBDIR+= fdt
.endif
-SUBDIR+= libsa32
SUBDIR+= ofw
SUBDIR+= uboot
Modified: stable/11/sys/boot/Makefile.sparc64
==============================================================================
--- stable/11/sys/boot/Makefile.sparc64 Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/Makefile.sparc64 Sun Feb 11 20:58:00 2018 (r329140)
@@ -1,4 +1,6 @@
# $FreeBSD$
SUBDIR+= ofw
+.if ${MK_ZFS} != "no"
SUBDIR+= zfs
+.endif
Copied: stable/11/sys/boot/arm/loader/loader.conf (from r329139, stable/11/sys/boot/arm/uboot/loader.conf)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/11/sys/boot/arm/loader/loader.conf Sun Feb 11 20:58:00 2018 (r329140, copy of r329139, stable/11/sys/boot/arm/uboot/loader.conf)
@@ -0,0 +1,13 @@
+# This is defaults/loader.conf for ARM, containing defaults for loader(8).
+# Do not modify the contents of this file, instead put your customizations
+# into /boot/loader.conf or /boot/loader.conf.local
+# $FreeBSD$
+
+autoboot_delay=10
+bootfile="kernel" # Kernel name (possibly absolute path)
+kernel="kernel" # /boot sub-directory containing kernel and modules
+loader_conf_files="/boot/loader.conf /boot/loader.conf.local"
+module_path="/boot/kernel;/boot/modules;/boot/dtb;/boot/overlays"
+nextboot_conf="/boot/nextboot.conf"
+nextboot_enable="NO"
+verbose_loading="NO"
Modified: stable/11/sys/boot/arm/uboot/Makefile
==============================================================================
--- stable/11/sys/boot/arm/uboot/Makefile Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/arm/uboot/Makefile Sun Feb 11 20:58:00 2018 (r329140)
@@ -1,11 +1,20 @@
# $FreeBSD$
-.include <src.opts.mk>
+LOADER_UFS_SUPPORT?= yes
+LOADER_CD9660_SUPPORT?= no
+LOADER_MSDOS_SUPPORT?= no
+LOADER_EXT2FS_SUPPORT?= no
+LOADER_NET_SUPPORT?= yes
+LOADER_NFS_SUPPORT?= yes
+LOADER_TFTP_SUPPORT?= no
+LOADER_GZIP_SUPPORT?= no
+LOADER_BZIP2_SUPPORT?= no
-FILES= ubldr ubldr.bin
+.include <bsd.init.mk>
+FILES+= ubldr ubldr.bin
+
NEWVERSWHAT= "U-Boot loader" ${MACHINE_ARCH}
-BINDIR?= /boot
INSTALLFLAGS= -b
WARNS?= 1
# Address at which ubldr will be loaded.
@@ -19,113 +28,26 @@ SRCS= start.S conf.c self_reloc.c vers.c
CWARNFLAGS.self_reloc.c+= -Wno-error=maybe-uninitialized
.endif
-.if !defined(LOADER_NO_DISK_SUPPORT)
-LOADER_DISK_SUPPORT?= yes
-.else
-LOADER_DISK_SUPPORT= no
-.endif
-LOADER_UFS_SUPPORT?= yes
-LOADER_CD9660_SUPPORT?= no
-LOADER_EXT2FS_SUPPORT?= no
-.if ${MK_NAND} != "no"
-LOADER_NANDFS_SUPPORT?= yes
-.else
-LOADER_NANDFS_SUPPORT?= no
-.endif
-LOADER_NET_SUPPORT?= yes
-LOADER_NFS_SUPPORT?= yes
-LOADER_TFTP_SUPPORT?= no
-LOADER_GZIP_SUPPORT?= no
-LOADER_BZIP2_SUPPORT?= no
-.if ${MK_FDT} != "no"
-LOADER_FDT_SUPPORT= yes
-.else
-LOADER_FDT_SUPPORT= no
-.endif
+HELP_FILES+= help.uboot ${BOOTSRC}/fdt/help.fdt
-.if ${LOADER_DISK_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_DISK_SUPPORT
-.endif
-.if ${LOADER_UFS_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_UFS_SUPPORT
-.endif
-.if ${LOADER_CD9660_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_CD9660_SUPPORT
-.endif
-.if ${LOADER_EXT2FS_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_EXT2FS_SUPPORT
-.endif
-.if ${LOADER_NANDFS_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_NANDFS_SUPPORT
-.endif
-.if ${LOADER_GZIP_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_GZIP_SUPPORT
-.endif
-.if ${LOADER_BZIP2_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_BZIP2_SUPPORT
-.endif
-.if ${LOADER_NET_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_NET_SUPPORT
-.endif
-.if ${LOADER_NFS_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_NFS_SUPPORT
-.endif
-.if ${LOADER_TFTP_SUPPORT} == "yes"
-CFLAGS+= -DLOADER_TFTP_SUPPORT
-.endif
-.if ${LOADER_FDT_SUPPORT} == "yes"
-CFLAGS+= -I${.CURDIR}/../../fdt
-CFLAGS+= -I${.OBJDIR}/../../fdt
-CFLAGS+= -DLOADER_FDT_SUPPORT
-LIBUBOOT_FDT= ${.OBJDIR}/../../uboot/fdt/libuboot_fdt.a
-LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a
-.endif
-
-.if ${MK_FORTH} != "no"
-# Enable BootForth
-BOOT_FORTH= yes
-CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl
-CFLAGS+= -I${.CURDIR}/../../ficl/arm
-LIBFICL= ${.OBJDIR}/../../ficl/libficl.a
-.endif
-
# Always add MI sources
-.PATH: ${.CURDIR}/../../common
-.include "${.CURDIR}/../../common/Makefile.inc"
-CFLAGS+= -I${.CURDIR}/../../common
-CFLAGS+= -I.
+.include "${BOOTSRC}/loader.mk"
-CLEANFILES+= loader.help
-
CFLAGS+= -ffreestanding -msoft-float
LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH}
LDFLAGS+= -Wl,-znotext
# Pull in common loader code
-.PATH: ${.CURDIR}/../../uboot/common
-.include "${.CURDIR}/../../uboot/common/Makefile.inc"
-CFLAGS+= -I${.CURDIR}/../../uboot/common
+.include "${BOOTSRC}/uboot.mk"
-# U-Boot standalone support library
-LIBUBOOT= ${.OBJDIR}/../../uboot/lib/libuboot.a
-CFLAGS+= -I${.CURDIR}/../../uboot/lib
-CFLAGS+= -I${.OBJDIR}/../../uboot/lib
-
CFLAGS+= -fPIC
-# clang doesn't understand %D as a specifier to printf
-NO_WERROR.clang=
-
DPADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
LDADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
-loader.help: help.common help.uboot ${.CURDIR}/../../fdt/help.fdt
- cat ${.ALLSRC} | \
- awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
-
ldscript.abs:
echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >${.TARGET}
@@ -144,16 +66,5 @@ ubldr.bin: ubldr.pie
${OBJCOPY} -S -O binary ubldr.pie ${.TARGET}
CLEANFILES+= ldscript.abs ldscript.pie ubldr ubldr.pie ubldr.bin
-
-.if !defined(LOADER_ONLY)
-.PATH: ${.CURDIR}/../../forth
-.include "${.CURDIR}/../../forth/Makefile.inc"
-
-# Install loader.rc.
-FILES+= loader.rc
-# Put sample menu.rc on disk but don't enable it by default.
-FILES+= menu.rc
-FILESNAME_menu.rc= menu.rc.sample
-.endif
.include <bsd.prog.mk>
Modified: stable/11/sys/boot/common/disk.c
==============================================================================
--- stable/11/sys/boot/common/disk.c Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/common/disk.c Sun Feb 11 20:58:00 2018 (r329140)
@@ -89,6 +89,12 @@ ptblread(void *d, void *buf, size_t blocks, uint64_t o
od = (struct open_disk *)dev->d_opendata;
/*
+ * The strategy function assumes the offset is in units of 512 byte
+ * sectors. For larger sector sizes, we need to adjust the offset to
+ * match the actual sector size.
+ */
+ offset *= (od->sectorsize / 512);
+ /*
* As the GPT backup partition is located at the end of the disk,
* to avoid reading past disk end, flag bcache not to use RA.
*/
Modified: stable/11/sys/boot/common/md.c
==============================================================================
--- stable/11/sys/boot/common/md.c Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/common/md.c Sun Feb 11 20:58:00 2018 (r329140)
@@ -73,7 +73,8 @@ struct devsw md_dev = {
md_open,
md_close,
noioctl,
- md_print
+ md_print,
+ NULL
};
static int
Copied and modified: stable/11/sys/boot/defs.mk (from r324654, head/sys/boot/defs.mk)
==============================================================================
--- head/sys/boot/defs.mk Mon Oct 16 03:59:58 2017 (r324654, copy source)
+++ stable/11/sys/boot/defs.mk Sun Feb 11 20:58:00 2018 (r329140)
@@ -5,19 +5,38 @@
.if !defined(__BOOT_DEFS_MK__)
__BOOT_DEFS_MK__=${MFILE}
-BOOTDIR= ${SRCTOP}/sys/boot
-FICLDIR= ${SRCTOP}/sys/boot/ficl
-LDR_MI= ${BOOTDIR}/common
-SASRC= ${SRCTOP}/sys/boot/libsa
+BOOTSRC= ${SRCTOP}/sys/boot
+EFISRC= ${BOOTSRC}/efi
+EFIINC= ${EFISRC}/include
+EFIINCMD= ${EFIINC}/${MACHINE}
+FDTSRC= ${BOOTSRC}/fdt
+FICLSRC= ${BOOTSRC}/ficl
+LDRSRC= ${BOOTSRC}/common
+SASRC= ${BOOTSRC}/libsa
SYSDIR= ${SRCTOP}/sys
+UBOOTSRC= ${BOOTSRC}/uboot
+ZFSSRC= ${BOOTSRC}/zfs
+BOOTOBJ= ${OBJTOP}/sys/boot
+
+# BINDIR is where we install
+BINDIR?= /boot
+
# NB: The makefiles depend on these being empty when we don't build forth.
.if ${MK_FORTH} != "no"
-LIBFICL= ${OBJTOP}/sys/boot/ficl/libficl.a
-LIBFICL32= ${OBJTOP}/sys/boot/ficl32/libficl.a
+LIBFICL= ${BOOTOBJ}/ficl/libficl.a
+.if ${MACHINE} == "i386"
+LIBFICL32= ${LIBFICL}
+.else
+LIBFICL32= ${BOOTOBJ}/ficl32/libficl.a
.endif
-LIBSA= ${OBJTOP}/sys/boot/libsa/libsa.a
-LIBSA32= ${OBJTOP}/sys/boot/libsa32/libsa32.a
+.endif
+LIBSA= ${BOOTOBJ}/libsa/libsa.a
+.if ${MACHINE} == "i386"
+LIBSA32= ${LIBSA}
+.else
+LIBSA32= ${BOOTOBJ}/libsa32/libsa32.a
+.endif
# Standard options:
@@ -66,9 +85,87 @@ CFLAGS+= -DLOADER_GPT_SUPPORT
.if ${LOADER_MBR_SUPPORT:Uyes} == "yes"
CFLAGS+= -DLOADER_MBR_SUPPORT
.endif
-.if ${LOADER_GELI_SUPPORT:Uyes} == "yes"
-CFLAGS+= -DLOADER_GELI_SUPPORT
+
+# GELI Support, with backward compat hooks
+.if defined(HAVE_GELI)
+.if defined(LOADER_NO_GELI_SUPPORT)
+MK_LOADER_GELI=no
+.warning "Please move from LOADER_NO_GELI_SUPPORT to WITHOUT_LOADER_GELI"
.endif
+.if defined(LOADER_GELI_SUPPORT)
+MK_LOADER_GELI=yes
+.warning "Please move from LOADER_GELI_SUPPORT to WITH_LOADER_GELI"
.endif
+.if ${MK_LOADER_GELI} == "yes"
+CFLAGS+= -DLOADER_GELI_SUPPORT
+CFLAGS+= -I${BOOTSRC}/geli
+LIBGELIBOOT= ${BOOTOBJ}/geli/libgeliboot.a
+.endif
+.endif
+.endif
+
+CFLAGS+= -I${SYSDIR}
+
+# All PowerPC builds are 32 bit. We have no 64-bit loaders on powerpc
+# or powerpc64.
+.if ${MACHINE_ARCH} == "powerpc64"
+CFLAGS+= -m32 -mcpu=powerpc
+.endif
+
+# For amd64, there's a bit of mixed bag. Some of the tree (i386, lib*32) is
+# build 32-bit and some 64-bit (lib*, efi). Centralize all the 32-bit magic here
+# and activate it when DO32 is explicitly defined to be 1.
+.if ${MACHINE_ARCH} == "amd64" && ${DO32:U0} == 1
+CFLAGS+= -m32 -mcpu=i386
+# LD_FLAGS is passed directly to ${LD}, not via ${CC}:
+LD_FLAGS+= -m elf_i386_fbsd
+AFLAGS+= --32
+.endif
+
+# Make sure we use the machine link we're about to create
+CFLAGS+=-I.
+
+_ILINKS=machine
+.if ${MACHINE} != ${MACHINE_CPUARCH} && ${MACHINE} != "arm64"
+_ILINKS+=${MACHINE_CPUARCH}
+.endif
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+_ILINKS+=x86
+.endif
+CLEANFILES+=${_ILINKS}
+
+all: ${PROG}
+
+beforedepend: ${_ILINKS}
+beforebuild: ${_ILINKS}
+
+# Ensure that the links exist without depending on it when it exists which
+# causes all the modules to be rebuilt when the directory pointed to changes.
+.for _link in ${_ILINKS}
+.if !exists(${.OBJDIR}/${_link})
+${OBJS}: ${_link}
+.endif
+.endfor
+
+.NOPATH: ${_ILINKS}
+
+${_ILINKS}:
+ @case ${.TARGET} in \
+ machine) \
+ if [ ${DO32:U0} -eq 0 ]; then \
+ path=${SYSDIR}/${MACHINE}/include ; \
+ else \
+ path=${SYSDIR}/${MACHINE:C/amd64/i386/}/include ; \
+ fi ;; \
+ *) \
+ path=${SYSDIR}/${.TARGET:T}/include ;; \
+ esac ; \
+ path=`(cd $$path && /bin/pwd)` ; \
+ ${ECHO} ${.TARGET:T} "->" $$path ; \
+ ln -fhs $$path ${.TARGET:T}
+
+# For loader implementations, we generate a loader.help file. This can be suppressed by
+# setting HELP_FILES to nothing.
+HELP_FILES= ${LDRSRC}/help.common
.endif # __BOOT_DEFS_MK__
Modified: stable/11/sys/boot/efi/Makefile
==============================================================================
--- stable/11/sys/boot/efi/Makefile Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/efi/Makefile Sun Feb 11 20:58:00 2018 (r329140)
@@ -1,6 +1,6 @@
# $FreeBSD$
-.include <src.opts.mk>
+.include <bsd.init.mk>
# In-tree GCC does not support __attribute__((ms_abi)), but gcc newer
# than 4.5 supports it.
Modified: stable/11/sys/boot/efi/Makefile.inc
==============================================================================
--- stable/11/sys/boot/efi/Makefile.inc Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/efi/Makefile.inc Sun Feb 11 20:58:00 2018 (r329140)
@@ -1,7 +1,5 @@
# $FreeBSD$
-BINDIR?= /boot
-
.if ${MACHINE_CPUARCH} == "i386"
CFLAGS+= -march=i386
CFLAGS+= -mno-aes
Modified: stable/11/sys/boot/efi/boot1/Makefile
==============================================================================
--- stable/11/sys/boot/efi/boot1/Makefile Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/efi/boot1/Makefile Sun Feb 11 20:58:00 2018 (r329140)
@@ -2,17 +2,15 @@
MAN=
-.include "../Makefile.inc"
+.include <bsd.init.mk>
MK_SSP= no
+MK_FORTH= no
PROG= boot1.sym
INTERNALPROG=
-WARNS?= 3
+WARNS?= 6
-# Include bcache code.
-HAVE_BCACHE= yes
-
# We implement a slightly non-standard %S in that it always takes a
# CHAR16 that's common in UEFI-land instead of a wchar_t. This only
# seems to matter on arm64 where wchar_t defaults to an int instead
@@ -21,71 +19,46 @@ HAVE_BCACHE= yes
CWARNFLAGS.boot1.c+= -Wno-format
# Disable warnings that are currently incompatible with the zfs boot code
-CWARNFLAGS.zfs.c += -Wno-incompatible-pointer-types-discards-qualifiers
-CWARNFLAGS.zfs.c += -Wno-missing-variable-declarations
-CWARNFLAGS.zfs.c += -Wno-array-bounds
-CWARNFLAGS.zfs.c += -Wno-cast-align
-CWARNFLAGS.zfs.c += -Wno-cast-qual
-CWARNFLAGS.zfs.c += -Wno-missing-prototypes
-CWARNFLAGS.zfs.c += -Wno-sign-compare
-CWARNFLAGS.zfs.c += -Wno-unused-parameter
-CWARNFLAGS.zfs.c += -Wno-unused-function
-CWARNFLAGS.skein.c += -Wno-cast-align
-.if ${COMPILER_TYPE} == "clang"
-CWARNFLAGS.skein.c += -Wno-missing-variable-declarations
-.else if ${COMPILER_TYPE} == "gcc"
-CWARNFLAGS.skein.c += -Wno-missing-declarations
-.endif
+CWARNFLAGS.zfs_module.c += -Wno-array-bounds
+CWARNFLAGS.zfs_module.c += -Wno-cast-align
+CWARNFLAGS.zfs_module.c += -Wno-cast-qual
+CWARNFLAGS.zfs_module.c += -Wno-missing-prototypes
+CWARNFLAGS.zfs_module.c += -Wno-sign-compare
+CWARNFLAGS.zfs_module.c += -Wno-unused-parameter
+CWARNFLAGS.zfs_module.c += -Wno-unused-function
# architecture-specific loader code
-SRCS= boot1.c self_reloc.c start.S
+SRCS= boot1.c self_reloc.c start.S ufs_module.c
.if ${MK_ZFS} != "no"
-.PATH: ${.CURDIR}/../../../crypto/skein
-SRCS+= skein.c skein_block.c
-# Do not unroll skein loops, reduce code size
-CFLAGS+= -DSKEIN_LOOP=111
-.PATH: ${.CURDIR}/../../zfs
-SRCS+= zfs.c
+SRCS+= zfs_module.c
+CFLAGS+= -I${ZFSSRC}
+CFLAGS+= -I${SYSDIR}/cddl/boot/zfs
+CFLAGS+= -DEFI_ZFS_BOOT
+LIBZFSBOOT= ${BOOTOBJ}/zfs/libzfsboot.a
.endif
.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} > 40201
CWARNFLAGS.self_reloc.c+= -Wno-error=maybe-uninitialized
.endif
-# Always add MI sources
-.PATH: ${.CURDIR}/../../common
-.include "${.CURDIR}/../../common/Makefile.inc"
-CFLAGS+= -I${.CURDIR}/../../common
-
-.PATH: ${.CURDIR}/arch/${MACHINE}
-
-CFLAGS+= -I.
-CFLAGS+= -I${.CURDIR}/../include
-CFLAGS+= -I${.CURDIR}/../include/${MACHINE}
-CFLAGS+= -I${.CURDIR}/../../../contrib/dev/acpica/include
-CFLAGS+= -I${.CURDIR}/../../..
+CFLAGS+= -I${EFIINC}
+CFLAGS+= -I${EFIINCMD}
+CFLAGS+= -I${SYSDIR}/contrib/dev/acpica/include
CFLAGS+= -DEFI_UFS_BOOT
.ifdef(EFI_DEBUG)
CFLAGS+= -DEFI_DEBUG
.endif
-.if ${MK_ZFS} != "no"
-CFLAGS+= -I${.CURDIR}/../../zfs/
-CFLAGS+= -I${.CURDIR}/../../../cddl/boot/zfs/
-CFLAGS+= -I${.CURDIR}/../../../crypto/skein
-CFLAGS+= -DEFI_ZFS_BOOT
-.endif
-
# Always add MI sources and REGULAR efi loader bits
-.PATH: ${.CURDIR}/../loader/arch/${MACHINE}
-.PATH: ${.CURDIR}/../loader
-.PATH: ${.CURDIR}/../../common
-CFLAGS+= -I${.CURDIR}/../../common
+.PATH: ${EFISRC}/loader/arch/${MACHINE}
+.PATH: ${EFISRC}/loader
+.PATH: ${LDRSRC}
+CFLAGS+= -I${LDRSRC}
FILES= boot1.efi boot1.efifat
FILESMODE_boot1.efi= ${BINMODE}
-LDSCRIPT= ${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE}
+LDSCRIPT= ${EFISRC}/loader/arch/${MACHINE}/ldscript.${MACHINE}
LDFLAGS+= -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -shared
.if ${MACHINE_CPUARCH} == "aarch64"
@@ -96,15 +69,15 @@ CFLAGS+= -fPIC
LDFLAGS+= -Wl,-znocombreloc
.endif
-LIBEFI= ${.OBJDIR}/../libefi/libefi.a
+LIBEFI= ${BOOTOBJ}/efi/libefi/libefi.a
#
# Add libstand for the runtime functions used by the compiler - for example
# __aeabi_* (arm) or __divdi3 (i386).
# as well as required string and memory functions for all platforms.
#
-DPADD+= ${LIBEFI} ${LIBSA}
-LDADD+= ${LIBEFI} ${LIBSA}
+DPADD+= ${LIBEFI} ${LIBZFSBOOT} ${LIBSA}
+LDADD+= ${LIBEFI} ${LIBZFSBOOT} ${LIBSA}
DPADD+= ${LDSCRIPT}
@@ -130,7 +103,7 @@ boot1.efi: ${PROG}
SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \
${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \
-j .dynamic -j .dynsym -j .rel.dyn \
- -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \
+ -j .rela.dyn -j .reloc -j .eh_frame \
--output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
boot1.o: ${SASRC}/ufsread.c
@@ -151,21 +124,6 @@ boot1.efifat: boot1.efi
xz -d -c ${.CURDIR}/fat-${MACHINE}.tmpl.xz > ${.TARGET}
${DD} if=${.ALLSRC} of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc
-CLEANFILES= boot1.efi boot1.efifat
+CLEANFILES+= boot1.efi boot1.efifat
.include <bsd.prog.mk>
-
-beforedepend ${OBJS}: machine
-
-CLEANFILES+= machine
-
-machine: .NOMETA
- ln -sf ${.CURDIR}/../../../${MACHINE}/include machine
-
-.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
-beforedepend ${OBJS}: x86
-CLEANFILES+= x86
-
-x86: .NOMETA
- ln -sf ${.CURDIR}/../../../x86/include x86
-.endif
Modified: stable/11/sys/boot/efi/boot1/boot1.c
==============================================================================
--- stable/11/sys/boot/efi/boot1/boot1.c Sun Feb 11 20:47:38 2018 (r329139)
+++ stable/11/sys/boot/efi/boot1/boot1.c Sun Feb 11 20:58:00 2018 (r329140)
@@ -23,179 +23,61 @@
__FBSDID("$FreeBSD$");
#include <sys/param.h>
-#include <sys/disk.h>
#include <machine/elf.h>
#include <machine/stdarg.h>
#include <stand.h>
-#include <disk.h>
#include <efi.h>
-#include <efilib.h>
-#include <efiprot.h>
#include <eficonsctl.h>
-#ifdef EFI_ZFS_BOOT
-#include <libzfs.h>
-#endif
typedef CHAR16 efi_char;
#include <efichar.h>
-#include <bootstrap.h>
-
-#include "efi_drivers.h"
-#include "efizfs.h"
+#include "boot_module.h"
#include "paths.h"
static void efi_panic(EFI_STATUS s, const char *fmt, ...) __dead2 __printflike(2, 3);
-#ifdef EFI_DEBUG
-#define DPRINTF(fmt, args...) printf(fmt, ##args)
-#define DSTALL(d) BS->Stall(d)
-#else
-#define DPRINTF(fmt, ...) {}
-#define DSTALL(d) {}
-#endif
-struct arch_switch archsw; /* MI/MD interface boundary */
-
-static const efi_driver_t *efi_drivers[] = {
- NULL
-};
-
-extern struct console efi_console;
-#if defined(__amd64__) || defined(__i386__)
-extern struct console comconsole;
-extern struct console nullconsole;
-#endif
-
+static const boot_module_t *boot_modules[] =
+{
#ifdef EFI_ZFS_BOOT
-uint64_t pool_guid;
+ &zfs_module,
#endif
-
-struct fs_ops *file_system[] = {
-#ifdef EFI_ZFS_BOOT
- &zfs_fsops,
-#endif
- &dosfs_fsops,
#ifdef EFI_UFS_BOOT
- &ufs_fsops,
+ &ufs_module
#endif
- &cd9660_fsops,
- &nfs_fsops,
- &gzipfs_fsops,
- &bzipfs_fsops,
- NULL
};
-struct devsw *devsw[] = {
- &efipart_hddev,
- &efipart_fddev,
- &efipart_cddev,
-#ifdef EFI_ZFS_BOOT
- &zfs_dev,
-#endif
- NULL
-};
-
-struct console *consoles[] = {
- &efi_console,
- NULL
-};
-
-static EFI_LOADED_IMAGE *boot_image;
-static EFI_DEVICE_PATH *imgpath;
-static EFI_DEVICE_PATH *imgprefix;
-
-/* Definitions we don't actually need for boot, but we need to define
- * to make the linker happy.
- */
-struct file_format *file_formats[] = { NULL };
-
-struct netif_driver *netif_drivers[] = { NULL };
-
-static int
-efi_autoload(void)
-{
- printf("******** Boot block should not call autoload\n");
- return (-1);
-}
-
-static ssize_t
-efi_copyin(const void *src __unused, vm_offset_t dest __unused,
- const size_t len __unused)
-{
- printf("******** Boot block should not call copyin\n");
- return (-1);
-}
-
-static ssize_t
-efi_copyout(vm_offset_t src __unused, void *dest __unused,
- const size_t len __unused)
-{
- printf("******** Boot block should not call copyout\n");
- return (-1);
-}
-
-static ssize_t
-efi_readin(int fd __unused, vm_offset_t dest __unused,
- const size_t len __unused)
-{
- printf("******** Boot block should not call readin\n");
- return (-1);
-}
-
+#define NUM_BOOT_MODULES nitems(boot_modules)
/* The initial number of handles used to query EFI for partitions. */
#define NUM_HANDLES_INIT 24
+static EFI_GUID BlockIoProtocolGUID = BLOCK_IO_PROTOCOL;
static EFI_GUID DevicePathGUID = DEVICE_PATH_PROTOCOL;
static EFI_GUID LoadedImageGUID = LOADED_IMAGE_PROTOCOL;
+static EFI_GUID ConsoleControlGUID = EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
static EFI_GUID FreeBSDBootVarGUID = FREEBSD_BOOT_VAR_GUID;
-static EFI_STATUS
-do_load(const char *filepath, void **bufp, size_t *bufsize)
+/*
+ * Provide Malloc / Free backed by EFIs AllocatePool / FreePool which ensures
+ * memory is correctly aligned avoiding EFI_INVALID_PARAMETER returns from
+ * EFI methods.
+ */
+void *
+Malloc(size_t len, const char *file __unused, int line __unused)
{
- struct stat st;
- void *buf = NULL;
- int fd, err;
- size_t fsize, remaining;
- ssize_t readsize;
+ void *out;
- if ((fd = open(filepath, O_RDONLY)) < 0) {
- return (ENOTSUP);
- }
+ if (BS->AllocatePool(EfiLoaderData, len, &out) == EFI_SUCCESS)
+ return (out);
- if ((err = fstat(fd, &st)) != 0) {
- goto close_file;
- }
+ return (NULL);
+}
- fsize = st.st_size;
-
- if ((buf = malloc(fsize)) == NULL) {
- err = ENOMEM;
- goto close_file;
- }
-
- remaining = fsize;
-
- do {
- if ((readsize = read(fd, buf, fsize)) < 0) {
- err = (-readsize);
- goto free_buf;
- }
-
- remaining -= readsize;
- } while(remaining != 0);
-
- close(fd);
- *bufsize = st.st_size;
- *bufp = buf;
-
- close_file:
- close(fd);
-
- return errno_to_efi_status(err);
-
- free_buf:
- free(buf);
- goto close_file;
+void
+Free(void *buf, const char *file __unused, int line __unused)
+{
+ if (buf != NULL)
+ (void)BS->FreePool(buf);
}
static EFI_STATUS
@@ -215,275 +97,98 @@ efi_setenv_freebsd_wcs(const char *varname, CHAR16 *va
return (rv);
}
-static int
-probe_fs(const char *filepath)
+/*
+ * nodes_match returns TRUE if the imgpath isn't NULL and the nodes match,
+ * FALSE otherwise.
+ */
+static BOOLEAN
+nodes_match(EFI_DEVICE_PATH *imgpath, EFI_DEVICE_PATH *devpath)
{
- int fd;
+ size_t len;
- if ((fd = open(filepath, O_RDONLY)) < 0) {
- return (ENOTSUP);
- }
+ if (imgpath == NULL || imgpath->Type != devpath->Type ||
+ imgpath->SubType != devpath->SubType)
+ return (FALSE);
- close(fd);
+ len = DevicePathNodeLength(imgpath);
+ if (len != DevicePathNodeLength(devpath))
+ return (FALSE);
- return (0);
+ return (memcmp(imgpath, devpath, (size_t)len) == 0);
}
-static int
-probe_dev(struct devsw *dev, int unit, const char *filepath)
+/*
+ * device_paths_match returns TRUE if the imgpath isn't NULL and all nodes
+ * in imgpath and devpath match up to their respective occurrences of a
+ * media node, FALSE otherwise.
+ */
+static BOOLEAN
+device_paths_match(EFI_DEVICE_PATH *imgpath, EFI_DEVICE_PATH *devpath)
{
- struct devdesc currdev;
- char *devname;
- int err;
- currdev.d_dev = dev;
- currdev.d_type = currdev.d_dev->dv_type;
- currdev.d_unit = unit;
- currdev.d_opendata = NULL;
- devname = efi_fmtdev(&currdev);
+ if (imgpath == NULL)
+ return (FALSE);
- env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev,
- env_nounset);
+ while (!IsDevicePathEnd(imgpath) && !IsDevicePathEnd(devpath)) {
+ if (IsDevicePathType(imgpath, MEDIA_DEVICE_PATH) &&
+ IsDevicePathType(devpath, MEDIA_DEVICE_PATH))
+ return (TRUE);
- err = probe_fs(filepath);
+ if (!nodes_match(imgpath, devpath))
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-stable
mailing list