freebsd-dev/stand
Toomas Soome 523a713ffb loader.efi: efipart needs better support detecting nested partitions
Just as disks can have nested partitions, the same happens with cd devices,
so we need to detect device paths and make sure we will not mix the handles.

To address this:

we fetch handle array and create linked list of block devices.
we walk the list and detect parent devices and set children pd_parent.
for {fd, cd, hd}, we walk device list and pick up our devices and store to
corresponding list. We make sure we store parent device first.

For sorting we use 3 steps: We check for floppy, we check for cd and then
everything else must be hd.

In general, it seems the floppy devices have no parent.
CD can have both parents and children (multiple boot entries, partitions
from the hybrid disk image).

Tested by: cross+freebsd@distal.com on Cisco UCS systems, C200 series (C220M5, C240M4).
Also on MBP with UEFI 1.10

Reported by:	Chriss Ross
MFC after:	1w
Differential Revision:	https://reviews.freebsd.org/D22553
2019-11-30 09:11:28 +00:00
..
arm Remove NAND and NANDFS support 2019-06-25 04:50:09 +00:00
arm64 No need to make objects here. 2018-04-27 22:15:18 +00:00
common loader: add support for hybrid PMBR for GPT partition table 2019-11-15 20:43:39 +00:00
defaults Enable lualoader's kernel autodetection, disabled on install media 2018-10-11 17:17:54 +00:00
efi loader.efi: efipart needs better support detecting nested partitions 2019-11-30 09:11:28 +00:00
fdt loader: Add pnp functions for autoloading modules based on linker.hints 2019-05-23 19:26:50 +00:00
ficl Add support for hypervisor check on x86 2019-10-24 20:02:48 +00:00
ficl32 Enable veriexec for loader 2019-02-26 06:22:10 +00:00
forth loader_4th: menu items need to reset color attribute, not switch to white 2019-09-22 16:10:25 +00:00
i386 cstyle cleanup for i386_copy.c 2019-11-08 12:19:03 +00:00
kshim A more definitions to kernel emulation shim in order to build stand/usb. 2018-02-07 18:50:36 +00:00
liblua Add flua to the base system, install to /usr/libexec 2019-11-18 23:21:13 +00:00
liblua32 Add Lua as a scripting langauge to /boot/loader 2018-02-12 15:31:53 +00:00
libsa MFV r354382,r354385: 10601 10757 Pool allocation classes 2019-11-21 08:20:05 +00:00
libsa32 Enable veriexec for loader 2019-02-26 06:22:10 +00:00
lua lualoader: rewrite try_include using lfs + dofile 2019-11-02 04:01:39 +00:00
man Improve formatting. 2018-08-15 11:39:13 +00:00
mips mips: ubldr: use truncated load address for mips32 2019-09-18 01:33:17 +00:00
ofw [PPC] Fix loader input with newer QEMU versions 2019-06-19 11:37:43 +00:00
powerpc loader/powerpc64: Include generic PVR values in CAS architecture list 2019-10-08 02:36:53 +00:00
sparc64 MK_ZFS -> {MK_ZFS|MK_LOADER_ZFS}, this is so we can diable userland / kernel 2019-01-05 22:45:20 +00:00
uboot stand: refactor overlay loading a little bit 2019-04-11 13:26:28 +00:00
usb Distinguish between "no partition" and "choose best partition" with a constant. 2019-03-24 18:51:52 +00:00
userboot loader: userboot/test should accept more than one disk 2019-11-03 09:14:29 +00:00
defs.mk Add flua to the base system, install to /usr/libexec 2019-11-18 23:21:13 +00:00
fdt.mk
ficl.mk ficl pfopen: verify file 2019-05-24 19:43:38 +00:00
loader.mk Add flua to the base system, install to /usr/libexec 2019-11-18 23:21:13 +00:00
lua.mk Do not include float interfaces when using libsa. 2018-02-23 04:04:25 +00:00
Makefile Move ZFS files into libsa 2018-07-08 07:42:49 +00:00
Makefile.amd64 Create LOADER_UBOOT, and LOADER_OFW. Move these options out of 2018-03-01 19:50:55 +00:00
Makefile.inc Minor flags cleanup 2017-12-02 00:06:58 +00:00
uboot.mk Unify metadata load files for arm, mips, powerpc, sparc64 2018-02-13 03:44:50 +00:00