diff options
author | Toomas Soome <tsoome@me.com> | 2019-12-02 22:58:17 +0200 |
---|---|---|
committer | Toomas Soome <tsoome@me.com> | 2019-12-06 09:05:01 +0200 |
commit | 9d0a7db04e3ca196c0efd6a99b66a2a7d42085e8 (patch) | |
tree | 21c883deb5d354df4958eb2258057540da39bb37 /usr/src | |
parent | 500bef5604d6ac79e8c8ed41fe6401ce64a6b52e (diff) | |
download | illumos-gate-9d0a7db04e3ca196c0efd6a99b66a2a7d42085e8.tar.gz |
12044 loader.efi: fix cd boot for cisco C220M3
Reviewed by: Matthias Scheler <mscheler@tintri.com>
Reviewed by: Andy Fiddaman <andy@omniosce.org>
Reviewed by: C Fraire <cfraire@me.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/boot/Makefile.version | 2 | ||||
-rw-r--r-- | usr/src/boot/sys/boot/efi/libefi/efipart.c | 26 |
2 files changed, 22 insertions, 6 deletions
diff --git a/usr/src/boot/Makefile.version b/usr/src/boot/Makefile.version index b8a19bf5ed..fe203cd434 100644 --- a/usr/src/boot/Makefile.version +++ b/usr/src/boot/Makefile.version @@ -33,4 +33,4 @@ LOADER_VERSION = 1.1 # Use date like formatting here, YYYY.MM.DD.XX, without leading zeroes. # The version is processed from left to right, the version number can only # be increased. -BOOT_VERSION = $(LOADER_VERSION)-2019.11.26.1 +BOOT_VERSION = $(LOADER_VERSION)-2019.12.02.1 diff --git a/usr/src/boot/sys/boot/efi/libefi/efipart.c b/usr/src/boot/sys/boot/efi/libefi/efipart.c index fb9874f52b..694dd1d28e 100644 --- a/usr/src/boot/sys/boot/efi/libefi/efipart.c +++ b/usr/src/boot/sys/boot/efi/libefi/efipart.c @@ -269,6 +269,16 @@ efipart_ignore_device(EFI_HANDLE h, EFI_BLOCK_IO *blkio, * Therefore, if this node is USB, or this node is Unit (LUN) and * direct parent is USB and we have no media, we will ignore this * device. + * + * Variation of the same situation, but with SCSI devices: + * PciRoot(0x0)/Pci(0x1a,0x0)/USB(0x1,0)/USB(0x3,0x0)/SCSI(0x0,0x1) + * PciRoot(0x0)/Pci(0x1a,0x0)/USB(0x1,0)/USB(0x3,0x0)/SCSI(0x0,0x2) + * PciRoot(0x0)/Pci(0x1a,0x0)/USB(0x1,0)/USB(0x3,0x0)/SCSI(0x0,0x3) + * PciRoot(0x0)/Pci(0x1a,0x0)/USB(0x1,0)/USB(0x3,0x0)/SCSI(0x0,0x3)/CD.. + * PciRoot(0x0)/Pci(0x1a,0x0)/USB(0x1,0)/USB(0x3,0x0)/SCSI(0x0,0x3)/CD.. + * PciRoot(0x0)/Pci(0x1a,0x0)/USB(0x1,0)/USB(0x3,0x0)/SCSI(0x0,0x4) + * + * Here above the SCSI luns 1,2 and 4 have no media. */ /* Do not ignore device with media. */ @@ -300,15 +310,21 @@ efipart_ignore_device(EFI_HANDLE h, EFI_BLOCK_IO *blkio, parent_is_usb = true; free(parent); - /* no media, parent is usb and devicepath is lun. */ node = efi_devpath_last_node(devpath); if (node == NULL) return (false); if (parent_is_usb && - DevicePathType(node) == MESSAGING_DEVICE_PATH && - DevicePathSubType(node) == MSG_DEVICE_LOGICAL_UNIT_DP) { - efi_close_devpath(h); - return (true); + DevicePathType(node) == MESSAGING_DEVICE_PATH) { + /* + * no media, parent is USB and devicepath is + * LUN or SCSI. + */ + if (DevicePathSubType(node) == + MSG_DEVICE_LOGICAL_UNIT_DP || + DevicePathSubType(node) == MSG_SCSI_DP) { + efi_close_devpath(h); + return (true); + } } } return (false); |