Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Feb 2016 03:08:58 +0000 (UTC)
From:      Glen Barber <gjb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r295957 - in projects/release-pkg: . bin/sh bin/sh/tests/parser etc etc/defaults lib/libsysdecode share/man/man4 share/man/man8 sys/boot/forth sys/conf sys/dev/acpica sys/dev/ixl sys/de...
Message-ID:  <201602240308.u1O38wRi042450@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gjb
Date: Wed Feb 24 03:08:58 2016
New Revision: 295957
URL: https://svnweb.freebsd.org/changeset/base/295957

Log:
  MFH
  
  Sponsored by:	The FreeBSD Foundation

Added:
  projects/release-pkg/bin/sh/tests/parser/set-v1.0
     - copied unchanged from r295956, head/bin/sh/tests/parser/set-v1.0
  projects/release-pkg/bin/sh/tests/parser/set-v1.0.stderr
     - copied unchanged from r295956, head/bin/sh/tests/parser/set-v1.0.stderr
  projects/release-pkg/lib/libsysdecode/errno.c
     - copied unchanged from r295956, head/lib/libsysdecode/errno.c
  projects/release-pkg/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3
     - copied unchanged from r295956, head/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3
  projects/release-pkg/sys/geom/uzip/g_uzip.h
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip.h
  projects/release-pkg/sys/geom/uzip/g_uzip_cloop.h
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_cloop.h
  projects/release-pkg/sys/geom/uzip/g_uzip_dapi.h
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_dapi.h
  projects/release-pkg/sys/geom/uzip/g_uzip_lzma.c
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_lzma.c
  projects/release-pkg/sys/geom/uzip/g_uzip_lzma.h
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_lzma.h
  projects/release-pkg/sys/geom/uzip/g_uzip_softc.h
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_softc.h
  projects/release-pkg/sys/geom/uzip/g_uzip_wrkthr.c
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_wrkthr.c
  projects/release-pkg/sys/geom/uzip/g_uzip_wrkthr.h
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_wrkthr.h
  projects/release-pkg/sys/geom/uzip/g_uzip_zlib.c
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_zlib.c
  projects/release-pkg/sys/geom/uzip/g_uzip_zlib.h
     - copied unchanged from r295956, head/sys/geom/uzip/g_uzip_zlib.h
  projects/release-pkg/usr.bin/mkuzip/mkuz_blockcache.c
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuz_blockcache.c
  projects/release-pkg/usr.bin/mkuzip/mkuz_blockcache.h
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuz_blockcache.h
  projects/release-pkg/usr.bin/mkuzip/mkuz_cloop.h
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuz_cloop.h
  projects/release-pkg/usr.bin/mkuzip/mkuz_lzma.c
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuz_lzma.c
  projects/release-pkg/usr.bin/mkuzip/mkuz_lzma.h
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuz_lzma.h
  projects/release-pkg/usr.bin/mkuzip/mkuz_zlib.c
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuz_zlib.c
  projects/release-pkg/usr.bin/mkuzip/mkuz_zlib.h
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuz_zlib.h
  projects/release-pkg/usr.bin/mkuzip/mkuzip.h
     - copied unchanged from r295956, head/usr.bin/mkuzip/mkuzip.h
Deleted:
  projects/release-pkg/share/man/man4/geom_uncompress.4
  projects/release-pkg/sys/geom/uncompress/
  projects/release-pkg/sys/modules/geom/geom_uncompress/
  projects/release-pkg/usr.bin/mkulzma/
  projects/release-pkg/usr.bin/truss/cloudabi.c
  projects/release-pkg/usr.bin/truss/cloudabi.h
Modified:
  projects/release-pkg/ObsoleteFiles.inc
  projects/release-pkg/bin/sh/input.c
  projects/release-pkg/bin/sh/tests/parser/Makefile
  projects/release-pkg/etc/defaults/rc.conf
  projects/release-pkg/etc/rc.subr
  projects/release-pkg/lib/libsysdecode/Makefile
  projects/release-pkg/lib/libsysdecode/sysdecode.3
  projects/release-pkg/lib/libsysdecode/sysdecode.h
  projects/release-pkg/lib/libsysdecode/sysdecode_syscallnames.3
  projects/release-pkg/share/man/man4/Makefile
  projects/release-pkg/share/man/man4/geom_map.4
  projects/release-pkg/share/man/man4/geom_uzip.4
  projects/release-pkg/share/man/man8/rc.subr.8
  projects/release-pkg/sys/boot/forth/loader.conf
  projects/release-pkg/sys/conf/files
  projects/release-pkg/sys/dev/acpica/acpi_ec.c
  projects/release-pkg/sys/dev/acpica/acpi_video.c
  projects/release-pkg/sys/dev/ixl/if_ixl.c
  projects/release-pkg/sys/dev/ixl/ixl_txrx.c
  projects/release-pkg/sys/dev/nvme/nvme_ctrlr.c
  projects/release-pkg/sys/dev/usb/controller/xhci.c
  projects/release-pkg/sys/dev/usb/controller/xhci.h
  projects/release-pkg/sys/geom/uzip/g_uzip.c
  projects/release-pkg/sys/kern/kern_mib.c
  projects/release-pkg/sys/mips/conf/ALFA_HORNET_UB
  projects/release-pkg/sys/mips/conf/AP121
  projects/release-pkg/sys/mips/conf/AP135
  projects/release-pkg/sys/mips/conf/AP143
  projects/release-pkg/sys/mips/conf/AP91
  projects/release-pkg/sys/mips/conf/AP93
  projects/release-pkg/sys/mips/conf/AP96
  projects/release-pkg/sys/mips/conf/CARAMBOLA2
  projects/release-pkg/sys/mips/conf/DB120
  projects/release-pkg/sys/mips/conf/DIR-655A1
  projects/release-pkg/sys/mips/conf/DIR-825B1
  projects/release-pkg/sys/mips/conf/DIR-825C1
  projects/release-pkg/sys/mips/conf/ENH200
  projects/release-pkg/sys/mips/conf/MT7620
  projects/release-pkg/sys/mips/conf/ONIONOMEGA
  projects/release-pkg/sys/mips/conf/PB47
  projects/release-pkg/sys/mips/conf/PB92
  projects/release-pkg/sys/mips/conf/PICOSTATION_M2HP
  projects/release-pkg/sys/mips/conf/ROUTERSTATION
  projects/release-pkg/sys/mips/conf/RSPRO
  projects/release-pkg/sys/mips/conf/RT305X
  projects/release-pkg/sys/mips/conf/RT5350
  projects/release-pkg/sys/mips/conf/TL-ARCHERC7V2
  projects/release-pkg/sys/mips/conf/TL-WDR4300
  projects/release-pkg/sys/mips/conf/TL-WR1043NDv2
  projects/release-pkg/sys/mips/conf/TL-WR740Nv4
  projects/release-pkg/sys/mips/conf/TP-WN1043ND
  projects/release-pkg/sys/mips/conf/WZR-300HP
  projects/release-pkg/sys/mips/conf/WZR-HPAG300H
  projects/release-pkg/sys/modules/geom/Makefile
  projects/release-pkg/sys/modules/geom/geom_uzip/Makefile
  projects/release-pkg/sys/net80211/ieee80211_node.c
  projects/release-pkg/sys/netinet/tcp_stacks/fastpath.c
  projects/release-pkg/sys/netinet/tcp_subr.c
  projects/release-pkg/sys/netinet6/sctp6_usrreq.c
  projects/release-pkg/sys/ufs/ffs/ffs_inode.c
  projects/release-pkg/sys/x86/isa/clock.c
  projects/release-pkg/targets/pseudo/userland/Makefile.depend
  projects/release-pkg/usr.bin/Makefile
  projects/release-pkg/usr.bin/kdump/kdump.c
  projects/release-pkg/usr.bin/mkuzip/Makefile
  projects/release-pkg/usr.bin/mkuzip/mkuzip.8
  projects/release-pkg/usr.bin/mkuzip/mkuzip.c
  projects/release-pkg/usr.bin/truss/Makefile
  projects/release-pkg/usr.bin/truss/aarch64-cloudabi64.c
  projects/release-pkg/usr.bin/truss/amd64-cloudabi64.c
  projects/release-pkg/usr.bin/truss/amd64-linux32.c
  projects/release-pkg/usr.bin/truss/extern.h
  projects/release-pkg/usr.bin/truss/i386-linux.c
  projects/release-pkg/usr.bin/truss/main.c
  projects/release-pkg/usr.bin/truss/setup.c
  projects/release-pkg/usr.bin/truss/syscalls.c
  projects/release-pkg/usr.bin/truss/truss.1
  projects/release-pkg/usr.bin/truss/truss.h
Directory Properties:
  projects/release-pkg/   (props changed)
  projects/release-pkg/share/   (props changed)
  projects/release-pkg/share/man/man4/   (props changed)
  projects/release-pkg/sys/   (props changed)
  projects/release-pkg/sys/boot/   (props changed)
  projects/release-pkg/sys/conf/   (props changed)
  projects/release-pkg/targets/   (props changed)

Modified: projects/release-pkg/ObsoleteFiles.inc
==============================================================================
--- projects/release-pkg/ObsoleteFiles.inc	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/ObsoleteFiles.inc	Wed Feb 24 03:08:58 2016	(r295957)
@@ -38,6 +38,8 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20160223: functionality from mkulzma(1) merged into mkuzip(1)
+OLD_FILES+=usr/bin/mkulzma
 # 20160211: Remove obsolete unbound-control-setup
 OLD_FILES+=usr/sbin/unbound-control-setup
 # 20160116: Update mandoc to cvs snapshot 20160116

Modified: projects/release-pkg/bin/sh/input.c
==============================================================================
--- projects/release-pkg/bin/sh/input.c	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/bin/sh/input.c	Wed Feb 24 03:08:58 2016	(r295957)
@@ -242,7 +242,8 @@ again:
 		parsenleft = parselleft;
 		parselleft = 0;
 	} else /* *q == '\n' */ {
-		parsenleft = q - parsenextc + 1;
+		q++;
+		parsenleft = q - parsenextc;
 		parselleft -= parsenleft;
 	}
 	parsenleft--;

Modified: projects/release-pkg/bin/sh/tests/parser/Makefile
==============================================================================
--- projects/release-pkg/bin/sh/tests/parser/Makefile	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/bin/sh/tests/parser/Makefile	Wed Feb 24 03:08:58 2016	(r295957)
@@ -82,6 +82,7 @@ FILES+=		only-redir2.0
 FILES+=		only-redir3.0
 FILES+=		only-redir4.0
 FILES+=		pipe-not1.0
+FILES+=		set-v1.0 set-v1.0.stderr
 FILES+=		var-assign1.0
 
 .include <bsd.test.mk>

Copied: projects/release-pkg/bin/sh/tests/parser/set-v1.0 (from r295956, head/bin/sh/tests/parser/set-v1.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/release-pkg/bin/sh/tests/parser/set-v1.0	Wed Feb 24 03:08:58 2016	(r295957, copy of r295956, head/bin/sh/tests/parser/set-v1.0)
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+${SH} <<\EOF
+echo one >&2
+set -v
+echo two >&2
+echo three >&2
+EOF

Copied: projects/release-pkg/bin/sh/tests/parser/set-v1.0.stderr (from r295956, head/bin/sh/tests/parser/set-v1.0.stderr)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/release-pkg/bin/sh/tests/parser/set-v1.0.stderr	Wed Feb 24 03:08:58 2016	(r295957, copy of r295956, head/bin/sh/tests/parser/set-v1.0.stderr)
@@ -0,0 +1,5 @@
+one
+echo two >&2
+two
+echo three >&2
+three

Modified: projects/release-pkg/etc/defaults/rc.conf
==============================================================================
--- projects/release-pkg/etc/defaults/rc.conf	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/etc/defaults/rc.conf	Wed Feb 24 03:08:58 2016	(r295957)
@@ -253,6 +253,7 @@ hostapd_enable="NO"		# Run hostap daemon
 syslogd_enable="YES"		# Run syslog daemon (or NO).
 syslogd_program="/usr/sbin/syslogd" # path to syslogd, if you want a different one.
 syslogd_flags="-s"		# Flags to syslogd (if enabled).
+syslogd_oomprotect="YES"	# Don't kill syslogd when swap space is exhausted. 
 altlog_proglist=""		# List of chrooted applicatioins in /var
 inetd_enable="NO"		# Run the network daemon dispatcher (YES/NO).
 inetd_program="/usr/sbin/inetd"	# path to inetd, if you want a different one.

Modified: projects/release-pkg/etc/rc.subr
==============================================================================
--- projects/release-pkg/etc/rc.subr	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/etc/rc.subr	Wed Feb 24 03:08:58 2016	(r295957)
@@ -45,6 +45,7 @@ _rc_subr_loaded="YES"
 SYSCTL="/sbin/sysctl"
 SYSCTL_N="${SYSCTL} -n"
 SYSCTL_W="${SYSCTL}"
+PROTECT="/usr/bin/protect"
 ID="/usr/bin/id"
 IDCMD="if [ -x $ID ]; then $ID -un; fi"
 PS="/bin/ps -ww"
@@ -755,6 +756,8 @@ check_startmsgs()
 #
 #	${name}_nice	n	Nice level to run ${command} at.
 #
+#	${name}_oomprotect n	Don't kill ${command} when swap space is exhausted.
+#
 #	${name}_user	n	User to run ${command} as, using su(1) if not
 #				using ${name}_chroot.
 #				Requires /usr to be mounted.
@@ -944,7 +947,8 @@ run_rc_command()
 	    _nice=\$${name}_nice	_user=\$${name}_user \
 	    _group=\$${name}_group	_groups=\$${name}_groups \
 	    _fib=\$${name}_fib		_env=\$${name}_env \
-	    _prepend=\$${name}_prepend	_login_class=\${${name}_login_class:-daemon}
+	    _prepend=\$${name}_prepend	_login_class=\${${name}_login_class:-daemon} \
+	    _oomprotect=\$${name}_oomprotect
 
 	if [ -n "$_user" ]; then	# unset $_user if running as that user
 		if [ "$_user" = "$(eval $IDCMD)" ]; then
@@ -1182,6 +1186,26 @@ $command $rc_flags $command_args"
 			;;
 
 		esac
+
+		# Apply protect(1) to the PID if ${name}_oomprotect is set.
+		case "$rc_arg" in
+		start)
+			if [ -n "$_oomprotect" ]; then
+				if [ -f "${PROTECT}" ]; then
+					pid=$(check_process $command)
+					case $_oomprotect in
+					[Aa][Ll][Ll])
+						${PROTECT} -i -p ${pid}
+						;;
+					[Yy][Ee][Ss])
+						${PROTECT} -p ${pid}
+						;;
+					esac
+				fi
+			fi	
+		;;
+		esac
+
 		return $_return
 	done
 

Modified: projects/release-pkg/lib/libsysdecode/Makefile
==============================================================================
--- projects/release-pkg/lib/libsysdecode/Makefile	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/lib/libsysdecode/Makefile	Wed Feb 24 03:08:58 2016	(r295957)
@@ -5,15 +5,17 @@
 PACKAGE=lib${LIB}
 LIB=	sysdecode
 
-SRCS=	ioctl.c syscallnames.c utrace.c
+SRCS=	errno.c ioctl.c syscallnames.c utrace.c
 INCS=	sysdecode.h
 
 CFLAGS+= -I${.CURDIR}/../../sys
 
 MAN+=	sysdecode.3 \
+	sysdecode_abi_to_freebsd_errno.3 \
 	sysdecode_ioctlname.3 \
 	sysdecode_syscallnames.3 \
 	sysdecode_utrace.3
+MLINKS+= sysdecode_abi_to_freebsd_errno.3 sysdecode_freebsd_to_abi_errno.3
 
 CLEANFILES= ioctl.c
 

Copied: projects/release-pkg/lib/libsysdecode/errno.c (from r295956, head/lib/libsysdecode/errno.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/release-pkg/lib/libsysdecode/errno.c	Wed Feb 24 03:08:58 2016	(r295957, copy of r295956, head/lib/libsysdecode/errno.c)
@@ -0,0 +1,209 @@
+/*-
+ * Copyright (c) 2015 John H. Baldwin <jhb@FreeBSD.org>
+ * 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 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 <sys/param.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <sysdecode.h>
+
+#if defined(__i386__) || defined(__amd64__)
+/*
+ * Linux syscalls return negative errno's, we do positive and map them
+ * Reference:
+ *   FreeBSD: src/sys/sys/errno.h
+ *   Linux:   linux-2.6.17.8/include/asm-generic/errno-base.h
+ *            linux-2.6.17.8/include/asm-generic/errno.h
+ */
+static int bsd_to_linux_errno[ELAST + 1] = {
+	-0,  -1,  -2,  -3,  -4,  -5,  -6,  -7,  -8,  -9,
+	-10, -35, -12, -13, -14, -15, -16, -17, -18, -19,
+	-20, -21, -22, -23, -24, -25, -26, -27, -28, -29,
+	-30, -31, -32, -33, -34, -11,-115,-114, -88, -89,
+	-90, -91, -92, -93, -94, -95, -96, -97, -98, -99,
+	-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,
+	-110,-111, -40, -36,-112,-113, -39, -11, -87,-122,
+	-116, -66,  -6,  -6,  -6,  -6,  -6, -37, -38,  -9,
+	  -6,  -6, -43, -42, -75,-125, -84, -95, -16, -74,
+	 -72, -67, -71
+};
+#endif
+
+#if defined(__aarch64__) || defined(__amd64__)
+#include <compat/cloudabi/cloudabi_syscalldefs.h>
+
+static const int cloudabi_errno_table[] = {
+	[CLOUDABI_E2BIG]		= E2BIG,
+	[CLOUDABI_EACCES]		= EACCES,
+	[CLOUDABI_EADDRINUSE]		= EADDRINUSE,
+	[CLOUDABI_EADDRNOTAVAIL]	= EADDRNOTAVAIL,
+	[CLOUDABI_EAFNOSUPPORT]		= EAFNOSUPPORT,
+	[CLOUDABI_EAGAIN]		= EAGAIN,
+	[CLOUDABI_EALREADY]		= EALREADY,
+	[CLOUDABI_EBADF]		= EBADF,
+	[CLOUDABI_EBADMSG]		= EBADMSG,
+	[CLOUDABI_EBUSY]		= EBUSY,
+	[CLOUDABI_ECANCELED]		= ECANCELED,
+	[CLOUDABI_ECHILD]		= ECHILD,
+	[CLOUDABI_ECONNABORTED]		= ECONNABORTED,
+	[CLOUDABI_ECONNREFUSED]		= ECONNREFUSED,
+	[CLOUDABI_ECONNRESET]		= ECONNRESET,
+	[CLOUDABI_EDEADLK]		= EDEADLK,
+	[CLOUDABI_EDESTADDRREQ]		= EDESTADDRREQ,
+	[CLOUDABI_EDOM]			= EDOM,
+	[CLOUDABI_EDQUOT]		= EDQUOT,
+	[CLOUDABI_EEXIST]		= EEXIST,
+	[CLOUDABI_EFAULT]		= EFAULT,
+	[CLOUDABI_EFBIG]		= EFBIG,
+	[CLOUDABI_EHOSTUNREACH]		= EHOSTUNREACH,
+	[CLOUDABI_EIDRM]		= EIDRM,
+	[CLOUDABI_EILSEQ]		= EILSEQ,
+	[CLOUDABI_EINPROGRESS]		= EINPROGRESS,
+	[CLOUDABI_EINTR]		= EINTR,
+	[CLOUDABI_EINVAL]		= EINVAL,
+	[CLOUDABI_EIO]			= EIO,
+	[CLOUDABI_EISCONN]		= EISCONN,
+	[CLOUDABI_EISDIR]		= EISDIR,
+	[CLOUDABI_ELOOP]		= ELOOP,
+	[CLOUDABI_EMFILE]		= EMFILE,
+	[CLOUDABI_EMLINK]		= EMLINK,
+	[CLOUDABI_EMSGSIZE]		= EMSGSIZE,
+	[CLOUDABI_EMULTIHOP]		= EMULTIHOP,
+	[CLOUDABI_ENAMETOOLONG]		= ENAMETOOLONG,
+	[CLOUDABI_ENETDOWN]		= ENETDOWN,
+	[CLOUDABI_ENETRESET]		= ENETRESET,
+	[CLOUDABI_ENETUNREACH]		= ENETUNREACH,
+	[CLOUDABI_ENFILE]		= ENFILE,
+	[CLOUDABI_ENOBUFS]		= ENOBUFS,
+	[CLOUDABI_ENODEV]		= ENODEV,
+	[CLOUDABI_ENOENT]		= ENOENT,
+	[CLOUDABI_ENOEXEC]		= ENOEXEC,
+	[CLOUDABI_ENOLCK]		= ENOLCK,
+	[CLOUDABI_ENOLINK]		= ENOLINK,
+	[CLOUDABI_ENOMEM]		= ENOMEM,
+	[CLOUDABI_ENOMSG]		= ENOMSG,
+	[CLOUDABI_ENOPROTOOPT]		= ENOPROTOOPT,
+	[CLOUDABI_ENOSPC]		= ENOSPC,
+	[CLOUDABI_ENOSYS]		= ENOSYS,
+	[CLOUDABI_ENOTCONN]		= ENOTCONN,
+	[CLOUDABI_ENOTDIR]		= ENOTDIR,
+	[CLOUDABI_ENOTEMPTY]		= ENOTEMPTY,
+	[CLOUDABI_ENOTRECOVERABLE]	= ENOTRECOVERABLE,
+	[CLOUDABI_ENOTSOCK]		= ENOTSOCK,
+	[CLOUDABI_ENOTSUP]		= ENOTSUP,
+	[CLOUDABI_ENOTTY]		= ENOTTY,
+	[CLOUDABI_ENXIO]		= ENXIO,
+	[CLOUDABI_EOVERFLOW]		= EOVERFLOW,
+	[CLOUDABI_EOWNERDEAD]		= EOWNERDEAD,
+	[CLOUDABI_EPERM]		= EPERM,
+	[CLOUDABI_EPIPE]		= EPIPE,
+	[CLOUDABI_EPROTO]		= EPROTO,
+	[CLOUDABI_EPROTONOSUPPORT]	= EPROTONOSUPPORT,
+	[CLOUDABI_EPROTOTYPE]		= EPROTOTYPE,
+	[CLOUDABI_ERANGE]		= ERANGE,
+	[CLOUDABI_EROFS]		= EROFS,
+	[CLOUDABI_ESPIPE]		= ESPIPE,
+	[CLOUDABI_ESRCH]		= ESRCH,
+	[CLOUDABI_ESTALE]		= ESTALE,
+	[CLOUDABI_ETIMEDOUT]		= ETIMEDOUT,
+	[CLOUDABI_ETXTBSY]		= ETXTBSY,
+	[CLOUDABI_EXDEV]		= EXDEV,
+	[CLOUDABI_ENOTCAPABLE]		= ENOTCAPABLE,
+};
+#endif
+
+int
+sysdecode_abi_to_freebsd_errno(enum sysdecode_abi abi, int error)
+{
+
+	switch (abi) {
+	case SYSDECODE_ABI_FREEBSD:
+	case SYSDECODE_ABI_FREEBSD32:
+		return (error);
+#if defined(__i386__) || defined(__amd64__)
+	case SYSDECODE_ABI_LINUX:
+	case SYSDECODE_ABI_LINUX32: {
+		unsigned int i;
+
+		/*
+		 * This is imprecise since it returns the first
+		 * matching errno.
+		 */
+		for (i = 0; i < nitems(bsd_to_linux_errno); i++) {
+			if (error == bsd_to_linux_errno[i])
+				return (i);
+		}
+		break;
+	}
+#endif
+#if defined(__aarch64__) || defined(__amd64__)
+	case SYSDECODE_ABI_CLOUDABI64:
+		if (error >= 0 &&
+		    (unsigned int)error < nitems(cloudabi_errno_table))
+			return (cloudabi_errno_table[error]);
+		break;
+#endif
+	default:
+		break;
+	}
+	return (INT_MAX);
+}
+
+int
+sysdecode_freebsd_to_abi_errno(enum sysdecode_abi abi, int error)
+{
+
+	switch (abi) {
+	case SYSDECODE_ABI_FREEBSD:
+	case SYSDECODE_ABI_FREEBSD32:
+		return (error);
+#if defined(__i386__) || defined(__amd64__)
+	case SYSDECODE_ABI_LINUX:
+	case SYSDECODE_ABI_LINUX32:
+		if (error >= 0 && error <= ELAST)
+			return (bsd_to_linux_errno[error]);
+		break;
+#endif
+#if defined(__aarch64__) || defined(__amd64__)
+	case SYSDECODE_ABI_CLOUDABI64: {
+		unsigned int i;
+
+		for (i = 0; i < nitems(cloudabi_errno_table); i++) {
+			if (error == cloudabi_errno_table[i])
+				return (i);
+		}
+		break;
+	}
+#endif
+	default:
+		break;
+	}
+	return (INT_MAX);
+}
+

Modified: projects/release-pkg/lib/libsysdecode/sysdecode.3
==============================================================================
--- projects/release-pkg/lib/libsysdecode/sysdecode.3	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/lib/libsysdecode/sysdecode.3	Wed Feb 24 03:08:58 2016	(r295957)
@@ -64,6 +64,7 @@ Supported on aarch64 and amd64.
 A placeholder for use when the ABI is not known.
 .El
 .Sh SEE ALSO
+.Xr sysdecode_abi_to_freebsd_errno 3 ,
 .Xr sysdecode_ioctlname 3 ,
 .Xr sysdecode_syscallnames 3 ,
 .Xr sysdecode_utrace 3

Modified: projects/release-pkg/lib/libsysdecode/sysdecode.h
==============================================================================
--- projects/release-pkg/lib/libsysdecode/sysdecode.h	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/lib/libsysdecode/sysdecode.h	Wed Feb 24 03:08:58 2016	(r295957)
@@ -38,6 +38,8 @@ enum sysdecode_abi {
 	SYSDECODE_ABI_CLOUDABI64
 };
 
+int	sysdecode_abi_to_freebsd_errno(enum sysdecode_abi _abi, int _error);
+int	sysdecode_freebsd_to_abi_errno(enum sysdecode_abi _abi, int _error);
 const char *sysdecode_ioctlname(unsigned long _val);
 const char *sysdecode_syscallname(enum sysdecode_abi _abi, unsigned int _code);
 int	sysdecode_utrace(FILE *_fp, void *_buf, size_t _len);

Copied: projects/release-pkg/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3 (from r295956, head/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/release-pkg/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3	Wed Feb 24 03:08:58 2016	(r295957, copy of r295956, head/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3)
@@ -0,0 +1,94 @@
+.\"
+.\" Copyright (c) 2016 John Baldwin <jhb@FreeBSD.org>
+.\" 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 23, 2016
+.Dt sysdecode_abi_to_freebsd_errno 3
+.Os
+.Sh NAME
+.Nm sysdecode_abi_to_freebsd_errno ,
+.Nm sysdecode_freebsd_to_abi_errno
+.Nd translate error numbers between process ABIs
+.Sh LIBRARY
+.Lb libsysdecode
+.Sh SYNOPSIS
+.Ft int
+.Fn sysdecode_abi_to_freebsd_errno "enum sysdecode_abi abi" "int error"
+.Ft int
+.Fn sysdecode_freebsd_to_abi_errno "enum sysdecode_abi abi" "int error"
+.Sh DESCRIPTION
+The
+.Fn sysdecode_abi_to_freebsd_errno
+function returns the native
+.Xr errno 3
+value that corresponds to the error indicated by
+.Fa error
+for the process ABI
+.Fa abi .
+If
+.Fa error
+does not identify a valid error for
+.Fa abi ,
+.Dv INT_MAX
+is returned.
+.Pp
+The
+.Fn sysdecode_freebsd_to_abi_errno
+function the error value for the process ABI
+.Fa abi
+that corresponds to the native
+.Xr errno 3
+value
+.Fa error .
+If
+.Fa error
+does not identify a valid
+.Xr errno 3
+error,
+.Dv INT_MAX
+is returned.
+.Pp
+Note that the mappings between native
+.Xr errno 3
+values and errors for other ABIs are not exhaustive.
+If a mapping does not exist,
+these functions return
+.Dv INT_MAX .
+In addition, multiple error values in one ABI may map to a single
+error in another ABI.
+.Sh RETURN VALUES
+These functions return an error value on success or
+.Dv INT_MAX
+if
+.Fa error
+is not valid.
+.Pp
+For the list of supported ABIs,
+see
+.Xr sysdecode 3 .
+.Sh SEE ALSO
+.Xr sysdecode 3 ,
+.Xr sysdecode_syscallnames 3

Modified: projects/release-pkg/lib/libsysdecode/sysdecode_syscallnames.3
==============================================================================
--- projects/release-pkg/lib/libsysdecode/sysdecode_syscallnames.3	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/lib/libsysdecode/sysdecode_syscallnames.3	Wed Feb 24 03:08:58 2016	(r295957)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 24, 2016
+.Dd January 30, 2016
 .Dt sysdecode_syscallnames 3
 .Os
 .Sh NAME
@@ -64,4 +64,5 @@ or
 .Fa ABI
 is invalid .
 .Sh SEE ALSO
-.Xr sysdecode 3
+.Xr sysdecode 3 ,
+.Xr sysdecode_abi_to_freebsd_errno 3

Modified: projects/release-pkg/share/man/man4/Makefile
==============================================================================
--- projects/release-pkg/share/man/man4/Makefile	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/share/man/man4/Makefile	Wed Feb 24 03:08:58 2016	(r295957)
@@ -167,7 +167,6 @@ MAN=	aac.4 \
 	geom_fox.4 \
 	geom_linux_lvm.4 \
 	geom_map.4 \
-	geom_uncompress.4 \
 	geom_uzip.4 \
 	gif.4 \
 	gpio.4 \

Modified: projects/release-pkg/share/man/man4/geom_map.4
==============================================================================
--- projects/release-pkg/share/man/man4/geom_map.4	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/share/man/man4/geom_map.4	Wed Feb 24 03:08:58 2016	(r295957)
@@ -78,7 +78,7 @@ or by using
 0 DISK cfid0 8388608 4 hd 0 sc 0
 1 MAP map/config 131072 4 i 5 o 8257536 entry 0 dsize 131072
 1 MAP map/rootfs 6881280 4 i 4 o 1376256 entry 0 dsize 6881280
-2 UNCOMPRESS map/rootfs.uncompress 18677760 512
+2 UZIP map/rootfs.uzip 18677760 512
 1 MAP map/kernel 1114112 4 i 3 o 262144 entry 0 dsize 1114112
 1 MAP map/upgrade 7995392 4 i 2 o 262144 entry 0 dsize 7995392
 1 MAP map/factory 65536 4 i 1 o 196608 entry 0 dsize 65536

Modified: projects/release-pkg/share/man/man4/geom_uzip.4
==============================================================================
--- projects/release-pkg/share/man/man4/geom_uzip.4	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/share/man/man4/geom_uzip.4	Wed Feb 24 03:08:58 2016	(r295957)
@@ -30,7 +30,7 @@
 .Os
 .Sh NAME
 .Nm geom_uzip
-.Nd "GEOM based compressed disk images"
+.Nd "GEOM based compressed disk images and partitions"
 .Sh SYNOPSIS
 To compile this driver into the kernel,
 place the following line in your
@@ -51,7 +51,7 @@ The
 framework provides support for compressed read-only
 disk images.
 This allows significant storage savings at the expense of
-a little CPU time on each read.
+a some CPU time on each read.
 Data written in the GEOM label area allows
 .Nm
 to detect compressed images which have been created with
@@ -63,17 +63,53 @@ creates a unique
 .Pa md#.uzip
 device for each image.
 .Pp
+.Nm
+is not limited to supporting only
+.Xr md 4
+images.
+The image can also reside on a block device.
+.Pq For example, a disk, USB flash drive,  DVD-ROM, etc.
+The appropriate device node will appear with the
+.Pa .uzip
+suffix.
+.Bd -literal -offset indent
+# gpart show da0
+=>      0  7833600  da0  BSD  (3.7G)
+        0  2097152    1  freebsd-ufs  (1.0G)
+  2097152  5736448       - free -  (2.7G)
+# gpart add -t freebsd-ufs -s 1G da0
+da0b added
+# dd if=/tmp/20160217_dcomp_zcomp.uzip bs=256k of=/dev/da0b
+3190+1 records in
+3190+1 records out
+836331008 bytes transferred in 111.021489 secs (7533055 bytes/sec)
+# fsck -t ffs /dev/da0b.uzip
+** /dev/da0b.uzip (NO WRITE)
+** Last Mounted on /mnt
+** Phase 1 - Check Blocks and Sizes
+** Phase 2 - Check Pathnames
+** Phase 3 - Check Connectivity
+** Phase 4 - Check Reference Counts
+** Phase 5 - Check Cyl groups
+97455 files, 604242 used, 184741 free (2349 frags, 22799 blocks,
+   0.3% fragmentation)
+# mount -o ro /dev/da0b.uzip /mnt
+# df /dev/da0b.uzip
+Filesystem     1K-blocks    Used  Avail Capacity  Mounted on
+/dev/da0b.uzip   3155932 2416968 738964    77%    /mnt
+.Ed
+.Pp
 The
 .Nm
-device is subsequently used by the
+device is subsequently used by
 .Fx
-kernel to access the disk images.
+kernel to access the uncompressed data.
 The
 .Nm
 driver does not allow write operations to the underlying disk image.
 To check which
-.Xr md 4
-devices match a given
+.Dq providers
+match a given
 .Nm
 device:
 .Bd -literal -offset indent
@@ -83,13 +119,44 @@ Providers:
 1. Name: md1.uzip
    Mediasize: 22003712 (21M)
    Sectorsize: 512
-   Mode: r1w0e1
 Consumers:
 1. Name: md1
    Mediasize: 9563648 (9.1M)
    Sectorsize: 512
-   Mode: r1w0e1
+
+Geom name: da0b.uzip
+Providers:
+1. Name: da0b.uzip
+   Mediasize: 3355443200 (3.1G)
+   Sectorsize: 512
+Consumers:
+1. Name: da0b
+   Mediasize: 1073741824 (1.0G)
+   Sectorsize: 512
 .Ed
+.Pp
+.Nm
+allows mounting the root file system from a compressed disk partition by
+setting the
+.Dv vfs.root.mountfrom
+tunable.
+See
+.Xr loader.conf 5
+for details.
+.Sh DIAGNOSTICS
+Several flags are provided for tracing
+.Nm
+I/O operations and TOC parsing via the following sysctls.
+.Bl -tag -width indent
+.It Va kern.geom.uzip.debug
+Log level.
+Zero disables logging.
+Higher values enable more verbose debug logging for
+.Nm .
+Supported levels are from 0 (no logging) to 4 (maximum amount of logging).
+.It Va kern.geom.uzip.debug_block
+Log operations involving compressed cluster number.
+.El
 .Sh SEE ALSO
 .Xr GEOM 4 ,
 .Xr md 4 ,
@@ -101,5 +168,12 @@ The
 .Nm
 driver was written by
 .An Max Khon Aq Mt fjoe@FreeBSD.org .
+The block de-duplication code as well as some
+.Nm
+driver optimizations have been contributed by
+.An Maxim Sobolev Aq Mt sobomax@FreeBSD.org .
+The LZMA decompression support and CLOOP 3.0 support have been added by
+.An Aleksandr Rybalko Aq Mt ray@FreeBSD.org .
+.Pp
 This manual page was written by
 .An Ceri Davies Aq Mt ceri@FreeBSD.org .

Modified: projects/release-pkg/share/man/man8/rc.subr.8
==============================================================================
--- projects/release-pkg/share/man/man8/rc.subr.8	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/share/man/man8/rc.subr.8	Wed Feb 24 03:08:58 2016	(r295957)
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 12, 2014
+.Dd February 4, 2016
 .Dt RC.SUBR 8
 .Os
 .Sh NAME
@@ -604,6 +604,16 @@ as.
 Only supported after
 .Pa /usr
 is mounted.
+.It Va ${name}_oomprotect
+.Xr protect 1
+.Va command
+from being killed when swap space is exhausted.
+If
+.Em YES
+is used, no child processes are protected.
+If
+.Em ALL ,
+protect all child processes.
 .It Va ${name}_program
 Full path to the command.
 Overrides

Modified: projects/release-pkg/sys/boot/forth/loader.conf
==============================================================================
--- projects/release-pkg/sys/boot/forth/loader.conf	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/boot/forth/loader.conf	Wed Feb 24 03:08:58 2016	(r295957)
@@ -238,7 +238,6 @@ geom_nop_load="NO"		# Transparent disk d
 geom_raid3_load="NO"		# RAID3 disk driver (see graid3(8))
 geom_shsec_load="NO"		# Shared secret disk driver (see gshsec(8))
 geom_stripe_load="NO"		# RAID0 disk driver (see gstripe(8))
-geom_uncompress_load="NO"	# Compressed disk images driver (see mkulzma(8))
 geom_uzip_load="NO"		# Compressed disk images driver (see mkuzip(8))
 geom_vinum_load="NO"		# Concatenated/mirror/raid driver (see vinum(4))
 

Modified: projects/release-pkg/sys/conf/files
==============================================================================
--- projects/release-pkg/sys/conf/files	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/conf/files	Wed Feb 24 03:08:58 2016	(r295957)
@@ -3081,23 +3081,25 @@ geom/raid3/g_raid3.c		optional geom_raid
 geom/raid3/g_raid3_ctl.c	optional geom_raid3
 geom/shsec/g_shsec.c		optional geom_shsec
 geom/stripe/g_stripe.c		optional geom_stripe
-geom/uncompress/g_uncompress.c	optional geom_uncompress
 contrib/xz-embedded/freebsd/xz_malloc.c	\
-	optional xz_embedded | geom_uncompress \
+	optional xz_embedded | geom_uzip \
 	compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
 contrib/xz-embedded/linux/lib/xz/xz_crc32.c \
-	optional xz_embedded | geom_uncompress \
+	optional xz_embedded | geom_uzip \
 	compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
 contrib/xz-embedded/linux/lib/xz/xz_dec_bcj.c \
-	optional xz_embedded | geom_uncompress \
+	optional xz_embedded | geom_uzip \
 	compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
 contrib/xz-embedded/linux/lib/xz/xz_dec_lzma2.c \
-	optional xz_embedded | geom_uncompress \
+	optional xz_embedded | geom_uzip \
 	compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
 contrib/xz-embedded/linux/lib/xz/xz_dec_stream.c \
-	optional xz_embedded | geom_uncompress \
+	optional xz_embedded | geom_uzip \
 	compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/"
 geom/uzip/g_uzip.c		optional geom_uzip
+geom/uzip/g_uzip_lzma.c		optional geom_uzip
+geom/uzip/g_uzip_wrkthr.c	optional geom_uzip
+geom/uzip/g_uzip_zlib.c		optional geom_uzip
 geom/vinum/geom_vinum.c		optional geom_vinum
 geom/vinum/geom_vinum_create.c	optional geom_vinum
 geom/vinum/geom_vinum_drive.c	optional geom_vinum
@@ -3455,7 +3457,7 @@ libkern/strvalid.c		standard
 libkern/timingsafe_bcmp.c	standard
 libkern/zlib.c			optional crypto | geom_uzip | ipsec | \
 					 mxge | netgraph_deflate | \
-					 ddb_ctf | gzio | geom_uncompress
+					 ddb_ctf | gzio
 net/altq/altq_cbq.c		optional altq
 net/altq/altq_cdnr.c		optional altq
 net/altq/altq_codel.c		optional altq

Modified: projects/release-pkg/sys/dev/acpica/acpi_ec.c
==============================================================================
--- projects/release-pkg/sys/dev/acpica/acpi_ec.c	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/dev/acpica/acpi_ec.c	Wed Feb 24 03:08:58 2016	(r295957)
@@ -434,9 +434,7 @@ out:
 		 params->gpe_bit, (params->glk) ? ", GLK" : "",
 		 ecdt ? ", ECDT" : "");
 	device_set_desc_copy(dev, desc);
-    }
-
-    if (ret > 0 && params)
+    } else
 	free(params, M_TEMP);
     if (buf.Pointer)
 	AcpiOsFree(buf.Pointer);

Modified: projects/release-pkg/sys/dev/acpica/acpi_video.c
==============================================================================
--- projects/release-pkg/sys/dev/acpica/acpi_video.c	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/dev/acpica/acpi_video.c	Wed Feb 24 03:08:58 2016	(r295957)
@@ -597,23 +597,28 @@ acpi_video_vo_bind(struct acpi_video_out
 {
 
 	ACPI_SERIAL_BEGIN(video_output);
-	if (vo->vo_levels != NULL)
+	if (vo->vo_levels != NULL) {
+		AcpiRemoveNotifyHandler(vo->handle, ACPI_DEVICE_NOTIFY,
+		    acpi_video_vo_notify_handler);
 		AcpiOsFree(vo->vo_levels);
+		vo->vo_levels = NULL;
+	}
 	vo->handle = handle;
 	vo->vo_numlevels = vo_get_brightness_levels(handle, &vo->vo_levels);
 	if (vo->vo_numlevels >= 2) {
-		if (vo->vo_fullpower == -1
-		    || acpi_video_vo_check_level(vo, vo->vo_fullpower) != 0)
+		if (vo->vo_fullpower == -1 ||
+		    acpi_video_vo_check_level(vo, vo->vo_fullpower) != 0) {
 			/* XXX - can't deal with rebinding... */
 			vo->vo_fullpower = vo->vo_levels[BCL_FULLPOWER];
-		if (vo->vo_economy == -1
-		    || acpi_video_vo_check_level(vo, vo->vo_economy) != 0)
+		}
+		if (vo->vo_economy == -1 ||
+		    acpi_video_vo_check_level(vo, vo->vo_economy) != 0) {
 			/* XXX - see above. */
 			vo->vo_economy = vo->vo_levels[BCL_ECONOMY];
-	}
-	if (vo->vo_levels != NULL)
+		}
 		AcpiInstallNotifyHandler(handle, ACPI_DEVICE_NOTIFY,
 		    acpi_video_vo_notify_handler, vo);
+	}
 	ACPI_SERIAL_END(video_output);
 }
 

Modified: projects/release-pkg/sys/dev/ixl/if_ixl.c
==============================================================================
--- projects/release-pkg/sys/dev/ixl/if_ixl.c	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/dev/ixl/if_ixl.c	Wed Feb 24 03:08:58 2016	(r295957)
@@ -115,6 +115,8 @@ static int	ixl_init_msix(struct ixl_pf *
 static void	ixl_configure_msix(struct ixl_pf *);
 static void	ixl_configure_itr(struct ixl_pf *);
 static void	ixl_configure_legacy(struct ixl_pf *);
+static void	ixl_init_taskqueues(struct ixl_pf *);
+static void	ixl_free_taskqueues(struct ixl_pf *);
 static void	ixl_free_pci_resources(struct ixl_pf *);
 static void	ixl_local_timer(void *);
 static int	ixl_setup_interface(device_t, struct ixl_vsi *);
@@ -642,7 +644,7 @@ ixl_attach(device_t dev)
 	else
 		error = ixl_assign_vsi_legacy(pf);
 	if (error) 
-		goto err_late;
+		goto err_mac_hmc;
 
 	if (((hw->aq.fw_maj_ver == 4) && (hw->aq.fw_min_ver < 33)) ||
 	    (hw->aq.fw_maj_ver < 4)) {
@@ -667,7 +669,7 @@ ixl_attach(device_t dev)
 	error = ixl_switch_config(pf);
 	if (error) {
 		device_printf(dev, "Initial switch config failed: %d\n", error);
-		goto err_mac_hmc;
+		goto err_late;
 	}
 
 	/* Limit phy interrupts to link and modules failure */
@@ -680,6 +682,9 @@ ixl_attach(device_t dev)
 	bus = ixl_get_bus_info(hw, dev);
 	i40e_set_pci_config_data(hw, bus);
 
+	/* Initialize taskqueues */
+	ixl_init_taskqueues(pf);
+
 	/* Initialize statistics */
 	ixl_pf_reset_stats(pf);
 	ixl_update_stats_counters(pf);
@@ -748,7 +753,6 @@ ixl_detach(device_t dev)
 	struct ixl_pf		*pf = device_get_softc(dev);
 	struct i40e_hw		*hw = &pf->hw;
 	struct ixl_vsi		*vsi = &pf->vsi;
-	struct ixl_queue	*que = vsi->queues;
 	i40e_status		status;
 #ifdef PCI_IOV
 	int			error;
@@ -777,13 +781,7 @@ ixl_detach(device_t dev)
 		IXL_PF_UNLOCK(pf);
 	}
 
-	for (int i = 0; i < vsi->num_queues; i++, que++) {
-		if (que->tq) {
-			taskqueue_drain(que->tq, &que->task);
-			taskqueue_drain(que->tq, &que->tx_task);
-			taskqueue_free(que->tq);
-		}
-	}
+	ixl_free_taskqueues(pf);
 
 	/* Shutdown LAN HMC */
 	status = i40e_shutdown_lan_hmc(hw);
@@ -1990,6 +1988,58 @@ ixl_assign_vsi_legacy(struct ixl_pf *pf)
 	return (0);
 }
 
+static void
+ixl_init_taskqueues(struct ixl_pf *pf)
+{
+       struct ixl_vsi *vsi = &pf->vsi;
+       struct ixl_queue *que = vsi->queues;
+       device_t dev = pf->dev;
+
+       /* Tasklet for Admin Queue */
+       TASK_INIT(&pf->adminq, 0, ixl_do_adminq, pf);
+#ifdef PCI_IOV
+       /* VFLR Tasklet */
+       TASK_INIT(&pf->vflr_task, 0, ixl_handle_vflr, pf);
+#endif
+
+       /* Create and start PF taskqueue */
+       pf->tq = taskqueue_create_fast("ixl_adm", M_NOWAIT,
+           taskqueue_thread_enqueue, &pf->tq);
+       taskqueue_start_threads(&pf->tq, 1, PI_NET, "%s adminq",
+           device_get_nameunit(dev));
+
+       /* Create queue tasks and start queue taskqueues */
+       for (int i = 0; i < vsi->num_queues; i++, que++) {
+               TASK_INIT(&que->tx_task, 0, ixl_deferred_mq_start, que);
+               TASK_INIT(&que->task, 0, ixl_handle_que, que);
+               que->tq = taskqueue_create_fast("ixl_que", M_NOWAIT,
+                   taskqueue_thread_enqueue, &que->tq);
+#ifdef RSS
+               CPU_SETOF(cpu_id, &cpu_mask);
+               taskqueue_start_threads_cpuset(&que->tq, 1, PI_NET,
+                   &cpu_mask, "%s (bucket %d)",
+                   device_get_nameunit(dev), cpu_id);
+#else
+               taskqueue_start_threads(&que->tq, 1, PI_NET,
+                   "%s (que %d)", device_get_nameunit(dev), que->me);
+#endif
+       }
+
+}
+
+static void
+ixl_free_taskqueues(struct ixl_pf *pf)
+{
+       struct ixl_vsi          *vsi = &pf->vsi;
+       struct ixl_queue        *que = vsi->queues;
+
+       if (pf->tq)
+               taskqueue_free(pf->tq);
+       for (int i = 0; i < vsi->num_queues; i++, que++) {
+               if (que->tq)
+                       taskqueue_free(que->tq);
+       }
+}
 
 /*********************************************************************
  *
@@ -2028,17 +2078,6 @@ ixl_assign_vsi_msix(struct ixl_pf *pf)
 	}
 	bus_describe_intr(dev, pf->res, pf->tag, "aq");
 	pf->admvec = vector;
-	/* Tasklet for Admin Queue */
-	TASK_INIT(&pf->adminq, 0, ixl_do_adminq, pf);
-
-#ifdef PCI_IOV
-	TASK_INIT(&pf->vflr_task, 0, ixl_handle_vflr, pf);
-#endif
-
-	pf->tq = taskqueue_create_fast("ixl_adm", M_NOWAIT,
-	    taskqueue_thread_enqueue, &pf->tq);
-	taskqueue_start_threads(&pf->tq, 1, PI_NET, "%s adminq",
-	    device_get_nameunit(pf->dev));
 	++vector;
 
 	/* Now set up the stations */
@@ -2069,19 +2108,6 @@ ixl_assign_vsi_msix(struct ixl_pf *pf)
 #endif
 		bus_bind_intr(dev, que->res, cpu_id);
 		que->msix = vector;
-		TASK_INIT(&que->tx_task, 0, ixl_deferred_mq_start, que);
-		TASK_INIT(&que->task, 0, ixl_handle_que, que);
-		que->tq = taskqueue_create_fast("ixl_que", M_NOWAIT,
-		    taskqueue_thread_enqueue, &que->tq);
-#ifdef RSS
-		CPU_SETOF(cpu_id, &cpu_mask);
-		taskqueue_start_threads_cpuset(&que->tq, 1, PI_NET,
-		    &cpu_mask, "%s (bucket %d)",
-		    device_get_nameunit(dev), cpu_id);
-#else
-		taskqueue_start_threads(&que->tq, 1, PI_NET,
-		    "%s que", device_get_nameunit(dev));
-#endif
 	}
 
 	return (0);
@@ -2144,9 +2170,15 @@ ixl_init_msix(struct ixl_pf *pf)
 	/* Figure out a reasonable auto config value */
 	queues = (mp_ncpus > (available - 1)) ? (available - 1) : mp_ncpus;
 
-	/* Override with hardcoded value if sane */
+	/* Override with hardcoded value if it's less than autoconfig count */
 	if ((ixl_max_queues != 0) && (ixl_max_queues <= queues)) 
 		queues = ixl_max_queues;
+	else if ((ixl_max_queues != 0) && (ixl_max_queues > queues))
+		device_printf(dev, "ixl_max_queues > # of cpus, using "
+		    "autoconfig amount...\n");
+	/* Or limit maximum auto-configured queues to 8 */
+	else if ((ixl_max_queues == 0) && (queues > 8))
+		queues = 8;
 
 #ifdef  RSS
 	/* If we're doing RSS, clamp at the number of RSS buckets */
@@ -2880,7 +2912,6 @@ ixl_initialize_vsi(struct ixl_vsi *vsi)
 			device_printf(dev, "Fail in init_rx_ring %d\n", i);
 			break;
 		}
-		wr32(vsi->hw, I40E_QRX_TAIL(que->me), 0);
 #ifdef DEV_NETMAP
 		/* preserve queue */
 		if (vsi->ifp->if_capenable & IFCAP_NETMAP) {

Modified: projects/release-pkg/sys/dev/ixl/ixl_txrx.c
==============================================================================
--- projects/release-pkg/sys/dev/ixl/ixl_txrx.c	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/dev/ixl/ixl_txrx.c	Wed Feb 24 03:08:58 2016	(r295957)
@@ -390,7 +390,6 @@ ixl_xmit(struct ixl_queue *que, struct m
 	++txr->total_packets;
 	wr32(hw, txr->tail, i);
 
-	ixl_flush(hw);
 	/* Mark outstanding work */
 	if (que->busy == 0)
 		que->busy = 1;

Modified: projects/release-pkg/sys/dev/nvme/nvme_ctrlr.c
==============================================================================
--- projects/release-pkg/sys/dev/nvme/nvme_ctrlr.c	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/dev/nvme/nvme_ctrlr.c	Wed Feb 24 03:08:58 2016	(r295957)
@@ -810,7 +810,7 @@ nvme_ctrlr_intx_handler(void *arg)
 
 	nvme_qpair_process_completions(&ctrlr->adminq);
 
-	if (ctrlr->ioq[0].cpl)
+	if (ctrlr->ioq && ctrlr->ioq[0].cpl)
 		nvme_qpair_process_completions(&ctrlr->ioq[0]);
 
 	nvme_mmio_write_4(ctrlr, intmc, 1);

Modified: projects/release-pkg/sys/dev/usb/controller/xhci.c
==============================================================================
--- projects/release-pkg/sys/dev/usb/controller/xhci.c	Wed Feb 24 03:06:26 2016	(r295956)
+++ projects/release-pkg/sys/dev/usb/controller/xhci.c	Wed Feb 24 03:08:58 2016	(r295957)
@@ -2358,6 +2358,8 @@ xhci_configure_endpoint(struct usb_devic
 
 	/* store endpoint mode */
 	pepext->trb_ep_mode = ep_mode;
+	/* store bMaxPacketSize for control endpoints */
+	pepext->trb_ep_maxp = edesc->wMaxPacketSize[0];
 	usb_pc_cpu_flush(pepext->page_cache);
 
 	if (ep_mode == USB_EP_MODE_STREAMS) {
@@ -2904,6 +2906,17 @@ xhci_transfer_insert(struct usb_xfer *xf
 		return (USB_ERR_NOMEM);
 	}
 
+	/* check if bMaxPacketSize changed */
+	if (xfer->flags_int.control_xfr != 0 &&

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



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