changeset 24352:7f3d96b2b0d9

[illumos-gate merge] commit bb4b7f47acc2c683b79216e79167725745ca353b 12049 loader: ReadKeyStrokeEx may return partial keystrokes commit 9d0a7db04e3ca196c0efd6a99b66a2a7d42085e8 12044 loader.efi: fix cd boot for cisco C220M3 commit 500bef5604d6ac79e8c8ed41fe6401ce64a6b52e 11994 format: fix print of accessible sectors, also print first and last usable sector
author Jerry Jelinek <jerry.jelinek@joyent.com>
date Fri, 06 Dec 2019 12:41:01 +0000
parents cc4ba761e88f (current diff) 11b76e2d458a (diff)
children 4361c1ef6e00
files
diffstat 4 files changed, 32 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/boot/Makefile.version	Fri Dec 06 10:30:24 2019 +0000
+++ b/usr/src/boot/Makefile.version	Fri Dec 06 12:41:01 2019 +0000
@@ -33,4 +33,4 @@
 # 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.03.1
--- a/usr/src/boot/sys/boot/efi/libefi/efi_console.c	Fri Dec 06 10:30:24 2019 +0000
+++ b/usr/src/boot/sys/boot/efi/libefi/efi_console.c	Fri Dec 06 12:41:01 2019 +0000
@@ -674,10 +674,11 @@
 					kp->UnicodeChar++;
 				}
 			}
+			if (kp->ScanCode == 0 && kp->UnicodeChar == 0)
+				return (false);
+			keybuf_inschar(kp);
+			return (true);
 		}
-
-		keybuf_inschar(kp);
-		return (true);
 	}
 	return (false);
 }
--- a/usr/src/boot/sys/boot/efi/libefi/efipart.c	Fri Dec 06 10:30:24 2019 +0000
+++ b/usr/src/boot/sys/boot/efi/libefi/efipart.c	Fri Dec 06 12:41:01 2019 +0000
@@ -269,6 +269,16 @@
 	 * 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 @@
 			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);
--- a/usr/src/cmd/format/menu_command.c	Fri Dec 06 10:30:24 2019 +0000
+++ b/usr/src/cmd/format/menu_command.c	Fri Dec 06 12:41:01 2019 +0000
@@ -2097,6 +2097,12 @@
 	fmt_print("bytes/sector	=  %d\n", cur_blksz);
 	fmt_print("sectors = %llu\n", cur_parts->etoc->efi_last_lba + 1);
 	fmt_print("accessible sectors = %llu\n",
+	    cur_parts->etoc->efi_last_u_lba -
+	    cur_parts->etoc->efi_first_u_lba -
+	    efi_reserved_sectors(cur_parts->etoc) + 1);
+	fmt_print("first usable sector = %llu\n",
+	    cur_parts->etoc->efi_first_u_lba);
+	fmt_print("last usable sector = %llu\n",
 	    cur_parts->etoc->efi_last_u_lba);
 
 	print_map(&tmp_pinfo);