--- old/usr/src/psm/promif/ieee1275/sun4/prom_vercheck.c	Wed Aug 28 04:02:56 2019
+++ /dev/null	Tue Aug 27 23:11:27 2019
@@ -1,362 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#include <sys/promif.h>
-#include <sys/promimpl.h>
-
-#ifdef	DPRINTF
-#define	dprintf	prom_printf
-#endif
-
-/*
- * Check if the prom is 64-bit ready.
- */
-
-/*
- * Table listing the minimum prom versions supported by this kernel.
- * The model value is expected to match the model in the flashprom node.
- */
-static struct obp_rev_table {
-	char *model;
-	char *version;
-} obp_min_revs[] = {
-	{"SUNW,525-1414", "OBP 3.11.2 1997/12/05 10:25"},  /* pulsar */
-	{"SUNW,525-1672", "OBP 3.7.107 1998/02/19 17:54"},  /* tazmo */
-	{"SUNW,525-1431", "OBP 3.2.16 1998/06/08 16:58"},   /* sunfire */
-	{ NULL, NULL}
-};
-
-#define	NMINS	60
-#define	NHOURS	24
-#define	NDAYS	31
-#define	NMONTHS	12
-
-#define	YEAR(y)	 ((y-1) * (NMONTHS * NDAYS * NHOURS * NMINS))
-#define	MONTH(m) ((m-1) * (NDAYS * NHOURS * NMINS))
-#define	DAY(d)   ((d-1) * (NHOURS * NMINS))
-#define	HOUR(h)  ((h)   * (NMINS))
-#define	MINUTE(m) (m)
-
-static int
-strtoi(char *str, char **pos)
-{
-	int c;
-	int val = 0;
-
-	for (c = *str++; c >= '0' && c <= '9'; c = *str++) {
-		val *= 10;
-		val += c - '0';
-	}
-	if (pos)
-		*pos = str;
-	return (val);
-}
-
-/*
- * obp_timestamp: based on the OBP flashprom version string of the
- * format "OBP x.y.z YYYY/MM/DD HH:MM" calculate a timestamp based
- * on the year, month, day, hour and minute by turning that into
- * a number of minutes.
- */
-static int
-obp_timestamp(char *v)
-{
-	char *c;
-	int maj, year, month, day, hour, min;
-
-	if (v[0] != 'O' || v[1] != 'B' || v[2] != 'P')
-		return (-1);
-
-	c = v + 3;
-
-	/* Find first non-space character after OBP */
-	while (*c != '\0' && (*c == ' ' || *c == '\t'))
-		c++;
-	if (prom_strlen(c) < 5)		/* need at least "x.y.z" */
-		return (-1);
-
-	maj = strtoi(c, &c);
-	if (maj < 3)
-		return (-1);
-
-#if 0 /* XXX - not used */
-	dot = dotdot = 0;
-	if (*c == '.') {
-		dot = strtoi(c + 1, &c);
-
-		/* optional? dot-dot release */
-		if (*c == '.')
-			dotdot = strtoi(c + 1, &c);
-	}
-#endif
-
-	/* Find space at the end of version number */
-	while (*c != '\0' && *c != ' ')
-		c++;
-	if (prom_strlen(c) < 11)	/* need at least " xxxx/xx/xx" */
-		return (-1);
-
-	/* Point to first character of date */
-	c++;
-
-	/* Validate date format */
-	if (c[4] != '/' || c[7] != '/')
-		return (-1);
-
-	year = strtoi(c, NULL);
-	month = strtoi(c + 5, NULL);
-	day = strtoi(c + 8, NULL);
-
-	if (year < 1995 || month == 0 || day == 0)
-		return (-1);
-
-	/*
-	 * Find space at the end of date number
-	 */
-	c += 10;
-	while (*c != '\0' && *c != ' ')
-		c++;
-	if (prom_strlen(c) < 6)		/* need at least " xx:xx" */
-		return (-1);
-
-	/* Point to first character of time */
-	c++;
-
-	if (c[2] != ':')
-		return (-1);
-
-	hour = strtoi(c, NULL);
-	min = strtoi(c + 3, NULL);
-
-	return (YEAR(year) + MONTH(month) +
-	    DAY(day) + HOUR(hour) + MINUTE(min));
-}
-
-/*
- * Check the prom against the obp_min_revs table and complain if
- * the system has an older prom installed.  The actual major/minor/
- * dotdot numbers are not checked, only the date/time stamp.
- */
-
-static struct obp_rev_table *flashprom_ortp;
-static pnode_t flashprom_node;
-static int flashprom_checked;
-static int flashprom_return_code;
-
-int
-check_timestamp(char *model, int tstamp)
-{
-	int min_tstamp;
-	struct obp_rev_table *ortp;
-
-	for (ortp = obp_min_revs; ortp->model != NULL; ortp++) {
-		if (prom_strcmp(model, ortp->model) == 0) {
-			min_tstamp = obp_timestamp(ortp->version);
-			if (min_tstamp == -1) {
-#ifdef	DEBUG
-				prom_printf("prom_version_check: "
-				    "invalid OBP version string in table "
-				    " (entry %d)", (int)(ortp - obp_min_revs));
-#endif
-				continue;
-			}
-			if (tstamp < min_tstamp) {
-#ifdef	DPRINTF
-				dprintf("prom_version_check: "
-				    "Down-rev OBP detected.  "
-				    "Please update to at least:\n\t%s\n\n",
-				    ortp->version);
-#endif
-				flashprom_ortp = ortp;
-				return (1);
-			}
-		}
-	} /* for each obp_rev_table entry */
-
-	return (0);
-}
-
-static pnode_t
-visit(pnode_t node)
-{
-	int tstamp, plen, i;
-	char vers[512], model[64];
-	static pnode_t openprom_node;
-	static char version[] = "version";
-	static char model_name[] = "model";
-	static char flashprom[] = "flashprom";
-
-	/*
-	 * if name isn't 'flashprom', continue.
-	 */
-	if (prom_getproplen(node, OBP_NAME) != sizeof (flashprom))
-		return ((pnode_t)0);
-	(void) prom_getprop(node, OBP_NAME, model);
-	if (prom_strncmp(model, flashprom, sizeof (flashprom)) != 0)
-		return ((pnode_t)0);
-
-	plen = prom_getproplen(node, version);
-	if (plen <= 0 || plen > sizeof (vers))
-		return ((pnode_t)0);
-	(void) prom_getprop(node, version, vers);
-	vers[plen] = '\0';
-
-	/* Make sure it's an OBP flashprom */
-	if (vers[0] != 'O' && vers[1] != 'B' && vers[2] != 'P')
-		return ((pnode_t)0);
-
-	plen = prom_getproplen(node, model_name);
-	if (plen <= 0 || plen > sizeof (model))
-		return ((pnode_t)0);
-	(void) prom_getprop(node, model_name, model);
-	model[plen] = '\0';
-
-	tstamp = obp_timestamp(vers);
-	if (tstamp == -1) {
-		prom_printf("prom_version_check: node contains "
-		    "improperly formatted version property,\n"
-		    "\tnot checking prom version");
-		return ((pnode_t)0);
-	}
-
-	i = check_timestamp(model, tstamp);
-
-	if (i == 0)
-		return ((pnode_t)0);
-
-	/*
-	 * We know that "node"'s flashprom image contains downrev firmware,
-	 * however, a multi-board server might be running correct firmware.
-	 * Check for that case by looking at the "/openprom" node,
-	 * which always contains the running version. (We needed the
-	 * "model" value to be able to do this, so we can use it as
-	 * an index value into the table.)
-	 *
-	 * If it turns out we're running 'current' firmware,
-	 * but detect down-rev firmware, use a different return code.
-	 */
-
-	flashprom_return_code = PROM_VER64_UPGRADE;
-
-	openprom_node = prom_finddevice("/openprom");
-	if (openprom_node == OBP_BADNODE)
-		return (node);
-
-	plen = prom_getproplen(node, version);
-	if (plen <= 0 || plen > sizeof (vers))
-		return (node);
-	(void) prom_getprop(node, version, vers);
-	vers[plen] = '\0';
-
-	if (vers[0] != 'O' && vers[1] != 'B' && vers[2] != 'P') {
-		prom_printf("prom_version_check: "
-		    "unknown <version> string in </openprom>\n");
-		return (node);
-	}
-
-	tstamp = obp_timestamp(vers);
-	if (tstamp == -1) {
-		prom_printf("prom_version_check: "
-		    "</openprom> node <version> property: bad tstamp\n");
-		return (node);
-	}
-
-	i = check_timestamp(model, tstamp);
-	/*
-	 * If that returned zero, then the running version is
-	 * adequate ... so we can 'suggest' instead of 'require'.
-	 */
-	if (i == 0)
-		flashprom_return_code = PROM_VER64_SUGGEST;
-
-	return (node);
-}
-
-/*
- * visit each node in the device tree, until we get a non-null answer
- */
-static pnode_t
-walk(pnode_t node)
-{
-	pnode_t id;
-
-	if (visit(node))
-		return (node);
-
-	for (node = prom_childnode(node); node; node = prom_nextnode(node))
-		if ((id = walk(node)) != (pnode_t)0)
-			return (id);
-
-	return ((pnode_t)0);
-}
-
-/*
- * Check if the prom is 64-bit ready.
- *
- * If it's ready (or the test doesn't apply), return PROM_VER64_OK.
- * If downrev firmware is running, return PROM_VER64_UPGRADE.
- * If downrev firmware is detected (but not running), return PROM_VER64_SUGGEST.
- *
- * For PROM_VER64_UPGRADE and PROM_VER64_SUGGEST return code values:
- * Return the nodeid of the flashprom node in *nodeid.
- * and a printable message in *buf, buflen.
- */
-int
-prom_version_check(char *buf, size_t buflen, pnode_t *nodeid)
-{
-	char *p;
-	pnode_t node = flashprom_node;
-	size_t i;
-
-	/*
-	 * If we already checked, we already know the answer.
-	 */
-	if (flashprom_checked == 0) {
-		flashprom_node = node = walk(prom_rootnode());
-		flashprom_checked = 1;
-	}
-
-	if (nodeid)
-		*nodeid = node;
-
-	if (node == (pnode_t)0) {
-		if (buf && buflen)
-			*buf = '\0';
-		return (PROM_VER64_OK);
-	}
-
-	/* bzero the callers buffer */
-	for (i = buflen, p = buf; i != 0; --i, ++p)
-		*p = '\0';
-
-	/*
-	 * Do a bounded copy of the output string into the callers buffer
-	 */
-	if (buflen <= 1)
-		return (flashprom_return_code);
-
-	(void) prom_strncpy(buf, flashprom_ortp->version, buflen - 1);
-	return (flashprom_return_code);
-}
--- old/usr/src/psm/promif/ieee1275/sun4u/Makefile.files	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/promif/ieee1275/sun4u/Makefile.files	Wed Aug 28 04:02:56 2019
@@ -55,6 +55,5 @@
 	prom_sparc.o			\
 	prom_sunfire.o			\
 	prom_tlb.o			\
-	prom_vercheck.o			\
 	prom_vername.o			\
 	prom_opl.o
--- old/usr/src/psm/promif/ieee1275/sun4v/Makefile.files	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/promif/ieee1275/sun4v/Makefile.files	Wed Aug 28 04:02:56 2019
@@ -21,12 +21,11 @@
 #
 # Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
+# Copyright 2019 Peter Tribble.
 #
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-#
 # psm/promif/ieee1275/sun4u/Makefile.files
 #
-#	This Makefile defines all the promif file modules for the 
+#	This Makefile defines all the promif file modules for the
 #	directory psm/promif/ieee1275/sun4u.
 #
 
@@ -55,5 +54,4 @@
 	prom_sparc.o			\
 	prom_sun4v_api_version.o	\
 	prom_sun4v_soft_state_supported.o	\
-	prom_vercheck.o			\
 	prom_vername.o
--- old/usr/src/psm/stand/boot/sparc/common/boot_plat.c	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/stand/boot/sparc/common/boot_plat.c	Wed Aug 28 04:02:56 2019
@@ -21,6 +21,7 @@
 /*
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2019 Peter Tribbble.
  */
 
 #include <sys/param.h>
@@ -453,12 +454,9 @@
 	prom_panic("redirect_boot_path: mangled boot path!");
 }
 
-#define	PROM_VERS_MAX_LEN	64
-
 void
 system_check(void)
 {
-	char buf[PROM_VERS_MAX_LEN];
 	pnode_t	n;
 	char	arch[128];
 	size_t	len;
@@ -483,12 +481,6 @@
 		dprintf("device_type: no such property, len=%d\n", (int)len);
 	}
 
-	if (!is_sun4v && cpu_is_ultrasparc_1()) {
-		printf("UltraSPARC I processors are not supported by this "
-		    "release of Solaris.\n");
-		prom_exit_to_mon();
-	}
-
 	/*
 	 * Set up defaults per platform
 	 */
@@ -502,13 +494,6 @@
 	dprintf("default_name: %s\n", default_name);
 	dprintf("default_path: %s\n", default_path);
 	dprintf("vac: %d\n", vac);
-
-	if (prom_version_check(buf, PROM_VERS_MAX_LEN, NULL) != PROM_VER64_OK) {
-		printf("The firmware on this system does not support the 64-bit"
-		    " OS.\n\tPlease upgrade to at least the following version:"
-		    "\n\n\t%s\n", buf);
-		prom_exit_to_mon();
-	}
 }
 
 /*
--- old/usr/src/psm/stand/boot/sparc/common/boot_plat.h	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/stand/boot/sparc/common/boot_plat.h	Wed Aug 28 04:02:56 2019
@@ -21,6 +21,7 @@
 /*
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2019 Peter Tribble.
  */
 
 #ifndef _BOOT_PLAT_H
@@ -90,7 +91,6 @@
 
 extern void	fiximp(void);
 extern void	retain_nvram_page();
-extern int	cpu_is_ultrasparc_1(void);
 
 
 /* memlist.c */
--- old/usr/src/psm/stand/boot/sparc/common/machdep.c	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/stand/boot/sparc/common/machdep.c	Wed Aug 28 04:02:56 2019
@@ -36,98 +36,6 @@
 extern int is_sun4v;
 
 /*
- * Check if the CPU should default to 64-bit or not.
- * UltraSPARC-1's default to 32-bit mode.
- * Everything else defaults to 64-bit mode.
- */
-
-/*
- * Manufacturer codes for the CPUs we're interested in
- */
-#define	TI_JEDEC	0x17
-#define	SUNW_JEDEC	0x22
-
-/*
- * Implementation codes for the CPUs we're interested in
- */
-#define	IMPL_US_I	0x10
-
-static pnode_t
-visit(pnode_t node)
-{
-	int impl, manu;
-	char name[32];
-	static char ultrasparc[] = "SUNW,UltraSPARC";
-	static char implementation[] = "implementation#";
-	static char manufacturer[] = "manufacturer#";
-
-	/*
-	 * if name isn't 'SUNW,UltraSPARC', continue.
-	 */
-	if (prom_getproplen(node, "name") != sizeof (ultrasparc))
-		return ((pnode_t)0);
-	(void) prom_getprop(node, "name", name);
-	if (strncmp(name, ultrasparc, sizeof (ultrasparc)) != 0)
-		return ((pnode_t)0);
-
-	if (prom_getproplen(node, manufacturer) != sizeof (int))
-		return ((pnode_t)0);
-	(void) prom_getprop(node, manufacturer, (caddr_t)&manu);
-
-	if ((manu != SUNW_JEDEC) && (manu != TI_JEDEC))
-		return ((pnode_t)0);
-
-	if (prom_getproplen(node, implementation) != sizeof (int))
-		return ((pnode_t)0);
-	(void) prom_getprop(node, implementation, (caddr_t)&impl);
-
-	if (impl != IMPL_US_I)
-		return ((pnode_t)0);
-
-	return (node);
-}
-
-/*
- * visit each node in the device tree, until we get a non-null answer
- */
-static pnode_t
-walk(pnode_t node)
-{
-	pnode_t id;
-
-	if (visit(node))
-		return (node);
-
-	for (node = prom_childnode(node); node; node = prom_nextnode(node))
-		if ((id = walk(node)) != (pnode_t)0)
-			return (id);
-
-	return ((pnode_t)0);
-}
-
-/*
- * Check if the CPU is an UltraSPARC-1 or not.
- */
-int
-cpu_is_ultrasparc_1(void)
-{
-	static int cpu_checked;
-	static int cpu_default;
-
-	/*
-	 * If we already checked or the machine is
-	 * a sun4v, we already know the answer.
-	 */
-	if (!is_sun4v || cpu_checked == 0) {
-		if (walk(prom_rootnode()))
-			cpu_default = 1;
-		cpu_checked = 1;
-	}
-
-	return (cpu_default);
-}
-
-/*
  * Retain a page or reclaim a previously retained page of physical
  * memory for use by the prom upgrade. If successful, leave
  * an indication that a page was retained by creating a boolean
--- old/usr/src/psm/stand/lib/promif/sparcv9/ieee1275/sun4/Makefile	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/stand/lib/promif/sparcv9/ieee1275/sun4/Makefile	Wed Aug 28 04:02:56 2019
@@ -21,6 +21,7 @@
 #
 # Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
+# Copyright 2019 Peter Tribble.
 #
 # psm/stand/boot/sparcv9/ieee1275/sun4u/Makefile
 #
@@ -56,7 +57,6 @@
 	prom_mmu.c		\
 	prom_retain.c		\
 	prom_sparc.c		\
-	prom_vercheck.c		\
 	prom_vername.c
 
 KARCH =		sun4u
@@ -68,8 +68,8 @@
 PLAT_PSUN4OBJ =	$(PLAT_PSUN4FILES:%.c=$(OBJSDIR)/%.o)
 OBJS =		$(PLAT_POBJ) $(PLAT_PSUN4OBJ)
 L_OBJS =	$(OBJS:%.o=%.ln)
-L_SRCS = 	$(PLAT_PFILES:%=$(PLATDIR)/%)
-L_SRCS += 	$(PLAT_PSUN4FILES:%=$(PLATSUN4DIR)/%)
+L_SRCS =	$(PLAT_PFILES:%=$(PLATDIR)/%)
+L_SRCS +=	$(PLAT_PSUN4FILES:%=$(PLATSUN4DIR)/%)
 
 ARCHOPTS=	-Dsun4u
 ASFLAGS =	-P -D__STDC__ -D_BOOT -D_ASM
--- old/usr/src/psm/stand/lib/promif/sparcv9/ieee1275/sun4u/Makefile	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/stand/lib/promif/sparcv9/ieee1275/sun4u/Makefile	Wed Aug 28 04:02:56 2019
@@ -21,6 +21,7 @@
 #
 # Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
+# Copyright 2019 Peter Tribble.
 #
 # psm/stand/boot/sparcv9/ieee1275/sun4u/Makefile
 #
@@ -41,7 +42,7 @@
 LIBPLAT =	libplat.a
 LINTLIBPLAT =	llib-lplat.ln
 
-PLAT_PFILES = 			\
+PLAT_PFILES =			\
 	prom_serengeti.c	\
 	prom_sunfire.c		\
 	prom_tlb.c
@@ -60,7 +61,6 @@
 	prom_mmu.c		\
 	prom_retain.c		\
 	prom_sparc.c		\
-	prom_vercheck.c		\
 	prom_vername.c
 
 KARCH =		sun4u
@@ -72,8 +72,8 @@
 PLAT_PSUN4OBJ =	$(PLAT_PSUN4FILES:%.c=$(OBJSDIR)/%.o)
 OBJS =		$(PLAT_POBJ) $(PLAT_PSUN4OBJ)
 L_OBJS =	$(OBJS:%.o=%.ln)
-L_SRCS = 	$(PLAT_PFILES:%=$(PLATDIR)/%)
-L_SRCS += 	$(PLAT_PSUN4FILES:%=$(PLATSUN4DIR)/%)
+L_SRCS =	$(PLAT_PFILES:%=$(PLATDIR)/%)
+L_SRCS +=	$(PLAT_PSUN4FILES:%=$(PLATSUN4DIR)/%)
 
 ARCHOPTS=	-Dsun4u
 ASFLAGS =	-P -D__STDC__ -D_BOOT -D_ASM
--- old/usr/src/psm/stand/lib/promif/sparcv9/ieee1275/sun4v/Makefile	Wed Aug 28 04:02:56 2019
+++ new/usr/src/psm/stand/lib/promif/sparcv9/ieee1275/sun4v/Makefile	Wed Aug 28 04:02:56 2019
@@ -21,6 +21,7 @@
 #
 # Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
+# Copyright 2019 Peter tribble.
 #
 # psm/stand/boot/sparcv9/ieee1275/sun4v/Makefile
 #
@@ -57,8 +58,7 @@
 	prom_mmu.c		\
 	prom_retain.c		\
 	prom_sparc.c		\
-	prom_vername.c		\
-	prom_vercheck.c
+	prom_vername.c
 
 KARCH =		sun4v
 MMU =		sfmmu
@@ -69,8 +69,8 @@
 PLAT_PSUN4OBJ =	$(PLAT_PSUN4FILES:%.c=$(OBJSDIR)/%.o)
 OBJS =		$(PLAT_POBJ) $(PLAT_PSUN4OBJ)
 L_OBJS =	$(OBJS:%.o=%.ln)
-L_SRCS = 	$(PLAT_PFILES:%=$(PLATDIR)/%)
-L_SRCS += 	$(PLAT_PSUN4FILES:%=$(PLATSUN4DIR)/%)
+L_SRCS =	$(PLAT_PFILES:%=$(PLATDIR)/%)
+L_SRCS +=	$(PLAT_PSUN4FILES:%=$(PLATSUN4DIR)/%)
 
 ARCHOPTS=	-Dsun4v
 ASFLAGS =	-P -D__STDC__ -D_BOOT -D_ASM
--- old/usr/src/uts/common/io/openprom.c	Wed Aug 28 04:02:56 2019
+++ new/usr/src/uts/common/io/openprom.c	Wed Aug 28 04:02:56 2019
@@ -21,6 +21,7 @@
 /*
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2019 Peter Tribble.
  */
 
 /*
@@ -490,7 +491,6 @@
 #if !defined(__i386) && !defined(__amd64)
 	case OPROMGETFBNAME:
 	case OPROMDEV2PROMNAME:
-	case OPROMREADY64:
 #endif	/* !__i386 && !__amd64 */
 		if ((mode & FREAD) == 0) {
 			return (EPERM);
@@ -977,38 +977,6 @@
 
 		break;
 	}
-
-	case OPROMREADY64: {
-		struct openprom_opr64 *opr =
-		    (struct openprom_opr64 *)opp->oprom_array;
-		int i;
-		pnode_t id;
-
-		if (userbufsize < sizeof (*opr)) {
-			error = EINVAL;
-			break;
-		}
-
-		valsize = userbufsize -
-		    offsetof(struct openprom_opr64, message);
-
-		i = prom_version_check(opr->message, valsize, &id);
-		opr->return_code = i;
-		opr->nodeid = (int)id;
-
-		valsize = offsetof(struct openprom_opr64, message);
-		valsize += strlen(opr->message) + 1;
-
-		/*
-		 * copyout only the part of the user buffer we need to.
-		 */
-		if (copyout(opp, (void *)arg,
-		    (size_t)(min((uint_t)valsize, userbufsize) +
-		    sizeof (uint_t))) != 0)
-			error = EFAULT;
-		break;
-
-	}	/* case OPROMREADY64 */
 #endif	/* !__i386 && !__amd64 */
 	}	/* switch (cmd)	*/
 
--- old/usr/src/uts/common/sys/openpromio.h	Wed Aug 28 04:02:56 2019
+++ new/usr/src/uts/common/sys/openpromio.h	Wed Aug 28 04:02:56 2019
@@ -21,6 +21,7 @@
 /*
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2019 Peter Tribble.
  */
 
 #ifndef	_SYS_OPENPROMIO_H
@@ -85,7 +86,7 @@
 #define	OPROMDEV2PROMNAME (OIOC | 15)	/* Convert devfs path to prom path */
 #define	OPROMPROM2DEVNAME (OIOC | 16)	/* Convert devfs path to prom path */
 #define	OPROMGETPROPLEN	(OIOC | 17)	/* interface to raw config_ops */
-#define	OPROMREADY64	(OIOC | 18)	/* is prom 64-bit ready? */
+#define	OPROMREADY64	(OIOC | 18)	/* DEPRECATED is prom 64-bit ready? */
 #define	OPROMSETNODEID	(OIOC | 19)	/* set current node_id */
 #define	OPROMSNAPSHOT	(OIOC | 20)	/* create a snapshot */
 #define	OPROMCOPYOUT	(OIOC | 21)	/* copyout and free snapshot */
@@ -104,30 +105,6 @@
 #define	OPROMCONS_STDOUT_IS_FB	0x2	/* stdout is a framebuffer */
 #define	OPROMCONS_OPENPROM	0x4	/* supports openboot */
 
-#if defined(__sparc)
-
-/*
- * Data structure returned in oprom_array, from OPROMREADY64:
- *
- * With return codes 1 and 2, also returns nodeid, a nodeid
- * of a flashprom node, and a message string with the minimum version
- * requirement for this platform.
- */
-struct openprom_opr64 {
-	int return_code;		/* See below */
-	int nodeid;			/* Valid with positive return codes */
-	char message[1];		/* NULL terminated message string */
-};
-
-/*
- * return_code values from OPROMREADY64:
- */
-#define	OP64R_READY			0	/* ready or not applicable */
-#define	OP64R_UPGRADE_REQUIRED		1	/* Upgrade required */
-#define	OP64R_UPGRADE_RECOMMENDED 	2	/* Upgrade recommended */
-
-#endif
-
 #ifdef __cplusplus
 }
 #endif
--- old/usr/src/uts/sun/sys/promif.h	Wed Aug 28 04:02:56 2019
+++ new/usr/src/uts/sun/sys/promif.h	Wed Aug 28 04:02:56 2019
@@ -22,13 +22,12 @@
 /*
  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2019 Peter Tribble.
  */
 
 #ifndef	_SYS_PROMIF_H
 #define	_SYS_PROMIF_H
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 #include <sys/types.h>
 #include <sys/obpdefs.h>
 
@@ -64,8 +63,8 @@
  * allow the promif routines to allocate and free memory allocated from
  * the bottom 32-bits of the 64-bit address space:
  *
- * 	void *promplat_alloc(size_t);
- * 	void promplat_free(void *, size_t);
+ *	void *promplat_alloc(size_t);
+ *	void promplat_free(void *, size_t);
  *
  * The alloc function should guarantee that it will never return an
  * invalid pointer.
@@ -185,7 +184,6 @@
 extern	int		prom_is_openprom(void);
 extern	int		prom_is_p1275(void);
 extern	int		prom_version_name(char *buf, int buflen);
-extern	int		prom_version_check(char *buf, size_t len, pnode_t *n);
 
 extern	void		*prom_mon_id(void);	/* SMCC/OBP platform centric */
 
@@ -199,20 +197,6 @@
 			    uintptr_t arg5);
 
 /*
- * Return code values from prom_version_check:
- *
- * This routine uses past-prediction mode to determine if the firmware
- * on the current system is 64-bit ready.
- *
- * return code 2 could happen on a board-based server with a slave CPU board
- * running down-rev firmware and the current master running adequate fw.
- */
-#define	PROM_VER64_OK		0	/* Prom is 64-bit ready (or n/a) */
-#define	PROM_VER64_UPGRADE	1	/* Down-rev firmware is running */
-#define	PROM_VER64_SUGGEST	2	/* Down-rev firmware detected .. */
-					/* .. but not currently active */
-
-/*
  * Administrative group: OBP only.
  */
 extern	int		prom_sethandler(void (*v0_func)(), void (*v2_func)());
--- old/usr/src/uts/sun4/os/startup.c	Wed Aug 28 04:02:56 2019
+++ new/usr/src/uts/sun4/os/startup.c	Wed Aug 28 04:02:56 2019
@@ -276,11 +276,6 @@
 
 
 /*
- * Hook for down-rev firmware
- */
-static void do_prom_version_check(void);
-
-/*
  * After receiving a thermal interrupt, this is the number of seconds
  * to delay before shutting off the system, assuming
  * shutdown fails.  Use /etc/system to change the delay if this isn't
@@ -1517,12 +1512,6 @@
 	mod_setup();
 
 	/*
-	 * If we are running firmware that isn't 64-bit ready
-	 * then complain and halt.
-	 */
-	do_prom_version_check();
-
-	/*
 	 * Initialize system parameters
 	 */
 	param_init();
@@ -3088,43 +3077,6 @@
 	prom_interpret(create_node, 0, 0, 0, 0, 0);
 }
 
-
-static void
-do_prom_version_check(void)
-{
-	int i;
-	pnode_t node;
-	char buf[64];
-	static char drev[] = "Down-rev firmware detected%s\n"
-	    "\tPlease upgrade to the following minimum version:\n"
-	    "\t\t%s\n";
-
-	i = prom_version_check(buf, sizeof (buf), &node);
-
-	if (i == PROM_VER64_OK)
-		return;
-
-	if (i == PROM_VER64_UPGRADE) {
-		cmn_err(CE_WARN, drev, "", buf);
-
-#ifdef	DEBUG
-		prom_enter_mon();	/* Type 'go' to continue */
-		cmn_err(CE_WARN, "Booting with down-rev firmware\n");
-		return;
-#else
-		halt(0);
-#endif
-	}
-
-	/*
-	 * The other possibility is that this is a server running
-	 * good firmware, but down-rev firmware was detected on at
-	 * least one other cpu board. We just complain if we see
-	 * that.
-	 */
-	cmn_err(CE_WARN, drev, " on one or more CPU boards", buf);
-}
-
 
 /*
  * Must be defined in platform dependent code.
