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>