Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Jul 2017 18:54:34 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r321351 - in projects/clang500-import: contrib/netbsd-tests/lib/libc/regex/data lib/libc/tests/sys lib/librt share/mk sys/amd64/amd64 sys/conf sys/dev/e1000 sys/dev/netmap sys/fs/nfscli...
Message-ID:  <201707211854.v6LIsYPX071000@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Fri Jul 21 18:54:34 2017
New Revision: 321351
URL: https://svnweb.freebsd.org/changeset/base/321351

Log:
  Merge ^/head r321307 through r321350.

Added:
  projects/clang500-import/sys/powerpc/cpufreq/mpc85xx_jog.c
     - copied unchanged from r321350, head/sys/powerpc/cpufreq/mpc85xx_jog.c
Modified:
  projects/clang500-import/contrib/netbsd-tests/lib/libc/regex/data/subexp.in
  projects/clang500-import/lib/libc/tests/sys/Makefile
  projects/clang500-import/lib/librt/Symbol.map
  projects/clang500-import/lib/librt/aio.c
  projects/clang500-import/share/mk/bsd.files.mk
  projects/clang500-import/share/mk/bsd.sys.mk
  projects/clang500-import/sys/amd64/amd64/pmap.c
  projects/clang500-import/sys/conf/files.powerpc
  projects/clang500-import/sys/dev/e1000/if_em.c
  projects/clang500-import/sys/dev/netmap/netmap_freebsd.c
  projects/clang500-import/sys/dev/netmap/netmap_generic.c
  projects/clang500-import/sys/dev/netmap/netmap_mem2.c
  projects/clang500-import/sys/fs/nfsclient/nfs_clrpcops.c
  projects/clang500-import/sys/kern/uipc_socket.c
  projects/clang500-import/sys/net/netmap_user.h
  projects/clang500-import/sys/netpfil/ipfw/ip_fw_table.c
  projects/clang500-import/sys/ufs/ffs/ffs_snapshot.c
  projects/clang500-import/sys/vm/vm_object.h
  projects/clang500-import/sys/x86/x86/mp_x86.c
  projects/clang500-import/tests/sys/aio/lio_test.c
  projects/clang500-import/usr.bin/ktrace/ktrace.1
  projects/clang500-import/usr.bin/truss/truss.1
  projects/clang500-import/usr.sbin/bsdinstall/scripts/hardening
Directory Properties:
  projects/clang500-import/   (props changed)
  projects/clang500-import/contrib/netbsd-tests/   (props changed)

Modified: projects/clang500-import/contrib/netbsd-tests/lib/libc/regex/data/subexp.in
==============================================================================
--- projects/clang500-import/contrib/netbsd-tests/lib/libc/regex/data/subexp.in	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/contrib/netbsd-tests/lib/libc/regex/data/subexp.in	Fri Jul 21 18:54:34 2017	(r321351)
@@ -11,6 +11,9 @@ a(b+)c		-	abc	abc	b
 a(b+)c		-	abbbc	abbbc	bbb
 a(b*)c		-	ac	ac	@c
 (a|ab)(bc([de]+)f|cde)	-	abcdef	abcdef	a,bcdef,de
+# Begin FreeBSD
+a\(b\|c\)d	b	ab|cd	ab|cd	b|c
+# End FreeBSD
 # the regression tester only asks for 9 subexpressions
 a(b)(c)(d)(e)(f)(g)(h)(i)(j)k	-	abcdefghijk	abcdefghijk	b,c,d,e,f,g,h,i,j
 a(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)l	-	abcdefghijkl	abcdefghijkl	b,c,d,e,f,g,h,i,j,k

Modified: projects/clang500-import/lib/libc/tests/sys/Makefile
==============================================================================
--- projects/clang500-import/lib/libc/tests/sys/Makefile	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/lib/libc/tests/sys/Makefile	Fri Jul 21 18:54:34 2017	(r321351)
@@ -87,7 +87,7 @@ FILESGROUPS+=		truncate_test_FILES
 truncate_test_FILES=	truncate_test.root_owned
 truncate_test_FILESDIR=	${TESTSDIR}
 truncate_test_FILESMODE= 0600
-truncate_test_FILESOWNER= root
+truncate_test_FILESOWN= root
 truncate_test_FILESGRP= wheel
 truncate_test_FILESPACKAGE=	${PACKAGE}
 

Modified: projects/clang500-import/lib/librt/Symbol.map
==============================================================================
--- projects/clang500-import/lib/librt/Symbol.map	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/lib/librt/Symbol.map	Fri Jul 21 18:54:34 2017	(r321351)
@@ -26,6 +26,7 @@ FBSD_1.0 {
 };
 
 FBSD_1.5 {
+	lio_listio;
 	mq_getfd_np;
 	timer_oshandle_np;
 };

Modified: projects/clang500-import/lib/librt/aio.c
==============================================================================
--- projects/clang500-import/lib/librt/aio.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/lib/librt/aio.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -44,6 +44,7 @@ __weak_reference(__aio_write, aio_write);
 __weak_reference(__aio_return, aio_return);
 __weak_reference(__aio_waitcomplete, aio_waitcomplete);
 __weak_reference(__aio_fsync, aio_fsync);
+__weak_reference(__lio_listio, lio_listio);
 
 typedef void (*aio_func)(union sigval val, struct aiocb *iocb);
 
@@ -53,6 +54,8 @@ extern ssize_t __sys_aio_waitcomplete(struct aiocb **i
 extern ssize_t __sys_aio_return(struct aiocb *iocb);
 extern int __sys_aio_error(struct aiocb *iocb);
 extern int __sys_aio_fsync(int op, struct aiocb *iocb);
+extern int __sys_lio_listio(int mode, struct aiocb * const list[], int nent,
+    struct sigevent *sig);
 
 static void
 aio_dispatch(struct sigev_node *sn)
@@ -63,8 +66,8 @@ aio_dispatch(struct sigev_node *sn)
 }
 
 static int
-aio_sigev_alloc(struct aiocb *iocb, struct sigev_node **sn,
-	struct sigevent *saved_ev)
+aio_sigev_alloc(sigev_id_t id, struct sigevent *sigevent,
+    struct sigev_node **sn, struct sigevent *saved_ev)
 {
 	if (__sigev_check_init()) {
 		/* This might be that thread library is not enabled. */
@@ -72,15 +75,15 @@ aio_sigev_alloc(struct aiocb *iocb, struct sigev_node 
 		return (-1);
 	}
 
-	*sn = __sigev_alloc(SI_ASYNCIO, &iocb->aio_sigevent, NULL, 1);
+	*sn = __sigev_alloc(SI_ASYNCIO, sigevent, NULL, 1);
 	if (*sn == NULL) {
 		errno = EAGAIN;
 		return (-1);
 	}
 	
-	*saved_ev = iocb->aio_sigevent;
-	(*sn)->sn_id = (sigev_id_t)iocb;
-	__sigev_get_sigevent(*sn, &iocb->aio_sigevent, (*sn)->sn_id);
+	*saved_ev = *sigevent;
+	(*sn)->sn_id = id;
+	__sigev_get_sigevent(*sn, sigevent, (*sn)->sn_id);
 	(*sn)->sn_dispatch = aio_dispatch;
 
 	__sigev_list_lock();
@@ -102,7 +105,8 @@ aio_io(struct aiocb *iocb, int (*sysfunc)(struct aiocb
 		return (ret);
 	}
 
-	ret = aio_sigev_alloc(iocb, &sn, &saved_ev);
+	ret = aio_sigev_alloc((sigev_id_t)iocb, &iocb->aio_sigevent, &sn,
+			      &saved_ev);
 	if (ret)
 		return (ret);
 	ret = sysfunc(iocb);
@@ -183,11 +187,38 @@ __aio_fsync(int op, struct aiocb *iocb)
 	if (iocb->aio_sigevent.sigev_notify != SIGEV_THREAD)
 		return __sys_aio_fsync(op, iocb);
 
-	ret = aio_sigev_alloc(iocb, &sn, &saved_ev);
+	ret = aio_sigev_alloc((sigev_id_t)iocb, &iocb->aio_sigevent, &sn,
+			      &saved_ev);
 	if (ret)
 		return (ret);
 	ret = __sys_aio_fsync(op, iocb);
 	iocb->aio_sigevent = saved_ev;
+	if (ret != 0) {
+		err = errno;
+		__sigev_list_lock();
+		__sigev_delete_node(sn);
+		__sigev_list_unlock();
+		errno = err;
+	}
+	return (ret);
+}
+
+int
+__lio_listio(int mode, struct aiocb * const list[], int nent,
+    struct sigevent *sig)
+{
+	struct sigev_node *sn;
+	struct sigevent saved_ev;
+	int ret, err;
+
+	if (sig == NULL || sig->sigev_notify != SIGEV_THREAD)
+		return (__sys_lio_listio(mode, list, nent, sig));
+
+	ret = aio_sigev_alloc((sigev_id_t)list, sig, &sn, &saved_ev);
+	if (ret)
+		return (ret);
+	ret = __sys_lio_listio(mode, list, nent, sig);
+	*sig = saved_ev;
 	if (ret != 0) {
 		err = errno;
 		__sigev_list_lock();

Modified: projects/clang500-import/share/mk/bsd.files.mk
==============================================================================
--- projects/clang500-import/share/mk/bsd.files.mk	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/share/mk/bsd.files.mk	Fri Jul 21 18:54:34 2017	(r321351)
@@ -26,6 +26,10 @@ installfiles: installfiles-${group}
 
 ${group}OWN?=	${SHAREOWN}
 ${group}GRP?=	${SHAREGRP}
+.if ${MK_INSTALL_AS_USER} == "yes"
+${group}OWN=	${SHAREOWN}
+${group}GRP=	${SHAREGRP}
+.endif
 ${group}MODE?=	${SHAREMODE}
 ${group}DIR?=	${BINDIR}
 STAGE_SETS+=	${group:C,[/*],_,g}
@@ -46,6 +50,10 @@ _${group}FILES=
     defined(${group}NAME_${file:T}) || defined(${group}NAME)
 ${group}OWN_${file:T}?=	${${group}OWN}
 ${group}GRP_${file:T}?=	${${group}GRP}
+.if ${MK_INSTALL_AS_USER} == "yes"
+${group}OWN_${file:T}=	${SHAREOWN}
+${group}GRP_${file:T}=	${SHAREGRP}
+.endif
 ${group}MODE_${file:T}?=	${${group}MODE}
 ${group}DIR_${file:T}?=	${${group}DIR}
 .if defined(${group}NAME)

Modified: projects/clang500-import/share/mk/bsd.sys.mk
==============================================================================
--- projects/clang500-import/share/mk/bsd.sys.mk	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/share/mk/bsd.sys.mk	Fri Jul 21 18:54:34 2017	(r321351)
@@ -145,6 +145,23 @@ CWARNFLAGS+=	-Wno-error=misleading-indentation	\
 		-Wno-error=unused-const-variable
 .endif
 
+# GCC 7.1.0
+.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 70100
+CWARNFLAGS+=	-Wno-error=deprecated			\
+		-Wno-error=pointer-compare		\
+		-Wno-error=format-truncation		\
+		-Wno-error=implicit-fallthrough		\
+		-Wno-error=expansion-to-defined		\
+		-Wno-error=int-in-bool-context		\
+		-Wno-error=bool-operation		\
+		-Wno-error=format-overflow		\
+		-Wno-error=stringop-overflow		\
+		-Wno-error=memset-elt-size		\
+		-Wno-error=int-in-bool-context		\
+		-Wno-error=unused-const-variable	\
+		-Wno-error=nonnull
+.endif
+
 # How to handle FreeBSD custom printf format specifiers.
 .if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 30600
 FORMAT_EXTENSIONS=	-D__printf__=__freebsd_kprintf__

Modified: projects/clang500-import/sys/amd64/amd64/pmap.c
==============================================================================
--- projects/clang500-import/sys/amd64/amd64/pmap.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/amd64/amd64/pmap.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -274,8 +274,6 @@ pmap_modified_bit(pmap_t pmap)
 	return (mask);
 }
 
-extern	struct pcpu __pcpu[];
-
 #if !defined(DIAGNOSTIC)
 #ifdef __GNUC_GNU_INLINE__
 #define PMAP_INLINE	__attribute__((__gnu_inline__)) inline
@@ -1063,8 +1061,8 @@ pmap_bootstrap(vm_paddr_t *firstaddr)
 			kernel_pmap->pm_pcids[i].pm_pcid = PMAP_PCID_KERN;
 			kernel_pmap->pm_pcids[i].pm_gen = 1;
 		}
-		__pcpu[0].pc_pcid_next = PMAP_PCID_KERN + 1;
-		__pcpu[0].pc_pcid_gen = 1;
+		PCPU_SET(pcid_next, PMAP_PCID_KERN + 1);
+		PCPU_SET(pcid_gen, 1);
 		/*
 		 * pcpu area for APs is zeroed during AP startup.
 		 * pc_pcid_next and pc_pcid_gen are initialized by AP

Modified: projects/clang500-import/sys/conf/files.powerpc
==============================================================================
--- projects/clang500-import/sys/conf/files.powerpc	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/conf/files.powerpc	Fri Jul 21 18:54:34 2017	(r321351)
@@ -15,7 +15,7 @@ font.h				optional	sc			\
 	clean	"font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
 #
 # There is only an asm version on ppc64.
-cddl/compat/opensolaris/kern/opensolaris_atomic.c			optional zfs powerpc | dtrace powerpc compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_atomic.c			optional zfs powerpc | dtrace powerpc | zfs powerpcspe | dtrace powerpcspe compile-with "${ZFS_C}"
 cddl/contrib/opensolaris/common/atomic/powerpc64/opensolaris_atomic.S	optional zfs powerpc64 | dtrace powerpc64 compile-with "${ZFS_S}"
 cddl/dev/dtrace/powerpc/dtrace_asm.S		optional dtrace compile-with "${DTRACE_S}"
 cddl/dev/dtrace/powerpc/dtrace_subr.c		optional dtrace compile-with "${DTRACE_C}"
@@ -118,6 +118,7 @@ powerpc/booke/platform_bare.c	optional	booke
 powerpc/booke/pmap.c		optional	booke
 powerpc/booke/spe.c		optional	powerpcspe
 powerpc/cpufreq/dfs.c		optional	cpufreq
+powerpc/cpufreq/mpc85xx_jog.c	optional	cpufreq mpc85xx
 powerpc/cpufreq/pcr.c		optional	cpufreq aim
 powerpc/cpufreq/pmufreq.c	optional	cpufreq aim pmu
 powerpc/fpu/fpu_add.c		optional	fpu_emu

Modified: projects/clang500-import/sys/dev/e1000/if_em.c
==============================================================================
--- projects/clang500-import/sys/dev/e1000/if_em.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/dev/e1000/if_em.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -1663,9 +1663,7 @@ em_if_timer(if_ctx_t ctx, uint16_t qid)
 	if (qid != 0)
 		return;
 
-	em_if_update_admin_status(ctx);
-	em_update_stats_counters(adapter);
-
+	iflib_admin_intr_deferred(ctx);
 	/* Reset LAA into RAR[0] on 82571 */
 	if ((adapter->hw.mac.type == e1000_82571) &&
 	    e1000_get_laa_state_82571(&adapter->hw))
@@ -1781,6 +1779,7 @@ em_if_update_admin_status(if_ctx_t ctx)
 		iflib_link_state_change(ctx, LINK_STATE_DOWN, ifp->if_baudrate);
 		printf("link state changed to down\n");
 	}
+	em_update_stats_counters(adapter);
 
 	E1000_WRITE_REG(&adapter->hw, E1000_IMS, EM_MSIX_LINK | E1000_IMS_LSC);
 }

Modified: projects/clang500-import/sys/dev/netmap/netmap_freebsd.c
==============================================================================
--- projects/clang500-import/sys/dev/netmap/netmap_freebsd.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/dev/netmap/netmap_freebsd.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -671,7 +671,7 @@ nm_os_pt_memdev_iomap(struct ptnetmap_memdev *ptn_dev,
 			&rid, 0, ~0, *mem_size, RF_ACTIVE);
 	if (ptn_dev->pci_mem == NULL) {
 		*nm_paddr = 0;
-		*nm_addr = 0;
+		*nm_addr = NULL;
 		return ENOMEM;
 	}
 

Modified: projects/clang500-import/sys/dev/netmap/netmap_generic.c
==============================================================================
--- projects/clang500-import/sys/dev/netmap/netmap_generic.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/dev/netmap/netmap_generic.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/socket.h> /* sockaddrs */
 #include <sys/selinfo.h>
 #include <net/if.h>
+#include <net/if_types.h>
 #include <net/if_var.h>
 #include <machine/bus.h>        /* bus_dmamap_* in netmap_kern.h */
 
@@ -1197,6 +1198,13 @@ generic_netmap_attach(struct ifnet *ifp)
 	struct netmap_generic_adapter *gna;
 	int retval;
 	u_int num_tx_desc, num_rx_desc;
+
+#ifdef __FreeBSD__
+	if (ifp->if_type == IFT_LOOP) {
+		D("if_loop is not supported by %s", __func__);
+		return EINVAL;
+	}
+#endif
 
 	num_tx_desc = num_rx_desc = netmap_generic_ringsize; /* starting point */
 

Modified: projects/clang500-import/sys/dev/netmap/netmap_mem2.c
==============================================================================
--- projects/clang500-import/sys/dev/netmap/netmap_mem2.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/dev/netmap/netmap_mem2.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -2146,7 +2146,7 @@ netmap_mem_pt_guest_deref(struct netmap_mem_d *nmd)
 	    if (ptnmd->ptn_dev) {
 		nm_os_pt_memdev_iounmap(ptnmd->ptn_dev);
 	    }
-	    ptnmd->nm_addr = 0;
+	    ptnmd->nm_addr = NULL;
 	    ptnmd->nm_paddr = 0;
 	}
 }

Modified: projects/clang500-import/sys/fs/nfsclient/nfs_clrpcops.c
==============================================================================
--- projects/clang500-import/sys/fs/nfsclient/nfs_clrpcops.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/fs/nfsclient/nfs_clrpcops.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -4674,6 +4674,11 @@ nfsrpc_createsession(struct nfsmount *nmp, struct nfsc
 	struct nfsrv_descript *nd = &nfsd;
 	int error, irdcnt;
 
+	/* Make sure nm_rsize, nm_wsize is set. */
+	if (nmp->nm_rsize > NFS_MAXBSIZE || nmp->nm_rsize == 0)
+		nmp->nm_rsize = NFS_MAXBSIZE;
+	if (nmp->nm_wsize > NFS_MAXBSIZE || nmp->nm_wsize == 0)
+		nmp->nm_wsize = NFS_MAXBSIZE;
 	nfscl_reqstart(nd, NFSPROC_CREATESESSION, nmp, NULL, 0, NULL, NULL);
 	NFSM_BUILD(tl, uint32_t *, 4 * NFSX_UNSIGNED);
 	*tl++ = sep->nfsess_clientid.lval[0];

Modified: projects/clang500-import/sys/kern/uipc_socket.c
==============================================================================
--- projects/clang500-import/sys/kern/uipc_socket.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/kern/uipc_socket.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -3020,19 +3020,23 @@ integer:
 			goto integer;
 
 		case SO_SNDBUF:
-			optval = so->so_snd.sb_hiwat;
+			optval = SOLISTENING(so) ? so->sol_sbsnd_hiwat :
+			    so->so_snd.sb_hiwat;
 			goto integer;
 
 		case SO_RCVBUF:
-			optval = so->so_rcv.sb_hiwat;
+			optval = SOLISTENING(so) ? so->sol_sbrcv_hiwat :
+			    so->so_rcv.sb_hiwat;
 			goto integer;
 
 		case SO_SNDLOWAT:
-			optval = so->so_snd.sb_lowat;
+			optval = SOLISTENING(so) ? so->sol_sbsnd_lowat :
+			    so->so_snd.sb_lowat;
 			goto integer;
 
 		case SO_RCVLOWAT:
-			optval = so->so_rcv.sb_lowat;
+			optval = SOLISTENING(so) ? so->sol_sbrcv_lowat :
+			    so->so_rcv.sb_lowat;
 			goto integer;
 
 		case SO_SNDTIMEO:

Modified: projects/clang500-import/sys/net/netmap_user.h
==============================================================================
--- projects/clang500-import/sys/net/netmap_user.h	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/net/netmap_user.h	Fri Jul 21 18:54:34 2017	(r321351)
@@ -309,16 +309,16 @@ typedef void (*nm_cb_t)(u_char *, const struct nm_pkth
  * ifname	(netmap:foo or vale:foo) is the port name
  *		a suffix can indicate the follwing:
  *		^		bind the host (sw) ring pair
- *		*		bind host and NIC ring pairs (transparent)
+ *		*		bind host and NIC ring pairs
  *		-NN		bind individual NIC ring pair
  *		{NN		bind master side of pipe NN
  *		}NN		bind slave side of pipe NN
  *		a suffix starting with / and the following flags,
  *		in any order:
  *		x		exclusive access
- *		z		zero copy monitor
- *		t		monitor tx side
- *		r		monitor rx side
+ *		z		zero copy monitor (both tx and rx)
+ *		t		monitor tx side (copy monitor)
+ *		r		monitor rx side (copy monitor)
  *		R		bind only RX ring(s)
  *		T		bind only TX ring(s)
  *
@@ -634,9 +634,10 @@ nm_open(const char *ifname, const struct nmreq *req,
 	const char *vpname = NULL;
 #define MAXERRMSG 80
 	char errmsg[MAXERRMSG] = "";
-	enum { P_START, P_RNGSFXOK, P_GETNUM, P_FLAGS, P_FLAGSOK } p_state;
+	enum { P_START, P_RNGSFXOK, P_GETNUM, P_FLAGS, P_FLAGSOK, P_MEMID } p_state;
 	int is_vale;
 	long num;
+	uint16_t nr_arg2 = 0;
 
 	if (strncmp(ifname, "netmap:", 7) &&
 			strncmp(ifname, NM_BDG_NAME, strlen(NM_BDG_NAME))) {
@@ -665,7 +666,7 @@ nm_open(const char *ifname, const struct nmreq *req,
 	}
 
 	/* scan for a separator */
-	for (; *port && !index("-*^{}/", *port); port++)
+	for (; *port && !index("-*^{}/@", *port); port++)
 		;
 
 	if (is_vale && !nm_is_identifier(vpname, port)) {
@@ -707,6 +708,9 @@ nm_open(const char *ifname, const struct nmreq *req,
 			case '/': /* start of flags */
 				p_state = P_FLAGS;
 				break;
+			case '@': /* start of memid */
+				p_state = P_MEMID;
+				break;
 			default:
 				snprintf(errmsg, MAXERRMSG, "unknown modifier: '%c'", *port);
 				goto fail;
@@ -718,6 +722,9 @@ nm_open(const char *ifname, const struct nmreq *req,
 			case '/':
 				p_state = P_FLAGS;
 				break;
+			case '@':
+				p_state = P_MEMID;
+				break;
 			default:
 				snprintf(errmsg, MAXERRMSG, "unexpected character: '%c'", *port);
 				goto fail;
@@ -736,6 +743,11 @@ nm_open(const char *ifname, const struct nmreq *req,
 			break;
 		case P_FLAGS:
 		case P_FLAGSOK:
+			if (*port == '@') {
+				port++;
+				p_state = P_MEMID;
+				break;
+			}
 			switch (*port) {
 			case 'x':
 				nr_flags |= NR_EXCLUSIVE;
@@ -762,17 +774,25 @@ nm_open(const char *ifname, const struct nmreq *req,
 			port++;
 			p_state = P_FLAGSOK;
 			break;
+		case P_MEMID:
+			if (nr_arg2 != 0) {
+				snprintf(errmsg, MAXERRMSG, "double setting of memid");
+				goto fail;
+			}
+			num = strtol(port, (char **)&port, 10);
+			if (num <= 0) {
+				snprintf(errmsg, MAXERRMSG, "invalid memid %ld, must be >0", num);
+				goto fail;
+			}
+			nr_arg2 = num;
+			p_state = P_RNGSFXOK;
+			break;
 		}
 	}
 	if (p_state != P_START && p_state != P_RNGSFXOK && p_state != P_FLAGSOK) {
 		snprintf(errmsg, MAXERRMSG, "unexpected end of port name");
 		goto fail;
 	}
-	if ((nr_flags & NR_ZCOPY_MON) &&
-	   !(nr_flags & (NR_MONITOR_TX|NR_MONITOR_RX))) {
-		snprintf(errmsg, MAXERRMSG, "'z' used but neither 'r', nor 't' found");
-		goto fail;
-	}
 	ND("flags: %s %s %s %s",
 			(nr_flags & NR_EXCLUSIVE) ? "EXCLUSIVE" : "",
 			(nr_flags & NR_ZCOPY_MON) ? "ZCOPY_MON" : "",
@@ -799,6 +819,8 @@ nm_open(const char *ifname, const struct nmreq *req,
 	/* these fields are overridden by ifname and flags processing */
 	d->req.nr_ringid |= nr_ringid;
 	d->req.nr_flags |= nr_flags;
+	if (nr_arg2)
+		d->req.nr_arg2 = nr_arg2;
 	memcpy(d->req.nr_name, ifname, namelen);
 	d->req.nr_name[namelen] = '\0';
 	/* optionally import info from parent */
@@ -848,7 +870,7 @@ nm_open(const char *ifname, const struct nmreq *req,
 
 	nr_reg = d->req.nr_flags & NR_REG_MASK;
 
-	if (nr_reg ==  NR_REG_SW) { /* host stack */
+	if (nr_reg == NR_REG_SW) { /* host stack */
 		d->first_tx_ring = d->last_tx_ring = d->req.nr_tx_rings;
 		d->first_rx_ring = d->last_rx_ring = d->req.nr_rx_rings;
 	} else if (nr_reg ==  NR_REG_ALL_NIC) { /* only nic */

Modified: projects/clang500-import/sys/netpfil/ipfw/ip_fw_table.c
==============================================================================
--- projects/clang500-import/sys/netpfil/ipfw/ip_fw_table.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/netpfil/ipfw/ip_fw_table.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -1658,7 +1658,7 @@ ipfw_unref_table(struct ip_fw_chain *ch, uint16_t kidx
 }
 
 /*
- * Lookup an arbtrary key @paddr of legth @plen in table @tbl.
+ * Lookup an arbitrary key @paddr of length @plen in table @tbl.
  * Stores found value in @val.
  *
  * Returns 1 if key was found.

Copied: projects/clang500-import/sys/powerpc/cpufreq/mpc85xx_jog.c (from r321350, head/sys/powerpc/cpufreq/mpc85xx_jog.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/sys/powerpc/cpufreq/mpc85xx_jog.c	Fri Jul 21 18:54:34 2017	(r321351, copy of r321350, head/sys/powerpc/cpufreq/mpc85xx_jog.c)
@@ -0,0 +1,343 @@
+/*-
+ * Copyright (c) 2017 Justin Hibbits
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/cpu.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/smp.h>
+
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <machine/cpu.h>
+
+#include <powerpc/mpc85xx/mpc85xx.h>
+
+#include "cpufreq_if.h"
+
+/* No worries about uint32_t math overflow in here, because the highest
+ * multiplier supported is 4, and the highest speed part is still well below
+ * 2GHz.
+ */
+
+#define	GUTS_PORPLLSR		(CCSRBAR_VA + 0xe0000)
+#define	GUTS_PMJCR		(CCSRBAR_VA + 0xe007c)
+#define	  PMJCR_RATIO_M		  0x3f
+#define	  PMJCR_CORE_MULT(x,y)	  ((x) << (16 + ((y) * 8)))
+#define	  PMJCR_GET_CORE_MULT(x,y)	  (((x) >> (16 + ((y) * 8))) & 0x3f)
+#define	GUTS_POWMGTCSR		(CCSRBAR_VA + 0xe0080)
+#define	  POWMGTCSR_JOG		  0x00200000
+#define	  POWMGTCSR_INT_MASK	  0x00000f00
+
+#define	MHZ	1000000
+
+struct mpc85xx_jog_softc {
+	device_t dev;
+	int	cpu;
+	int	low;
+	int	high;
+	int	min_freq;
+};
+
+static struct ofw_compat_data *mpc85xx_jog_devcompat(void);
+static void	mpc85xx_jog_identify(driver_t *driver, device_t parent);
+static int	mpc85xx_jog_probe(device_t dev);
+static int	mpc85xx_jog_attach(device_t dev);
+static int	mpc85xx_jog_settings(device_t dev, struct cf_setting *sets, int *count);
+static int	mpc85xx_jog_set(device_t dev, const struct cf_setting *set);
+static int	mpc85xx_jog_get(device_t dev, struct cf_setting *set);
+static int	mpc85xx_jog_type(device_t dev, int *type);
+
+static device_method_t mpc85xx_jog_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_identify,	mpc85xx_jog_identify),
+	DEVMETHOD(device_probe,		mpc85xx_jog_probe),
+	DEVMETHOD(device_attach,	mpc85xx_jog_attach),
+
+	/* cpufreq interface */
+	DEVMETHOD(cpufreq_drv_set,	mpc85xx_jog_set),
+	DEVMETHOD(cpufreq_drv_get,	mpc85xx_jog_get),
+	DEVMETHOD(cpufreq_drv_type,	mpc85xx_jog_type),
+	DEVMETHOD(cpufreq_drv_settings,	mpc85xx_jog_settings),
+
+	{0, 0}
+};
+
+static driver_t mpc85xx_jog_driver = {
+	"jog",
+	mpc85xx_jog_methods,
+	sizeof(struct mpc85xx_jog_softc)
+};
+
+static devclass_t mpc85xx_jog_devclass;
+DRIVER_MODULE(mpc85xx_jog, cpu, mpc85xx_jog_driver, mpc85xx_jog_devclass, 0, 0);
+
+struct mpc85xx_constraints {
+	int threshold; /* Threshold frequency, in MHz, for setting CORE_SPD bit. */
+	int min_mult;  /* Minimum PLL multiplier. */
+};
+
+static struct mpc85xx_constraints mpc8536_constraints = {
+	800,
+	3
+};
+
+static struct mpc85xx_constraints p1022_constraints = {
+	500,
+	2
+};
+
+static struct ofw_compat_data jog_compat[] = {
+    {"fsl,mpc8536-guts", (uintptr_t)&mpc8536_constraints},
+    {"fsl,p1022-guts", (uintptr_t)&p1022_constraints},
+    {NULL, 0}
+};
+
+static struct ofw_compat_data *
+mpc85xx_jog_devcompat()
+{
+	phandle_t node;
+	int i;
+
+	node = OF_finddevice("/soc");
+	if (node <= 0)
+		return (NULL);
+
+	for (i = 0; jog_compat[i].ocd_str != NULL; i++)
+		if (ofw_bus_find_compatible(node, jog_compat[i].ocd_str) > 0)
+			break;
+
+	if (jog_compat[i].ocd_str == NULL)
+		return (NULL);
+
+	return (&jog_compat[i]);
+}
+
+static void
+mpc85xx_jog_identify(driver_t *driver, device_t parent)
+{
+	struct ofw_compat_data *compat;
+
+	/* Make sure we're not being doubly invoked. */
+	if (device_find_child(parent, "mpc85xx_jog", -1) != NULL)
+		return;
+
+	compat = mpc85xx_jog_devcompat();
+	if (compat == NULL)
+		return;
+	
+	/*
+	 * We attach a child for every CPU since settings need to
+	 * be performed on every CPU in the SMP case.
+	 */
+	if (BUS_ADD_CHILD(parent, 10, "jog", -1) == NULL)
+		device_printf(parent, "add jog child failed\n");
+}
+
+static int
+mpc85xx_jog_probe(device_t dev)
+{
+	struct ofw_compat_data *compat;
+
+	compat = mpc85xx_jog_devcompat();
+	if (compat == NULL || compat->ocd_str == NULL)
+		return (ENXIO);
+
+	device_set_desc(dev, "Freescale CPU Jogger");
+	return (0);
+}
+
+static int
+mpc85xx_jog_attach(device_t dev)
+{
+	struct ofw_compat_data *compat;
+	struct mpc85xx_jog_softc *sc;
+	struct mpc85xx_constraints *constraints;
+	phandle_t cpu;
+	uint32_t reg;
+
+	sc = device_get_softc(dev);
+	sc->dev = dev;
+
+	compat = mpc85xx_jog_devcompat();
+	constraints = (struct mpc85xx_constraints *)compat->ocd_data;
+	cpu = ofw_bus_get_node(device_get_parent(dev));
+
+	if (cpu <= 0) {
+		device_printf(dev,"No CPU device tree node!\n");
+		return (ENXIO);
+	}
+
+	OF_getencprop(cpu, "reg", &sc->cpu, sizeof(sc->cpu));
+
+	reg = ccsr_read4(GUTS_PORPLLSR);
+	
+	/*
+	 * Assume power-on PLL is the highest PLL config supported on the
+	 * board.
+	 */
+	sc->high = PMJCR_GET_CORE_MULT(reg, sc->cpu);
+	sc->min_freq = constraints->threshold;
+	sc->low = constraints->min_mult;
+
+	cpufreq_register(dev);
+	return (0);
+}
+
+static int
+mpc85xx_jog_settings(device_t dev, struct cf_setting *sets, int *count)
+{
+	struct mpc85xx_jog_softc *sc;
+	uint32_t sysclk;
+	int i;
+
+	sc = device_get_softc(dev);
+	if (sets == NULL || count == NULL)
+		return (EINVAL);
+	if (*count < sc->high - 1)
+		return (E2BIG);
+
+	sysclk = mpc85xx_get_system_clock();
+	/* Return a list of valid settings for this driver. */
+	memset(sets, CPUFREQ_VAL_UNKNOWN, sizeof(*sets) * sc->high);
+
+	for (i = sc->high; i >= sc->low; --i) {
+		sets[sc->high - i].freq = sysclk * i / MHZ;
+		sets[sc->high - i].dev = dev;
+		sets[sc->high - i].spec[0] = i;
+	}
+	*count = sc->high - sc->low + 1;
+
+	return (0);
+}
+
+struct jog_rv_args {
+	int cpu;
+	int mult;
+	int slow;
+	volatile int inprogress;
+};
+
+static void
+mpc85xx_jog_set_int(void *arg)
+{
+	struct jog_rv_args *args = arg;
+	uint32_t reg;
+
+	if (PCPU_GET(cpuid) == args->cpu) {
+		reg = ccsr_read4(GUTS_PMJCR);
+		reg &= ~PMJCR_CORE_MULT(PMJCR_RATIO_M, args->cpu);
+		reg |= PMJCR_CORE_MULT(args->mult, args->cpu);
+		if (args->slow)
+			reg &= ~(1 << (12 + args->cpu));
+		else
+			reg |= (1 << (12 + args->cpu));
+
+		ccsr_write4(GUTS_PMJCR, reg);
+
+		reg = ccsr_read4(GUTS_POWMGTCSR);
+		reg |= POWMGTCSR_JOG | POWMGTCSR_INT_MASK;
+		ccsr_write4(GUTS_POWMGTCSR, reg);
+
+		/* Wait for completion */
+		do {
+			DELAY(100);
+			reg = ccsr_read4(GUTS_POWMGTCSR);
+		} while (reg & POWMGTCSR_JOG);
+
+		reg = ccsr_read4(GUTS_POWMGTCSR);
+		ccsr_write4(GUTS_POWMGTCSR, reg & ~POWMGTCSR_INT_MASK);
+		ccsr_read4(GUTS_POWMGTCSR);
+
+		args->inprogress = 0;
+	} else {
+		while (args->inprogress)
+			cpu_spinwait();
+	}
+}
+
+static int
+mpc85xx_jog_set(device_t dev, const struct cf_setting *set)
+{
+	struct mpc85xx_jog_softc *sc;
+	struct jog_rv_args args;
+	
+	if (set == NULL)
+		return (EINVAL);
+
+	sc = device_get_softc(dev);
+
+	args.slow = (set->freq <= sc->min_freq);
+	args.mult = set->spec[0];
+	args.cpu = PCPU_GET(cpuid);
+	args.inprogress = 1;
+	smp_rendezvous(smp_no_rendezvous_barrier, mpc85xx_jog_set_int,
+	    smp_no_rendezvous_barrier, &args);
+
+	return (0);
+}
+
+static int
+mpc85xx_jog_get(device_t dev, struct cf_setting *set)
+{
+	struct mpc85xx_jog_softc *sc;
+	uint32_t pmjcr;
+	uint32_t freq;
+
+	if (set == NULL)
+		return (EINVAL);
+
+	sc = device_get_softc(dev);
+	memset(set, CPUFREQ_VAL_UNKNOWN, sizeof(*set));
+
+	pmjcr = ccsr_read4(GUTS_PORPLLSR);
+	freq = PMJCR_GET_CORE_MULT(pmjcr, sc->cpu);
+	freq *= mpc85xx_get_system_clock();
+	freq /= MHZ;
+	
+	set->freq = freq;
+	set->dev = dev;
+
+	return (0);
+}
+
+static int
+mpc85xx_jog_type(device_t dev, int *type)
+{
+
+	if (type == NULL)
+		return (EINVAL);
+
+	*type = CPUFREQ_TYPE_ABSOLUTE;
+	return (0);
+}
+

Modified: projects/clang500-import/sys/ufs/ffs/ffs_snapshot.c
==============================================================================
--- projects/clang500-import/sys/ufs/ffs/ffs_snapshot.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/ufs/ffs/ffs_snapshot.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -1598,7 +1598,7 @@ ffs_snapremove(vp)
 	struct buf *ibp;
 	struct fs *fs;
 	ufs2_daddr_t numblks, blkno, dblk;
-	int error, loc, last;
+	int error, i, last, loc;
 	struct snapdata *sn;
 
 	ip = VTOI(vp);
@@ -1618,10 +1618,14 @@ ffs_snapremove(vp)
 		ip->i_nextsnap.tqe_prev = 0;
 		VI_UNLOCK(devvp);
 		lockmgr(&vp->v_lock, LK_EXCLUSIVE, NULL);
+		for (i = 0; i < sn->sn_lock.lk_recurse; i++)
+			lockmgr(&vp->v_lock, LK_EXCLUSIVE, NULL);
 		KASSERT(vp->v_vnlock == &sn->sn_lock,
 			("ffs_snapremove: lost lock mutation")); 
 		vp->v_vnlock = &vp->v_lock;
 		VI_LOCK(devvp);
+		while (sn->sn_lock.lk_recurse > 0)
+			lockmgr(&sn->sn_lock, LK_RELEASE, NULL);
 		lockmgr(&sn->sn_lock, LK_RELEASE, NULL);
 		try_free_snapdata(devvp);
 	} else
@@ -1931,7 +1935,7 @@ retry:
 	 */
 	if (error != 0 && wkhd != NULL)
 		softdep_freework(wkhd);
-	lockmgr(vp->v_vnlock, LK_RELEASE, NULL);
+	lockmgr(&sn->sn_lock, LK_RELEASE, NULL);
 	return (error);
 }
 
@@ -2634,8 +2638,8 @@ try_free_snapdata(struct vnode *devvp)
 static struct snapdata *
 ffs_snapdata_acquire(struct vnode *devvp)
 {
-	struct snapdata *nsn;
-	struct snapdata *sn;
+	struct snapdata *nsn, *sn;
+	int error;
 
 	/*
 	 * Allocate a free snapdata.  This is done before acquiring the
@@ -2643,23 +2647,37 @@ ffs_snapdata_acquire(struct vnode *devvp)
 	 * held.
 	 */
 	nsn = ffs_snapdata_alloc();
-	/*
-	 * If there snapshots already exist on this filesystem grab a
-	 * reference to the shared lock.  Otherwise this is the first
-	 * snapshot on this filesystem and we need to use our
-	 * pre-allocated snapdata.
-	 */
-	VI_LOCK(devvp);
-	if (devvp->v_rdev->si_snapdata == NULL) {
-		devvp->v_rdev->si_snapdata = nsn;
-		nsn = NULL;
+
+	for (;;) {
+		VI_LOCK(devvp);
+		sn = devvp->v_rdev->si_snapdata;
+		if (sn == NULL) {
+			/*
+			 * This is the first snapshot on this
+			 * filesystem and we use our pre-allocated
+			 * snapdata.  Publish sn with the sn_lock
+			 * owned by us, to avoid the race.
+			 */
+			error = lockmgr(&nsn->sn_lock, LK_EXCLUSIVE |
+			    LK_NOWAIT, NULL);
+			if (error != 0)
+				panic("leaked sn, lockmgr error %d", error);
+			sn = devvp->v_rdev->si_snapdata = nsn;
+			VI_UNLOCK(devvp);
+			nsn = NULL;
+			break;
+		}
+
+		/*
+		 * There is a snapshots which already exists on this
+		 * filesystem, grab a reference to the common lock.
+		 */
+		error = lockmgr(&sn->sn_lock, LK_INTERLOCK |
+		    LK_EXCLUSIVE | LK_SLEEPFAIL, VI_MTX(devvp));
+		if (error == 0)
+			break;
 	}
-	sn = devvp->v_rdev->si_snapdata;
-	/*
-	 * Acquire the snapshot lock.
-	 */
-	lockmgr(&sn->sn_lock,
-	    LK_INTERLOCK | LK_EXCLUSIVE | LK_RETRY, VI_MTX(devvp));
+
 	/*
 	 * Free any unused snapdata.
 	 */

Modified: projects/clang500-import/sys/vm/vm_object.h
==============================================================================
--- projects/clang500-import/sys/vm/vm_object.h	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/vm/vm_object.h	Fri Jul 21 18:54:34 2017	(r321351)
@@ -171,11 +171,11 @@ struct vm_object {
 #define	OBJ_FICTITIOUS	0x0001		/* (c) contains fictitious pages */
 #define	OBJ_UNMANAGED	0x0002		/* (c) contains unmanaged pages */
 #define	OBJ_POPULATE	0x0004		/* pager implements populate() */
-#define OBJ_DEAD	0x0008		/* dead objects (during rundown) */
+#define	OBJ_DEAD	0x0008		/* dead objects (during rundown) */
 #define	OBJ_NOSPLIT	0x0010		/* dont split this object */
 #define	OBJ_UMTXDEAD	0x0020		/* umtx pshared was terminated */
-#define OBJ_PIPWNT	0x0040		/* paging in progress wanted */
-#define OBJ_MIGHTBEDIRTY 0x0100		/* object might be dirty, only for vnode */
+#define	OBJ_PIPWNT	0x0040		/* paging in progress wanted */
+#define	OBJ_MIGHTBEDIRTY 0x0100		/* object might be dirty, only for vnode */
 #define	OBJ_TMPFS_NODE	0x0200		/* object belongs to tmpfs VREG node */
 #define	OBJ_TMPFS_DIRTY	0x0400		/* dirty tmpfs obj */
 #define	OBJ_COLORED	0x1000		/* pg_color is defined */

Modified: projects/clang500-import/sys/x86/x86/mp_x86.c
==============================================================================
--- projects/clang500-import/sys/x86/x86/mp_x86.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/sys/x86/x86/mp_x86.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -90,8 +90,6 @@ int	mcount_lock;
 int	mp_naps;		/* # of Applications processors */
 int	boot_cpu_id = -1;	/* designated BSP */
 
-extern	struct pcpu __pcpu[];
-
 /* AP uses this during bootstrap.  Do not staticize.  */
 char *bootSTK;
 int bootAP;

Modified: projects/clang500-import/tests/sys/aio/lio_test.c
==============================================================================
--- projects/clang500-import/tests/sys/aio/lio_test.c	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/tests/sys/aio/lio_test.c	Fri Jul 21 18:54:34 2017	(r321351)
@@ -119,8 +119,8 @@ ATF_TC_BODY(lio_listio_empty_nowait_thread, tc)
 	struct aiocb *list = NULL;
 	struct sigevent sev;
 
-	atf_tc_expect_fail("Bug 220459 - lio_listio(2) doesn't support"
-	    " SIGEV_THREAD");
+	atf_tc_expect_timeout("Bug 220398 - lio_listio(2) never sends"
+	    "asynchronous notification if nent==0");
 	ATF_REQUIRE_EQ(0, sem_init(&completions, false, 0));
 	bzero(&sev, sizeof(sev));
 	sev.sigev_notify = SIGEV_THREAD;

Modified: projects/clang500-import/usr.bin/ktrace/ktrace.1
==============================================================================
--- projects/clang500-import/usr.bin/ktrace/ktrace.1	Fri Jul 21 18:53:43 2017	(r321350)
+++ projects/clang500-import/usr.bin/ktrace/ktrace.1	Fri Jul 21 18:54:34 2017	(r321351)
@@ -28,7 +28,7 @@
 .\"	@(#)ktrace.1	8.1 (Berkeley) 6/6/93
 .\" $FreeBSD$
 .\"
-.Dd March 31, 2016
+.Dd July 24, 2017
 .Dt KTRACE 1
 .Os
 .Sh NAME
@@ -148,31 +148,31 @@ and
 .Ar command
 options are mutually exclusive.
 .Sh EXAMPLES
-# trace all kernel operations of process id 34
+Trace all kernel operations of process id 34:
 .Dl $ ktrace -p 34
 .Pp
-# trace all kernel operations of processes in process group 15 and
-# pass the trace flags to all current and future children
+Trace all kernel operations of processes in process group 15 and
+pass the trace flags to all current and future children:
 .Dl $ ktrace -idg 15
 .Pp
-# disable all tracing of process 65
+Disable all tracing of process 65:
 .Dl $ ktrace -cp 65
 .Pp
-# disable tracing signals on process 70 and all current children
+Disable tracing signals on process 70 and all current children:
 .Dl $ ktrace -t s -cdp 70
 .Pp
-# enable tracing of
+Enable tracing of
 .Tn I/O
-on process 67
+on process 67:
 .Dl $ ktrace -ti -p 67
 .Pp
-# run the command "w", tracing only system calls
+Run the command "w", tracing only system calls:

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201707211854.v6LIsYPX071000>