changeset 24336:498ee2ebd2b3

[illumos-gate merge] commit 4deedc8c9617c76c1e08a5265614b205754926c4 12041 tem: x86 needs to use tems.ts_color_map() for 8-bit colors commit 2f572942f3e92c5f77d0b5d0778be90fa16681c1 12040 loader: vbe_print_mode() is missing newline commit e15e891852f98a4fc7afb32f0999b5bc38f7d1f8 12005 update to Intel microcode-20191115 commit f7db5903887928b2b43995473632ef63d130bbd4 2988 nfssrv: need ability to go to submounts for v3 and v2 protocols commit 19687f06a4a23ca82910eccd0f898c90ecd3cf62 12017 Assertion failure in kstat_waitq_to_runq from blkdev
author Jerry Jelinek <jerry.jelinek@joyent.com>
date Mon, 02 Dec 2019 13:05:42 +0000
parents 95439b185496 (current diff) 036faba8174f (diff)
children afc8877b607a
files manifest usr/src/data/ucode/README.ucode usr/src/data/ucode/intel/000406E3-40 usr/src/data/ucode/intel/00050654-01 usr/src/data/ucode/intel/00050657-01 usr/src/data/ucode/intel/000506E3-02 usr/src/data/ucode/intel/000706A1-01 usr/src/data/ucode/intel/000806E9-40 usr/src/data/ucode/intel/000806EA-40 usr/src/data/ucode/intel/000906E9-02 usr/src/data/ucode/intel/000906EA-02 usr/src/data/ucode/intel/000906EB-02 usr/src/lib/libshare/nfs/libshare_nfs.c usr/src/pkg/manifests/system-kernel-platform.mf usr/src/uts/common/io/blkdev/blkdev.c usr/src/uts/common/nfs/export.h
diffstat 37 files changed, 313 insertions(+), 60 deletions(-) [+]
line wrap: on
line diff
--- a/manifest	Thu Nov 28 05:07:06 2019 +1000
+++ b/manifest	Mon Dec 02 13:05:42 2019 +0000
@@ -2248,6 +2248,7 @@
 h platform/i86pc/ucode/GenuineIntel/00040671-20=platform/i86pc/ucode/GenuineIntel/00040671-02
 f platform/i86pc/ucode/GenuineIntel/000406C3-01 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/000406C4-01 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/000406D8-01 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/000406E3-40 0444 root sys
 h platform/i86pc/ucode/GenuineIntel/000406E3-80=platform/i86pc/ucode/GenuineIntel/000406E3-40
 f platform/i86pc/ucode/GenuineIntel/000406F1-01 0444 root sys
@@ -2257,12 +2258,24 @@
 h platform/i86pc/ucode/GenuineIntel/000406F1-20=platform/i86pc/ucode/GenuineIntel/000406F1-01
 h platform/i86pc/ucode/GenuineIntel/000406F1-40=platform/i86pc/ucode/GenuineIntel/000406F1-01
 h platform/i86pc/ucode/GenuineIntel/000406F1-80=platform/i86pc/ucode/GenuineIntel/000406F1-01
+f platform/i86pc/ucode/GenuineIntel/00050653-01 0444 root sys
+h platform/i86pc/ucode/GenuineIntel/00050653-02=platform/i86pc/ucode/GenuineIntel/00050653-01
+h platform/i86pc/ucode/GenuineIntel/00050653-04=platform/i86pc/ucode/GenuineIntel/00050653-01
+h platform/i86pc/ucode/GenuineIntel/00050653-10=platform/i86pc/ucode/GenuineIntel/00050653-01
+h platform/i86pc/ucode/GenuineIntel/00050653-80=platform/i86pc/ucode/GenuineIntel/00050653-01
 f platform/i86pc/ucode/GenuineIntel/00050654-01 0444 root sys
 h platform/i86pc/ucode/GenuineIntel/00050654-02=platform/i86pc/ucode/GenuineIntel/00050654-01
 h platform/i86pc/ucode/GenuineIntel/00050654-04=platform/i86pc/ucode/GenuineIntel/00050654-01
 h platform/i86pc/ucode/GenuineIntel/00050654-10=platform/i86pc/ucode/GenuineIntel/00050654-01
 h platform/i86pc/ucode/GenuineIntel/00050654-20=platform/i86pc/ucode/GenuineIntel/00050654-01
 h platform/i86pc/ucode/GenuineIntel/00050654-80=platform/i86pc/ucode/GenuineIntel/00050654-01
+f platform/i86pc/ucode/GenuineIntel/00050656-01 0444 root sys
+h platform/i86pc/ucode/GenuineIntel/00050656-02=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-04=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-08=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-10=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-20=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-80=platform/i86pc/ucode/GenuineIntel/00050656-01
 f platform/i86pc/ucode/GenuineIntel/00050657-01 0444 root sys
 h platform/i86pc/ucode/GenuineIntel/00050657-02=platform/i86pc/ucode/GenuineIntel/00050657-01
 h platform/i86pc/ucode/GenuineIntel/00050657-04=platform/i86pc/ucode/GenuineIntel/00050657-01
@@ -2272,6 +2285,7 @@
 h platform/i86pc/ucode/GenuineIntel/00050657-80=platform/i86pc/ucode/GenuineIntel/00050657-01
 f platform/i86pc/ucode/GenuineIntel/00050662-10 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/00050663-10 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/00060663-80 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/00050664-10 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/00050665-10 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/000506C2-01 0444 root sys
@@ -2285,6 +2299,8 @@
 h platform/i86pc/ucode/GenuineIntel/000506E3-20=platform/i86pc/ucode/GenuineIntel/000506E3-02
 f platform/i86pc/ucode/GenuineIntel/000506F1-01 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/000706A1-01 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/000706A8-01 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/000706E5-80 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/000806E9-10 0444 root sys
 f platform/i86pc/ucode/GenuineIntel/000806E9-40 0444 root sys
 h platform/i86pc/ucode/GenuineIntel/000806E9-80=platform/i86pc/ucode/GenuineIntel/000806E9-40
@@ -2306,6 +2322,7 @@
 h platform/i86pc/ucode/GenuineIntel/000906EC-20=platform/i86pc/ucode/GenuineIntel/000906EC-02
 f platform/i86pc/ucode/GenuineIntel/000906ED-02 0444 root sys
 h platform/i86pc/ucode/GenuineIntel/000906ED-20=platform/i86pc/ucode/GenuineIntel/000906ED-02
+f platform/i86pc/ucode/GenuineIntel/000A0660-80 0444 root sys
 d proc 0755 root root
 d root 0755 root root
 f root/.bash_profile 0644 root root
--- a/usr/src/boot/sys/boot/i386/libi386/vbe.c	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/boot/sys/boot/i386/libi386/vbe.c	Mon Dec 02 13:05:42 2019 +0000
@@ -653,19 +653,19 @@
 	vbe_dump_mode(mode, vbe_mode);
 	printf("\n");
 
-	printf("%ux%ux%u, stride=%u",
+	printf("%ux%ux%u, stride=%u\n",
 	    gfx_fb.framebuffer_common.framebuffer_width,
 	    gfx_fb.framebuffer_common.framebuffer_height,
 	    gfx_fb.framebuffer_common.framebuffer_bpp,
 	    (gfx_fb.framebuffer_common.framebuffer_pitch << 3) /
 	    gfx_fb.framebuffer_common.framebuffer_bpp);
-	printf("\n    frame buffer: address=%jx, size=%jx",
+	printf("    frame buffer: address=%jx, size=%jx\n",
 	    (uintmax_t)gfx_fb.framebuffer_common.framebuffer_addr,
 	    (uintmax_t)gfx_fb.framebuffer_common.framebuffer_height *
 	    gfx_fb.framebuffer_common.framebuffer_pitch);
 
 	if (vbe_mode->MemoryModel == 0x6) {
-		printf("\n    color mask: R=%08x, G=%08x, B=%08x\n",
+		printf("    color mask: R=%08x, G=%08x, B=%08x\n",
 		    ((1 << gfx_fb.u.fb2.framebuffer_red_mask_size) - 1) <<
 		    gfx_fb.u.fb2.framebuffer_red_field_position,
 		    ((1 << gfx_fb.u.fb2.framebuffer_green_mask_size) - 1) <<
--- a/usr/src/cmd/fs.d/nfs/lib/sharetab.h	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/cmd/fs.d/nfs/lib/sharetab.h	Mon Dec 02 13:05:42 2019 +0000
@@ -28,7 +28,7 @@
  */
 
 /*	Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T	*/
-/*	  All Rights Reserved  	*/
+/*	All Rights Reserved	*/
 
 /*
  * Portions of this source code were derived from Berkeley 4.3 BSD
@@ -65,6 +65,7 @@
 #define	SHOPT_NOACLFAB	"noaclfab"
 #define	SHOPT_UIDMAP	"uidmap"
 #define	SHOPT_GIDMAP	"gidmap"
+#define	SHOPT_NOHIDE	"nohide"
 
 /* XXX The following are added for testing volatile fh's purposes only */
 #ifdef VOLATILE_FH_TEST
--- a/usr/src/data/ucode/Makefile.links	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/data/ucode/Makefile.links	Mon Dec 02 13:05:42 2019 +0000
@@ -1,4 +1,4 @@
-INTEL_LINKS = 00000F32-04 00000F32-08 00000F33-04 00000F33-08 00000F34-04 00000F34-08 00000F34-10 00000F41-04 00000F41-08 00000F41-10 00000F41-20 00000F41-80 00000F43-04 00000F43-08 00000F43-10 00000F43-80 00000F44-04 00000F44-08 00000F44-10 00000F44-80 00000F47-04 00000F47-08 00000F47-10 00000F47-80 00000F48-08 00000F48-10 00000F48-40 00000F49-04 00000F49-08 00000F49-10 00000F49-20 00000F49-80 00000F4A-08 00000F4A-10 00000F4A-40 00000F64-10 00000F64-20 00000F68-20 0001067A-10 0001067A-40 0001067A-80 000106A4-02 000106A5-02 000106E5-02 000106E5-10 00020652-10 00020655-10 00020655-80 000206A7-10 000206C2-02 000206D6-04 000206D6-08 000206D6-20 000206D6-40 000206D7-04 000206D7-08 000206D7-20 000206D7-40 000206F2-04 00030678-08 00030679-02 00030679-04 00030679-08 000306A9-10 000306C3-10 000306C3-20 000306D4-80 000306E4-04 000306E4-08 000306E4-20 000306E4-40 000306E4-80 000306E6-04 000306E6-08 000306E6-20 000306E6-40 000306E6-80 000306E7-04 000306E7-08 000306E7-20 000306E7-40 000306E7-80 000306F2-02 000306F2-04 000306F2-08 000306F2-20 000306F2-40 00040651-10 00040651-20 00040651-40 00040661-10 00040661-20 00040671-20 000406E3-80 000406F1-02 000406F1-04 000406F1-08 000406F1-20 000406F1-40 000406F1-80 00050654-02 00050654-04 00050654-10 00050654-20 00050654-80 00050657-02 00050657-04 00050657-08 00050657-10 00050657-20 00050657-80 000506C9-02 000506CA-02 000506E3-04 000506E3-10 000506E3-20 000806E9-80 000806EA-80 000806EB-40 000806EB-80 000806EC-10 000806EC-80 000906E9-08 000906E9-20 000906EA-20 000906EC-20 000906ED-20
+INTEL_LINKS = 00000F32-04 00000F32-08 00000F33-04 00000F33-08 00000F34-04 00000F34-08 00000F34-10 00000F41-04 00000F41-08 00000F41-10 00000F41-20 00000F41-80 00000F43-04 00000F43-08 00000F43-10 00000F43-80 00000F44-04 00000F44-08 00000F44-10 00000F44-80 00000F47-04 00000F47-08 00000F47-10 00000F47-80 00000F48-08 00000F48-10 00000F48-40 00000F49-04 00000F49-08 00000F49-10 00000F49-20 00000F49-80 00000F4A-08 00000F4A-10 00000F4A-40 00000F64-10 00000F64-20 00000F68-20 0001067A-10 0001067A-40 0001067A-80 000106A4-02 000106A5-02 000106E5-02 000106E5-10 00020652-10 00020655-10 00020655-80 000206A7-10 000206C2-02 000206D6-04 000206D6-08 000206D6-20 000206D6-40 000206D7-04 000206D7-08 000206D7-20 000206D7-40 000206F2-04 00030678-08 00030679-02 00030679-04 00030679-08 000306A9-10 000306C3-10 000306C3-20 000306D4-80 000306E4-04 000306E4-08 000306E4-20 000306E4-40 000306E4-80 000306E6-04 000306E6-08 000306E6-20 000306E6-40 000306E6-80 000306E7-04 000306E7-08 000306E7-20 000306E7-40 000306E7-80 000306F2-02 000306F2-04 000306F2-08 000306F2-20 000306F2-40 00040651-10 00040651-20 00040651-40 00040661-10 00040661-20 00040671-20 000406E3-80 000406F1-02 000406F1-04 000406F1-08 000406F1-20 000406F1-40 000406F1-80 00050653-02 00050653-04 00050653-10 00050653-80 00050654-02 00050654-04 00050654-10 00050654-20 00050654-80 00050656-02 00050656-04 00050656-08 00050656-10 00050656-20 00050656-80 00050657-02 00050657-04 00050657-08 00050657-10 00050657-20 00050657-80 000506C9-02 000506CA-02 000506E3-04 000506E3-10 000506E3-20 000806E9-80 000806EA-80 000806EB-40 000806EB-80 000806EC-10 000806EC-80 000906E9-08 000906E9-20 000906EA-20 000906EC-20 000906ED-20
 
 $(ROOTINTELDIR)/00000F32-04: $(ROOTINTELDIR)/00000F32-01
 	$(RM) $@; $(LN) $^ $@
@@ -300,6 +300,18 @@
 $(ROOTINTELDIR)/000406F1-80: $(ROOTINTELDIR)/000406F1-01
 	$(RM) $@; $(LN) $^ $@
 
+$(ROOTINTELDIR)/00050653-02: $(ROOTINTELDIR)/00050653-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050653-04: $(ROOTINTELDIR)/00050653-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050653-10: $(ROOTINTELDIR)/00050653-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050653-80: $(ROOTINTELDIR)/00050653-01
+	$(RM) $@; $(LN) $^ $@
+
 $(ROOTINTELDIR)/00050654-02: $(ROOTINTELDIR)/00050654-01
 	$(RM) $@; $(LN) $^ $@
 
@@ -315,6 +327,24 @@
 $(ROOTINTELDIR)/00050654-80: $(ROOTINTELDIR)/00050654-01
 	$(RM) $@; $(LN) $^ $@
 
+$(ROOTINTELDIR)/00050656-02: $(ROOTINTELDIR)/00050656-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-04: $(ROOTINTELDIR)/00050656-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-08: $(ROOTINTELDIR)/00050656-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-10: $(ROOTINTELDIR)/00050656-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-20: $(ROOTINTELDIR)/00050656-01
+	$(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-80: $(ROOTINTELDIR)/00050656-01
+	$(RM) $@; $(LN) $^ $@
+
 $(ROOTINTELDIR)/00050657-02: $(ROOTINTELDIR)/00050657-01
 	$(RM) $@; $(LN) $^ $@
 
--- a/usr/src/data/ucode/README.ucode	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/data/ucode/README.ucode	Mon Dec 02 13:05:42 2019 +0000
@@ -38,4 +38,4 @@
 AMD: Updated in March 2012 as part of illumos#2546. Exact revision
 unknown.
 
-Intel: Linux 20190918 release
+Intel: Linux 20191115 release
Binary file usr/src/data/ucode/intel/000406D8-01 has changed
Binary file usr/src/data/ucode/intel/000406E3-40 has changed
Binary file usr/src/data/ucode/intel/00050653-01 has changed
Binary file usr/src/data/ucode/intel/00050654-01 has changed
Binary file usr/src/data/ucode/intel/00050656-01 has changed
Binary file usr/src/data/ucode/intel/00050657-01 has changed
Binary file usr/src/data/ucode/intel/000506E3-02 has changed
Binary file usr/src/data/ucode/intel/00060663-80 has changed
Binary file usr/src/data/ucode/intel/000706A1-01 has changed
Binary file usr/src/data/ucode/intel/000706A8-01 has changed
Binary file usr/src/data/ucode/intel/000706E5-80 has changed
Binary file usr/src/data/ucode/intel/000806E9-10 has changed
Binary file usr/src/data/ucode/intel/000806E9-40 has changed
Binary file usr/src/data/ucode/intel/000806EA-40 has changed
Binary file usr/src/data/ucode/intel/000806EB-10 has changed
Binary file usr/src/data/ucode/intel/000806EC-04 has changed
Binary file usr/src/data/ucode/intel/000906E9-02 has changed
Binary file usr/src/data/ucode/intel/000906EA-02 has changed
Binary file usr/src/data/ucode/intel/000906EB-02 has changed
Binary file usr/src/data/ucode/intel/000906EC-02 has changed
Binary file usr/src/data/ucode/intel/000906ED-02 has changed
Binary file usr/src/data/ucode/intel/000A0660-80 has changed
--- a/usr/src/lib/libshare/nfs/libshare_nfs.c	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/lib/libshare/nfs/libshare_nfs.c	Mon Dec 02 13:05:42 2019 +0000
@@ -175,8 +175,10 @@
 	{SHOPT_UIDMAP, OPT_UIDMAP, OPT_TYPE_MAPPING},
 #define	OPT_GIDMAP	19
 	{SHOPT_GIDMAP, OPT_GIDMAP, OPT_TYPE_MAPPING},
+#define	OPT_NOHIDE	20
+	{SHOPT_NOHIDE, OPT_NOHIDE, OPT_TYPE_BOOLEAN},
 #ifdef VOLATILE_FH_TEST	/* XXX added for testing volatile fh's only */
-#define	OPT_VOLFH	20
+#define	OPT_VOLFH	21
 	{SHOPT_VOLFH, OPT_VOLFH},
 #endif /* VOLATILE_FH_TEST */
 	NULL
@@ -1028,6 +1030,14 @@
 			else
 				export->ex_flags &= ~EX_NOACLFAB;
 			break;
+		case OPT_NOHIDE:
+			if (value != NULL && (strcasecmp(value, "true") == 0 ||
+			    strcmp(value, "1") == 0))
+				export->ex_flags |= EX_NOHIDE;
+			else
+				export->ex_flags &= ~EX_NOHIDE;
+
+			break;
 		default:
 			/* have a syntactic error */
 			(void) printf(dgettext(TEXT_DOMAIN,
--- a/usr/src/lib/libshare/nfs/libshare_nfs.h	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/lib/libshare/nfs/libshare_nfs.h	Mon Dec 02 13:05:42 2019 +0000
@@ -56,6 +56,7 @@
 #define	SHOPT_NOACLFAB	"noaclfab"
 #define	SHOPT_UIDMAP	"uidmap"
 #define	SHOPT_GIDMAP	"gidmap"
+#define	SHOPT_NOHIDE	"nohide"
 
 /*
  * defined options types. These should be in a file rather than
--- a/usr/src/man/man1m/share_nfs.1m	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/man/man1m/share_nfs.1m	Mon Dec 02 13:05:42 2019 +0000
@@ -172,6 +172,25 @@
 are used.
 Support of NFS server logging is only available for NFS Version 2 and
 Version 3 requests.
+.It Sy nohide
+By default, if server exports two filesystems, one of which is mounted as a
+child of the other, NFS Version 2 and Version 3 clients must mount both
+filesystems explicitly in order to access them.
+If a client only mounts the parent, it will see an empty directory at the
+location where the other filesystem is mounted.
+.Pp
+Setting the
+.Sy nohide
+option on a filesystem causes it to no longer be hidden in this manner, and the
+client will be able to move from the parent filesystem to this one without
+noticing the change.
+However, some NFS clients or applications may not function correctly when
+this option is used.
+In particular, files on different underlying filesystems may appear to have
+the same inode numbers.
+The
+.Sy nohide
+option only applies to NFS Version 2 and Version 3 requests.
 .It Sy noaclfab
 By default, the NFS server will fabricate POSIX-draft style ACLs in response
 to ACL requests from NFS Version 2 or Version 3 clients accessing shared
@@ -786,3 +805,14 @@
 does not work as it does with NFS Version 2 and Version 3 and the client
 receives an error when attempting to mount
 .Pa /export/foo .
+.Pp
+The
+.Sy nohide
+option violates RFC 1094,
+.%T "Network File System Protocol Specification"
+and RFC 1813,
+.%T "NFS: Network File System Version 3 Protocol Specification"
+.Pp
+The
+.Sy nohide
+option is provided for compatibility with Linux NFS.
--- a/usr/src/pkg/manifests/system-kernel-platform.mf	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/pkg/manifests/system-kernel-platform.mf	Mon Dec 02 13:05:42 2019 +0000
@@ -1096,12 +1096,18 @@
     mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406C4-01 group=sys \
     mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406D8-01 group=sys \
+    mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406E3-40 group=sys \
     mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406F1-01 group=sys \
     mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050653-01 group=sys \
+    mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050654-01 group=sys \
     mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050656-01 group=sys \
+    mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050657-01 group=sys \
     mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050662-10 group=sys \
@@ -1122,8 +1128,14 @@
     mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000506F1-01 group=sys \
     mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00060663-80 group=sys \
+    mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000706A1-01 group=sys \
     mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000706A8-01 group=sys \
+    mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000706E5-80 group=sys \
+    mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000806E9-10 group=sys \
     mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000806E9-40 group=sys \
@@ -1144,6 +1156,8 @@
     mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000906ED-02 group=sys \
     mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000A0660-80 group=sys \
+    mode=0444 reboot-needed=true
 $(i386_ONLY)file path=platform/i86xpv/kernel/$(ARCH64)/unix group=sys \
     mode=0755
 $(i386_ONLY)file path=platform/i86xpv/kernel/cpu/$(ARCH64)/cpu.generic \
@@ -1596,6 +1610,14 @@
     target=000406F1-01
 $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/000406F1-80 \
     target=000406F1-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-02 \
+    target=00050653-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-04 \
+    target=00050653-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-10 \
+    target=00050653-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-80 \
+    target=00050653-01
 $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050654-02 \
     target=00050654-01
 $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050654-04 \
@@ -1606,6 +1628,18 @@
     target=00050654-01
 $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050654-80 \
     target=00050654-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-02 \
+    target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-04 \
+    target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-08 \
+    target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-10 \
+    target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-20 \
+    target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-80 \
+    target=00050656-01
 $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050657-02 \
     target=00050657-01
 $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050657-04 \
--- a/usr/src/uts/common/fs/nfs/nfs3_srv.c	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/uts/common/fs/nfs/nfs3_srv.c	Mon Dec 02 13:05:42 2019 +0000
@@ -382,6 +382,9 @@
 
 	dvap = NULL;
 
+	if (exi != NULL)
+		exi_hold(exi);
+
 	/*
 	 * Allow lookups from the root - the default
 	 * location of the public filehandle.
@@ -420,8 +423,19 @@
 	fhp = &args->what.dir;
 	if (strcmp(args->what.name, "..") == 0 &&
 	    EQFID(&exi->exi_fid, FH3TOFIDP(fhp))) {
-		resp->status = NFS3ERR_NOENT;
-		goto out1;
+		if ((exi->exi_export.ex_flags & EX_NOHIDE) &&
+		    (dvp->v_flag & VROOT)) {
+			/*
+			 * special case for ".." and 'nohide'exported root
+			 */
+			if (rfs_climb_crossmnt(&dvp, &exi, cr) != 0) {
+				resp->status = NFS3ERR_ACCES;
+				goto out1;
+			}
+		} else {
+			resp->status = NFS3ERR_NOENT;
+			goto out1;
+		}
 	}
 
 	ca = (struct sockaddr *)svc_getrpccaller(req->rq_xprt)->buf;
@@ -439,10 +453,12 @@
 	 */
 	if (PUBLIC_FH3(&args->what.dir)) {
 		publicfh_flag = TRUE;
+
+		exi_rele(exi);
+
 		error = rfs_publicfh_mclookup(name, dvp, cr, &vp,
 		    &exi, &sec);
-		if (error && exi != NULL)
-			exi_rele(exi); /* See comment below Re: publicfh_flag */
+
 		/*
 		 * Since WebNFS may bypass MOUNT, we need to ensure this
 		 * request didn't come from an unlabeled admin_low client.
@@ -464,8 +480,6 @@
 			if (tp == NULL || tp->tpc_tp.tp_doi !=
 			    l_admin_low->tsl_doi || tp->tpc_tp.host_type !=
 			    SUN_CIPSO) {
-				if (exi != NULL)
-					exi_rele(exi);
 				VN_RELE(vp);
 				error = EACCES;
 			}
@@ -480,6 +494,12 @@
 	if (name != args->what.name)
 		kmem_free(name, MAXPATHLEN + 1);
 
+	if (error == 0 && vn_ismntpt(vp)) {
+		error = rfs_cross_mnt(&vp, &exi);
+		if (error)
+			VN_RELE(vp);
+	}
+
 	if (is_system_labeled() && error == 0) {
 		bslabel_t *clabel = req->rq_label;
 
@@ -490,8 +510,6 @@
 		if (!blequal(&l_admin_low->tsl_label, clabel)) {
 			if (!do_rfs_label_check(clabel, dvp,
 			    DOMINANCE_CHECK, exi)) {
-				if (publicfh_flag && exi != NULL)
-					exi_rele(exi);
 				VN_RELE(vp);
 				error = EACCES;
 			}
@@ -512,15 +530,6 @@
 			auth_weak = TRUE;
 	}
 
-	/*
-	 * If publicfh_flag is true then we have called rfs_publicfh_mclookup
-	 * and have obtained a new exportinfo in exi which needs to be
-	 * released. Note that the original exportinfo pointed to by exi
-	 * will be released by the caller, common_dispatch.
-	 */
-	if (publicfh_flag)
-		exi_rele(exi);
-
 	if (error) {
 		VN_RELE(vp);
 		goto out;
@@ -529,6 +538,7 @@
 	va.va_mask = AT_ALL;
 	vap = rfs4_delegated_getattr(vp, &va, 0, cr) ? NULL : &va;
 
+	exi_rele(exi);
 	VN_RELE(vp);
 
 	resp->status = NFS3_OK;
@@ -556,6 +566,9 @@
 	} else
 		resp->status = puterrno3(error);
 out1:
+	if (exi != NULL)
+		exi_rele(exi);
+
 	DTRACE_NFSV3_4(op__lookup__done, struct svc_req *, req,
 	    cred_t *, cr, vnode_t *, dvp, LOOKUP3res *, resp);
 
@@ -3609,13 +3622,18 @@
 		if (vn_is_nfs_reparse(nvp, cr))
 			nvap->va_type = VLNK;
 
-		vattr_to_post_op_attr(nvap, &infop[i].attr);
-
-		error = makefh3(&infop[i].fh.handle, nvp, exi);
-		if (!error)
-			infop[i].fh.handle_follows = TRUE;
-		else
+		if (vn_ismntpt(nvp)) {
+			infop[i].attr.attributes = FALSE;
 			infop[i].fh.handle_follows = FALSE;
+		} else {
+			vattr_to_post_op_attr(nvap, &infop[i].attr);
+
+			error = makefh3(&infop[i].fh.handle, nvp, exi);
+			if (!error)
+				infop[i].fh.handle_follows = TRUE;
+			else
+				infop[i].fh.handle_follows = FALSE;
+		}
 
 		VN_RELE(nvp);
 		dp = nextdp(dp);
--- a/usr/src/uts/common/fs/nfs/nfs_srv.c	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/uts/common/fs/nfs/nfs_srv.c	Mon Dec 02 13:05:42 2019 +0000
@@ -18,9 +18,10 @@
  *
  * CDDL HEADER END
  */
+
 /*
  * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  * Copyright (c) 2016 by Delphix. All rights reserved.
  */
 
@@ -329,6 +330,80 @@
 	return (&args->saa_fh);
 }
 
+/* Change and release @exip and @vpp only in success */
+int
+rfs_cross_mnt(vnode_t **vpp, struct exportinfo **exip)
+{
+	struct exportinfo *exi;
+	vnode_t *vp = *vpp;
+	fid_t fid;
+	int error;
+
+	VN_HOLD(vp);
+
+	if ((error = traverse(&vp)) != 0) {
+		VN_RELE(vp);
+		return (error);
+	}
+
+	bzero(&fid, sizeof (fid));
+	fid.fid_len = MAXFIDSZ;
+	error = VOP_FID(vp, &fid, NULL);
+	if (error) {
+		VN_RELE(vp);
+		return (error);
+	}
+
+	exi = checkexport(&vp->v_vfsp->vfs_fsid, &fid);
+	if (exi == NULL ||
+	    (exi->exi_export.ex_flags & EX_NOHIDE) == 0) {
+		/*
+		 * It is not error, just subdir is not exported
+		 * or "nohide" is not set
+		 */
+		if (exi != NULL)
+			exi_rele(exi);
+		VN_RELE(vp);
+	} else {
+		/* go to submount */
+		exi_rele(*exip);
+		*exip = exi;
+
+		VN_RELE(*vpp);
+		*vpp = vp;
+	}
+
+	return (0);
+}
+
+/*
+ * Given mounted "dvp" and "exi", go upper mountpoint
+ * with dvp/exi correction
+ * Return 0 in success
+ */
+int
+rfs_climb_crossmnt(vnode_t **dvpp, struct exportinfo **exip, cred_t *cr)
+{
+	struct exportinfo *exi;
+	vnode_t *dvp = *dvpp;
+
+	ASSERT(dvp->v_flag & VROOT);
+
+	VN_HOLD(dvp);
+	dvp = untraverse(dvp);
+	exi = nfs_vptoexi(NULL, dvp, cr, NULL, NULL, FALSE);
+	if (exi == NULL) {
+		VN_RELE(dvp);
+		return (-1);
+	}
+
+	exi_rele(*exip);
+	*exip = exi;
+	VN_RELE(*dvpp);
+	*dvpp = dvp;
+
+	return (0);
+}
 /*
  * Directory lookup.
  * Returns an fhandle and file attributes for file name in a directory.
@@ -381,6 +456,8 @@
 		}
 	}
 
+	exi_hold(exi);
+
 	/*
 	 * Not allow lookup beyond root.
 	 * If the filehandle matches a filehandle of the exi,
@@ -388,9 +465,19 @@
 	 */
 	if (strcmp(da->da_name, "..") == 0 &&
 	    EQFID(&exi->exi_fid, (fid_t *)&fhp->fh_len)) {
-		VN_RELE(dvp);
-		dr->dr_status = NFSERR_NOENT;
-		return;
+		if ((exi->exi_export.ex_flags & EX_NOHIDE) &&
+		    (dvp->v_flag & VROOT)) {
+			/*
+			 * special case for ".." and 'nohide'exported root
+			 */
+			if (rfs_climb_crossmnt(&dvp, &exi, cr) != 0) {
+				error = NFSERR_ACCES;
+				goto out;
+			}
+		} else  {
+			error = NFSERR_NOENT;
+			goto out;
+		}
 	}
 
 	ca = (struct sockaddr *)svc_getrpccaller(req->rq_xprt)->buf;
@@ -398,8 +485,8 @@
 	    MAXPATHLEN);
 
 	if (name == NULL) {
-		dr->dr_status = NFSERR_ACCES;
-		return;
+		error = NFSERR_ACCES;
+		goto out;
 	}
 
 	/*
@@ -413,6 +500,9 @@
 	 */
 	if (PUBLIC_FH2(fhp)) {
 		publicfh_flag = TRUE;
+
+		exi_rele(exi);
+
 		error = rfs_publicfh_mclookup(name, dvp, cr, &vp, &exi,
 		    &sec);
 	} else {
@@ -426,6 +516,11 @@
 	if (name != da->da_name)
 		kmem_free(name, MAXPATHLEN);
 
+	if (error == 0 && vn_ismntpt(vp)) {
+		error = rfs_cross_mnt(&vp, &exi);
+		if (error)
+			VN_RELE(vp);
+	}
 
 	if (!error) {
 		va.va_mask = AT_ALL;	/* we want everything */
@@ -452,15 +547,10 @@
 		VN_RELE(vp);
 	}
 
+out:
 	VN_RELE(dvp);
 
-	/*
-	 * If publicfh_flag is true then we have called rfs_publicfh_mclookup
-	 * and have obtained a new exportinfo in exi which needs to be
-	 * released. Note the the original exportinfo pointed to by exi
-	 * will be released by the caller, comon_dispatch.
-	 */
-	if (publicfh_flag && exi != NULL)
+	if (exi != NULL)
 		exi_rele(exi);
 
 	/*
--- a/usr/src/uts/common/io/blkdev/blkdev.c	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/uts/common/io/blkdev/blkdev.c	Mon Dec 02 13:05:42 2019 +0000
@@ -122,9 +122,10 @@
  * There are 4 instance global locks d_ocmutex, d_ksmutex, d_errmutex and
  * d_statemutex. As well a q_iomutex per waitq/runq pair.
  *
- * Currently, there is no lock hierarchy. Nowhere do we ever own more than
- * one lock, any change needs to be documented here with a defined
- * hierarchy.
+ * Lock Hierarchy
+ * --------------
+ * The only two locks which may be held simultaneously are q_iomutex and
+ * d_ksmutex. In all cases q_iomutex must be acquired before d_ksmutex.
  */
 
 #define	BD_MAXPART	64
@@ -1668,6 +1669,10 @@
 
 	while ((bq->q_qactive < bq->q_qsize) &&
 	    ((xi = list_remove_head(&bq->q_waitq)) != NULL)) {
+		mutex_enter(&bd->d_ksmutex);
+		kstat_waitq_to_runq(bd->d_kiop);
+		mutex_exit(&bd->d_ksmutex);
+
 		bq->q_qactive++;
 		list_insert_tail(&bq->q_runq, xi);
 
@@ -1679,10 +1684,6 @@
 
 		mutex_exit(&bq->q_iomutex);
 
-		mutex_enter(&bd->d_ksmutex);
-		kstat_waitq_to_runq(bd->d_kiop);
-		mutex_exit(&bd->d_ksmutex);
-
 		rv = xi->i_func(bd->d_private, &xi->i_public);
 		if (rv != 0) {
 			bp = xi->i_bp;
@@ -1690,11 +1691,13 @@
 			biodone(bp);
 
 			atomic_inc_32(&bd->d_kerr->bd_transerrs.value.ui32);
+
+			mutex_enter(&bq->q_iomutex);
+
 			mutex_enter(&bd->d_ksmutex);
 			kstat_runq_exit(bd->d_kiop);
 			mutex_exit(&bd->d_ksmutex);
 
-			mutex_enter(&bq->q_iomutex);
 			bq->q_qactive--;
 			list_remove(&bq->q_runq, xi);
 			bd_xfer_free(xi);
@@ -1717,13 +1720,15 @@
 	xi->i_qnum = q;
 
 	mutex_enter(&bq->q_iomutex);
+
 	list_insert_tail(&bq->q_waitq, xi);
-	mutex_exit(&bq->q_iomutex);
 
 	mutex_enter(&bd->d_ksmutex);
 	kstat_waitq_enter(bd->d_kiop);
 	mutex_exit(&bd->d_ksmutex);
 
+	mutex_exit(&bq->q_iomutex);
+
 	bd_sched(bd, bq);
 }
 
@@ -1736,13 +1741,14 @@
 
 	mutex_enter(&bq->q_iomutex);
 	bq->q_qactive--;
-	list_remove(&bq->q_runq, xi);
-	mutex_exit(&bq->q_iomutex);
 
 	mutex_enter(&bd->d_ksmutex);
 	kstat_runq_exit(bd->d_kiop);
 	mutex_exit(&bd->d_ksmutex);
 
+	list_remove(&bq->q_runq, xi);
+	mutex_exit(&bq->q_iomutex);
+
 	if (err == 0) {
 		if (bp->b_flags & B_READ) {
 			atomic_inc_uint(&bd->d_kiop->reads);
--- a/usr/src/uts/common/io/tem_safe.c	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/uts/common/io/tem_safe.c	Mon Dec 02 13:05:42 2019 +0000
@@ -2213,10 +2213,18 @@
 
 	switch (tems.ts_pdepth) {
 	case 4:
-	case 8:
 		ca.fg_color.mono = fg;
 		ca.bg_color.mono = bg;
 		break;
+	case 8:
+#ifdef _HAVE_TEM_FIRMWARE
+		ca.fg_color.mono = fg;
+		ca.bg_color.mono = bg;
+#else
+		ca.fg_color.mono = tems.ts_color_map(fg);
+		ca.bg_color.mono = tems.ts_color_map(bg);
+#endif
+		break;
 	case 15:
 	case 16:
 		color = tems.ts_color_map(fg);
@@ -2256,8 +2264,8 @@
 		ca.bg_color.twentyfour[0] = (color >> 16) & 0xFF;
 		ca.bg_color.twentyfour[1] = (color >> 8) & 0xFF;
 		ca.bg_color.twentyfour[2] = color & 0xFF;
+#endif
 		break;
-#endif
 	}
 
 	ca.action = action;
@@ -2292,6 +2300,11 @@
     text_color_t bg_color)
 {
 	uint8_t *dest = (uint8_t *)tem->tvs_pix_data;
+
+#ifndef _HAVE_TEM_FIRMWARE
+	fg_color = (text_color_t)tems.ts_color_map(fg_color);
+	bg_color = (text_color_t)tems.ts_color_map(bg_color);
+#endif
 	font_bit_to_pix8(&tems.ts_font, dest, c, fg_color, bg_color);
 }
 
--- a/usr/src/uts/common/nfs/export.h	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/uts/common/nfs/export.h	Mon Dec 02 13:05:42 2019 +0000
@@ -20,8 +20,8 @@
  */
 
 /*
+ * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2016 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2016 Jason King.
  */
 
@@ -68,7 +68,7 @@
 	int32_t		s_refcnt;	/* reference count for tracking */
 					/* how many children (self included) */
 					/* use this flavor. */
-	int 		s_window;	/* window */
+	int		s_window;	/* window */
 	uint_t		s_rootid;	/* UID to use for authorized roots */
 	int		s_rootcnt;	/* count of root names */
 	caddr_t		*s_rootnames;	/* array of root names */
@@ -83,7 +83,7 @@
 	int32_t		s_refcnt;	/* reference count for tracking */
 					/* how many children (self included) */
 					/* use this flavor. */
-	int32_t 	s_window;	/* window */
+	int32_t		s_window;	/* window */
 	uint32_t	s_rootid;	/* UID to use for authorized roots */
 	int32_t		s_rootcnt;	/* count of root names */
 	caddr32_t	s_rootnames;	/* array of root names */
@@ -189,6 +189,7 @@
 #define	EX_NOACLFAB	0x2000	/* If set, NFSv2 and v3 servers won't */
 				/* fabricate an aclent_t ACL on file systems */
 				/* that don't support aclent_t ACLs */
+#define	EX_NOHIDE	0x4000	/* traversable from exported parent */
 
 #ifdef	_KERNEL
 
--- a/usr/src/uts/common/nfs/nfs.h	Thu Nov 28 05:07:06 2019 +1000
+++ b/usr/src/uts/common/nfs/nfs.h	Mon Dec 02 13:05:42 2019 +0000
@@ -31,7 +31,7 @@
 #ifndef	_NFS_NFS_H
 #define	_NFS_NFS_H
 
-/*	nfs.h 2.38 88/08/19 SMI 	*/
+/*	nfs.h 2.38 88/08/19 SMI	*/
 
 #include <sys/isa_defs.h>
 #include <sys/vfs.h>
@@ -2278,6 +2278,8 @@
     struct exportinfo **, struct sec_ol *);
 extern int	rfs_pathname(char *, vnode_t **, vnode_t **, vnode_t *,
     cred_t *, int);
+extern int	rfs_cross_mnt(vnode_t **, struct exportinfo **);
+extern int	rfs_climb_crossmnt(vnode_t **, struct exportinfo **, cred_t *);
 
 extern vtype_t		nf3_to_vt[];
 extern kstat_named_t	*rfsproccnt_v3_ptr;