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...
Glen Barber
gjb at FreeBSD.org
Wed Feb 24 03:09:02 UTC 2016
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 at 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 at 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 at FreeBSD.org .
+The block de-duplication code as well as some
+.Nm
+driver optimizations have been contributed by
+.An Maxim Sobolev Aq Mt sobomax at FreeBSD.org .
+The LZMA decompression support and CLOOP 3.0 support have been added by
+.An Aleksandr Rybalko Aq Mt ray at FreeBSD.org .
+.Pp
This manual page was written by
.An Ceri Davies Aq Mt ceri at 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 ***
More information about the svn-src-projects
mailing list