summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2019-12-02 22:58:17 +0200
committerToomas Soome <tsoome@me.com>2019-12-06 09:05:01 +0200
commit9d0a7db04e3ca196c0efd6a99b66a2a7d42085e8 (patch)
tree21c883deb5d354df4958eb2258057540da39bb37 /usr/src
parent500bef5604d6ac79e8c8ed41fe6401ce64a6b52e (diff)
downloadillumos-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.version2
-rw-r--r--usr/src/boot/sys/boot/efi/libefi/efipart.c26
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);