aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToomas Soome <tsoome@FreeBSD.org>2019-12-02 21:08:59 +0000
committerToomas Soome <tsoome@FreeBSD.org>2019-12-02 21:08:59 +0000
commit5b6081065444b784e0409335915e764f80b03742 (patch)
tree31d7e2d1249b2bfe6461e13b0826079bfc6b96ac
parent359d7273f5b665b5b6e76a1b40864a5a95c7e095 (diff)
downloadsrc-5b6081065444b784e0409335915e764f80b03742.tar.gz
src-5b6081065444b784e0409335915e764f80b03742.zip
loader.efi: fix cd boot for cisco C220M3
Reported by: Chris Ross MFC after: 1w
Notes
Notes: svn path=/head/; revision=355308
-rw-r--r--stand/efi/libefi/efipart.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/stand/efi/libefi/efipart.c b/stand/efi/libefi/efipart.c
index 7bfad3088a35..62dc3a413e7f 100644
--- a/stand/efi/libefi/efipart.c
+++ b/stand/efi/libefi/efipart.c
@@ -283,6 +283,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. */
@@ -324,6 +334,13 @@ efipart_ignore_device(EFI_HANDLE h, EFI_BLOCK_IO *blkio,
efi_close_devpath(h);
return (true);
}
+ /* no media, parent is USB and devicepath is SCSI. */
+ if (parent_is_usb &&
+ DevicePathType(node) == MESSAGING_DEVICE_PATH &&
+ DevicePathSubType(node) == MSG_SCSI_DP) {
+ efi_close_devpath(h);
+ return (true);
+ }
}
return (false);
}