svn commit: r346801 - in projects/runtime-coverage-v2: lib/libc/gen lib/libvgl libexec/rc stand stand/common stand/efi/loader stand/i386/loader sys/arm/allwinner sys/arm/allwinner/a10 sys/arm/allwi...

Enji Cooper ngie at FreeBSD.org
Sun Apr 28 02:27:11 UTC 2019


Author: ngie
Date: Sun Apr 28 02:27:04 2019
New Revision: 346801
URL: https://svnweb.freebsd.org/changeset/base/346801

Log:
  MFhead at r346800

Added:
  projects/runtime-coverage-v2/lib/libc/gen/auxv.3
     - copied unchanged from r346800, head/lib/libc/gen/auxv.3
  projects/runtime-coverage-v2/stand/common/vdisk.c
     - copied unchanged from r346800, head/stand/common/vdisk.c
Modified:
  projects/runtime-coverage-v2/lib/libc/gen/Makefile.inc
  projects/runtime-coverage-v2/lib/libvgl/bitmap.c
  projects/runtime-coverage-v2/lib/libvgl/main.c
  projects/runtime-coverage-v2/lib/libvgl/mouse.c
  projects/runtime-coverage-v2/lib/libvgl/simple.c
  projects/runtime-coverage-v2/libexec/rc/rc.initdiskless
  projects/runtime-coverage-v2/stand/common/help.common
  projects/runtime-coverage-v2/stand/efi/loader/conf.c
  projects/runtime-coverage-v2/stand/i386/loader/conf.c
  projects/runtime-coverage-v2/stand/loader.mk
  projects/runtime-coverage-v2/sys/arm/allwinner/a10/a10_padconf.c
  projects/runtime-coverage-v2/sys/arm/allwinner/aw_rtc.c
  projects/runtime-coverage-v2/sys/arm/allwinner/aw_syscon.c
  projects/runtime-coverage-v2/sys/arm/allwinner/clkng/ccu_de2.c
  projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/range_tree.h
  projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_systrace_args.c
  projects/runtime-coverage-v2/sys/kern/systrace_args.c
  projects/runtime-coverage-v2/sys/kern/vfs_bio.c
  projects/runtime-coverage-v2/sys/modules/fusefs/Makefile
  projects/runtime-coverage-v2/sys/powerpc/aim/aim_machdep.c
  projects/runtime-coverage-v2/sys/powerpc/aim/mp_cpudep.c
  projects/runtime-coverage-v2/sys/powerpc/include/pcb.h
  projects/runtime-coverage-v2/sys/powerpc/include/spr.h
  projects/runtime-coverage-v2/sys/powerpc/powerpc/cpu.c
  projects/runtime-coverage-v2/sys/powerpc/powerpc/exec_machdep.c
  projects/runtime-coverage-v2/sys/powerpc/powerpc/genassym.c
  projects/runtime-coverage-v2/sys/powerpc/powerpc/swtch32.S
  projects/runtime-coverage-v2/sys/powerpc/powerpc/swtch64.S
  projects/runtime-coverage-v2/sys/powerpc/powerpc/trap.c
  projects/runtime-coverage-v2/tools/boot/ci-qemu-test.sh
Directory Properties:
  projects/runtime-coverage-v2/   (props changed)
  projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/   (props changed)

Modified: projects/runtime-coverage-v2/lib/libc/gen/Makefile.inc
==============================================================================
--- projects/runtime-coverage-v2/lib/libc/gen/Makefile.inc	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/lib/libc/gen/Makefile.inc	Sun Apr 28 02:27:04 2019	(r346801)
@@ -193,6 +193,7 @@ SYM_MAPS+=${LIBC_SRCTOP}/gen/Symbol.map
 
 MAN+=	alarm.3 \
 	arc4random.3 \
+	auxv.3 \
 	basename.3 \
 	cap_rights_get.3 \
 	cap_sandboxed.3 \
@@ -321,6 +322,7 @@ MAN+=	alarm.3 \
 
 MLINKS+=arc4random.3 arc4random_buf.3 \
 	arc4random.3 arc4random_uniform.3
+MLINKS+=auxv.3 elf_aux_info.3
 MLINKS+=ctermid.3 ctermid_r.3
 MLINKS+=devname.3 devname_r.3
 MLINKS+=devname.3 fdevname.3

Copied: projects/runtime-coverage-v2/lib/libc/gen/auxv.3 (from r346800, head/lib/libc/gen/auxv.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/runtime-coverage-v2/lib/libc/gen/auxv.3	Sun Apr 28 02:27:04 2019	(r346801, copy of r346800, head/lib/libc/gen/auxv.3)
@@ -0,0 +1,86 @@
+.\"
+.\" Copyright (c) 2019 Ian Lepore <ian at freebsd.org>
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 25, 2019
+.Dt ELF_AUX_INFO 3
+.Os
+.Sh NAME
+.Nm elf_aux_info
+.Nd extract data from the elf auxiliary vector of the current process
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In sys/auxv.h
+.Ft int
+.Fn elf_aux_info "int aux" "void *buf" "int buflen"
+.Sh DESCRIPTION
+The
+.Fn elf_aux_info
+function retrieves the auxiliary info vector requested in
+.Va aux .
+The information is stored into the provided buffer if it will fit.
+The following values, defined in
+.In sys/elf_common.h
+can be requested:
+.Bl -tag -width AT_OSRELDATE
+.It AT_CANARY
+The canary value for SSP.
+.It AT_HWCAP
+CPU / hardware feature flags.
+.It AT_HWCAP2
+CPU / hardware feature flags.
+.It AT_NCPUS
+Number of CPUs.
+.It AT_OSRELDATE
+Kernel OSRELDATE.
+.It AT_PAGESIZES
+Vector of page sizes.
+.It AT_PAGESZ
+Page size in bytes.
+.It AT_TIMEKEEP
+Pointer to VDSO timehands (for library internal use).
+.El
+.Sh RETURN VALUES
+Returns zero on success, or an error number on failure.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EINVAL
+An unknown item was requested.
+.It Bq Er EINVAL
+The provided buffer was not the right size for the requested item.
+.It Bq Er ENOENT
+The requested item is not available.
+.El
+.Sh HISTORY
+The
+.Fn elf_aux_info
+function appeared in
+.Fx 12.0 .
+.Sh BUGS
+Only a small subset of available auxiliary info vector items are
+accessible with this function.
+Some items require a "right-sized" buffer while others just require a
+"big enough" buffer.

Modified: projects/runtime-coverage-v2/lib/libvgl/bitmap.c
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/bitmap.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/lib/libvgl/bitmap.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -207,7 +207,7 @@ __VGLBitmapCopy(VGLBitmap *src, int srcx, int srcy,
   yextra = 0;
   ystep = 1;
   if (src->Bitmap == dst->Bitmap && srcy < dsty) {
-    yend = srcy;
+    yend = srcy - 1;
     yextra = hight - 1;
     ystep = -1;
   }

Modified: projects/runtime-coverage-v2/lib/libvgl/main.c
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/main.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/lib/libvgl/main.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -42,8 +42,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/consio.h>
 #include "vgl.h"
 
-/* XXX Direct Color 24bits modes unsupported */
-
 #define min(x, y)	(((x) < (y)) ? (x) : (y))
 #define max(x, y)	(((x) > (y)) ? (x) : (y))
 
@@ -64,6 +62,7 @@ static unsigned int VGLCurWindow;
 static int VGLInitDone = 0;
 static video_info_t VGLOldModeInfo;
 static vid_info_t VGLOldVInfo;
+static int VGLOldVXsize;
 
 void
 VGLEnd()
@@ -85,6 +84,8 @@ struct vt_mode smode;
     munmap(VGLMem, VGLAdpInfo.va_window_size);
   }
 
+  ioctl(0, FBIO_SETLINEWIDTH, &VGLOldVXsize);
+
   if (VGLOldMode >= M_VESA_BASE)
     ioctl(0, _IO('V', VGLOldMode - M_VESA_BASE), 0);
   else
@@ -220,11 +221,9 @@ VGLInit(int mode)
     case 2:
       VGLDisplay->Type = VIDBUF16;
       break;
-#if notyet
     case 3:
       VGLDisplay->Type = VIDBUF24;
       break;
-#endif
     case 4:
       VGLDisplay->Type = VIDBUF32;
       break;
@@ -322,6 +321,7 @@ VGLInit(int mode)
   depth = VGLModeInfo.vi_depth;
   if (depth == 15)
     depth = 16;
+  VGLOldVXsize =
   VGLDisplay->VXsize = VGLAdpInfo.va_line_width
 			   *8/(depth/VGLModeInfo.vi_planes);
   VGLDisplay->VYsize = VGLBufSize/VGLModeInfo.vi_planes/VGLAdpInfo.va_line_width;

Modified: projects/runtime-coverage-v2/lib/libvgl/mouse.c
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/mouse.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/lib/libvgl/mouse.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -105,37 +105,11 @@ static volatile sig_atomic_t VGLMsuppressint;
 void
 VGLMousePointerShow()
 {
-  byte buf[MOUSE_IMG_SIZE*MOUSE_IMG_SIZE*4];
-  VGLBitmap buffer =
-    VGLBITMAP_INITIALIZER(MEMBUF, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE, buf);
-  byte crtcidx, crtcval, gdcidx, gdcval;
-  int pos;
-
   if (!VGLMouseVisible) {
     INTOFF();
     VGLMouseVisible = 1;
-    if (VGLModeInfo.vi_mem_model != V_INFO_MM_DIRECT) {
-      crtcidx = inb(0x3c4);
-      crtcval = inb(0x3c5);
-      gdcidx = inb(0x3ce);
-      gdcval = inb(0x3cf);
-    }
-    buffer.PixelBytes = VGLDisplay->PixelBytes;
-    __VGLBitmapCopy(&VGLVDisplay, VGLMouseXpos, VGLMouseYpos, 
-                    &buffer, 0, 0, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE);
-    for (pos = 0; pos <  MOUSE_IMG_SIZE*MOUSE_IMG_SIZE; pos++)
-      if (VGLMouseAndMask->Bitmap[pos])
-        bcopy(&VGLMouseOrMask->Bitmap[pos*VGLDisplay->PixelBytes],
-              &buffer.Bitmap[pos*VGLDisplay->PixelBytes],
-              VGLDisplay->PixelBytes);
-    __VGLBitmapCopy(&buffer, 0, 0, VGLDisplay, 
-		  VGLMouseXpos, VGLMouseYpos, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE);
-    if (VGLModeInfo.vi_mem_model != V_INFO_MM_DIRECT) {
-      outb(0x3c4, crtcidx);
-      outb(0x3c5, crtcval);
-      outb(0x3ce, gdcidx);
-      outb(0x3cf, gdcval);
-    }
+    __VGLBitmapCopy(&VGLVDisplay, VGLMouseXpos, VGLMouseYpos, VGLDisplay, 
+		  VGLMouseXpos, VGLMouseYpos, MOUSE_IMG_SIZE, -MOUSE_IMG_SIZE);
     INTON();
   }
 }
@@ -143,25 +117,11 @@ VGLMousePointerShow()
 void
 VGLMousePointerHide()
 {
-  byte crtcidx, crtcval, gdcidx, gdcval;
-
   if (VGLMouseVisible) {
     INTOFF();
     VGLMouseVisible = 0;
-    if (VGLModeInfo.vi_mem_model != V_INFO_MM_DIRECT) {
-      crtcidx = inb(0x3c4);
-      crtcval = inb(0x3c5);
-      gdcidx = inb(0x3ce);
-      gdcval = inb(0x3cf);
-    }
     __VGLBitmapCopy(&VGLVDisplay, VGLMouseXpos, VGLMouseYpos, VGLDisplay, 
                     VGLMouseXpos, VGLMouseYpos, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE);
-    if (VGLModeInfo.vi_mem_model != V_INFO_MM_DIRECT) {
-      outb(0x3c4, crtcidx);
-      outb(0x3c5, crtcval);
-      outb(0x3ce, gdcidx);
-      outb(0x3cf, gdcval);
-    }
     INTON();
   }
 }

Modified: projects/runtime-coverage-v2/lib/libvgl/simple.c
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/simple.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/lib/libvgl/simple.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -51,7 +51,7 @@ static byte VGLSavePaletteBlue[256];
 void
 VGLSetXY(VGLBitmap *object, int x, int y, u_long color)
 {
-  int offset, undermouse;
+  int offset, soffset, undermouse;
 
   VGLCheckSwitch();
   if (x>=0 && x<object->VXsize && y>=0 && y<object->VYsize) {
@@ -67,7 +67,6 @@ VGLSetXY(VGLBitmap *object, int x, int y, u_long color
       switch (object->Type) {
       case VIDBUF8S:
       case VIDBUF16S:
-      case VIDBUF24S:
       case VIDBUF32S:
         offset = VGLSetSegment(offset);
         /* FALLTHROUGH */
@@ -92,6 +91,25 @@ VGLSetXY(VGLBitmap *object, int x, int y, u_long color
           break;
         }
         break;
+      case VIDBUF24S:
+        soffset = VGLSetSegment(offset);
+        color = htole32(color);
+        switch (VGLAdpInfo.va_window_size - soffset) {
+        case 1:
+          memcpy(&object->Bitmap[soffset], &color, 1);
+          soffset = VGLSetSegment(offset + 1);
+          memcpy(&object->Bitmap[soffset], (byte *)&color + 1, 2);
+          break;
+        case 2:
+          memcpy(&object->Bitmap[soffset], &color, 2);
+          soffset = VGLSetSegment(offset + 2);
+          memcpy(&object->Bitmap[soffset], (byte *)&color + 2, 1);
+          break;
+        default:
+          memcpy(&object->Bitmap[soffset], &color, 3);
+          break;
+        }
+        break;
       case VIDBUF8X:
         outb(0x3c4, 0x02);
         outb(0x3c5, 0x01 << (x&0x3));
@@ -115,12 +133,19 @@ set_planar:
   }
 }
 
-static u_long
-__VGLGetXY(VGLBitmap *object, int x, int y)
+u_long
+VGLGetXY(VGLBitmap *object, int x, int y)
 {
-  int offset;
   u_long color;
+  int offset;
 
+  VGLCheckSwitch();
+  if (x<0 || x>=object->VXsize || y<0 || y>=object->VYsize)
+    return 0;
+  if (object == VGLDisplay)
+    object = &VGLVDisplay;
+  else if (object->Type != MEMBUF)
+    return 0;		/* invalid */
   offset = (y * object->VXsize + x) * object->PixelBytes;
   switch (object->PixelBytes) {
   case 1:
@@ -139,19 +164,6 @@ __VGLGetXY(VGLBitmap *object, int x, int y)
   return 0;		/* invalid */
 }
 
-u_long
-VGLGetXY(VGLBitmap *object, int x, int y)
-{
-  VGLCheckSwitch();
-  if (x<0 || x>=object->VXsize || y<0 || y>=object->VYsize)
-    return 0;
-  if (object == VGLDisplay)
-    object = &VGLVDisplay;
-  else if (object->Type != MEMBUF)
-    return 0;		/* invalid */
-  return __VGLGetXY(object, x, y);
-}
-
  /*
   * Symmetric Double Step Line Algorithm by Brian Wyvill from
   * "Graphics Gems", Academic Press, 1990.
@@ -458,7 +470,7 @@ VGLClear(VGLBitmap *object, u_long color)
   VGLCheckSwitch();
   if (object == VGLDisplay) {
     VGLMouseFreeze();
-    mouseoverlap = VGLMouseOverlap(0, 0, object->Xsize, object->Ysize);
+    mouseoverlap = VGLMouseOverlap(0, 0, object->VXsize, object->VYsize);
     if (mouseoverlap)
       VGLMousePointerHide();
     VGLClear(&VGLVDisplay, color);

Modified: projects/runtime-coverage-v2/libexec/rc/rc.initdiskless
==============================================================================
--- projects/runtime-coverage-v2/libexec/rc/rc.initdiskless	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/libexec/rc/rc.initdiskless	Sun Apr 28 02:27:04 2019	(r346801)
@@ -208,7 +208,11 @@ handle_remount() { # $1 = mount point
 # The 'auto' parameter will attempt to use tmpfs(5), falls back to md(4).
 # $1 is size in 512-byte sectors, $2 is the mount point.
 mount_md() {
-    /sbin/mdmfs -s $1 auto $2
+    if [ ${o_verbose} -gt 0 ] ; then
+        /sbin/mdmfs -XL -s $1 auto $2
+    else
+        /sbin/mdmfs -s $1 auto $2
+    fi
 }
 
 # Create the memory filesystem if it has not already been created

Modified: projects/runtime-coverage-v2/stand/common/help.common
==============================================================================
--- projects/runtime-coverage-v2/stand/common/help.common	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/stand/common/help.common	Sun Apr 28 02:27:04 2019	(r346801)
@@ -99,6 +99,13 @@
 	List loaded modules. If [-v] is specified, print more details.
 
 ################################################################################
+# Tmap-vdisk DMap virtual disk
+
+	map-vdisk filename
+
+	Map file as virtual disk.
+
+################################################################################
 # Tmore DPage files
 
 	more <filename> [<filename> ...]
@@ -395,6 +402,13 @@
 	unload
 
 	This command removes any kernel and all loaded modules from memory.
+
+################################################################################
+# Tunmap-vdisk DUnmap virtual disk
+
+	unmap-vdisk diskname
+
+	Delete virtual disk mapping.
 
 ################################################################################
 # Tunset DUnset a variable

Copied: projects/runtime-coverage-v2/stand/common/vdisk.c (from r346800, head/stand/common/vdisk.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/runtime-coverage-v2/stand/common/vdisk.c	Sun Apr 28 02:27:04 2019	(r346801, copy of r346800, head/stand/common/vdisk.c)
@@ -0,0 +1,417 @@
+/*-
+ * Copyright 2019 Toomas Soome <tsoome at me.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <stand.h>
+#include <stdarg.h>
+#include <machine/_inttypes.h>
+#include <bootstrap.h>
+#include <sys/disk.h>
+#include <sys/errno.h>
+#include <sys/queue.h>
+#include <sys/param.h>
+#include <disk.h>
+
+static int vdisk_init(void);
+static int vdisk_strategy(void *, int, daddr_t, size_t, char *, size_t *);
+static int vdisk_open(struct open_file *, ...);
+static int vdisk_close(struct open_file *);
+static int vdisk_ioctl(struct open_file *, u_long, void *);
+static int vdisk_print(int);
+
+struct devsw vdisk_dev = {
+	.dv_name = "vdisk",
+	.dv_type = DEVT_DISK,
+	.dv_init = vdisk_init,
+	.dv_strategy = vdisk_strategy,
+	.dv_open = vdisk_open,
+	.dv_close = vdisk_close,
+	.dv_ioctl = vdisk_ioctl,
+	.dv_print = vdisk_print,
+	.dv_cleanup = NULL
+};
+
+typedef STAILQ_HEAD(vdisk_info_list, vdisk_info) vdisk_info_list_t;
+
+typedef struct vdisk_info
+{
+	STAILQ_ENTRY(vdisk_info)	vdisk_link; /* link in device list */
+	char			*vdisk_path;
+	int			vdisk_unit;
+	int			vdisk_fd;
+	uint64_t		vdisk_size;	/* size in bytes */
+	uint32_t		vdisk_sectorsz;
+	uint32_t		vdisk_open;	/* reference counter */
+} vdisk_info_t;
+
+static vdisk_info_list_t vdisk_list;	/* list of mapped vdisks. */
+
+static vdisk_info_t *
+vdisk_get_info(struct devdesc *dev)
+{
+	vdisk_info_t *vd;
+
+	STAILQ_FOREACH(vd, &vdisk_list, vdisk_link) {
+		if (vd->vdisk_unit == dev->d_unit)
+			return (vd);
+	}
+	return (vd);
+}
+
+COMMAND_SET(map_vdisk, "map-vdisk", "map file as virtual disk", command_mapvd);
+
+static int
+command_mapvd(int argc, char *argv[])
+{
+	vdisk_info_t *vd, *p;
+	struct stat sb;
+
+	if (argc != 2) {
+		printf("usage: %s filename\n", argv[0]);
+		return (CMD_ERROR);
+	}
+
+	STAILQ_FOREACH(vd, &vdisk_list, vdisk_link) {
+		if (strcmp(vd->vdisk_path, argv[1]) == 0) {
+			printf("%s: file %s is already mapped as %s%d\n",
+			    argv[0], argv[1], vdisk_dev.dv_name,
+			    vd->vdisk_unit);
+			return (CMD_ERROR);
+		}
+	}
+
+	if (stat(argv[1], &sb) < 0) {
+		/*
+		 * ENOSYS is really ENOENT because we did try to walk
+		 * through devsw list to try to open this file.
+		 */
+		if (errno == ENOSYS)
+			errno = ENOENT;
+
+		printf("%s: stat failed: %s\n", argv[0], strerror(errno));
+		return (CMD_ERROR);
+	}
+
+	/*
+	 * Avoid mapping small files.
+	 */
+	if (sb.st_size < 1024 * 1024) {
+		printf("%s: file %s is too small.\n", argv[0], argv[1]);
+		return (CMD_ERROR);
+	}
+
+	vd = calloc(1, sizeof (*vd));
+	if (vd == NULL) {
+		printf("%s: out of memory\n", argv[0]);
+		return (CMD_ERROR);
+	}
+	vd->vdisk_path = strdup(argv[1]);
+	if (vd->vdisk_path == NULL) {
+		free (vd);
+		printf("%s: out of memory\n", argv[0]);
+		return (CMD_ERROR);
+	}
+	vd->vdisk_fd = open(vd->vdisk_path, O_RDONLY);
+	if (vd->vdisk_fd < 0) {
+		printf("%s: open failed: %s\n", argv[0], strerror(errno));
+		free(vd->vdisk_path);
+		free(vd);
+		return (CMD_ERROR);
+	}
+
+	vd->vdisk_size = sb.st_size;
+	vd->vdisk_sectorsz = DEV_BSIZE;
+	STAILQ_FOREACH(p, &vdisk_list, vdisk_link) {
+		vdisk_info_t *n;
+		if (p->vdisk_unit == vd->vdisk_unit) {
+			vd->vdisk_unit++;
+			continue;
+		}
+		n = STAILQ_NEXT(p, vdisk_link);
+		if (p->vdisk_unit < vd->vdisk_unit) {
+			if (n == NULL) {
+				/* p is last elem */
+				STAILQ_INSERT_TAIL(&vdisk_list, vd, vdisk_link);
+				break;
+			}
+			if (n->vdisk_unit > vd->vdisk_unit) {
+				/* p < vd < n */
+				STAILQ_INSERT_AFTER(&vdisk_list, p, vd,
+				    vdisk_link);
+				break;
+			}
+			/* else n < vd or n == vd */
+			vd->vdisk_unit++;
+			continue;
+		}
+		/* p > vd only if p is the first element */
+		STAILQ_INSERT_HEAD(&vdisk_list, vd, vdisk_link);
+		break;
+	}
+
+	/* if the list was empty or contiguous */
+	if (p == NULL)
+		STAILQ_INSERT_TAIL(&vdisk_list, vd, vdisk_link);
+
+	printf("%s: file %s is mapped as %s%d\n", argv[0], vd->vdisk_path,
+	    vdisk_dev.dv_name, vd->vdisk_unit);
+	return (CMD_OK);
+}
+
+COMMAND_SET(unmap_vdisk, "unmap-vdisk", "unmap virtual disk", command_unmapvd);
+
+/*
+ * unmap-vdisk vdiskX
+ */
+static int
+command_unmapvd(int argc, char *argv[])
+{
+	size_t len;
+	vdisk_info_t *vd;
+	long unit;
+	char *end;
+
+	if (argc != 2) {
+		printf("usage: %s %sN\n", argv[0], vdisk_dev.dv_name);
+		return (CMD_ERROR);
+	}
+
+	len = strlen(vdisk_dev.dv_name);
+	if (strncmp(vdisk_dev.dv_name, argv[1], len) != 0) {
+		printf("%s: unknown device %s\n", argv[0], argv[1]);
+		return (CMD_ERROR);
+	}
+	errno = 0;
+	unit = strtol(argv[1] + len, &end, 10);
+	if (errno != 0 || (*end != '\0' && strcmp(end, ":") != 0)) {
+		printf("%s: unknown device %s\n", argv[0], argv[1]);
+		return (CMD_ERROR);
+	}
+
+	STAILQ_FOREACH(vd, &vdisk_list, vdisk_link) {
+		if (vd->vdisk_unit == unit)
+			break;
+	}
+
+	if (vd == NULL) {
+		printf("%s: unknown device %s\n", argv[0], argv[1]);
+		return (CMD_ERROR);
+	}
+
+	if (vd->vdisk_open != 0) {
+		printf("%s: %s is in use, unable to unmap.\n",
+		    argv[0], argv[1]);
+		return (CMD_ERROR);
+	}
+
+	STAILQ_REMOVE(&vdisk_list, vd, vdisk_info, vdisk_link);
+	close(vd->vdisk_fd);
+	free(vd->vdisk_path);
+	free(vd);
+	printf("%s (%s) unmapped\n", argv[1], vd->vdisk_path);
+
+	return (CMD_OK);
+}
+
+static int
+vdisk_init(void)
+{
+	STAILQ_INIT(&vdisk_list);
+	return (0);
+}
+
+static int
+vdisk_strategy(void *devdata, int rw, daddr_t blk, size_t size,
+    char *buf, size_t *rsize)
+{
+	struct disk_devdesc *dev;
+	vdisk_info_t *vd;
+	ssize_t rv;
+
+	dev = devdata;
+	if (dev == NULL)
+		return (EINVAL);
+	vd = vdisk_get_info((struct devdesc *)dev);
+	if (vd == NULL)
+		return (EINVAL);
+
+	if (size == 0 || (size % 512) != 0)
+		return (EIO);
+
+	if (dev->dd.d_dev->dv_type == DEVT_DISK) {
+		daddr_t offset;
+
+		offset = dev->d_offset * vd->vdisk_sectorsz;
+		offset /= 512;
+		blk += offset;
+	}
+	if (lseek(vd->vdisk_fd, blk << 9, SEEK_SET) == -1)
+		return (EIO);
+
+	errno = 0;
+	switch (rw & F_MASK) {
+	case F_READ:
+		rv = read(vd->vdisk_fd, buf, size);
+		break;
+	case F_WRITE:
+		rv = write(vd->vdisk_fd, buf, size);
+		break;
+	default:
+		return (ENOSYS);
+	}
+
+	if (errno == 0 && rsize != NULL) {
+		*rsize = rv;
+	}
+	return (errno);
+}
+
+static int
+vdisk_open(struct open_file *f, ...)
+{
+	va_list args;
+	struct disk_devdesc *dev;
+	vdisk_info_t *vd;
+	int rc = 0;
+
+	va_start(args, f);
+	dev = va_arg(args, struct disk_devdesc *);
+	va_end(args);
+	if (dev == NULL)
+		return (EINVAL);
+	vd = vdisk_get_info((struct devdesc *)dev);
+	if (vd == NULL)
+		return (EINVAL);
+
+	if (dev->dd.d_dev->dv_type == DEVT_DISK) {
+		rc = disk_open(dev, vd->vdisk_size, vd->vdisk_sectorsz);
+	}
+	if (rc == 0)
+		vd->vdisk_open++;
+	return (rc);
+}
+
+static int
+vdisk_close(struct open_file *f)
+{
+	struct disk_devdesc *dev;
+	vdisk_info_t *vd;
+
+	dev = (struct disk_devdesc *)(f->f_devdata);
+	if (dev == NULL)
+		return (EINVAL);
+	vd = vdisk_get_info((struct devdesc *)dev);
+	if (vd == NULL)
+		return (EINVAL);
+
+	vd->vdisk_open--;
+	if (dev->dd.d_dev->dv_type == DEVT_DISK)
+		return (disk_close(dev));
+	return (0);
+}
+
+static int
+vdisk_ioctl(struct open_file *f, u_long cmd, void *data)
+{
+	struct disk_devdesc *dev;
+	vdisk_info_t *vd;
+	int rc;
+
+	dev = (struct disk_devdesc *)(f->f_devdata);
+	if (dev == NULL)
+		return (EINVAL);
+	vd = vdisk_get_info((struct devdesc *)dev);
+	if (vd == NULL)
+		return (EINVAL);
+
+	if (dev->dd.d_dev->dv_type == DEVT_DISK) {
+		rc = disk_ioctl(dev, cmd, data);
+		if (rc != ENOTTY)
+			return (rc);
+	}
+
+	switch (cmd) {
+	case DIOCGSECTORSIZE:
+		*(u_int *)data = vd->vdisk_sectorsz;
+		break;
+	case DIOCGMEDIASIZE:
+		*(uint64_t *)data = vd->vdisk_size;
+		break;
+	default:
+		return (ENOTTY);
+	}
+	return (0);
+}
+
+static int
+vdisk_print(int verbose)
+{
+	int ret = 0;
+	vdisk_info_t *vd;
+	char line[80];
+
+	if (STAILQ_EMPTY(&vdisk_list))
+		return (ret);
+
+	printf("%s devices:", vdisk_dev.dv_name);
+	if ((ret = pager_output("\n")) != 0)
+		return (ret);
+
+	STAILQ_FOREACH(vd, &vdisk_list, vdisk_link) {
+		struct disk_devdesc vd_dev;
+
+		if (verbose) {
+			printf("  %s", vd->vdisk_path);
+			if ((ret = pager_output("\n")) != 0)
+				break;
+		}
+		snprintf(line, sizeof(line),
+		    "    %s%d", vdisk_dev.dv_name, vd->vdisk_unit);
+		printf("%s:    %" PRIu64 " X %u blocks", line,
+		    vd->vdisk_size / vd->vdisk_sectorsz,
+		    vd->vdisk_sectorsz);
+		if ((ret = pager_output("\n")) != 0)
+			break;
+
+		vd_dev.dd.d_dev = &vdisk_dev;
+		vd_dev.dd.d_unit = vd->vdisk_unit;
+		vd_dev.d_slice = -1;
+		vd_dev.d_partition = -1;
+
+		ret = disk_open(&vd_dev, vd->vdisk_size, vd->vdisk_sectorsz);
+		if (ret == 0) {
+			ret = disk_print(&vd_dev, line, verbose);
+			disk_close(&vd_dev);
+			if (ret != 0)
+				break;
+		} else {
+			ret = 0;
+		}
+	}
+
+	return (ret);
+}

Modified: projects/runtime-coverage-v2/stand/efi/loader/conf.c
==============================================================================
--- projects/runtime-coverage-v2/stand/efi/loader/conf.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/stand/efi/loader/conf.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -33,11 +33,14 @@ __FBSDID("$FreeBSD$");
 #include <efilib.h>
 #include <efizfs.h>
 
+extern struct devsw vdisk_dev;
+
 struct devsw *devsw[] = {
 	&efipart_fddev,
 	&efipart_cddev,
 	&efipart_hddev,
 	&efinet_dev,
+	&vdisk_dev,
 #ifdef EFI_ZFS_BOOT
 	&zfs_dev,
 #endif

Modified: projects/runtime-coverage-v2/stand/i386/loader/conf.c
==============================================================================
--- projects/runtime-coverage-v2/stand/i386/loader/conf.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/stand/i386/loader/conf.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
 #if defined(LOADER_FIREWIRE_SUPPORT)
 extern struct devsw fwohci;
 #endif
+extern struct devsw vdisk_dev;
 
 /* Exported for libstand */
 struct devsw *devsw[] = {
@@ -60,6 +61,7 @@ struct devsw *devsw[] = {
 #if defined(LOADER_FIREWIRE_SUPPORT)
     &fwohci,
 #endif
+    &vdisk_dev,
 #if defined(LOADER_ZFS_SUPPORT)
     &zfs_dev,
 #endif

Modified: projects/runtime-coverage-v2/stand/loader.mk
==============================================================================
--- projects/runtime-coverage-v2/stand/loader.mk	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/stand/loader.mk	Sun Apr 28 02:27:04 2019	(r346801)
@@ -31,7 +31,7 @@ SRCS+=	metadata.c
 .endif
 
 .if ${LOADER_DISK_SUPPORT:Uyes} == "yes"
-SRCS+=	disk.c part.c
+SRCS+=	disk.c part.c vdisk.c
 .endif
 
 .if ${LOADER_NET_SUPPORT:Uno} == "yes"

Modified: projects/runtime-coverage-v2/sys/arm/allwinner/a10/a10_padconf.c
==============================================================================
--- projects/runtime-coverage-v2/sys/arm/allwinner/a10/a10_padconf.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/arm/allwinner/a10/a10_padconf.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -77,8 +77,8 @@ const static struct allwinner_pins a10_pins[] = {
 	{"PB17", 1, 17, {"gpio_in", "gpio_out", "spi2", "jtag", NULL, NULL, NULL, NULL}},
 	{"PB18", 1, 18, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}},
 	{"PB19", 1, 19, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}},
-	{"PB20", 1, 20, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}},
-	{"PB21", 1, 21, {"gpio_in", "gpio_out", "i2c1", NULL, NULL, NULL, NULL, NULL}},
+	{"PB20", 1, 20, {"gpio_in", "gpio_out", "i2c2", NULL, NULL, NULL, NULL, NULL}},
+	{"PB21", 1, 21, {"gpio_in", "gpio_out", "i2c2", NULL, NULL, NULL, NULL, NULL}},
 	{"PB22", 1, 22, {"gpio_in", "gpio_out", "uart0", "ir1", NULL, NULL, NULL, NULL}},
 	{"PB23", 1, 23, {"gpio_in", "gpio_out", "uart0", "ir1", NULL, NULL, NULL, NULL}},
 

Modified: projects/runtime-coverage-v2/sys/arm/allwinner/aw_rtc.c
==============================================================================
--- projects/runtime-coverage-v2/sys/arm/allwinner/aw_rtc.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/arm/allwinner/aw_rtc.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -137,6 +137,7 @@ static struct ofw_compat_data compat_data[] = {
 	{ "allwinner,sun7i-a20-rtc", (uintptr_t) &a20_conf },
 	{ "allwinner,sun6i-a31-rtc", (uintptr_t) &a31_conf },
 	{ "allwinner,sun8i-h3-rtc", (uintptr_t) &h3_conf },
+	{ "allwinner,sun50i-h5-rtc", (uintptr_t) &h3_conf },
 	{ NULL, 0 }
 };
 

Modified: projects/runtime-coverage-v2/sys/arm/allwinner/aw_syscon.c
==============================================================================
--- projects/runtime-coverage-v2/sys/arm/allwinner/aw_syscon.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/arm/allwinner/aw_syscon.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -53,6 +53,7 @@ static struct ofw_compat_data compat_data[] = {
 	{"allwinner,sun8i-a83t-system-controller", 1},
 	{"allwinner,sun8i-h3-system-controller", 1},
 	{"allwinner,sun8i-h3-system-control", 1},
+	{"allwinner,sun50i-h5-system-control", 1},
 	{NULL,             0}
 };
 

Modified: projects/runtime-coverage-v2/sys/arm/allwinner/clkng/ccu_de2.c
==============================================================================
--- projects/runtime-coverage-v2/sys/arm/allwinner/clkng/ccu_de2.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/arm/allwinner/clkng/ccu_de2.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -115,7 +115,6 @@ static struct aw_ccung_clk de2_ccu_clks[] = {
 
 static struct ofw_compat_data compat_data[] = {
 	{"allwinner,sun50i-a64-de2-clk", 1},
-	{"allwinner,sun50i-h5-de2-clk", 1},
 	{NULL,             0}
 };
 

Modified: projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
==============================================================================
--- projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -498,8 +498,10 @@ dsl_pool_close(dsl_pool_t *dp)
 	rrw_destroy(&dp->dp_config_rwlock);
 	mutex_destroy(&dp->dp_lock);
 	taskq_destroy(dp->dp_vnrele_taskq);
-	if (dp->dp_blkstats != NULL)
+	if (dp->dp_blkstats != NULL) {
+		mutex_destroy(&dp->dp_blkstats->zab_lock);
 		kmem_free(dp->dp_blkstats, sizeof (zfs_all_blkstats_t));
+	}
 	kmem_free(dp, sizeof (dsl_pool_t));
 }
 

Modified: projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/range_tree.h
==============================================================================
--- projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/range_tree.h	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/range_tree.h	Sun Apr 28 02:27:04 2019	(r346801)
@@ -84,7 +84,7 @@ void range_tree_init(void);
 void range_tree_fini(void);
 range_tree_t *range_tree_create_impl(range_tree_ops_t *ops, void *arg,
     int (*avl_compare)(const void*, const void*), uint64_t gap);
-	range_tree_t *range_tree_create(range_tree_ops_t *ops, void *arg);
+range_tree_t *range_tree_create(range_tree_ops_t *ops, void *arg);
 void range_tree_destroy(range_tree_t *rt);
 boolean_t range_tree_contains(range_tree_t *rt, uint64_t start, uint64_t size);
 range_seg_t *range_tree_find(range_tree_t *rt, uint64_t start, uint64_t size);
@@ -108,13 +108,6 @@ void range_tree_clear(range_tree_t *rt, uint64_t start
 void range_tree_vacate(range_tree_t *rt, range_tree_func_t *func, void *arg);
 void range_tree_walk(range_tree_t *rt, range_tree_func_t *func, void *arg);
 range_seg_t *range_tree_first(range_tree_t *rt);
-
-void rt_avl_create(range_tree_t *rt, void *arg);
-void rt_avl_destroy(range_tree_t *rt, void *arg);
-void rt_avl_add(range_tree_t *rt, range_seg_t *rs, void *arg);
-void rt_avl_remove(range_tree_t *rt, range_seg_t *rs, void *arg);
-void rt_avl_vacate(range_tree_t *rt, void *arg);
-extern struct range_tree_ops rt_avl_ops;
 
 void rt_avl_create(range_tree_t *rt, void *arg);
 void rt_avl_destroy(range_tree_t *rt, void *arg);

Modified: projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_systrace_args.c
==============================================================================
--- projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_systrace_args.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_systrace_args.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -10460,7 +10460,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	/* readlinkat */
 	case 500:
 		if (ndx == 0 || ndx == 1)
-			p = "int";
+			p = "ssize_t";
 		break;
 	/* renameat */
 	case 501:

Modified: projects/runtime-coverage-v2/sys/kern/systrace_args.c
==============================================================================
--- projects/runtime-coverage-v2/sys/kern/systrace_args.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/kern/systrace_args.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -10421,7 +10421,7 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 	/* readlinkat */
 	case 500:
 		if (ndx == 0 || ndx == 1)
-			p = "int";
+			p = "ssize_t";
 		break;
 	/* renameat */
 	case 501:

Modified: projects/runtime-coverage-v2/sys/kern/vfs_bio.c
==============================================================================
--- projects/runtime-coverage-v2/sys/kern/vfs_bio.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/kern/vfs_bio.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -4424,7 +4424,7 @@ bufwait(struct buf *bp)
  *	read error occurred, or if the op was a write.  B_CACHE is never
  *	set if the buffer is invalid or otherwise uncacheable.
  *
- *	biodone does not mess with B_INVAL, allowing the I/O routine or the
+ *	bufdone does not mess with B_INVAL, allowing the I/O routine or the
  *	initiator to leave B_INVAL set to brelse the buffer out of existence
  *	in the biodone routine.
  */

Modified: projects/runtime-coverage-v2/sys/modules/fusefs/Makefile
==============================================================================
--- projects/runtime-coverage-v2/sys/modules/fusefs/Makefile	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/modules/fusefs/Makefile	Sun Apr 28 02:27:04 2019	(r346801)
@@ -8,6 +8,22 @@ SRCS=	vnode_if.h \
 	fuse_vfsops.c fuse_vnops.c fuse_internal.c fuse_main.c
 
 # Symlink for backwards compatibility with systems installed at 12.0 or older
+.if ${MACHINE_CPUARCH} != "powerpc"
 SYMLINKS=	${KMOD}.ko ${KMODDIR}/fuse.ko
+.else
+# Some PPC systems use msdosfs for /boot, which can't handle links or symlinks
+afterinstall: alias alias_debug
+alias: .PHONY
+	${INSTALL} -T release -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \
+	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${KMODDIR}/fuse.ko
+.if defined(DEBUG_FLAGS) && !defined(INSTALL_NODEBUG) && "${MK_KERNEL_SYMBOLS}" != "no"
+alias_debug: .PHONY
+	${INSTALL} -T debug -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \
+	    ${_INSTALLFLAGS} ${PROG}.debug \
+	    ${DESTDIR}${KERN_DEBUGDIR}${KMODDIR}/fuse.ko
+.else
+alias_debug: .PHONY
+.endif
+.endif
 
 .include <bsd.kmod.mk>

Modified: projects/runtime-coverage-v2/sys/powerpc/aim/aim_machdep.c
==============================================================================
--- projects/runtime-coverage-v2/sys/powerpc/aim/aim_machdep.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/powerpc/aim/aim_machdep.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -213,6 +213,7 @@ aim_early_init(vm_offset_t fdt, vm_offset_t toc, vm_of
 		case IBMPOWER7PLUS:
 		case IBMPOWER8:
 		case IBMPOWER8E:
+		case IBMPOWER8NVL:
 		case IBMPOWER9:
 			/* XXX: get from ibm,slb-size in device tree */
 			n_slbs = 32;

Modified: projects/runtime-coverage-v2/sys/powerpc/aim/mp_cpudep.c
==============================================================================
--- projects/runtime-coverage-v2/sys/powerpc/aim/mp_cpudep.c	Sun Apr 28 02:24:22 2019	(r346800)
+++ projects/runtime-coverage-v2/sys/powerpc/aim/mp_cpudep.c	Sun Apr 28 02:27:04 2019	(r346801)
@@ -85,6 +85,7 @@ cpudep_ap_early_bootstrap(void)
 		break;
 	case IBMPOWER8:
 	case IBMPOWER8E:
+	case IBMPOWER8NVL:
 	case IBMPOWER9:

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list