From owner-svn-src-all@freebsd.org Sun Apr 29 10:45:10 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1E334FA940D; Sun, 29 Apr 2018 10:45:10 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B2A63700ED; Sun, 29 Apr 2018 10:45:09 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AD7FB234CE; Sun, 29 Apr 2018 10:45:09 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3TAj96v090371; Sun, 29 Apr 2018 10:45:09 GMT (envelope-from trasz@FreeBSD.org) Received: (from trasz@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3TAj9vg090370; Sun, 29 Apr 2018 10:45:09 GMT (envelope-from trasz@FreeBSD.org) Message-Id: <201804291045.w3TAj9vg090370@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: trasz set sender to trasz@FreeBSD.org using -f From: Edward Tomasz Napierala Date: Sun, 29 Apr 2018 10:45:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333089 - head/usr.sbin/usbconfig X-SVN-Group: head X-SVN-Commit-Author: trasz X-SVN-Commit-Paths: head/usr.sbin/usbconfig X-SVN-Commit-Revision: 333089 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Apr 2018 10:45:10 -0000 Author: trasz Date: Sun Apr 29 10:45:09 2018 New Revision: 333089 URL: https://svnweb.freebsd.org/changeset/base/333089 Log: Clean up the EXAMPLES section of usbconfig(8). This removes parts that become redundant after documenting all the subcommands, and switches to the new syntax, without the '-d'. Reviewed by: hselasky@ MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Modified: head/usr.sbin/usbconfig/usbconfig.8 Modified: head/usr.sbin/usbconfig/usbconfig.8 ============================================================================== --- head/usr.sbin/usbconfig/usbconfig.8 Sun Apr 29 05:37:46 2018 (r333088) +++ head/usr.sbin/usbconfig/usbconfig.8 Sun Apr 29 10:45:09 2018 (r333089) @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 17, 2018 +.Dd April 29, 2018 .Dt USBCONFIG 8 .Os .Sh NAME @@ -146,33 +146,21 @@ See for more information. .El .Sh EXAMPLES -Show information about the device on USB bus 1 at address 2: +List all connected USB devices and their attached interface drivers: .Pp -.Dl usbconfig -d ugen1.2 dump_info +.Dl usbconfig show_ifdrv .Pp -Dump HID descriptor for device on USB bus 1 at address 2: +Dump device and configuration descriptors for device on USB bus 1 at address 2: .Pp -.Dl usbconfig -d ugen1.2 do_request 0x81 0x06 0x2200 0 0x100 +.Dl usbconfig ugen1.2 dump_all_desc .Pp -Dump string descriptor at index Z for device on USB bus 1 at address 2: +Dump HID descriptor for device on USB bus 1 at address 2: .Pp -.Dl usbconfig -d ugen1.2 dump_string Z +.Dl usbconfig ugen1.2 do_request 0x81 0x06 0x2200 0 0x100 .Pp -Dump current configuration descriptor for device on USB bus 1 at address 2: +Power off the device on USB bus 1 at address 2: .Pp -.Dl usbconfig -d ugen1.2 dump_curr_config_desc -.Pp -Dump device descriptor for device on USB bus 1 at address 2: -.Pp -.Dl usbconfig -d ugen1.2 dump_device_desc -.Pp -Program the device on USB bus 1 at address 2 to suspend, resume, power off, go into power save, or power on: -.Pp -.Dl usbconfig -d ugen1.2 suspend -.Dl usbconfig -d ugen1.2 resume -.Dl usbconfig -d ugen1.2 power_off -.Dl usbconfig -d ugen1.2 power_save -.Dl usbconfig -d ugen1.2 power_on +.Dl usbconfig ugen1.2 power_off .Sh SEE ALSO .Xr usb 4 , .Xr usb_quirk 4 , From owner-svn-src-all@freebsd.org Sun Apr 29 12:43:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2B848FAC324; Sun, 29 Apr 2018 12:43:09 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D41C668435; Sun, 29 Apr 2018 12:43:08 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CED0724800; Sun, 29 Apr 2018 12:43:08 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3TCh8Th051163; Sun, 29 Apr 2018 12:43:08 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3TCh8Yj051162; Sun, 29 Apr 2018 12:43:08 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201804291243.w3TCh8Yj051162@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sun, 29 Apr 2018 12:43:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333091 - head/sys/vm X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: head/sys/vm X-SVN-Commit-Revision: 333091 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Apr 2018 12:43:09 -0000 Author: kib Date: Sun Apr 29 12:43:08 2018 New Revision: 333091 URL: https://svnweb.freebsd.org/changeset/base/333091 Log: Eliminate some vm object relocks in vm fault. For the vm_fault_prefault() call from vm_fault_soft_fast(), extend the scope of the object rlock to avoid re-taking it inside vm_fault_prefault(). It causes pmap_enter_quick() sometimes called with shadow object lock as well as the page lock, but this looks innocent. Noted and measured by: mjg Reviewed by: alc, markj (as part of the larger patch) Tested by: pho (as part of the larger patch) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D15122 Modified: head/sys/vm/vm_fault.c Modified: head/sys/vm/vm_fault.c ============================================================================== --- head/sys/vm/vm_fault.c Sun Apr 29 11:46:20 2018 (r333090) +++ head/sys/vm/vm_fault.c Sun Apr 29 12:43:08 2018 (r333091) @@ -132,7 +132,7 @@ struct faultstate { static void vm_fault_dontneed(const struct faultstate *fs, vm_offset_t vaddr, int ahead); static void vm_fault_prefault(const struct faultstate *fs, vm_offset_t addra, - int backward, int forward); + int backward, int forward, bool obj_locked); static inline void release_page(struct faultstate *fs) @@ -320,9 +320,9 @@ vm_fault_soft_fast(struct faultstate *fs, vm_offset_t return (rv); vm_fault_fill_hold(m_hold, m); vm_fault_dirty(fs->entry, m, prot, fault_type, fault_flags, false); - VM_OBJECT_RUNLOCK(fs->first_object); if (psind == 0 && !wired) - vm_fault_prefault(fs, vaddr, PFBAK, PFFOR); + vm_fault_prefault(fs, vaddr, PFBAK, PFFOR, true); + VM_OBJECT_RUNLOCK(fs->first_object); vm_map_lookup_done(fs->map, fs->entry); curthread->td_ru.ru_minflt++; return (KERN_SUCCESS); @@ -1262,7 +1262,7 @@ readrest: wired == 0) vm_fault_prefault(&fs, vaddr, faultcount > 0 ? behind : PFBAK, - faultcount > 0 ? ahead : PFFOR); + faultcount > 0 ? ahead : PFFOR, false); VM_OBJECT_WLOCK(fs.object); vm_page_lock(fs.m); @@ -1395,7 +1395,7 @@ vm_fault_dontneed(const struct faultstate *fs, vm_offs */ static void vm_fault_prefault(const struct faultstate *fs, vm_offset_t addra, - int backward, int forward) + int backward, int forward, bool obj_locked) { pmap_t pmap; vm_map_entry_t entry; @@ -1441,7 +1441,8 @@ vm_fault_prefault(const struct faultstate *fs, vm_offs pindex = ((addr - entry->start) + entry->offset) >> PAGE_SHIFT; lobject = entry->object.vm_object; - VM_OBJECT_RLOCK(lobject); + if (!obj_locked) + VM_OBJECT_RLOCK(lobject); while ((m = vm_page_lookup(lobject, pindex)) == NULL && lobject->type == OBJT_DEFAULT && (backing_object = lobject->backing_object) != NULL) { @@ -1449,17 +1450,20 @@ vm_fault_prefault(const struct faultstate *fs, vm_offs 0, ("vm_fault_prefault: unaligned object offset")); pindex += lobject->backing_object_offset >> PAGE_SHIFT; VM_OBJECT_RLOCK(backing_object); - VM_OBJECT_RUNLOCK(lobject); + if (!obj_locked || lobject != entry->object.vm_object) + VM_OBJECT_RUNLOCK(lobject); lobject = backing_object; } if (m == NULL) { - VM_OBJECT_RUNLOCK(lobject); + if (!obj_locked || lobject != entry->object.vm_object) + VM_OBJECT_RUNLOCK(lobject); break; } if (m->valid == VM_PAGE_BITS_ALL && (m->flags & PG_FICTITIOUS) == 0) pmap_enter_quick(pmap, addr, m, entry->protection); - VM_OBJECT_RUNLOCK(lobject); + if (!obj_locked || lobject != entry->object.vm_object) + VM_OBJECT_RUNLOCK(lobject); } } From owner-svn-src-all@freebsd.org Sun Apr 29 17:46:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 48031FB2FCE; Sun, 29 Apr 2018 17:46:09 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EC562845C3; Sun, 29 Apr 2018 17:46:08 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E527E277E2; Sun, 29 Apr 2018 17:46:08 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3THk8uu003065; Sun, 29 Apr 2018 17:46:08 GMT (envelope-from jilles@FreeBSD.org) Received: (from jilles@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3THk8L8003062; Sun, 29 Apr 2018 17:46:08 GMT (envelope-from jilles@FreeBSD.org) Message-Id: <201804291746.w3THk8L8003062@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jilles set sender to jilles@FreeBSD.org using -f From: Jilles Tjoelker Date: Sun, 29 Apr 2018 17:46:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333092 - in head/bin/sh: . tests/builtins X-SVN-Group: head X-SVN-Commit-Author: jilles X-SVN-Commit-Paths: in head/bin/sh: . tests/builtins X-SVN-Commit-Revision: 333092 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Apr 2018 17:46:09 -0000 Author: jilles Date: Sun Apr 29 17:46:08 2018 New Revision: 333092 URL: https://svnweb.freebsd.org/changeset/base/333092 Log: sh: Don't have [ match any [[:class:]] Submitted by: Robert Elz MFC after: 3 days Added: head/bin/sh/tests/builtins/case23.0 (contents, props changed) Modified: head/bin/sh/expand.c head/bin/sh/tests/builtins/Makefile Modified: head/bin/sh/expand.c ============================================================================== --- head/bin/sh/expand.c Sun Apr 29 12:43:08 2018 (r333091) +++ head/bin/sh/expand.c Sun Apr 29 17:46:08 2018 (r333092) @@ -1342,8 +1342,10 @@ patmatch(const char *pattern, const char *string) } if (c == '[' && *p == ':') { found |= match_charclass(p, chr, &end); - if (end != NULL) + if (end != NULL) { p = end; + continue; + } } if (c == CTLESC) c = *p++; Modified: head/bin/sh/tests/builtins/Makefile ============================================================================== --- head/bin/sh/tests/builtins/Makefile Sun Apr 29 12:43:08 2018 (r333091) +++ head/bin/sh/tests/builtins/Makefile Sun Apr 29 17:46:08 2018 (r333092) @@ -42,6 +42,7 @@ ${PACKAGE}FILES+= case19.0 ${PACKAGE}FILES+= case20.0 ${PACKAGE}FILES+= case21.0 ${PACKAGE}FILES+= case22.0 +${PACKAGE}FILES+= case23.0 ${PACKAGE}FILES+= cd1.0 ${PACKAGE}FILES+= cd2.0 ${PACKAGE}FILES+= cd3.0 Added: head/bin/sh/tests/builtins/case23.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/bin/sh/tests/builtins/case23.0 Sun Apr 29 17:46:08 2018 (r333092) @@ -0,0 +1,5 @@ +# $FreeBSD$ + +case [ in +[[:alpha:]]) echo bad +esac From owner-svn-src-all@freebsd.org Mon Apr 30 00:07:42 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EF89FFBDC2D; Mon, 30 Apr 2018 00:07:41 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9AA8C7B4C6; Mon, 30 Apr 2018 00:07:41 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8DF8738DE; Mon, 30 Apr 2018 00:07:41 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U07faO095242; Mon, 30 Apr 2018 00:07:41 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U07fdi095241; Mon, 30 Apr 2018 00:07:41 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201804300007.w3U07fdi095241@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Mon, 30 Apr 2018 00:07:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333094 - stable/11/usr.sbin/pwd_mkdb X-SVN-Group: stable-11 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/11/usr.sbin/pwd_mkdb X-SVN-Commit-Revision: 333094 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 00:07:42 -0000 Author: emaste Date: Mon Apr 30 00:07:41 2018 New Revision: 333094 URL: https://svnweb.freebsd.org/changeset/base/333094 Log: MFC r332902: pwd_mkdb: default to network (big) endian hash order For cross-architecture reproducibility. The db(3) functions work with hashes of either endianness, and the current (v4) version password db entries already store integers in network order. Do so with the hash as well so that identical password databases can be created on big- and little-endian hosts. The -B and -L flags exist to set the endianness for legacy (v3) entries when the -l flag is used, and they will still control hash endianness (at least until the backwards compatibility infrastructure is removed [a change that will not be merged to stable/11]). Sponsored by: The FreeBSD Foundation Modified: stable/11/usr.sbin/pwd_mkdb/pwd_mkdb.c Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.sbin/pwd_mkdb/pwd_mkdb.c ============================================================================== --- stable/11/usr.sbin/pwd_mkdb/pwd_mkdb.c Sun Apr 29 20:24:03 2018 (r333093) +++ stable/11/usr.sbin/pwd_mkdb/pwd_mkdb.c Mon Apr 30 00:07:41 2018 (r333094) @@ -75,7 +75,7 @@ static HASHINFO openinfo = { 256, /* nelem */ 2048 * 1024, /* cachesize */ NULL, /* hash() */ - BYTE_ORDER /* lorder */ + BIG_ENDIAN /* lorder */ }; static enum state { FILE_INSECURE, FILE_SECURE, FILE_ORIG } clean; From owner-svn-src-all@freebsd.org Mon Apr 30 01:58:25 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8A11CFBFC19; Mon, 30 Apr 2018 01:58:25 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 37F8E75865; Mon, 30 Apr 2018 01:58:25 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 328BC4BAC; Mon, 30 Apr 2018 01:58:25 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U1wPle049710; Mon, 30 Apr 2018 01:58:25 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U1wPun049709; Mon, 30 Apr 2018 01:58:25 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201804300158.w3U1wPun049709@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Mon, 30 Apr 2018 01:58:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333095 - head/sys/dev/usb/net X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/sys/dev/usb/net X-SVN-Commit-Revision: 333095 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 01:58:25 -0000 Author: emaste Date: Mon Apr 30 01:58:24 2018 New Revision: 333095 URL: https://svnweb.freebsd.org/changeset/base/333095 Log: if_smsc: fix reset check In smsc_phy_init function, when the driver was trying to reset PHY, it didn't poll for the correct bit (BMCR_RESET) to be cleared. Instead, it anded it with MII_BMCR (which is 0), so it just exited the loop. This issue was fixed in Linux in commit d94609200069. Submitted by: Arshan Khanifar MFC after: 1 week Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/usb/net/if_smsc.c Modified: head/sys/dev/usb/net/if_smsc.c ============================================================================== --- head/sys/dev/usb/net/if_smsc.c Mon Apr 30 00:07:41 2018 (r333094) +++ head/sys/dev/usb/net/if_smsc.c Mon Apr 30 01:58:24 2018 (r333095) @@ -1306,7 +1306,7 @@ smsc_phy_init(struct smsc_softc *sc) do { uether_pause(&sc->sc_ue, hz / 100); bmcr = smsc_miibus_readreg(sc->sc_ue.ue_dev, sc->sc_phyno, MII_BMCR); - } while ((bmcr & MII_BMCR) && ((ticks - start_ticks) < max_ticks)); + } while ((bmcr & BMCR_RESET) && ((ticks - start_ticks) < max_ticks)); if (((usb_ticks_t)(ticks - start_ticks)) >= max_ticks) { smsc_err_printf(sc, "PHY reset timed-out"); From owner-svn-src-all@freebsd.org Mon Apr 30 02:18:19 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BF273FC0259; Mon, 30 Apr 2018 02:18:19 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 75E7B79DBD; Mon, 30 Apr 2018 02:18:19 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 70E954EDE; Mon, 30 Apr 2018 02:18:19 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U2IJcY059600; Mon, 30 Apr 2018 02:18:19 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U2IJgE059599; Mon, 30 Apr 2018 02:18:19 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201804300218.w3U2IJgE059599@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Mon, 30 Apr 2018 02:18:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333096 - head/sys/dev/usb/net X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/sys/dev/usb/net X-SVN-Commit-Revision: 333096 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 02:18:19 -0000 Author: emaste Date: Mon Apr 30 02:18:19 2018 New Revision: 333096 URL: https://svnweb.freebsd.org/changeset/base/333096 Log: if_smsc: set MII BUSY bit to read/write PHY regs Per the datasheet, the BUSY bit must be set when reading or writing PHY registers. From Linux commit 80928805babf. Submitted by: Arshan Khanifar MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D15217 Modified: head/sys/dev/usb/net/if_smsc.c Modified: head/sys/dev/usb/net/if_smsc.c ============================================================================== --- head/sys/dev/usb/net/if_smsc.c Mon Apr 30 01:58:24 2018 (r333095) +++ head/sys/dev/usb/net/if_smsc.c Mon Apr 30 02:18:19 2018 (r333096) @@ -452,7 +452,7 @@ smsc_miibus_readreg(device_t dev, int phy, int reg) goto done; } - addr = (phy << 11) | (reg << 6) | SMSC_MII_READ; + addr = (phy << 11) | (reg << 6) | SMSC_MII_READ | SMSC_MII_BUSY; smsc_write_reg(sc, SMSC_MII_ADDR, addr); if (smsc_wait_for_bits(sc, SMSC_MII_ADDR, SMSC_MII_BUSY) != 0) @@ -505,7 +505,7 @@ smsc_miibus_writereg(device_t dev, int phy, int reg, i val = htole32(val); smsc_write_reg(sc, SMSC_MII_DATA, val); - addr = (phy << 11) | (reg << 6) | SMSC_MII_WRITE; + addr = (phy << 11) | (reg << 6) | SMSC_MII_WRITE | SMSC_MII_BUSY; smsc_write_reg(sc, SMSC_MII_ADDR, addr); if (smsc_wait_for_bits(sc, SMSC_MII_ADDR, SMSC_MII_BUSY) != 0) From owner-svn-src-all@freebsd.org Mon Apr 30 04:02:49 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 43E02FC230E; Mon, 30 Apr 2018 04:02:49 +0000 (UTC) (envelope-from bcran@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E92056FEC0; Mon, 30 Apr 2018 04:02:48 +0000 (UTC) (envelope-from bcran@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E2DBA615B; Mon, 30 Apr 2018 04:02:48 +0000 (UTC) (envelope-from bcran@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U42mVQ014963; Mon, 30 Apr 2018 04:02:48 GMT (envelope-from bcran@FreeBSD.org) Received: (from bcran@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U42mFS014962; Mon, 30 Apr 2018 04:02:48 GMT (envelope-from bcran@FreeBSD.org) Message-Id: <201804300402.w3U42mFS014962@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bcran set sender to bcran@FreeBSD.org using -f From: Rebecca Cran Date: Mon, 30 Apr 2018 04:02:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333097 - head/share/misc X-SVN-Group: head X-SVN-Commit-Author: bcran X-SVN-Commit-Paths: head/share/misc X-SVN-Commit-Revision: 333097 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 04:02:49 -0000 Author: bcran Date: Mon Apr 30 04:02:48 2018 New Revision: 333097 URL: https://svnweb.freebsd.org/changeset/base/333097 Log: Add back the historical information about being mentored by rrs Reviewed by: imp, eadler Differential Revision: https://reviews.freebsd.org/D15230 Modified: head/share/misc/committers-src.dot Modified: head/share/misc/committers-src.dot ============================================================================== --- head/share/misc/committers-src.dot Mon Apr 30 02:18:19 2018 (r333096) +++ head/share/misc/committers-src.dot Mon Apr 30 04:02:48 2018 (r333097) @@ -753,6 +753,7 @@ rpaulo -> jmmv rpaulo -> lidl rpaulo -> ngie +rrs -> bcran rrs -> jchandra rrs -> tuexen From owner-svn-src-all@freebsd.org Mon Apr 30 05:57:56 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A202AFC4806; Mon, 30 Apr 2018 05:57:56 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4C6888660D; Mon, 30 Apr 2018 05:57:56 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 46E957309; Mon, 30 Apr 2018 05:57:56 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U5vu2J070030; Mon, 30 Apr 2018 05:57:56 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U5vucZ070029; Mon, 30 Apr 2018 05:57:56 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201804300557.w3U5vucZ070029@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Mon, 30 Apr 2018 05:57:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333098 - head/sbin/fsck_msdosfs X-SVN-Group: head X-SVN-Commit-Author: delphij X-SVN-Commit-Paths: head/sbin/fsck_msdosfs X-SVN-Commit-Revision: 333098 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 05:57:56 -0000 Author: delphij Date: Mon Apr 30 05:57:55 2018 New Revision: 333098 URL: https://svnweb.freebsd.org/changeset/base/333098 Log: Don't bail out from the check if readboot() returns !FSFATAL. This can happen when the fsinfo signature is invalid, and the user have choose to fix it, in which case the code would return FSBOOTMOD (not FSOK but not FSFATAL either). All other (fatal) cases would return FSFATAL. Obtained from: Android Open Source Project Obtained from: https://android.googlesource.com/platform/external/fsck_msdos/+/d8775a29ea7eac2e5f1504dd21da3725b93b3036 MFC after: 2 weeks Modified: head/sbin/fsck_msdosfs/check.c Modified: head/sbin/fsck_msdosfs/check.c ============================================================================== --- head/sbin/fsck_msdosfs/check.c Mon Apr 30 04:02:48 2018 (r333097) +++ head/sbin/fsck_msdosfs/check.c Mon Apr 30 05:57:55 2018 (r333098) @@ -74,7 +74,7 @@ checkfilesys(const char *fname) return 8; } - if (readboot(dosfs, &boot) != FSOK) { + if (readboot(dosfs, &boot) == FSFATAL) { close(dosfs); printf("\n"); return 8; From owner-svn-src-all@freebsd.org Mon Apr 30 07:22:20 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0ECC0FC62D0; Mon, 30 Apr 2018 07:22:20 +0000 (UTC) (envelope-from hiren@strugglingcoder.info) Received: from mail.strugglingcoder.info (strugglingcoder.info [104.236.146.68]) by mx1.freebsd.org (Postfix) with ESMTP id A59B77725B; Mon, 30 Apr 2018 07:22:19 +0000 (UTC) (envelope-from hiren@strugglingcoder.info) Received: from localhost (unknown [10.1.1.3]) (Authenticated sender: hiren@strugglingcoder.info) by mail.strugglingcoder.info (Postfix) with ESMTPA id 67DD21708B; Mon, 30 Apr 2018 00:16:46 -0700 (PDT) Date: Mon, 30 Apr 2018 00:16:46 -0700 From: hiren panchasara To: Randall Stewart Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r332770 - in head/sys: conf netinet netinet/tcp_stacks sys Message-ID: <20180430071646.GE3653@strugglingcoder.info> References: <201804191338.w3JDc0to002106@repo.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="4Epv4kl9IRBfg3rk" Content-Disposition: inline In-Reply-To: <201804191338.w3JDc0to002106@repo.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 07:22:20 -0000 --4Epv4kl9IRBfg3rk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 04/19/18 at 01:38P, Randall Stewart wrote: > Author: rrs > Date: Thu Apr 19 13:37:59 2018 > New Revision: 332770 > URL: https://svnweb.freebsd.org/changeset/base/332770 >=20 > Log: > This commit brings in the TCP high precision timer system (tcp_hpts). > It is the forerunner/foundational work of bringing in both Rack and BBR > which use hpts for pacing out packets. The feature is optional and requ= ires > the TCPHPTS option to be enabled before the feature will be active. TCP > modules that use it must assure that the base component is compile in > the kernel in which they are loaded. > =20 > MFC after: Never > Sponsored by: Netflix Inc. > Differential Revision: https://reviews.freebsd.org/D15020 Randall, In my understanding, default stack currently cannot use this mechanism. Whe= n do you think that'll be possible? Thanks for your work, Hiren --4Epv4kl9IRBfg3rk Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQF8BAABCgBmBQJa5sLaXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRBNEUyMEZBMUQ4Nzg4RjNGMTdFNjZGMDI4 QjkyNTBFMTU2M0VERkU1AAoJEIuSUOFWPt/lN+cH/3wztDLrSUdJA36+08boOVYE ry0NesRMScRzUEiljS+pe5SugHHV/dcn1Nj160a26aJW4PGjcnERjLQjdXyAqv3g oKSvPyoDupeJaU/c7PHc4GJkZG/lN80tj21YGqD/7A0peAT4kYSYD3v7ZE56sCON ZmqOuS1h/rjiPEehXNzd2fDY2B1ScMGws0B5Oa+XGsjqUpZU+AZsGmHjA5WdjPg9 mpSWK7Fd/tmAV7RfRXfF0Rn2bZKT6xoP6xPVuL/Pg7riNAz/lS/kNlMHO6/E0yGC sADBPRK+a0E6/TY/H4HR1rXfohfl9AhoqJSuKkJOUCWGNZHGQ/MxG1N0oIapvzo= =fois -----END PGP SIGNATURE----- --4Epv4kl9IRBfg3rk-- From owner-svn-src-all@freebsd.org Mon Apr 30 07:24:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5663BFC63E5; Mon, 30 Apr 2018 07:24:32 +0000 (UTC) (envelope-from ram@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EDD2877450; Mon, 30 Apr 2018 07:24:31 +0000 (UTC) (envelope-from ram@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E8C4C10170; Mon, 30 Apr 2018 07:24:31 +0000 (UTC) (envelope-from ram@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U7OVNY014280; Mon, 30 Apr 2018 07:24:31 GMT (envelope-from ram@FreeBSD.org) Received: (from ram@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U7OVKn014279; Mon, 30 Apr 2018 07:24:31 GMT (envelope-from ram@FreeBSD.org) Message-Id: <201804300724.w3U7OVKn014279@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ram set sender to ram@FreeBSD.org using -f From: Ram Kishore Vegesna Date: Mon, 30 Apr 2018 07:24:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333099 - head/sys/modules/ocs_fc X-SVN-Group: head X-SVN-Commit-Author: ram X-SVN-Commit-Paths: head/sys/modules/ocs_fc X-SVN-Commit-Revision: 333099 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 07:24:32 -0000 Author: ram Date: Mon Apr 30 07:24:31 2018 New Revision: 333099 URL: https://svnweb.freebsd.org/changeset/base/333099 Log: Included opt_stack.h in Makefile, to fix module build. PR: 227823 Reported by: eugen Approved by: mav MFC after: 3 days Modified: head/sys/modules/ocs_fc/Makefile Modified: head/sys/modules/ocs_fc/Makefile ============================================================================== --- head/sys/modules/ocs_fc/Makefile Mon Apr 30 05:57:55 2018 (r333098) +++ head/sys/modules/ocs_fc/Makefile Mon Apr 30 07:24:31 2018 (r333099) @@ -8,6 +8,7 @@ SRCS = \ bus_if.h \ pci_if.h \ opt_scsi.h \ + opt_stack.h \ opt_cam.h # OS From owner-svn-src-all@freebsd.org Mon Apr 30 07:30:38 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9002FFC6548; Mon, 30 Apr 2018 07:30:38 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3E1A577648; Mon, 30 Apr 2018 07:30:38 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 38DB010184; Mon, 30 Apr 2018 07:30:38 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U7UcjC014565; Mon, 30 Apr 2018 07:30:38 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U7Ub7W014561; Mon, 30 Apr 2018 07:30:37 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201804300730.w3U7Ub7W014561@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 30 Apr 2018 07:30:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333100 - head/sys/dev/usb/controller X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/dev/usb/controller X-SVN-Commit-Revision: 333100 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 07:30:38 -0000 Author: hselasky Date: Mon Apr 30 07:30:37 2018 New Revision: 333100 URL: https://svnweb.freebsd.org/changeset/base/333100 Log: Improve fix in r304629 by allowing configuration of the behaviour through a SYSCTL instead of a compile time define. Add quirk by default for all LynxPoint XHCI controllers. PR: 227602 MFC after: 3 days Sponsored by: Mellanox Technologies Modified: head/sys/dev/usb/controller/xhci.c head/sys/dev/usb/controller/xhci.h head/sys/dev/usb/controller/xhci_pci.c Modified: head/sys/dev/usb/controller/xhci.c ============================================================================== --- head/sys/dev/usb/controller/xhci.c Mon Apr 30 07:24:31 2018 (r333099) +++ head/sys/dev/usb/controller/xhci.c Mon Apr 30 07:30:37 2018 (r333100) @@ -100,6 +100,7 @@ static int xhcidebug; static int xhciroute; static int xhcipolling; static int xhcidma32; +static int xhcictlstep; SYSCTL_INT(_hw_usb_xhci, OID_AUTO, debug, CTLFLAG_RWTUN, &xhcidebug, 0, "Debug level"); @@ -109,9 +110,12 @@ SYSCTL_INT(_hw_usb_xhci, OID_AUTO, use_polling, CTLFLA &xhcipolling, 0, "Set to enable software interrupt polling for the XHCI controller"); SYSCTL_INT(_hw_usb_xhci, OID_AUTO, dma32, CTLFLAG_RWTUN, &xhcidma32, 0, "Set to only use 32-bit DMA for the XHCI controller"); +SYSCTL_INT(_hw_usb_xhci, OID_AUTO, ctlstep, CTLFLAG_RWTUN, + &xhcictlstep, 0, "Set to enable control endpoint status stage stepping"); #else #define xhciroute 0 #define xhcidma32 0 +#define xhcictlstep 0 #endif #define XHCI_INTR_ENDPT 1 @@ -2240,11 +2244,17 @@ xhci_setup_generic_chain(struct usb_xfer *xfer) * Send a DATA1 message and invert the current * endpoint direction. */ -#ifdef XHCI_STEP_STATUS_STAGE - temp.step_td = (xfer->nframes != 0); -#else - temp.step_td = 0; -#endif + if (xhcictlstep || temp.sc->sc_ctlstep) { + /* + * Some XHCI controllers will not delay the + * status stage until the next SOF. Force this + * behaviour to avoid failed control + * transfers. + */ + temp.step_td = (xfer->nframes != 0); + } else { + temp.step_td = 0; + } temp.direction = UE_GET_DIR(xfer->endpointno) ^ UE_DIR_IN; temp.len = 0; temp.pc = NULL; Modified: head/sys/dev/usb/controller/xhci.h ============================================================================== --- head/sys/dev/usb/controller/xhci.h Mon Apr 30 07:24:31 2018 (r333099) +++ head/sys/dev/usb/controller/xhci.h Mon Apr 30 07:30:37 2018 (r333100) @@ -509,6 +509,8 @@ struct xhci_softc { uint8_t sc_noport; /* root HUB device configuration */ uint8_t sc_conf; + /* step status stage of all control transfers */ + uint8_t sc_ctlstep; /* root HUB port event bitmap, max 256 ports */ uint8_t sc_hub_idata[32]; Modified: head/sys/dev/usb/controller/xhci_pci.c ============================================================================== --- head/sys/dev/usb/controller/xhci_pci.c Mon Apr 30 07:24:31 2018 (r333099) +++ head/sys/dev/usb/controller/xhci_pci.c Mon Apr 30 07:30:37 2018 (r333100) @@ -256,6 +256,7 @@ xhci_pci_attach(device_t self) */ sc->sc_port_route = &xhci_pci_port_route; sc->sc_imod_default = XHCI_IMOD_DEFAULT_LP; + sc->sc_ctlstep = 1; break; } From owner-svn-src-all@freebsd.org Mon Apr 30 08:13:31 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 37CBDFC78F6; Mon, 30 Apr 2018 08:13:31 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E047382ACC; Mon, 30 Apr 2018 08:13:30 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C0FD9109AC; Mon, 30 Apr 2018 08:13:30 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U8DUDq039086; Mon, 30 Apr 2018 08:13:30 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U8DUjT039083; Mon, 30 Apr 2018 08:13:30 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201804300813.w3U8DUjT039083@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 30 Apr 2018 08:13:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333101 - stable/11/sys/net X-SVN-Group: stable-11 X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: stable/11/sys/net X-SVN-Commit-Revision: 333101 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 08:13:31 -0000 Author: hselasky Date: Mon Apr 30 08:13:30 2018 New Revision: 333101 URL: https://svnweb.freebsd.org/changeset/base/333101 Log: MFC r333015: Add network device event for priority code point, PCP, changes. When the PCP is changed for either a VLAN network interface or when prio tagging is enabled for a regular ethernet network interface, broadcast the IFNET_EVENT_PCP event so applications like ibcore can update its GID tables accordingly. Reviewed by: ae, kib Differential Revision: https://reviews.freebsd.org/D15040 Sponsored by: Mellanox Technologies Modified: stable/11/sys/net/if_ethersubr.c stable/11/sys/net/if_var.h stable/11/sys/net/if_vlan.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/net/if_ethersubr.c ============================================================================== --- stable/11/sys/net/if_ethersubr.c Mon Apr 30 07:30:37 2018 (r333100) +++ stable/11/sys/net/if_ethersubr.c Mon Apr 30 08:13:30 2018 (r333101) @@ -1124,10 +1124,13 @@ ether_ioctl(struct ifnet *ifp, u_long command, caddr_t if (error != 0) break; if (ifr->ifr_lan_pcp > 7 && - ifr->ifr_lan_pcp != IFNET_PCP_NONE) + ifr->ifr_lan_pcp != IFNET_PCP_NONE) { error = EINVAL; - else + } else { ifp->if_pcp = ifr->ifr_lan_pcp; + /* broadcast event about PCP change */ + EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_PCP); + } break; case SIOCGLANPCP: Modified: stable/11/sys/net/if_var.h ============================================================================== --- stable/11/sys/net/if_var.h Mon Apr 30 07:30:37 2018 (r333100) +++ stable/11/sys/net/if_var.h Mon Apr 30 08:13:30 2018 (r333101) @@ -368,6 +368,8 @@ EVENTHANDLER_DECLARE(ifnet_link_event, ifnet_link_even /* Interface up/down event */ #define IFNET_EVENT_UP 0 #define IFNET_EVENT_DOWN 1 +#define IFNET_EVENT_PCP 2 /* priority code point, PCP */ + typedef void (*ifnet_event_fn)(void *, struct ifnet *ifp, int event); EVENTHANDLER_DECLARE(ifnet_event, ifnet_event_fn); #endif /* _SYS_EVENTHANDLER_H_ */ Modified: stable/11/sys/net/if_vlan.c ============================================================================== --- stable/11/sys/net/if_vlan.c Mon Apr 30 07:30:37 2018 (r333100) +++ stable/11/sys/net/if_vlan.c Mon Apr 30 08:13:30 2018 (r333101) @@ -1930,6 +1930,8 @@ vlan_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data } ifv->ifv_pcp = ifr->ifr_vlan_pcp; vlan_tag_recalculate(ifv); + /* broadcast event about PCP change */ + EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_PCP); break; case SIOCSIFCAP: From owner-svn-src-all@freebsd.org Mon Apr 30 08:39:24 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EE484FC8095; Mon, 30 Apr 2018 08:39:23 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9859F88862; Mon, 30 Apr 2018 08:39:23 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9179C10D22; Mon, 30 Apr 2018 08:39:23 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U8dNAR049899; Mon, 30 Apr 2018 08:39:23 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U8dN6G049898; Mon, 30 Apr 2018 08:39:23 GMT (envelope-from royger@FreeBSD.org) Message-Id: <201804300839.w3U8dN6G049898@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Date: Mon, 30 Apr 2018 08:39:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333106 - stable/10/sys/net X-SVN-Group: stable-10 X-SVN-Commit-Author: royger X-SVN-Commit-Paths: stable/10/sys/net X-SVN-Commit-Revision: 333106 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 08:39:24 -0000 Author: royger Date: Mon Apr 30 08:39:23 2018 New Revision: 333106 URL: https://svnweb.freebsd.org/changeset/base/333106 Log: MFC 270041: net: move interface removal notification up in if_detach_internal Requested by: dexuan Modified: stable/10/sys/net/if.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/net/if.c ============================================================================== --- stable/10/sys/net/if.c Mon Apr 30 08:38:01 2018 (r333105) +++ stable/10/sys/net/if.c Mon Apr 30 08:39:23 2018 (r333106) @@ -983,6 +983,12 @@ if_detach_internal(struct ifnet *ifp, int vmove, struc #endif if_purgemaddrs(ifp); + /* Announce that the interface is gone. */ + rt_ifannouncemsg(ifp, IFAN_DEPARTURE); + EVENTHANDLER_INVOKE(ifnet_departure_event, ifp); + if (IS_DEFAULT_VNET(curvnet)) + devctl_notify("IFNET", ifp->if_xname, "DETACH", NULL); + if (!vmove) { /* * Prevent further calls into the device driver via ifnet. @@ -1022,11 +1028,6 @@ if_detach_internal(struct ifnet *ifp, int vmove, struc } } - /* Announce that the interface is gone. */ - rt_ifannouncemsg(ifp, IFAN_DEPARTURE); - EVENTHANDLER_INVOKE(ifnet_departure_event, ifp); - if (IS_DEFAULT_VNET(curvnet)) - devctl_notify("IFNET", ifp->if_xname, "DETACH", NULL); if_delgroups(ifp); /* From owner-svn-src-all@freebsd.org Mon Apr 30 08:51:04 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D6982FC8349; Mon, 30 Apr 2018 08:51:04 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8B74C8B52A; Mon, 30 Apr 2018 08:51:04 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 866A910FD5; Mon, 30 Apr 2018 08:51:04 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U8p400057646; Mon, 30 Apr 2018 08:51:04 GMT (envelope-from slavash@FreeBSD.org) Received: (from slavash@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U8p4CE057645; Mon, 30 Apr 2018 08:51:04 GMT (envelope-from slavash@FreeBSD.org) Message-Id: <201804300851.w3U8p4CE057645@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: slavash set sender to slavash@FreeBSD.org using -f From: Slava Shwartsman Date: Mon, 30 Apr 2018 08:51:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333107 - stable/11/sys/dev/mlx5/mlx5_en X-SVN-Group: stable-11 X-SVN-Commit-Author: slavash X-SVN-Commit-Paths: stable/11/sys/dev/mlx5/mlx5_en X-SVN-Commit-Revision: 333107 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 08:51:05 -0000 Author: slavash Date: Mon Apr 30 08:51:04 2018 New Revision: 333107 URL: https://svnweb.freebsd.org/changeset/base/333107 Log: MFC r332003: Bump driver version number in mlx5en(4). Approved by: hselasky (mentor), kib (mentor) Sponsored by: Mellanox Technologies Modified: stable/11/sys/dev/mlx5/mlx5_en/mlx5_en_main.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/mlx5/mlx5_en/mlx5_en_main.c ============================================================================== --- stable/11/sys/dev/mlx5/mlx5_en/mlx5_en_main.c Mon Apr 30 08:39:23 2018 (r333106) +++ stable/11/sys/dev/mlx5/mlx5_en/mlx5_en_main.c Mon Apr 30 08:51:04 2018 (r333107) @@ -30,7 +30,9 @@ #include #include -#define ETH_DRIVER_VERSION "3.1.0-dev" +#ifndef ETH_DRIVER_VERSION +#define ETH_DRIVER_VERSION "3.4.1" +#endif char mlx5e_version[] = "Mellanox Ethernet driver" " (" ETH_DRIVER_VERSION ")"; From owner-svn-src-all@freebsd.org Mon Apr 30 09:31:10 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A8DBCFC9343; Mon, 30 Apr 2018 09:31:10 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4B5C26A478; Mon, 30 Apr 2018 09:31:10 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 465DF115B2; Mon, 30 Apr 2018 09:31:10 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3U9VAuG076335; Mon, 30 Apr 2018 09:31:10 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3U9VA9l076334; Mon, 30 Apr 2018 09:31:10 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201804300931.w3U9VA9l076334@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 30 Apr 2018 09:31:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333108 - head/sys/compat/linuxkpi/common/include/linux X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/compat/linuxkpi/common/include/linux X-SVN-Commit-Revision: 333108 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 09:31:10 -0000 Author: hselasky Date: Mon Apr 30 09:31:09 2018 New Revision: 333108 URL: https://svnweb.freebsd.org/changeset/base/333108 Log: Define USEC_PER_MSEC and USEC_PER_SEC in the LinuxKPI. MFC after: 1 week Sponsored by: Mellanox Technologies Modified: head/sys/compat/linuxkpi/common/include/linux/time.h Modified: head/sys/compat/linuxkpi/common/include/linux/time.h ============================================================================== --- head/sys/compat/linuxkpi/common/include/linux/time.h Mon Apr 30 08:51:04 2018 (r333107) +++ head/sys/compat/linuxkpi/common/include/linux/time.h Mon Apr 30 09:31:09 2018 (r333108) @@ -32,6 +32,9 @@ #define NSEC_PER_MSEC 1000000L #define NSEC_PER_SEC 1000000000L +#define USEC_PER_MSEC 1000L +#define USEC_PER_SEC 1000000L + #include #include From owner-svn-src-all@freebsd.org Mon Apr 30 10:15:59 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AC2D2FCA5D9; Mon, 30 Apr 2018 10:15:59 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5DA6474601; Mon, 30 Apr 2018 10:15:59 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 57E5E11D9F; Mon, 30 Apr 2018 10:15:59 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UAFxTi000663; Mon, 30 Apr 2018 10:15:59 GMT (envelope-from wulf@FreeBSD.org) Received: (from wulf@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UAFwe1000660; Mon, 30 Apr 2018 10:15:58 GMT (envelope-from wulf@FreeBSD.org) Message-Id: <201804301015.w3UAFwe1000660@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wulf set sender to wulf@FreeBSD.org using -f From: Vladimir Kondratyev Date: Mon, 30 Apr 2018 10:15:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333109 - head/lib/libsdp X-SVN-Group: head X-SVN-Commit-Author: wulf X-SVN-Commit-Paths: head/lib/libsdp X-SVN-Commit-Revision: 333109 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 10:15:59 -0000 Author: wulf Date: Mon Apr 30 10:15:58 2018 New Revision: 333109 URL: https://svnweb.freebsd.org/changeset/base/333109 Log: libsdp: Add method that returns actual source BD_ADDR of SDP session. Reviewed by: emax, wblock (docs) Differential Revision: https://reviews.freebsd.org/D13456 Modified: head/lib/libsdp/sdp.3 head/lib/libsdp/sdp.h head/lib/libsdp/session.c Modified: head/lib/libsdp/sdp.3 ============================================================================== --- head/lib/libsdp/sdp.3 Mon Apr 30 09:31:09 2018 (r333108) +++ head/lib/libsdp/sdp.3 Mon Apr 30 10:15:58 2018 (r333109) @@ -25,7 +25,7 @@ .\" $Id: sdp.3,v 1.1 2003/09/07 20:34:19 max Exp $ .\" $FreeBSD$ .\" -.Dd May 27, 2005 +.Dd April 30, 2018 .Dt SDP 3 .Os .Sh NAME @@ -45,6 +45,7 @@ .Nm sdp_open_local , .Nm sdp_close , .Nm sdp_error , +.Nm sdp_get_lcaddr , .Nm sdp_search , .Nm sdp_attr2desc , .Nm sdp_uuid2desc @@ -75,6 +76,8 @@ .Ft int32_t .Fn sdp_error "void *xs" .Ft int32_t +.Fn sdp_get_lcaddr "void *xs" "bdaddr_t *l" +.Ft int32_t .Fo sdp_search .Fa "void *xs" "uint32_t plen" "uint16_t const *pp" "uint32_t alen" .Fa "uint32_t const *ap" "uint32_t vlen" "sdp_attr_t *vp" @@ -188,6 +191,22 @@ calling function. .Pp The +.Fn sdp_get_lcaddr +function returns the SDP session actual source BD_ADDR. +The +.Fa xs +parameter should point to a valid SDP session object created with +.Fn sdp_open . +The +.Fa l +parameter should point to a buffer in which the value for the requested BD_ADDR +is to be returned. +.Fn sdp_get_lcaddr +function is useful if the current SDP session has been opened with the +.Dv NG_HCI_BDADDR_ANY +value passed as a source address. +.Pp +The .Fn sdp_search function is used to perform SDP Service Search Attribute Request. The @@ -394,9 +413,10 @@ If the new SDP object was created then caller is still to check if there was connection error. .Pp The +.Fn sdp_get_lcaddr , .Fn sdp_search , .Fn sdp_register_service , -.Fn sdp_unregister_service +.Fn sdp_unregister_service , and .Fn sdp_change_service functions return non-zero value on error. Modified: head/lib/libsdp/sdp.h ============================================================================== --- head/lib/libsdp/sdp.h Mon Apr 30 09:31:09 2018 (r333108) +++ head/lib/libsdp/sdp.h Mon Apr 30 10:15:58 2018 (r333109) @@ -532,6 +532,7 @@ void * sdp_open (bdaddr_t const *l, void * sdp_open_local (char const *control); int32_t sdp_close (void *xs); int32_t sdp_error (void *xs); +int32_t sdp_get_lcaddr (void *xs, bdaddr_t *l); int32_t sdp_search (void *xs, uint32_t plen, uint16_t const *pp, Modified: head/lib/libsdp/session.c ============================================================================== --- head/lib/libsdp/session.c Mon Apr 30 09:31:09 2018 (r333108) +++ head/lib/libsdp/session.c Mon Apr 30 10:15:58 2018 (r333109) @@ -180,3 +180,25 @@ sdp_error(void *xss) return ((ss != NULL)? ss->error : EINVAL); } + +int32_t +sdp_get_lcaddr(void *xss, bdaddr_t *l) +{ + sdp_session_p ss = (sdp_session_p) xss; + struct sockaddr_l2cap sa; + socklen_t size; + + if (l == NULL || ss == NULL || ss->flags & SDP_SESSION_LOCAL) { + ss->error = EINVAL; + goto fail; + } + + size = sizeof(sa); + if (getsockname(ss->s, (struct sockaddr *)&sa, &size) == 0) { + bdaddr_copy(l, &sa.l2cap_bdaddr); + ss->error = 0; + } else + ss->error = errno; +fail: + return ((ss->error == 0) ? 0 : -1); +} From owner-svn-src-all@freebsd.org Mon Apr 30 10:24:51 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 26052FCA8A4; Mon, 30 Apr 2018 10:24:51 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CB8A774EA9; Mon, 30 Apr 2018 10:24:50 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C66CE11F5B; Mon, 30 Apr 2018 10:24:50 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UAOoF4006244; Mon, 30 Apr 2018 10:24:50 GMT (envelope-from wulf@FreeBSD.org) Received: (from wulf@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UAOoIq006240; Mon, 30 Apr 2018 10:24:50 GMT (envelope-from wulf@FreeBSD.org) Message-Id: <201804301024.w3UAOoIq006240@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wulf set sender to wulf@FreeBSD.org using -f From: Vladimir Kondratyev Date: Mon, 30 Apr 2018 10:24:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333110 - head/lib/libbluetooth X-SVN-Group: head X-SVN-Commit-Author: wulf X-SVN-Commit-Paths: head/lib/libbluetooth X-SVN-Commit-Revision: 333110 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 10:24:51 -0000 Author: wulf Date: Mon Apr 30 10:24:50 2018 New Revision: 333110 URL: https://svnweb.freebsd.org/changeset/base/333110 Log: bluetooth(3): Add helper functions that performs Bluetooth Remote Name Request procedure to obtain the user-friendly name of another Bluetooth unit. Reviewed by: emax, wblock (docs) Differential Revision: https://reviews.freebsd.org/D13456 Modified: head/lib/libbluetooth/bluetooth.3 head/lib/libbluetooth/bluetooth.h head/lib/libbluetooth/hci.c Modified: head/lib/libbluetooth/bluetooth.3 ============================================================================== --- head/lib/libbluetooth/bluetooth.3 Mon Apr 30 10:15:58 2018 (r333109) +++ head/lib/libbluetooth/bluetooth.3 Mon Apr 30 10:24:50 2018 (r333110) @@ -25,7 +25,7 @@ .\" $Id: bluetooth.3,v 1.5 2003/05/20 23:04:30 max Exp $ .\" $FreeBSD$ .\" -.Dd April 9, 2009 +.Dd April 30, 2018 .Dt BLUETOOTH 3 .Os .Sh NAME @@ -58,6 +58,8 @@ .Nm bt_devfilter_evt_clr , .Nm bt_devfilter_evt_tst , .Nm bt_devinquiry , +.Nm bt_devremote_name , +.Nm bt_devremote_name_gen , .Nm bdaddr_same , .Nm bdaddr_any , .Nm bdaddr_copy @@ -126,6 +128,11 @@ .Fn bt_devfilter_evt_tst "struct bt_devfilter const *filter" "uint8_t event" .Ft int .Fn bt_devinquiry "char const *devname" "time_t length" "int num_rsp" "struct bt_devinquiry **ii" +.Ft char * +.Fn bt_devremote_name "char const *devname" "const bdaddr_t *remote" \ +"time_t to" "uint16_t clk_off" "uint8_t ps_rep_mode" "uint8_t ps_mode" +.Ft char * +.Fn bt_devremote_name_gen "char const *devname" "const bdaddr_t *remote" .Ft int .Fn bdaddr_same "const bdaddr_t *a" "const bdaddr_t *b" .Ft int @@ -589,8 +596,54 @@ struct bt_devinquiry { .Ed .Pp The +.Fn bt_devremote_name +function performs Bluetooth Remote Name Request procedure to obtain the +user-friendly name of another Bluetooth unit. +The +.Fa devname +parameter specifies which local Bluetooth device should perform the request. +If not specified +.Dv ( NULL ) , +the first available device is used. +The +.Fa remote +parameter specifies the Bluetooth BD_ADDR of the remote device to query. +The +.Fa to +parameter specifies response timeout in seconds. +If not specified (0), the default value is taken from the +net.bluetooth.hci.command_timeout +.Xr sysctl 8 +value. +The +.Fa clk_off , +.Fa ps_rep_mode , +and +.Fa ps_mode +parameters specify Clock_Offset, Page_Scan_Repetition_Mode, and Page_Scan_Mode +fields of HCI_Remote_Name_Request respectively. +On success, the function returns a pointer to dynamically allocated +NUL-terminated string or +.Dv NULL +if an error occurred. +It is up to the caller to release returned string using +.Xr free 3 . +.Pp +The +.Fn bt_devremote_name_gen +function is a shortcut to +.Fn bt_devremote_name +that passes generic defaults for +.Fa to , +.Fa clk_off , +.Fa ps_rep_mode , +and +.Fa ps_mode +parameters. +.Pp +The .Fn bdaddr_same , -.Fn bdaddr_any +.Fn bdaddr_any , and .Fn bdaddr_copy are handy shorthand Bluetooth address utility functions. Modified: head/lib/libbluetooth/bluetooth.h ============================================================================== --- head/lib/libbluetooth/bluetooth.h Mon Apr 30 10:15:58 2018 (r333109) +++ head/lib/libbluetooth/bluetooth.h Mon Apr 30 10:24:50 2018 (r333110) @@ -182,8 +182,18 @@ void bt_devfilter_evt_clr(struct bt_devfilter *filter int bt_devfilter_evt_tst(struct bt_devfilter const *filter, uint8_t event); int bt_devinquiry(char const *devname, time_t length, int num_rsp, struct bt_devinquiry **ii); +char * bt_devremote_name(char const *devname, const bdaddr_t *remote, + time_t to, uint16_t clk_off, + uint8_t ps_rep_mode, uint8_t ps_mode); int bt_devinfo (struct bt_devinfo *di); int bt_devenum (bt_devenum_cb_t cb, void *arg); + +static __inline char * +bt_devremote_name_gen(char const *devname, const bdaddr_t *remote) +{ + return (bt_devremote_name(devname, remote, 0, 0x0000, + NG_HCI_SCAN_REP_MODE0, NG_HCI_MANDATORY_PAGE_SCAN_MODE)); +} /* * bdaddr utility functions (from NetBSD) Modified: head/lib/libbluetooth/hci.c ============================================================================== --- head/lib/libbluetooth/hci.c Mon Apr 30 10:15:58 2018 (r333109) +++ head/lib/libbluetooth/hci.c Mon Apr 30 10:24:50 2018 (r333110) @@ -32,6 +32,9 @@ * $FreeBSD$ */ +#include +#include + #include #define L2CAP_SOCKET_CHECKED #include @@ -39,6 +42,7 @@ #include #include #include +#include #include #undef MIN @@ -46,6 +50,7 @@ static int bt_devany_cb(int s, struct bt_devinfo const *di, void *xdevname); static char * bt_dev2node (char const *devname, char *nodename, int nnlen); +static time_t bt_get_default_hci_command_timeout(void); int bt_devopen(char const *devname) @@ -534,6 +539,63 @@ wait_for_more: return (i - *ii); } +char * +bt_devremote_name(char const *devname, const bdaddr_t *remote, time_t to, + uint16_t clk_off, uint8_t ps_rep_mode, uint8_t ps_mode) +{ + char _devname[HCI_DEVNAME_SIZE]; + struct bt_devreq r; + ng_hci_remote_name_req_cp cp; + ng_hci_remote_name_req_compl_ep ep; + int s; + char *remote_name = NULL; + + if (remote == NULL || to < 0) { + errno = EINVAL; + goto out; + } + + if (to == 0) { + to = bt_get_default_hci_command_timeout(); + if (to < 0) + goto out; + } + to++; + + if (devname == NULL) { + memset(_devname, 0, sizeof(_devname)); + devname = _devname; + if (bt_devenum(bt_devany_cb, _devname) <= 0) + goto out; + } + + memset(&r, 0, sizeof(r)); + memset(&cp, 0, sizeof(cp)); + memset(&ep, 0, sizeof(ep)); + cp.clock_offset = htole16(clk_off); + cp.page_scan_rep_mode = ps_rep_mode; + cp.page_scan_mode = ps_mode; + bdaddr_copy(&cp.bdaddr, remote); + r.opcode = NG_HCI_OPCODE(NG_HCI_OGF_LINK_CONTROL, + NG_HCI_OCF_REMOTE_NAME_REQ); + r.event = NG_HCI_EVENT_REMOTE_NAME_REQ_COMPL; + r.cparam = &cp; + r.clen = sizeof(cp); + r.rparam = &ep; + r.rlen = sizeof(ep); + + s = bt_devopen(devname); + if (s < 0) + goto out; + + if (bt_devreq(s, &r, to) == 0 || ep.status == 0x00) + remote_name = strndup((const char *)&ep.name, sizeof(ep.name)); + + bt_devclose(s); +out: + return (remote_name); +} + int bt_devinfo(struct bt_devinfo *di) { @@ -735,3 +797,21 @@ bt_dev2node(char const *devname, char *nodename, int n return (NULL); } +static time_t +bt_get_default_hci_command_timeout(void) +{ + int to; + size_t to_size = sizeof(to); + + if (sysctlbyname("net.bluetooth.hci.command_timeout", + &to, &to_size, NULL, 0) < 0) + return (-1); + + /* Should not happen */ + if (to <= 0) { + errno = ERANGE; + return (-1); + } + + return ((time_t)to); +} From owner-svn-src-all@freebsd.org Mon Apr 30 10:34:17 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 84893FCAB97; Mon, 30 Apr 2018 10:34:17 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2D06E77740; Mon, 30 Apr 2018 10:34:17 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 23FFE120EE; Mon, 30 Apr 2018 10:34:17 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UAYGHA011010; Mon, 30 Apr 2018 10:34:16 GMT (envelope-from wulf@FreeBSD.org) Received: (from wulf@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UAYGUh011007; Mon, 30 Apr 2018 10:34:16 GMT (envelope-from wulf@FreeBSD.org) Message-Id: <201804301034.w3UAYGUh011007@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wulf set sender to wulf@FreeBSD.org using -f From: Vladimir Kondratyev Date: Mon, 30 Apr 2018 10:34:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333111 - head/sys/dev/evdev X-SVN-Group: head X-SVN-Commit-Author: wulf X-SVN-Commit-Paths: head/sys/dev/evdev X-SVN-Commit-Revision: 333111 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 10:34:17 -0000 Author: wulf Date: Mon Apr 30 10:34:16 2018 New Revision: 333111 URL: https://svnweb.freebsd.org/changeset/base/333111 Log: uinput: Add FreeBSD specific ioctl to set unique identifier of input device. Reviewed by: gonzo Differential Revision: https://reviews.freebsd.org/D13456 Modified: head/sys/dev/evdev/uinput.c head/sys/dev/evdev/uinput.h Modified: head/sys/dev/evdev/uinput.c ============================================================================== --- head/sys/dev/evdev/uinput.c Mon Apr 30 10:24:50 2018 (r333110) +++ head/sys/dev/evdev/uinput.c Mon Apr 30 10:34:16 2018 (r333111) @@ -604,6 +604,15 @@ uinput_ioctl_sub(struct uinput_cdev_state *state, u_lo evdev_set_phys(state->ucs_evdev, buf); return (0); + case UI_SET_BSDUNIQ: + if (state->ucs_state == UINPUT_RUNNING) + return (EINVAL); + ret = copyinstr(*(void **)data, buf, sizeof(buf), NULL); + if (ret != 0) + return (ret); + evdev_set_serial(state->ucs_evdev, buf); + return (0); + case UI_SET_SWBIT: if (state->ucs_state == UINPUT_RUNNING || intdata > SW_MAX || intdata < 0) Modified: head/sys/dev/evdev/uinput.h ============================================================================== --- head/sys/dev/evdev/uinput.h Mon Apr 30 10:24:50 2018 (r333110) +++ head/sys/dev/evdev/uinput.h Mon Apr 30 10:34:16 2018 (r333111) @@ -90,6 +90,13 @@ struct uinput_abs_setup { #define UI_BEGIN_FF_ERASE _IOWR(UINPUT_IOCTL_BASE, 202, struct uinput_ff_erase) #define UI_END_FF_ERASE _IOW(UINPUT_IOCTL_BASE, 203, struct uinput_ff_erase) +/* + * FreeBSD specific. Set unique identifier of input device. + * Name and magic are chosen to reduce chances of clashing + * with possible future Linux extensions. + */ +#define UI_SET_BSDUNIQ _IO(UINPUT_IOCTL_BASE, 109) + #define EV_UINPUT 0x0101 #define UI_FF_UPLOAD 1 #define UI_FF_ERASE 2 From owner-svn-src-all@freebsd.org Mon Apr 30 10:49:31 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1E4DFFA432D; Mon, 30 Apr 2018 10:49:31 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A9DE57A810; Mon, 30 Apr 2018 10:49:30 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A492E1229F; Mon, 30 Apr 2018 10:49:30 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UAnUSN016145; Mon, 30 Apr 2018 10:49:30 GMT (envelope-from wulf@FreeBSD.org) Received: (from wulf@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UAnU1O016139; Mon, 30 Apr 2018 10:49:30 GMT (envelope-from wulf@FreeBSD.org) Message-Id: <201804301049.w3UAnU1O016139@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wulf set sender to wulf@FreeBSD.org using -f From: Vladimir Kondratyev Date: Mon, 30 Apr 2018 10:49:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333112 - in head/usr.sbin/bluetooth: bthidcontrol bthidd X-SVN-Group: head X-SVN-Commit-Author: wulf X-SVN-Commit-Paths: in head/usr.sbin/bluetooth: bthidcontrol bthidd X-SVN-Commit-Revision: 333112 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 10:49:31 -0000 Author: wulf Date: Mon Apr 30 10:49:29 2018 New Revision: 333112 URL: https://svnweb.freebsd.org/changeset/base/333112 Log: bthidd(8): Add internal support for user-friendly name of remote devices. Extend bthidd.conf format to store name of remote Bluetooth HID devices and implement querying of this information with bthidcontrol(8) "Query" command. Reviewed by: emax Differential Revision: https://reviews.freebsd.org/D13456 Modified: head/usr.sbin/bluetooth/bthidcontrol/Makefile head/usr.sbin/bluetooth/bthidcontrol/sdp.c head/usr.sbin/bluetooth/bthidd/bthid_config.h head/usr.sbin/bluetooth/bthidd/bthidd.conf.sample head/usr.sbin/bluetooth/bthidd/lexer.l head/usr.sbin/bluetooth/bthidd/parser.y Modified: head/usr.sbin/bluetooth/bthidcontrol/Makefile ============================================================================== --- head/usr.sbin/bluetooth/bthidcontrol/Makefile Mon Apr 30 10:34:16 2018 (r333111) +++ head/usr.sbin/bluetooth/bthidcontrol/Makefile Mon Apr 30 10:49:29 2018 (r333112) @@ -7,7 +7,8 @@ PROG= bthidcontrol MAN= bthidcontrol.8 SRCS= bthidcontrol.c hid.c lexer.l parser.y sdp.c WARNS?= 1 -CFLAGS+= -DBTHIDCONTROL=1 -I${.CURDIR:H}/bthidd +CFLAGS+= -DBTHIDCONTROL=1 -I${.CURDIR:H}/bthidd -I${SRCTOP}/lib/libsdp \ + -I${SRCTOP}/lib/libbluetooth LIBADD+= bluetooth sdp usbhid Modified: head/usr.sbin/bluetooth/bthidcontrol/sdp.c ============================================================================== --- head/usr.sbin/bluetooth/bthidcontrol/sdp.c Mon Apr 30 10:34:16 2018 (r333111) +++ head/usr.sbin/bluetooth/bthidcontrol/sdp.c Mon Apr 30 10:49:29 2018 (r333112) @@ -31,7 +31,9 @@ * $FreeBSD$ */ +#include #include +#include #define L2CAP_SOCKET_CHECKED #include #include @@ -114,13 +116,15 @@ hid_init_return_values() { static int32_t hid_sdp_query(bdaddr_t const *local, struct hid_device *hd, int32_t *error) { - void *ss = NULL; - uint8_t *hid_descriptor = NULL, *v; - int32_t i, control_psm = -1, interrupt_psm = -1, - reconnect_initiate = -1, - normally_connectable = 0, battery_power = 0, - hid_descriptor_length = -1, type; - int16_t vendor_id = 0, product_id = 0, version = 0; + void *ss = NULL; + uint8_t *hid_descriptor = NULL, *v; + int32_t i, control_psm = -1, interrupt_psm = -1, + reconnect_initiate = -1, + normally_connectable = 0, battery_power = 0, + hid_descriptor_length = -1, type; + int16_t vendor_id = 0, product_id = 0, version = 0; + bdaddr_t sdp_local; + char devname[HCI_DEVNAME_SIZE]; if (local == NULL) local = NG_HCI_BDADDR_ANY; @@ -175,6 +179,11 @@ hid_sdp_query(bdaddr_t const *local, struct hid_device if (sdp_search(ss, 1, &service_devid, 1, &attrs_devid, nvalues, values) != 0) hid_sdp_query_exit(sdp_error(ss)); + /* Try extract HCI bdaddr from opened SDP session */ + if (sdp_get_lcaddr(ss, &sdp_local) != 0 || + bt_devname(devname, &sdp_local) == 0) + hid_sdp_query_exit(ENOATTR); + sdp_close(ss); ss = NULL; @@ -212,6 +221,7 @@ hid_sdp_query(bdaddr_t const *local, struct hid_device reconnect_initiate == -1 || hid_descriptor == NULL || hid_descriptor_length == -1) hid_sdp_query_exit(ENOATTR); + hd->name = bt_devremote_name_gen(devname, &hd->bdaddr); hd->vendor_id = vendor_id; hd->product_id = product_id; hd->version = version; Modified: head/usr.sbin/bluetooth/bthidd/bthid_config.h ============================================================================== --- head/usr.sbin/bluetooth/bthidd/bthid_config.h Mon Apr 30 10:34:16 2018 (r333111) +++ head/usr.sbin/bluetooth/bthidd/bthid_config.h Mon Apr 30 10:49:29 2018 (r333112) @@ -42,6 +42,7 @@ struct hid_device { bdaddr_t bdaddr; /* HID device BDADDR */ + char * name; /* HID device name */ uint16_t control_psm; /* control PSM */ uint16_t interrupt_psm; /* interrupt PSM */ uint16_t vendor_id; /* primary vendor id */ Modified: head/usr.sbin/bluetooth/bthidd/bthidd.conf.sample ============================================================================== --- head/usr.sbin/bluetooth/bthidd/bthidd.conf.sample Mon Apr 30 10:34:16 2018 (r333111) +++ head/usr.sbin/bluetooth/bthidd/bthidd.conf.sample Mon Apr 30 10:49:29 2018 (r333112) @@ -2,6 +2,7 @@ device { bdaddr 00:50:f2:e5:68:84; + name "Bluetooth Mouse"; vendor_id 0x0000; product_id 0x0000; version 0x0000; @@ -27,6 +28,7 @@ device { device { bdaddr 00:50:f2:e3:fb:e1; + name "Bluetooth Keyboard"; vendor_id 0x0000; product_id 0x0000; version 0x0000; Modified: head/usr.sbin/bluetooth/bthidd/lexer.l ============================================================================== --- head/usr.sbin/bluetooth/bthidd/lexer.l Mon Apr 30 10:34:16 2018 (r333111) +++ head/usr.sbin/bluetooth/bthidd/lexer.l Mon Apr 30 10:49:29 2018 (r333112) @@ -56,6 +56,7 @@ hexword {hexdigit}{hexdigit}?{hexdigit}?{hexdigit}? device_word device bdaddr_word bdaddr +name_word name vendor_id_word vendor_id product_id_word product_id version_word version @@ -71,6 +72,7 @@ false_word false bdaddrstring {hexbyte}:{hexbyte}:{hexbyte}:{hexbyte}:{hexbyte}:{hexbyte} hexbytestring 0x{hexbyte} hexwordstring 0x{hexword} +string \".+\" %% @@ -85,6 +87,7 @@ hexwordstring 0x{hexword} {device_word} return (T_DEVICE); {bdaddr_word} return (T_BDADDR); +{name_word} return (T_NAME); {vendor_id_word} return (T_VENDOR_ID); {product_id_word} return (T_PRODUCT_ID); {version_word} return (T_VERSION); @@ -116,6 +119,12 @@ hexwordstring 0x{hexword} yylval.num = strtoul(yytext, &ep, 16); return (*ep == '\0'? T_HEXWORD : T_ERROR); + } + +{string} { + yytext[strlen(yytext) - 1] = 0; + yylval.string = &yytext[1]; + return (T_STRING); } . return (T_ERROR); Modified: head/usr.sbin/bluetooth/bthidd/parser.y ============================================================================== --- head/usr.sbin/bluetooth/bthidd/parser.y Mon Apr 30 10:34:16 2018 (r333111) +++ head/usr.sbin/bluetooth/bthidd/parser.y Mon Apr 30 10:49:29 2018 (r333112) @@ -63,6 +63,8 @@ #define EOL "\n" #endif /* ndef BTHIDCONTROL */ +#define NAMELESS_DEVICE "No Name" + #include "bthid_config.h" int yylex (void); @@ -85,11 +87,14 @@ static LIST_HEAD(, hid_device) hid_devices; %union { bdaddr_t bdaddr; int32_t num; + char *string; } %token T_BDADDRSTRING %token T_HEXBYTE %token T_HEXWORD +%token T_STRING +%token T_NAME %token T_DEVICE T_BDADDR T_VENDOR_ID T_PRODUCT_ID T_VERSION T_CONTROL_PSM %token T_INTERRUPT_PSM T_RECONNECT_INITIATE T_BATTERY_POWER %token T_NORMALLY_CONNECTABLE T_HID_DESCRIPTOR @@ -128,6 +133,7 @@ options: option ';' ; option: bdaddr + | name | vendor_id | product_id | version @@ -146,6 +152,24 @@ bdaddr: T_BDADDR T_BDADDRSTRING } ; +name: T_NAME T_STRING + { + if (hid_device->name != NULL) { + free(hid_device->name); + hid_device->name = NULL; + } + + if (strcmp($2, NAMELESS_DEVICE)) { + hid_device->name = strdup($2); + if (hid_device->name == NULL) { + SYSLOG(LOGCRIT, "Could not allocate new " \ + "device name" EOL); + YYABORT; + } + } + } + ; + vendor_id: T_VENDOR_ID T_HEXWORD { hid_device->vendor_id = $2; @@ -332,6 +356,7 @@ print_hid_device(hid_device_p d, FILE *f) fprintf(f, "device {\n" \ " bdaddr %s;\n" \ +" name \"%s\";\n" \ " vendor_id 0x%04x;\n" \ " product_id 0x%04x;\n" \ " version 0x%04x;\n" \ @@ -342,6 +367,7 @@ print_hid_device(hid_device_p d, FILE *f) " normally_connectable %s;\n" \ " hid_descriptor {", bt_ntoa(&d->bdaddr, NULL), + (d->name != NULL)? d->name : NAMELESS_DEVICE, d->vendor_id, d->product_id, d->version, d->control_psm, d->interrupt_psm, d->reconnect_initiate? "true" : "false", @@ -419,6 +445,7 @@ free_hid_device(hid_device_p d) if (d->desc != NULL) hid_dispose_report_desc(d->desc); + free(d->name); memset(d, 0, sizeof(*d)); free(d); } From owner-svn-src-all@freebsd.org Mon Apr 30 12:16:56 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7C03FFA8609; Mon, 30 Apr 2018 12:16:56 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 26D636C941; Mon, 30 Apr 2018 12:16:56 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 085671310E; Mon, 30 Apr 2018 12:16:56 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UCGt25060986; Mon, 30 Apr 2018 12:16:55 GMT (envelope-from wulf@FreeBSD.org) Received: (from wulf@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UCGsao060973; Mon, 30 Apr 2018 12:16:54 GMT (envelope-from wulf@FreeBSD.org) Message-Id: <201804301216.w3UCGsao060973@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wulf set sender to wulf@FreeBSD.org using -f From: Vladimir Kondratyev Date: Mon, 30 Apr 2018 12:16:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333113 - in head: etc/defaults etc/rc.d usr.sbin/bluetooth/bthidd X-SVN-Group: head X-SVN-Commit-Author: wulf X-SVN-Commit-Paths: in head: etc/defaults etc/rc.d usr.sbin/bluetooth/bthidd X-SVN-Commit-Revision: 333113 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 12:16:57 -0000 Author: wulf Date: Mon Apr 30 12:16:54 2018 New Revision: 333113 URL: https://svnweb.freebsd.org/changeset/base/333113 Log: bthidd(8): Add evdev protocol support for bluetooth keyboards and mouses User-visible changes: "-u" is added to to list of command line options supported by bthidd. Use it to enable evdev support. uinput and evdev modules should be kld-loaded or compiled into the kernel in that case. bthidd_evdev_support rc.conf variable is added to control enabling of evdev support in bthidd startup script. Possible values are: "YES", "NO", "AUTO"(default). Setting bthidd_evdev_support to "AUTO" inserts "-u" option if kernel is compiled with EVDEV_SUPPORT option enabled. Support for consumer HID usage page keyboard events is implemented. Most of them are available only through evdev protocol. kern.evdev.rcpt_mask sysctl is checked, so "sysctl kern.evdev.rcpt_mask=12" should be executed if EVDEV_SUPPORT is compiled into kernel. It is recommended to regenerate bthidd.conf entries with bthidcontrol(8) "Query" command to set user-friendly names of bluetooth devices. Reviewed by: emax, gonzo, wblock (docs), bcr (docs, early version) Differential Revision: https://reviews.freebsd.org/D13456 Added: head/usr.sbin/bluetooth/bthidd/btuinput.c (contents, props changed) head/usr.sbin/bluetooth/bthidd/btuinput.h (contents, props changed) Modified: head/etc/defaults/rc.conf head/etc/rc.d/bthidd head/usr.sbin/bluetooth/bthidd/Makefile head/usr.sbin/bluetooth/bthidd/bthid_config.h head/usr.sbin/bluetooth/bthidd/bthidd.8 head/usr.sbin/bluetooth/bthidd/bthidd.c head/usr.sbin/bluetooth/bthidd/bthidd.h head/usr.sbin/bluetooth/bthidd/client.c head/usr.sbin/bluetooth/bthidd/hid.c head/usr.sbin/bluetooth/bthidd/kbd.c head/usr.sbin/bluetooth/bthidd/parser.y head/usr.sbin/bluetooth/bthidd/server.c head/usr.sbin/bluetooth/bthidd/session.c Modified: head/etc/defaults/rc.conf ============================================================================== --- head/etc/defaults/rc.conf Mon Apr 30 10:49:29 2018 (r333112) +++ head/etc/defaults/rc.conf Mon Apr 30 12:16:54 2018 (r333113) @@ -433,6 +433,7 @@ sdpd_username="nobody" # it initializes bthidd_enable="NO" # Enable bthidd(8) (or NO) bthidd_config="/etc/bluetooth/bthidd.conf" # bthidd(8) configuration file bthidd_hids="/var/db/bthidd.hids" # bthidd(8) known HID devices file +bthidd_evdev_support="AUTO" # AUTO depends on EVDEV_SUPPORT kernel option rfcomm_pppd_server_enable="NO" # Enable rfcomm_pppd(8) in server mode (or NO) rfcomm_pppd_server_profile="one two" # Profile to use from /etc/ppp/ppp.conf Modified: head/etc/rc.d/bthidd ============================================================================== --- head/etc/rc.d/bthidd Mon Apr 30 10:49:29 2018 (r333112) +++ head/etc/rc.d/bthidd Mon Apr 30 12:16:54 2018 (r333113) @@ -17,8 +17,25 @@ command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" start_precmd="bthidd_prestart" +evdev_enabled() +{ + case ${bthidd_evdev_support} in + [Aa][Uu][Tt][Oo]) + check_kern_features evdev_support + return $? + ;; + *) + checkyesno bthidd_evdev_support + return $? + ;; + esac +} + bthidd_prestart() { + if evdev_enabled; then + load_kld -m uinput uinput + fi load_kld -m kbdmux kbdmux load_kld -m vkbd vkbd load_kld -m ng_btsocket ng_btsocket @@ -29,6 +46,9 @@ load_rc_config $name config="${bthidd_config:-/etc/bluetooth/${name}.conf}" hids="${bthidd_hids:-/var/db/${name}.hids}" command_args="-c ${config} -H ${hids} -p ${pidfile}" +if evdev_enabled; then + command_args="$command_args -u" +fi required_files="${config}" run_rc_command "$1" Modified: head/usr.sbin/bluetooth/bthidd/Makefile ============================================================================== --- head/usr.sbin/bluetooth/bthidd/Makefile Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/Makefile Mon Apr 30 12:16:54 2018 (r333113) @@ -4,8 +4,8 @@ PROG= bthidd MAN= bthidd.8 # bthidd.conf.5 -SRCS= bthidd.c client.c hid.c kbd.c lexer.l parser.y server.c \ - session.c +SRCS= bthidd.c btuinput.c client.c hid.c kbd.c lexer.l parser.y \ + server.c session.c CFLAGS+= -I${.CURDIR} Modified: head/usr.sbin/bluetooth/bthidd/bthid_config.h ============================================================================== --- head/usr.sbin/bluetooth/bthidd/bthid_config.h Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/bthid_config.h Mon Apr 30 12:16:54 2018 (r333113) @@ -53,7 +53,11 @@ struct hid_device unsigned battery_power : 1; unsigned normally_connectable : 1; unsigned keyboard : 1; - unsigned reserved : 11; + unsigned mouse : 1; + unsigned has_wheel : 1; + unsigned has_hwheel : 1; + unsigned has_cons : 1; + unsigned reserved : 7; report_desc_t desc; /* HID report descriptor */ LIST_ENTRY(hid_device) next; /* link to the next */ }; Modified: head/usr.sbin/bluetooth/bthidd/bthidd.8 ============================================================================== --- head/usr.sbin/bluetooth/bthidd/bthidd.8 Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/bthidd.8 Mon Apr 30 12:16:54 2018 (r333113) @@ -25,7 +25,7 @@ .\" $Id: bthidd.8,v 1.1 2006/09/07 21:36:55 max Exp $ .\" $FreeBSD$ .\" -.Dd September 7, 2006 +.Dd April 30, 2018 .Dt BTHIDD 8 .Os .Sh NAME @@ -40,6 +40,7 @@ .Op Fl H Ar file .Op Fl p Ar file .Op Fl t Ar val +.Op Fl u .Sh DESCRIPTION The .Nm @@ -82,6 +83,11 @@ disconnected .Dq passive Bluetooth HID devices and will attempt to establish an outgoing connection. The default rescan interval is 10 seconds. +.It Fl u +Enable support for input event device protocol. +Requires evdev and uinput drivers to be loaded with +.Xr kldload 8 +or compiled into the kernel. .El .Sh KNOWN LIMITATIONS The Modified: head/usr.sbin/bluetooth/bthidd/bthidd.c ============================================================================== --- head/usr.sbin/bluetooth/bthidd/bthidd.c Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/bthidd.c Mon Apr 30 12:16:54 2018 (r333113) @@ -69,14 +69,15 @@ main(int32_t argc, char *argv[]) struct sigaction sa; char const *pid_file = BTHIDD_PIDFILE; char *ep; - int32_t opt, detach, tval; + int32_t opt, detach, tval, uinput; memset(&srv, 0, sizeof(srv)); memset(&srv.bdaddr, 0, sizeof(srv.bdaddr)); detach = 1; tval = 10; /* sec */ + uinput = 0; - while ((opt = getopt(argc, argv, "a:c:dH:hp:t:")) != -1) { + while ((opt = getopt(argc, argv, "a:c:dH:hp:t:u")) != -1) { switch (opt) { case 'a': /* BDADDR */ if (!bt_aton(optarg, &srv.bdaddr)) { @@ -111,6 +112,10 @@ main(int32_t argc, char *argv[]) usage(); break; + case 'u': /* enable evdev support */ + uinput = 1; + break; + case 'h': default: usage(); @@ -158,6 +163,8 @@ main(int32_t argc, char *argv[]) server_init(&srv) < 0 || write_pid_file(pid_file) < 0) exit(1); + srv.uinput = uinput; + for (done = 0; !done; ) { if (elapsed(tval)) client_rescan(&srv); @@ -263,6 +270,7 @@ usage(void) " -h display this message\n" \ " -p file specify PID file name\n" \ " -t tval specify client rescan interval (sec)\n" \ +" -u enable evdev protocol support\n" \ "", BTHIDD_IDENT); exit(255); } Modified: head/usr.sbin/bluetooth/bthidd/bthidd.h ============================================================================== --- head/usr.sbin/bluetooth/bthidd/bthidd.h Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/bthidd.h Mon Apr 30 12:16:54 2018 (r333113) @@ -48,6 +48,7 @@ struct bthid_server int32_t ctrl; /* control channel (listen) */ int32_t intr; /* intr. channel (listen) */ int32_t maxfd; /* max fd in sets */ + int32_t uinput; /* enable evdev support */ fd_set rfdset; /* read descriptor set */ fd_set wfdset; /* write descriptor set */ LIST_HEAD(, bthid_session) sessions; @@ -63,6 +64,10 @@ struct bthid_session int32_t intr; /* interrupt channel */ int32_t vkbd; /* virual keyboard */ void *ctx; /* product specific dev state */ + int32_t ukbd; /* evdev user input */ + int32_t umouse;/* evdev user input */ + int32_t obutt; /* previous mouse buttons */ + int32_t consk; /* last consumer page key */ bdaddr_t bdaddr;/* remote bdaddr */ uint16_t state; /* session state */ #define CLOSED 0 @@ -87,6 +92,7 @@ int32_t client_connect (bthid_server_p srv, int fd) bthid_session_p session_open (bthid_server_p srv, hid_device_p const d); bthid_session_p session_by_bdaddr(bthid_server_p srv, bdaddr_p bdaddr); bthid_session_p session_by_fd (bthid_server_p srv, int32_t fd); +int32_t session_run (bthid_session_p s); void session_close (bthid_session_p s); void hid_initialise (bthid_session_p s); Added: head/usr.sbin/bluetooth/bthidd/btuinput.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.sbin/bluetooth/bthidd/btuinput.c Mon Apr 30 12:16:54 2018 (r333113) @@ -0,0 +1,618 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2015-2017 Vladimir Kondratyev + * 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$ + */ + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#define L2CAP_SOCKET_CHECKED +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bthid_config.h" +#include "bthidd.h" +#include "btuinput.h" + +static int16_t const mbuttons[8] = { + BTN_LEFT, + BTN_MIDDLE, + BTN_RIGHT, + BTN_SIDE, + BTN_EXTRA, + BTN_FORWARD, + BTN_BACK, + BTN_TASK +}; + +static uint16_t const led_codes[3] = { + LED_CAPSL, /* CLKED */ + LED_NUML, /* NLKED */ + LED_SCROLLL, /* SLKED */ +}; + +#define NONE KEY_RESERVED + +static uint16_t const keymap[0x100] = { + /* 0x00 - 0x27 */ + NONE, NONE, NONE, NONE, KEY_A, KEY_B, KEY_C, KEY_D, + KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, + KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, + KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_1, KEY_2, + KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, + /* 0x28 - 0x3f */ + KEY_ENTER, KEY_ESC, KEY_BACKSPACE, KEY_TAB, + KEY_SPACE, KEY_MINUS, KEY_EQUAL, KEY_LEFTBRACE, + KEY_RIGHTBRACE, KEY_BACKSLASH, KEY_BACKSLASH, KEY_SEMICOLON, + KEY_APOSTROPHE, KEY_GRAVE, KEY_COMMA, KEY_DOT, + KEY_SLASH, KEY_CAPSLOCK, KEY_F1, KEY_F2, + KEY_F3, KEY_F4, KEY_F5, KEY_F6, + /* 0x40 - 0x5f */ + KEY_F7, KEY_F8, KEY_F9, KEY_F10, + KEY_F11, KEY_F12, KEY_SYSRQ, KEY_SCROLLLOCK, + KEY_PAUSE, KEY_INSERT, KEY_HOME, KEY_PAGEUP, + KEY_DELETE, KEY_END, KEY_PAGEDOWN, KEY_RIGHT, + KEY_LEFT, KEY_DOWN, KEY_UP, KEY_NUMLOCK, + KEY_KPSLASH, KEY_KPASTERISK, KEY_KPMINUS, KEY_KPPLUS, + KEY_KPENTER, KEY_KP1, KEY_KP2, KEY_KP3, + KEY_KP4, KEY_KP5, KEY_KP6, KEY_KP7, + /* 0x60 - 0x7f */ + KEY_KP8, KEY_KP9, KEY_KP0, KEY_KPDOT, + KEY_102ND, KEY_COMPOSE, KEY_POWER, KEY_KPEQUAL, + KEY_F13, KEY_F14, KEY_F15, KEY_F16, + KEY_F17, KEY_F18, KEY_F19, KEY_F20, + KEY_F21, KEY_F22, KEY_F23, KEY_F24, + KEY_OPEN, KEY_HELP, KEY_PROPS, KEY_FRONT, + KEY_STOP, KEY_AGAIN, KEY_UNDO, KEY_CUT, + KEY_COPY, KEY_PASTE, KEY_FIND, KEY_MUTE, + /* 0x80 - 0x9f */ + KEY_VOLUMEUP, KEY_VOLUMEDOWN, NONE, NONE, + NONE, KEY_KPCOMMA, NONE, KEY_RO, + KEY_KATAKANAHIRAGANA, KEY_YEN,KEY_HENKAN, KEY_MUHENKAN, + KEY_KPJPCOMMA, NONE, NONE, NONE, + KEY_HANGEUL, KEY_HANJA, KEY_KATAKANA, KEY_HIRAGANA, + KEY_ZENKAKUHANKAKU, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + /* 0xa0 - 0xbf */ + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + /* 0xc0 - 0xdf */ + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + NONE, NONE, NONE, NONE, + /* 0xe0 - 0xff */ + KEY_LEFTCTRL, KEY_LEFTSHIFT, KEY_LEFTALT, KEY_LEFTMETA, + KEY_RIGHTCTRL, KEY_RIGHTSHIFT, KEY_RIGHTALT, KEY_RIGHTMETA, + KEY_PLAYPAUSE, KEY_STOPCD, KEY_PREVIOUSSONG,KEY_NEXTSONG, + KEY_EJECTCD, KEY_VOLUMEUP, KEY_VOLUMEDOWN, KEY_MUTE, + KEY_WWW, KEY_BACK, KEY_FORWARD, KEY_STOP, + KEY_FIND, KEY_SCROLLUP, KEY_SCROLLDOWN, KEY_EDIT, + KEY_SLEEP, KEY_COFFEE, KEY_REFRESH, KEY_CALC, + NONE, NONE, NONE, NONE, +}; + +/* Consumer page usage mapping */ +static uint16_t const consmap[0x300] = { + [0x030] = KEY_POWER, + [0x031] = KEY_RESTART, + [0x032] = KEY_SLEEP, + [0x034] = KEY_SLEEP, + [0x035] = KEY_KBDILLUMTOGGLE, + [0x036] = BTN_MISC, + [0x040] = KEY_MENU, + [0x041] = KEY_SELECT, + [0x042] = KEY_UP, + [0x043] = KEY_DOWN, + [0x044] = KEY_LEFT, + [0x045] = KEY_RIGHT, + [0x046] = KEY_ESC, + [0x047] = KEY_KPPLUS, + [0x048] = KEY_KPMINUS, + [0x060] = KEY_INFO, + [0x061] = KEY_SUBTITLE, + [0x063] = KEY_VCR, + [0x065] = KEY_CAMERA, + [0x069] = KEY_RED, + [0x06a] = KEY_GREEN, + [0x06b] = KEY_BLUE, + [0x06c] = KEY_YELLOW, + [0x06d] = KEY_ZOOM, + [0x06f] = KEY_BRIGHTNESSUP, + [0x070] = KEY_BRIGHTNESSDOWN, + [0x072] = KEY_BRIGHTNESS_TOGGLE, + [0x073] = KEY_BRIGHTNESS_MIN, + [0x074] = KEY_BRIGHTNESS_MAX, + [0x075] = KEY_BRIGHTNESS_AUTO, + [0x082] = KEY_VIDEO_NEXT, + [0x083] = KEY_LAST, + [0x084] = KEY_ENTER, + [0x088] = KEY_PC, + [0x089] = KEY_TV, + [0x08a] = KEY_WWW, + [0x08b] = KEY_DVD, + [0x08c] = KEY_PHONE, + [0x08d] = KEY_PROGRAM, + [0x08e] = KEY_VIDEOPHONE, + [0x08f] = KEY_GAMES, + [0x090] = KEY_MEMO, + [0x091] = KEY_CD, + [0x092] = KEY_VCR, + [0x093] = KEY_TUNER, + [0x094] = KEY_EXIT, + [0x095] = KEY_HELP, + [0x096] = KEY_TAPE, + [0x097] = KEY_TV2, + [0x098] = KEY_SAT, + [0x09a] = KEY_PVR, + [0x09c] = KEY_CHANNELUP, + [0x09d] = KEY_CHANNELDOWN, + [0x0a0] = KEY_VCR2, + [0x0b0] = KEY_PLAY, + [0x0b1] = KEY_PAUSE, + [0x0b2] = KEY_RECORD, + [0x0b3] = KEY_FASTFORWARD, + [0x0b4] = KEY_REWIND, + [0x0b5] = KEY_NEXTSONG, + [0x0b6] = KEY_PREVIOUSSONG, + [0x0b7] = KEY_STOPCD, + [0x0b8] = KEY_EJECTCD, + [0x0bc] = KEY_MEDIA_REPEAT, + [0x0b9] = KEY_SHUFFLE, + [0x0bf] = KEY_SLOW, + [0x0cd] = KEY_PLAYPAUSE, + [0x0cf] = KEY_VOICECOMMAND, + [0x0e2] = KEY_MUTE, + [0x0e5] = KEY_BASSBOOST, + [0x0e9] = KEY_VOLUMEUP, + [0x0ea] = KEY_VOLUMEDOWN, + [0x0f5] = KEY_SLOW, + [0x181] = KEY_BUTTONCONFIG, + [0x182] = KEY_BOOKMARKS, + [0x183] = KEY_CONFIG, + [0x184] = KEY_WORDPROCESSOR, + [0x185] = KEY_EDITOR, + [0x186] = KEY_SPREADSHEET, + [0x187] = KEY_GRAPHICSEDITOR, + [0x188] = KEY_PRESENTATION, + [0x189] = KEY_DATABASE, + [0x18a] = KEY_MAIL, + [0x18b] = KEY_NEWS, + [0x18c] = KEY_VOICEMAIL, + [0x18d] = KEY_ADDRESSBOOK, + [0x18e] = KEY_CALENDAR, + [0x18f] = KEY_TASKMANAGER, + [0x190] = KEY_JOURNAL, + [0x191] = KEY_FINANCE, + [0x192] = KEY_CALC, + [0x193] = KEY_PLAYER, + [0x194] = KEY_FILE, + [0x196] = KEY_WWW, + [0x199] = KEY_CHAT, + [0x19c] = KEY_LOGOFF, + [0x19e] = KEY_COFFEE, + [0x19f] = KEY_CONTROLPANEL, + [0x1a2] = KEY_APPSELECT, + [0x1a3] = KEY_NEXT, + [0x1a4] = KEY_PREVIOUS, + [0x1a6] = KEY_HELP, + [0x1a7] = KEY_DOCUMENTS, + [0x1ab] = KEY_SPELLCHECK, + [0x1ae] = KEY_KEYBOARD, + [0x1b1] = KEY_SCREENSAVER, + [0x1b4] = KEY_FILE, + [0x1b6] = KEY_IMAGES, + [0x1b7] = KEY_AUDIO, + [0x1b8] = KEY_VIDEO, + [0x1bc] = KEY_MESSENGER, + [0x1bd] = KEY_INFO, + [0x201] = KEY_NEW, + [0x202] = KEY_OPEN, + [0x203] = KEY_CLOSE, + [0x204] = KEY_EXIT, + [0x207] = KEY_SAVE, + [0x208] = KEY_PRINT, + [0x209] = KEY_PROPS, + [0x21a] = KEY_UNDO, + [0x21b] = KEY_COPY, + [0x21c] = KEY_CUT, + [0x21d] = KEY_PASTE, + [0x21f] = KEY_FIND, + [0x221] = KEY_SEARCH, + [0x222] = KEY_GOTO, + [0x223] = KEY_HOMEPAGE, + [0x224] = KEY_BACK, + [0x225] = KEY_FORWARD, + [0x226] = KEY_STOP, + [0x227] = KEY_REFRESH, + [0x22a] = KEY_BOOKMARKS, + [0x22d] = KEY_ZOOMIN, + [0x22e] = KEY_ZOOMOUT, + [0x22f] = KEY_ZOOMRESET, + [0x233] = KEY_SCROLLUP, + [0x234] = KEY_SCROLLDOWN, + [0x23d] = KEY_EDIT, + [0x25f] = KEY_CANCEL, + [0x269] = KEY_INSERT, + [0x26a] = KEY_DELETE, + [0x279] = KEY_REDO, + [0x289] = KEY_REPLY, + [0x28b] = KEY_FORWARDMAIL, + [0x28c] = KEY_SEND, + [0x2c7] = KEY_KBDINPUTASSIST_PREV, + [0x2c8] = KEY_KBDINPUTASSIST_NEXT, + [0x2c9] = KEY_KBDINPUTASSIST_PREVGROUP, + [0x2ca] = KEY_KBDINPUTASSIST_NEXTGROUP, + [0x2cb] = KEY_KBDINPUTASSIST_ACCEPT, + [0x2cc] = KEY_KBDINPUTASSIST_CANCEL, +}; + +static int32_t +uinput_open_common(hid_device_p const p, bdaddr_p local, const uint8_t *name) +{ + struct uinput_setup uisetup; + uint8_t phys[UINPUT_MAX_NAME_SIZE]; + uint8_t uniq[UINPUT_MAX_NAME_SIZE]; + int32_t fd; + + /* Take local and remote bdaddr */ + bt_ntoa(local, phys); + bt_ntoa(&p->bdaddr, uniq); + + /* Take device name from bthidd.conf. Fallback to generic name. */ + if (p->name != NULL) + name = p->name; + + /* Set device name and bus/vendor information */ + memset(&uisetup, 0, sizeof(uisetup)); + snprintf(uisetup.name, UINPUT_MAX_NAME_SIZE, + "%s, bdaddr %s", name, uniq); + uisetup.id.bustype = BUS_BLUETOOTH; + uisetup.id.vendor = p->vendor_id; + uisetup.id.product = p->product_id; + uisetup.id.version = p->version; + + fd = open("/dev/uinput", O_RDWR | O_NONBLOCK); + + if (ioctl(fd, UI_SET_PHYS, phys) < 0 || + ioctl(fd, UI_SET_BSDUNIQ, uniq) < 0 || + ioctl(fd, UI_DEV_SETUP, &uisetup) < 0) + return (-1); + + return (fd); +} + +/* + * Setup uinput device as 8button mouse with wheel(s) + * TODO: bring in more feature detection code from ums + */ +int32_t +uinput_open_mouse(hid_device_p const p, bdaddr_p local) +{ + size_t i; + int32_t fd; + + assert(p != NULL); + + if ((fd = uinput_open_common(p, local, "Bluetooth Mouse")) < 0) + goto bail_out; + + /* Advertise events and axes */ + if (ioctl(fd, UI_SET_EVBIT, EV_SYN) < 0 || + ioctl(fd, UI_SET_EVBIT, EV_KEY) < 0 || + ioctl(fd, UI_SET_EVBIT, EV_REL) < 0 || + ioctl(fd, UI_SET_RELBIT, REL_X) < 0 || + ioctl(fd, UI_SET_RELBIT, REL_Y) < 0 || + (p->has_wheel && ioctl(fd, UI_SET_RELBIT, REL_WHEEL) < 0) || + (p->has_hwheel && ioctl(fd, UI_SET_RELBIT, REL_HWHEEL) < 0) || + ioctl(fd, UI_SET_PROPBIT, INPUT_PROP_POINTER) < 0) + goto bail_out; + + /* Advertise mouse buttons */ + for (i = 0; i < nitems(mbuttons); i++) + if (ioctl(fd, UI_SET_KEYBIT, mbuttons[i]) < 0) + goto bail_out; + + if (ioctl(fd, UI_DEV_CREATE) >= 0) + return (fd); /* SUCCESS */ + +bail_out: + if (fd >= 0) + close(fd); + return (-1); +} + +/* + * Setup uinput keyboard + */ +int32_t +uinput_open_keyboard(hid_device_p const p, bdaddr_p local) +{ + size_t i; + int32_t fd; + + assert(p != NULL); + + if ((fd = uinput_open_common(p, local, "Bluetooth Keyboard")) < 0) + goto bail_out; + + /* Advertise key events and LEDs */ + if (ioctl(fd, UI_SET_EVBIT, EV_KEY) < 0 || + ioctl(fd, UI_SET_EVBIT, EV_LED) < 0 || + ioctl(fd, UI_SET_EVBIT, EV_SYN) < 0 || + ioctl(fd, UI_SET_EVBIT, EV_REP) < 0 || + ioctl(fd, UI_SET_LEDBIT, LED_CAPSL) < 0 || + ioctl(fd, UI_SET_LEDBIT, LED_NUML) < 0 || + ioctl(fd, UI_SET_LEDBIT, LED_SCROLLL)) + goto bail_out; + + /* Advertise keycodes */ + for (i = 0; i < nitems(keymap); i++) + if (keymap[i] != NONE && + ioctl(fd, UI_SET_KEYBIT, keymap[i]) < 0) + goto bail_out; + + /* Advertise consumer page keys if any */ + if (p->has_cons) { + for (i = 0; i < nitems(consmap); i++) { + if (consmap[i] != NONE && + ioctl(fd, UI_SET_KEYBIT, consmap[i]) < 0) + goto bail_out; + } + } + + if (ioctl(fd, UI_DEV_CREATE) >= 0) + return (fd); /* SUCCESS */ + +bail_out: + if (fd >= 0) + close(fd); + return (-1); +} + +/* from sys/dev/evdev/evdev.h */ +#define EVDEV_RCPT_HW_MOUSE (1<<2) +#define EVDEV_RCPT_HW_KBD (1<<3) + +#define MASK_POLL_INTERVAL 5 /* seconds */ +#define MASK_SYSCTL "kern.evdev.rcpt_mask" + +static int32_t +uinput_get_rcpt_mask(void) +{ + static struct timespec last = { 0, 0 }; + struct timespec now; + static int32_t mask = 0; + size_t len; + time_t elapsed; + + if (clock_gettime(CLOCK_MONOTONIC_FAST, &now) == -1) + return mask; + + elapsed = now.tv_sec - last.tv_sec; + if (now.tv_nsec < last.tv_nsec) + elapsed--; + + if (elapsed >= MASK_POLL_INTERVAL) { + len = sizeof(mask); + if (sysctlbyname(MASK_SYSCTL, &mask, &len, NULL, 0) < 0) { + if (errno == ENOENT) + /* kernel is compiled w/o EVDEV_SUPPORT */ + mask = EVDEV_RCPT_HW_MOUSE | EVDEV_RCPT_HW_KBD; + else + mask = 0; + } + last = now; + } + return mask; +} + +static int32_t +uinput_write_event(int32_t fd, uint16_t type, uint16_t code, int32_t value) +{ + struct input_event ie; + + assert(fd >= 0); + + memset(&ie, 0, sizeof(ie)); + ie.type = type; + ie.code = code; + ie.value = value; + return (write(fd, &ie, sizeof(ie))); +} + +int32_t +uinput_rep_mouse(int32_t fd, int32_t x, int32_t y, int32_t z, int32_t t, + int32_t buttons, int32_t obuttons) +{ + size_t i; + int32_t rcpt_mask, mask; + + assert(fd >= 0); + + rcpt_mask = uinput_get_rcpt_mask(); + if (!(rcpt_mask & EVDEV_RCPT_HW_MOUSE)) + return (0); + + if ((x != 0 && uinput_write_event(fd, EV_REL, REL_X, x) < 0) || + (y != 0 && uinput_write_event(fd, EV_REL, REL_Y, y) < 0) || + (z != 0 && uinput_write_event(fd, EV_REL, REL_WHEEL, -z) < 0) || + (t != 0 && uinput_write_event(fd, EV_REL, REL_HWHEEL, t) < 0)) + return (-1); + + for (i = 0; i < nitems(mbuttons); i++) { + mask = 1 << i; + if ((buttons & mask) == (obuttons & mask)) + continue; + if (uinput_write_event(fd, EV_KEY, mbuttons[i], + (buttons & mask) != 0) < 0) + return (-1); + } + + if (uinput_write_event(fd, EV_SYN, SYN_REPORT, 0) < 0) + return (-1); + + return (0); +} + +/* + * Translate and report keyboard page key events + */ +int32_t +uinput_rep_key(int32_t fd, int32_t key, int32_t make) +{ + int32_t rcpt_mask; + + assert(fd >= 0); + + rcpt_mask = uinput_get_rcpt_mask(); + if (!(rcpt_mask & EVDEV_RCPT_HW_KBD)) + return (0); + + if (key >= 0 && key < (int32_t)nitems(keymap) && + keymap[key] != NONE) { + if (uinput_write_event(fd, EV_KEY, keymap[key], make) > 0 && + uinput_write_event(fd, EV_SYN, SYN_REPORT, 0) > 0) + return (0); + } + return (-1); +} + +/* + * Translate and report consumer page key events + */ +int32_t +uinput_rep_cons(int32_t fd, int32_t key, int32_t make) +{ + int32_t rcpt_mask; + + assert(fd >= 0); + + rcpt_mask = uinput_get_rcpt_mask(); + if (!(rcpt_mask & EVDEV_RCPT_HW_KBD)) + return (0); + + if (key >= 0 && key < (int32_t)nitems(consmap) && + consmap[key] != NONE) { + if (uinput_write_event(fd, EV_KEY, consmap[key], make) > 0 && + uinput_write_event(fd, EV_SYN, SYN_REPORT, 0) > 0) + return (0); + } + return (-1); +} + +/* + * Translate and report LED events + */ +int32_t +uinput_rep_leds(int32_t fd, int state, int mask) +{ + size_t i; + int32_t rcpt_mask; + + assert(fd >= 0); + + rcpt_mask = uinput_get_rcpt_mask(); + if (!(rcpt_mask & EVDEV_RCPT_HW_KBD)) + return (0); + + for (i = 0; i < nitems(led_codes); i++) { + if (mask & (1 << i) && + uinput_write_event(fd, EV_LED, led_codes[i], + state & (1 << i) ? 1 : 0) < 0) + return (-1); + } + + return (0); +} + +/* + * Process status change from evdev + */ +int32_t +uinput_kbd_status_changed(bthid_session_p s, uint8_t *data, int32_t len) +{ + struct input_event ie; + int32_t leds, oleds; + size_t i; + + assert(s != NULL); + assert(s->vkbd >= 0); + assert(len == sizeof(struct input_event)); + + memcpy(&ie, data, sizeof(ie)); + switch (ie.type) { + case EV_LED: + ioctl(s->vkbd, KDGETLED, &oleds); + leds = oleds; + for (i = 0; i < nitems(led_codes); i++) { + if (led_codes[i] == ie.code) { + if (ie.value) + leds |= 1 << i; + else + leds &= ~(1 << i); + if (leds != oleds) + ioctl(s->vkbd, KDSETLED, leds); + break; + } + } + break; + case EV_REP: + /* FALLTHROUGH. Repeats are handled by evdev subsystem */ + default: + break; + } + + return (0); +} Added: head/usr.sbin/bluetooth/bthidd/btuinput.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.sbin/bluetooth/bthidd/btuinput.h Mon Apr 30 12:16:54 2018 (r333113) @@ -0,0 +1,44 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2015-2017 Vladimir Kondratyev + * 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$ + */ + +#ifndef _UINPUT_H_ +#define _UINPUT_H_ + +int32_t uinput_open_mouse(hid_device_p const d, bdaddr_p local); +int32_t uinput_open_keyboard(hid_device_p const d, bdaddr_p local); +int32_t uinput_rep_mouse(int32_t fd, int32_t x, int32_t y, int32_t z, + int32_t t, int32_t buttons, int32_t obuttons); +int32_t uinput_rep_key(int32_t fd, int32_t key, int32_t make); +int32_t uinput_rep_cons(int32_t fd, int32_t key, int32_t make); +int32_t uinput_rep_leds(int32_t fd, int state, int mask); +int32_t uinput_kbd_status_changed(bthid_session_p s, uint8_t *data, + int32_t len); + +#endif /* ndef _UINPUT_H_ */ Modified: head/usr.sbin/bluetooth/bthidd/client.c ============================================================================== --- head/usr.sbin/bluetooth/bthidd/client.c Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/client.c Mon Apr 30 12:16:54 2018 (r333113) @@ -188,14 +188,11 @@ client_connect(bthid_server_p srv, int32_t fd) s->state = OPEN; connect_in_progress = 0; - /* Register session's vkbd descriptor (if any) for read */ - if (s->state == OPEN && d->keyboard) { - assert(s->vkbd != -1); - - FD_SET(s->vkbd, &srv->rfdset); - if (s->vkbd > srv->maxfd) - srv->maxfd = s->vkbd; - } + /* Create kbd/mouse after both channels are established */ + if (session_run(s) < 0) { + session_close(s); + return (-1); + } break; default: Modified: head/usr.sbin/bluetooth/bthidd/hid.c ============================================================================== --- head/usr.sbin/bluetooth/bthidd/hid.c Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/hid.c Mon Apr 30 12:16:54 2018 (r333113) @@ -50,6 +50,7 @@ #include #include "bthid_config.h" #include "bthidd.h" +#include "btuinput.h" #include "kbd.h" /* @@ -280,6 +281,19 @@ hid_interrupt(bthid_session_p s, uint8_t *data, int32_ break; case HUP_CONSUMER: + if (hid_device->keyboard && s->srv->uinput) { + if (h.flags & HIO_VARIABLE) { + uinput_rep_cons(s->ukbd, usage, !!val); + } else { + if (s->consk > 0) + uinput_rep_cons(s->ukbd, + s->consk, 0); + if (uinput_rep_cons(s->ukbd, val, 1) + == 0) + s->consk = val; + } + } + if (!val) break; @@ -551,6 +565,14 @@ check_middle_button: syslog(LOG_ERR, "Could not process mouse events from " \ "%s. %s (%d)", bt_ntoa(&s->bdaddr, NULL), strerror(errno), errno); + + if (hid_device->mouse && s->srv->uinput && + uinput_rep_mouse(s->umouse, mouse_x, mouse_y, mouse_z, + mouse_t, mouse_butt, s->obutt) < 0) + syslog(LOG_ERR, "Could not process mouse events from " \ + "%s. %s (%d)", bt_ntoa(&s->bdaddr, NULL), + strerror(errno), errno); + s->obutt = mouse_butt; } return (0); Modified: head/usr.sbin/bluetooth/bthidd/kbd.c ============================================================================== --- head/usr.sbin/bluetooth/bthidd/kbd.c Mon Apr 30 10:49:29 2018 (r333112) +++ head/usr.sbin/bluetooth/bthidd/kbd.c Mon Apr 30 12:16:54 2018 (r333113) @@ -56,10 +56,12 @@ #include #include "bthid_config.h" #include "bthidd.h" +#include "btuinput.h" #include "kbd.h" static void kbd_write(bitstr_t *m, int32_t fb, int32_t make, int32_t fd); static int32_t kbd_xlate(int32_t code, int32_t make, int32_t *b, int32_t const *eob); +static void uinput_kbd_write(bitstr_t *m, int32_t fb, int32_t make, int32_t fd); /* * HID code to PS/2 set 1 code translation table. @@ -354,6 +356,7 @@ kbd_process_keys(bthid_session_p s) if (f2 != -1) { /* release old keys */ kbd_write(s->keys2, f2, 0, s->vkbd); + uinput_kbd_write(s->keys2, f2, 0, s->ukbd); memset(s->keys2, 0, bitstr_size(xsize)); } @@ -366,6 +369,7 @@ kbd_process_keys(bthid_session_p s) memcpy(s->keys2, s->keys1, bitstr_size(xsize)); kbd_write(s->keys1, f1, 1, s->vkbd); + uinput_kbd_write(s->keys1, f1, 1, s->ukbd); memset(s->keys1, 0, bitstr_size(xsize)); return (0); @@ -393,12 +397,15 @@ kbd_process_keys(bthid_session_p s) } bit_ffs(diff, xsize, &f2); - if (f2 > 0) + if (f2 > 0) { kbd_write(diff, f2, 0, s->vkbd); + uinput_kbd_write(diff, f2, 0, s->ukbd); + } bit_ffs(s->keys1, xsize, &f1); if (f1 > 0) { kbd_write(s->keys1, f1, 1, s->vkbd); + uinput_kbd_write(s->keys1, f1, 1, s->ukbd); memset(s->keys1, 0, bitstr_size(xsize)); } @@ -407,6 +414,22 @@ kbd_process_keys(bthid_session_p s) /* * Translate given keymap and write keyscodes + */ +void +uinput_kbd_write(bitstr_t *m, int32_t fb, int32_t make, int32_t fd) +{ + int32_t i; + + if (fd >= 0) { + for (i = fb; i < xsize; i++) { + if (bit_test(m, i)) + uinput_rep_key(fd, i, make); + } + } +} + +/* + * Translate given keymap and write keyscodes */ static void @@ -520,6 +543,7 @@ kbd_status_changed(bthid_session_p s, uint8_t *data, i hid_device_p hid_device; hid_data_t d; hid_item_t h; + uint8_t leds_mask = 0; assert(s != NULL); assert(len == sizeof(vkbd_status_t)); @@ -553,16 +577,19 @@ kbd_status_changed(bthid_session_p s, uint8_t *data, i case 0x01: /* Num Lock LED */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Mon Apr 30 15:18:40 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CF2F6FAE072; Mon, 30 Apr 2018 15:18:39 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7D5A57747B; Mon, 30 Apr 2018 15:18:39 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5E1F814E8F; Mon, 30 Apr 2018 15:18:39 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UFIdR4051879; Mon, 30 Apr 2018 15:18:39 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UFIc28051872; Mon, 30 Apr 2018 15:18:38 GMT (envelope-from np@FreeBSD.org) Message-Id: <201804301518.w3UFIc28051872@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Mon, 30 Apr 2018 15:18:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333114 - in head/sys/dev/cxgbe: . tom X-SVN-Group: head X-SVN-Commit-Author: np X-SVN-Commit-Paths: in head/sys/dev/cxgbe: . tom X-SVN-Commit-Revision: 333114 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 15:18:40 -0000 Author: np Date: Mon Apr 30 15:18:38 2018 New Revision: 333114 URL: https://svnweb.freebsd.org/changeset/base/333114 Log: cxgbe(4): Use opaque cookies or tid range-checks to determine the intended recipient of a CPL when it can't be determined solely from the opcode. Retire the per-queue handlers for such CPLs in favor of the new scheme. Sponsored by: Chelsio Communications Modified: head/sys/dev/cxgbe/adapter.h head/sys/dev/cxgbe/t4_main.c head/sys/dev/cxgbe/t4_sge.c head/sys/dev/cxgbe/tom/t4_cpl_io.c head/sys/dev/cxgbe/tom/t4_ddp.c head/sys/dev/cxgbe/tom/t4_tom.c head/sys/dev/cxgbe/tom/t4_tom.h Modified: head/sys/dev/cxgbe/adapter.h ============================================================================== --- head/sys/dev/cxgbe/adapter.h Mon Apr 30 12:16:54 2018 (r333113) +++ head/sys/dev/cxgbe/adapter.h Mon Apr 30 15:18:38 2018 (r333114) @@ -365,6 +365,19 @@ enum { NM_BUSY = 2, }; +enum { + CPL_COOKIE_RESERVED = 0, + CPL_COOKIE_FILTER, + CPL_COOKIE_DDP0, + CPL_COOKIE_DDP1, + CPL_COOKIE_TOM, + CPL_COOKIE_AVAILABLE1, + CPL_COOKIE_AVAILABLE2, + CPL_COOKIE_AVAILABLE3, + + NUM_CPL_COOKIES = 8 /* Limited by M_COOKIE. Do not increase. */ +}; + struct sge_iq; struct rss_header; typedef int (*cpl_handler_t)(struct sge_iq *, const struct rss_header *, @@ -379,8 +392,6 @@ struct sge_iq { uint32_t flags; volatile int state; struct adapter *adapter; - cpl_handler_t set_tcb_rpl; - cpl_handler_t l2t_write_rpl; struct iq_desc *desc; /* KVA of descriptor ring */ int8_t intr_pktc_idx; /* packet count threshold index */ uint8_t gen; /* generation bit */ @@ -1203,9 +1214,10 @@ int parse_pkt(struct adapter *, struct mbuf **); void *start_wrq_wr(struct sge_wrq *, int, struct wrq_cookie *); void commit_wrq_wr(struct sge_wrq *, void *, struct wrq_cookie *); int tnl_cong(struct port_info *, int); -int t4_register_an_handler(an_handler_t); -int t4_register_fw_msg_handler(int, fw_msg_handler_t); -int t4_register_cpl_handler(int, cpl_handler_t); +void t4_register_an_handler(an_handler_t); +void t4_register_fw_msg_handler(int, fw_msg_handler_t); +void t4_register_cpl_handler(int, cpl_handler_t); +void t4_register_shared_cpl_handler(int, cpl_handler_t, int); /* t4_tracer.c */ struct t4_tracer; Modified: head/sys/dev/cxgbe/t4_main.c ============================================================================== --- head/sys/dev/cxgbe/t4_main.c Mon Apr 30 12:16:54 2018 (r333113) +++ head/sys/dev/cxgbe/t4_main.c Mon Apr 30 15:18:38 2018 (r333114) @@ -617,8 +617,6 @@ static int del_filter(struct adapter *, struct t4_filt static void clear_filter(struct filter_entry *); static int set_filter_wr(struct adapter *, int); static int del_filter_wr(struct adapter *, int); -static int set_tcb_rpl(struct sge_iq *, const struct rss_header *, - struct mbuf *); static int get_sge_context(struct adapter *, struct t4_sge_context *); static int load_fw(struct adapter *, struct t4_data *); static int load_cfg(struct adapter *, struct t4_data *); @@ -9270,22 +9268,6 @@ t4_filter_rpl(struct sge_iq *iq, const struct rss_head } static int -set_tcb_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) -{ - - MPASS(iq->set_tcb_rpl != NULL); - return (iq->set_tcb_rpl(iq, rss, m)); -} - -static int -l2t_write_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) -{ - - MPASS(iq->l2t_write_rpl != NULL); - return (iq->l2t_write_rpl(iq, rss, m)); -} - -static int get_sge_context(struct adapter *sc, struct t4_sge_context *cntxt) { int rc; @@ -10556,8 +10538,10 @@ mod_event(module_t mod, int cmd, void *arg) sx_xlock(&mlu); if (loaded++ == 0) { t4_sge_modload(); - t4_register_cpl_handler(CPL_SET_TCB_RPL, set_tcb_rpl); - t4_register_cpl_handler(CPL_L2T_WRITE_RPL, l2t_write_rpl); + t4_register_shared_cpl_handler(CPL_SET_TCB_RPL, + t4_filter_rpl, CPL_COOKIE_FILTER); + t4_register_shared_cpl_handler(CPL_L2T_WRITE_RPL, + do_l2t_write_rpl, CPL_COOKIE_FILTER); t4_register_cpl_handler(CPL_TRACE_PKT, t4_trace_pkt); t4_register_cpl_handler(CPL_T5_TRACE_PKT, t5_trace_pkt); sx_init(&t4_list_lock, "T4/T5 adapters"); Modified: head/sys/dev/cxgbe/t4_sge.c ============================================================================== --- head/sys/dev/cxgbe/t4_sge.c Mon Apr 30 12:16:54 2018 (r333113) +++ head/sys/dev/cxgbe/t4_sge.c Mon Apr 30 15:18:38 2018 (r333114) @@ -285,98 +285,122 @@ static counter_u64_t extfree_rels; an_handler_t t4_an_handler; fw_msg_handler_t t4_fw_msg_handler[NUM_FW6_TYPES]; cpl_handler_t t4_cpl_handler[NUM_CPL_CMDS]; +cpl_handler_t set_tcb_rpl_handlers[NUM_CPL_COOKIES]; +cpl_handler_t l2t_write_rpl_handlers[NUM_CPL_COOKIES]; - -static int -an_not_handled(struct sge_iq *iq, const struct rsp_ctrl *ctrl) +void +t4_register_an_handler(an_handler_t h) { + uintptr_t *loc; -#ifdef INVARIANTS - panic("%s: async notification on iq %p (ctrl %p)", __func__, iq, ctrl); -#else - log(LOG_ERR, "%s: async notification on iq %p (ctrl %p)\n", - __func__, iq, ctrl); -#endif - return (EDOOFUS); + MPASS(h == NULL || t4_an_handler == NULL); + + loc = (uintptr_t *)&t4_an_handler; + atomic_store_rel_ptr(loc, (uintptr_t)h); } -int -t4_register_an_handler(an_handler_t h) +void +t4_register_fw_msg_handler(int type, fw_msg_handler_t h) { - uintptr_t *loc, new; + uintptr_t *loc; - new = h ? (uintptr_t)h : (uintptr_t)an_not_handled; - loc = (uintptr_t *) &t4_an_handler; - atomic_store_rel_ptr(loc, new); + MPASS(type < nitems(t4_fw_msg_handler)); + MPASS(h == NULL || t4_fw_msg_handler[type] == NULL); + /* + * These are dispatched by the handler for FW{4|6}_CPL_MSG using the CPL + * handler dispatch table. Reject any attempt to install a handler for + * this subtype. + */ + MPASS(type != FW_TYPE_RSSCPL); + MPASS(type != FW6_TYPE_RSSCPL); - return (0); + loc = (uintptr_t *)&t4_fw_msg_handler[type]; + atomic_store_rel_ptr(loc, (uintptr_t)h); } -static int -fw_msg_not_handled(struct adapter *sc, const __be64 *rpl) +void +t4_register_cpl_handler(int opcode, cpl_handler_t h) { - const struct cpl_fw6_msg *cpl = - __containerof(rpl, struct cpl_fw6_msg, data[0]); + uintptr_t *loc; -#ifdef INVARIANTS - panic("%s: fw_msg type %d", __func__, cpl->type); -#else - log(LOG_ERR, "%s: fw_msg type %d\n", __func__, cpl->type); -#endif - return (EDOOFUS); + MPASS(opcode < nitems(t4_cpl_handler)); + MPASS(h == NULL || t4_cpl_handler[opcode] == NULL); + + loc = (uintptr_t *)&t4_cpl_handler[opcode]; + atomic_store_rel_ptr(loc, (uintptr_t)h); } -int -t4_register_fw_msg_handler(int type, fw_msg_handler_t h) +static int +set_tcb_rpl_handler(struct sge_iq *iq, const struct rss_header *rss, + struct mbuf *m) { - uintptr_t *loc, new; + const struct cpl_set_tcb_rpl *cpl = (const void *)(rss + 1); + u_int tid; + int cookie; - if (type >= nitems(t4_fw_msg_handler)) - return (EINVAL); + MPASS(m == NULL); - /* - * These are dispatched by the handler for FW{4|6}_CPL_MSG using the CPL - * handler dispatch table. Reject any attempt to install a handler for - * this subtype. - */ - if (type == FW_TYPE_RSSCPL || type == FW6_TYPE_RSSCPL) - return (EINVAL); + tid = GET_TID(cpl); + if (is_ftid(iq->adapter, tid)) { + /* + * The return code for filter-write is put in the CPL cookie so + * we have to rely on the hardware tid (is_ftid) to determine + * that this is a response to a filter. + */ + cookie = CPL_COOKIE_FILTER; + } else { + cookie = G_COOKIE(cpl->cookie); + } + MPASS(cookie > CPL_COOKIE_RESERVED); + MPASS(cookie < nitems(set_tcb_rpl_handlers)); - new = h ? (uintptr_t)h : (uintptr_t)fw_msg_not_handled; - loc = (uintptr_t *) &t4_fw_msg_handler[type]; - atomic_store_rel_ptr(loc, new); - - return (0); + return (set_tcb_rpl_handlers[cookie](iq, rss, m)); } static int -cpl_not_handled(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) +l2t_write_rpl_handler(struct sge_iq *iq, const struct rss_header *rss, + struct mbuf *m) { + const struct cpl_l2t_write_rpl *rpl = (const void *)(rss + 1); + unsigned int cookie; -#ifdef INVARIANTS - panic("%s: opcode 0x%02x on iq %p with payload %p", - __func__, rss->opcode, iq, m); -#else - log(LOG_ERR, "%s: opcode 0x%02x on iq %p with payload %p\n", - __func__, rss->opcode, iq, m); - m_freem(m); -#endif - return (EDOOFUS); + MPASS(m == NULL); + + cookie = GET_TID(rpl) & F_SYNC_WR ? CPL_COOKIE_TOM : CPL_COOKIE_FILTER; + return (l2t_write_rpl_handlers[cookie](iq, rss, m)); } -int -t4_register_cpl_handler(int opcode, cpl_handler_t h) +static void +t4_init_shared_cpl_handlers(void) { - uintptr_t *loc, new; - if (opcode >= nitems(t4_cpl_handler)) - return (EINVAL); + t4_register_cpl_handler(CPL_SET_TCB_RPL, set_tcb_rpl_handler); + t4_register_cpl_handler(CPL_L2T_WRITE_RPL, l2t_write_rpl_handler); +} - new = h ? (uintptr_t)h : (uintptr_t)cpl_not_handled; - loc = (uintptr_t *) &t4_cpl_handler[opcode]; - atomic_store_rel_ptr(loc, new); +void +t4_register_shared_cpl_handler(int opcode, cpl_handler_t h, int cookie) +{ + uintptr_t *loc; - return (0); + MPASS(opcode < nitems(t4_cpl_handler)); + MPASS(cookie > CPL_COOKIE_RESERVED); + MPASS(cookie < NUM_CPL_COOKIES); + MPASS(t4_cpl_handler[opcode] != NULL); + + switch (opcode) { + case CPL_SET_TCB_RPL: + loc = (uintptr_t *)&set_tcb_rpl_handlers[cookie]; + break; + case CPL_L2T_WRITE_RPL: + loc = (uintptr_t *)&l2t_write_rpl_handlers[cookie]; + break; + default: + MPASS(0); + return; + } + MPASS(h == NULL || *loc == (uintptr_t)NULL); + atomic_store_rel_ptr(loc, (uintptr_t)h); } /* @@ -385,7 +409,6 @@ t4_register_cpl_handler(int opcode, cpl_handler_t h) void t4_sge_modload(void) { - int i; if (fl_pktshift < 0 || fl_pktshift > 7) { printf("Invalid hw.cxgbe.fl_pktshift value (%d)," @@ -425,12 +448,7 @@ t4_sge_modload(void) counter_u64_zero(extfree_refs); counter_u64_zero(extfree_rels); - t4_an_handler = an_not_handled; - for (i = 0; i < nitems(t4_fw_msg_handler); i++) - t4_fw_msg_handler[i] = fw_msg_not_handled; - for (i = 0; i < nitems(t4_cpl_handler); i++) - t4_cpl_handler[i] = cpl_not_handled; - + t4_init_shared_cpl_handlers(); t4_register_cpl_handler(CPL_FW4_MSG, handle_fw_msg); t4_register_cpl_handler(CPL_FW6_MSG, handle_fw_msg); t4_register_cpl_handler(CPL_SGE_EGR_UPDATE, handle_sge_egr_update); @@ -2901,11 +2919,8 @@ alloc_fwq(struct adapter *sc) init_iq(fwq, sc, 0, 0, FW_IQ_QSIZE); if (sc->flags & IS_VF) intr_idx = 0; - else { + else intr_idx = sc->intr_count > 1 ? 1 : 0; - fwq->set_tcb_rpl = t4_filter_rpl; - fwq->l2t_write_rpl = do_l2t_write_rpl; - } rc = alloc_iq_fl(&sc->port[0]->vi[0], fwq, NULL, intr_idx, -1); if (rc != 0) { device_printf(sc->dev, Modified: head/sys/dev/cxgbe/tom/t4_cpl_io.c ============================================================================== --- head/sys/dev/cxgbe/tom/t4_cpl_io.c Mon Apr 30 12:16:54 2018 (r333113) +++ head/sys/dev/cxgbe/tom/t4_cpl_io.c Mon Apr 30 15:18:38 2018 (r333114) @@ -1902,44 +1902,6 @@ do_fw4_ack(struct sge_iq *iq, const struct rss_header return (0); } -int -do_set_tcb_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) -{ - struct adapter *sc = iq->adapter; - const struct cpl_set_tcb_rpl *cpl = (const void *)(rss + 1); - unsigned int tid = GET_TID(cpl); - struct toepcb *toep; -#ifdef INVARIANTS - unsigned int opcode = G_CPL_OPCODE(be32toh(OPCODE_TID(cpl))); -#endif - - KASSERT(opcode == CPL_SET_TCB_RPL, - ("%s: unexpected opcode 0x%x", __func__, opcode)); - KASSERT(m == NULL, ("%s: wasn't expecting payload", __func__)); - MPASS(iq != &sc->sge.fwq); - - toep = lookup_tid(sc, tid); - if (toep->ulp_mode == ULP_MODE_TCPDDP) { - handle_ddp_tcb_rpl(toep, cpl); - return (0); - } - - /* - * TOM and/or other ULPs don't request replies for CPL_SET_TCB or - * CPL_SET_TCB_FIELD requests. This can easily change and when it does - * the dispatch code will go here. - */ -#ifdef INVARIANTS - panic("%s: Unexpected CPL_SET_TCB_RPL for tid %u on iq %p", __func__, - tid, iq); -#else - log(LOG_ERR, "%s: Unexpected CPL_SET_TCB_RPL for tid %u on iq %p\n", - __func__, tid, iq); -#endif - - return (0); -} - void t4_set_tcb_field(struct adapter *sc, struct sge_wrq *wrq, struct toepcb *toep, uint16_t word, uint64_t mask, uint64_t val, int reply, int cookie) @@ -1949,6 +1911,9 @@ t4_set_tcb_field(struct adapter *sc, struct sge_wrq *w struct ofld_tx_sdesc *txsd; MPASS((cookie & ~M_COOKIE) == 0); + if (reply) { + MPASS(cookie != CPL_COOKIE_RESERVED); + } wr = alloc_wrqe(sizeof(*req), wrq); if (wr == NULL) { Modified: head/sys/dev/cxgbe/tom/t4_ddp.c ============================================================================== --- head/sys/dev/cxgbe/tom/t4_ddp.c Mon Apr 30 12:16:54 2018 (r333113) +++ head/sys/dev/cxgbe/tom/t4_ddp.c Mon Apr 30 15:18:38 2018 (r333114) @@ -626,11 +626,17 @@ enum { DDP_BUF1_INVALIDATED }; -void -handle_ddp_tcb_rpl(struct toepcb *toep, const struct cpl_set_tcb_rpl *cpl) +CTASSERT(DDP_BUF0_INVALIDATED == CPL_COOKIE_DDP0); + +static int +do_ddp_tcb_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) { + struct adapter *sc = iq->adapter; + const struct cpl_set_tcb_rpl *cpl = (const void *)(rss + 1); + unsigned int tid = GET_TID(cpl); unsigned int db_idx; - struct inpcb *inp = toep->inp; + struct toepcb *toep; + struct inpcb *inp; struct ddp_buffer *db; struct kaiocb *job; long copied; @@ -638,6 +644,8 @@ handle_ddp_tcb_rpl(struct toepcb *toep, const struct c if (cpl->status != CPL_ERR_NONE) panic("XXX: tcp_rpl failed: %d", cpl->status); + toep = lookup_tid(sc, tid); + inp = toep->inp; switch (cpl->cookie) { case V_WORD(W_TCB_RX_DDP_FLAGS) | V_COOKIE(DDP_BUF0_INVALIDATED): case V_WORD(W_TCB_RX_DDP_FLAGS) | V_COOKIE(DDP_BUF1_INVALIDATED): @@ -645,6 +653,7 @@ handle_ddp_tcb_rpl(struct toepcb *toep, const struct c * XXX: This duplicates a lot of code with handle_ddp_data(). */ db_idx = G_COOKIE(cpl->cookie) - DDP_BUF0_INVALIDATED; + MPASS(db_idx < nitems(toep->ddp.db)); INP_WLOCK(inp); DDP_LOCK(toep); db = &toep->ddp.db[db_idx]; @@ -689,6 +698,8 @@ handle_ddp_tcb_rpl(struct toepcb *toep, const struct c panic("XXX: unknown tcb_rpl offset %#x, cookie %#x", G_WORD(cpl->cookie), G_COOKIE(cpl->cookie)); } + + return (0); } void @@ -1941,6 +1952,10 @@ void t4_ddp_mod_load(void) { + t4_register_shared_cpl_handler(CPL_SET_TCB_RPL, do_ddp_tcb_rpl, + CPL_COOKIE_DDP0); + t4_register_shared_cpl_handler(CPL_SET_TCB_RPL, do_ddp_tcb_rpl, + CPL_COOKIE_DDP1); t4_register_cpl_handler(CPL_RX_DATA_DDP, do_rx_data_ddp); t4_register_cpl_handler(CPL_RX_DDP_COMPLETE, do_rx_ddp_complete); TAILQ_INIT(&ddp_orphan_pagesets); Modified: head/sys/dev/cxgbe/tom/t4_tom.c ============================================================================== --- head/sys/dev/cxgbe/tom/t4_tom.c Mon Apr 30 12:16:54 2018 (r333113) +++ head/sys/dev/cxgbe/tom/t4_tom.c Mon Apr 30 15:18:38 2018 (r333114) @@ -1330,8 +1330,7 @@ t4_tom_activate(struct adapter *sc) struct tom_data *td; struct toedev *tod; struct vi_info *vi; - struct sge_ofld_rxq *ofld_rxq; - int i, j, rc, v; + int i, rc, v; ASSERT_SYNCHRONIZED_OP(sc); @@ -1398,10 +1397,6 @@ t4_tom_activate(struct adapter *sc) for_each_port(sc, i) { for_each_vi(sc->port[i], v, vi) { TOEDEV(vi->ifp) = &td->tod; - for_each_ofld_rxq(vi, j, ofld_rxq) { - ofld_rxq->iq.set_tcb_rpl = do_set_tcb_rpl; - ofld_rxq->iq.l2t_write_rpl = do_l2t_write_rpl2; - } } } @@ -1504,6 +1499,8 @@ t4_tom_mod_load(void) struct protosw *tcp_protosw, *tcp6_protosw; /* CPL handlers */ + t4_register_shared_cpl_handler(CPL_L2T_WRITE_RPL, do_l2t_write_rpl2, + CPL_COOKIE_TOM); t4_init_connect_cpl_handlers(); t4_init_listen_cpl_handlers(); t4_init_cpl_io_handlers(); @@ -1568,6 +1565,7 @@ t4_tom_mod_unload(void) t4_uninit_connect_cpl_handlers(); t4_uninit_listen_cpl_handlers(); t4_uninit_cpl_io_handlers(); + t4_register_shared_cpl_handler(CPL_L2T_WRITE_RPL, NULL, CPL_COOKIE_TOM); return (0); } Modified: head/sys/dev/cxgbe/tom/t4_tom.h ============================================================================== --- head/sys/dev/cxgbe/tom/t4_tom.h Mon Apr 30 12:16:54 2018 (r333113) +++ head/sys/dev/cxgbe/tom/t4_tom.h Mon Apr 30 15:18:38 2018 (r333114) @@ -390,7 +390,6 @@ void t4_set_tcb_field(struct adapter *, struct sge_wrq uint16_t, uint64_t, uint64_t, int, int); void t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop); void t4_push_pdus(struct adapter *sc, struct toepcb *toep, int drop); -int do_set_tcb_rpl(struct sge_iq *, const struct rss_header *, struct mbuf *); /* t4_ddp.c */ int t4_init_ppod_region(struct ppod_region *, struct t4_range *, u_int, @@ -416,7 +415,6 @@ void ddp_queue_toep(struct toepcb *); void release_ddp_resources(struct toepcb *toep); void handle_ddp_close(struct toepcb *, struct tcpcb *, uint32_t); void handle_ddp_indicate(struct toepcb *); -void handle_ddp_tcb_rpl(struct toepcb *, const struct cpl_set_tcb_rpl *); void insert_ddp_data(struct toepcb *, uint32_t); const struct offload_settings *lookup_offload_policy(struct adapter *, int, struct mbuf *, uint16_t, struct inpcb *); From owner-svn-src-all@freebsd.org Mon Apr 30 15:23:46 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4180EFAE3ED; Mon, 30 Apr 2018 15:23:46 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E7CE179306; Mon, 30 Apr 2018 15:23:45 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E215415022; Mon, 30 Apr 2018 15:23:45 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UFNjvI056721; Mon, 30 Apr 2018 15:23:45 GMT (envelope-from slavash@FreeBSD.org) Received: (from slavash@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UFNjF9056720; Mon, 30 Apr 2018 15:23:45 GMT (envelope-from slavash@FreeBSD.org) Message-Id: <201804301523.w3UFNjF9056720@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: slavash set sender to slavash@FreeBSD.org using -f From: Slava Shwartsman Date: Mon, 30 Apr 2018 15:23:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333115 - head/contrib/ofed/libibumad X-SVN-Group: head X-SVN-Commit-Author: slavash X-SVN-Commit-Paths: head/contrib/ofed/libibumad X-SVN-Commit-Revision: 333115 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 15:23:46 -0000 Author: slavash Date: Mon Apr 30 15:23:45 2018 New Revision: 333115 URL: https://svnweb.freebsd.org/changeset/base/333115 Log: libibumad/umad.c: In get_port, ignore sysctl get rate errors This can cause ibpanic in ibstat when width is not set properly as can occur when Ethernet port is connected to InfiniBand fabric. ibpanic: [8167] main: stat of IB device 'mlx5_0' failed: m With this change, Rate is displayed as 0 with ibstat for this scenario. MFC after: 3 days Approved by: hselasky (mentor), kib (mentor) Sponsored by: Mellanox Technologies Modified: head/contrib/ofed/libibumad/umad.c Modified: head/contrib/ofed/libibumad/umad.c ============================================================================== --- head/contrib/ofed/libibumad/umad.c Mon Apr 30 15:18:38 2018 (r333114) +++ head/contrib/ofed/libibumad/umad.c Mon Apr 30 15:23:45 2018 (r333115) @@ -138,6 +138,7 @@ static int get_port(const char *ca_name, const char *d strncpy(port->ca_name, ca_name, sizeof port->ca_name - 1); port->portnum = portnum; port->pkeys = NULL; + port->rate = 0; len = snprintf(port_dir, sizeof(port_dir), "%s/%d", dir, portnum); if (len < 0 || len > sizeof(port_dir)) @@ -155,8 +156,12 @@ static int get_port(const char *ca_name, const char *d goto clean; if (sys_read_uint(port_dir, SYS_PORT_PHY_STATE, &port->phys_state) < 0) goto clean; - if (sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate) < 0) - goto clean; + /* + * If width was not set properly this read may fail. + * Instead of failing everything, we will just skip the check + * and it will be set to 0. + */ + sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate); if (sys_read_uint(port_dir, SYS_PORT_CAPMASK, &capmask) < 0) goto clean; From owner-svn-src-all@freebsd.org Mon Apr 30 17:16:18 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 86298FB0FF3; Mon, 30 Apr 2018 17:16:18 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3368973A39; Mon, 30 Apr 2018 17:16:18 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0F5C11623D; Mon, 30 Apr 2018 17:16:18 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UHGH8D014864; Mon, 30 Apr 2018 17:16:17 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UHGH3j014862; Mon, 30 Apr 2018 17:16:17 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201804301716.w3UHGH3j014862@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Mon, 30 Apr 2018 17:16:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333119 - head/lib/libc/sys X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/lib/libc/sys X-SVN-Commit-Revision: 333119 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 17:16:18 -0000 Author: emaste Date: Mon Apr 30 17:16:17 2018 New Revision: 333119 URL: https://svnweb.freebsd.org/changeset/base/333119 Log: Clarify bindat/connectat use with AT_FDCWD Discovered during investigation into the PR - the description of AT_FDCWD was somewhat confusing. PR: 222632 Submitted by: Jan Kokemüller MFC after: 1 week Modified: head/lib/libc/sys/bindat.2 head/lib/libc/sys/connectat.2 Modified: head/lib/libc/sys/bindat.2 ============================================================================== --- head/lib/libc/sys/bindat.2 Mon Apr 30 15:55:58 2018 (r333118) +++ head/lib/libc/sys/bindat.2 Mon Apr 30 17:16:17 2018 (r333119) @@ -46,7 +46,15 @@ The .Fn bindat system call assigns the local protocol address to a socket. -It works just like the +When passed the special value +.Dv AT_FDCWD +in the +.Fa fd +parameter, the behavior is identical to a call to +.Xr bind 2 . +Otherwise, +.Fn bindat +works like the .Xr bind 2 system call with two exceptions: .Pp @@ -60,15 +68,6 @@ If the file path stored in the field of the sockaddr_un structure is a relative path, it is located relative to the directory associated with the file descriptor .Fa fd . -If -.Fn bindat -is passed the special value -.Dv AT_FDCWD -in the -.Fa fd -parameter, the current working directory is used and the behavior is identical -to a call to -.Xr bind 2 . .El .Sh RETURN VALUES .Rv -std bindat @@ -77,7 +76,7 @@ The .Fn bindat system call may fail with the same errors as the .Xr bind 2 -system call for a UNIX domain socket or with the following errors: +system call or with the following errors: .Bl -tag -width Er .It Bq Er EBADF The Modified: head/lib/libc/sys/connectat.2 ============================================================================== --- head/lib/libc/sys/connectat.2 Mon Apr 30 15:55:58 2018 (r333118) +++ head/lib/libc/sys/connectat.2 Mon Apr 30 17:16:17 2018 (r333119) @@ -46,7 +46,15 @@ The .Fn connectat system call initiates a connection on a socket. -It works just like the +When passed the special value +.Dv AT_FDCWD +in the +.Fa fd +parameter, the behavior is identical to a call to +.Xr connect 2 . +Otherwise, +.Fn connectat +works like the .Xr connect 2 system call with two exceptions: .Pp @@ -60,15 +68,6 @@ If the file path stored in the field of the sockaddr_un structure is a relative path, it is located relative to the directory associated with the file descriptor .Fa fd . -If -.Fn connectat -is passed the special value -.Dv AT_FDCWD -in the -.Fa fd -parameter, the current working directory is used and the behavior is identical -to a call to -.Xr connect 2 . .El .Sh RETURN VALUES .Rv -std connectat @@ -77,7 +76,7 @@ The .Fn connectat system call may fail with the same errors as the .Xr connect 2 -system call for a UNIX domain socket or with the following errors: +system call or with the following errors: .Bl -tag -width Er .It Bq Er EBADF The From owner-svn-src-all@freebsd.org Mon Apr 30 17:31:08 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E30DFFB1639; Mon, 30 Apr 2018 17:31:07 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 93E7F76ADB; Mon, 30 Apr 2018 17:31:07 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8EEE71642A; Mon, 30 Apr 2018 17:31:07 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UHV7R0021463; Mon, 30 Apr 2018 17:31:07 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UHV7kG021459; Mon, 30 Apr 2018 17:31:07 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201804301731.w3UHV7kG021459@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Mon, 30 Apr 2018 17:31:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333120 - in head: share/man/man4 sys/kern tests/sys/capsicum X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: in head: share/man/man4 sys/kern tests/sys/capsicum X-SVN-Commit-Revision: 333120 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 17:31:08 -0000 Author: emaste Date: Mon Apr 30 17:31:06 2018 New Revision: 333120 URL: https://svnweb.freebsd.org/changeset/base/333120 Log: Disable connectat/bindat with AT_FDCWD in capmode Previously it was possible to connect a socket (which had the CAP_CONNECT right) by calling "connectat(AT_FDCWD, ...)" even in capabilties mode. This combination should be treated the same as a call to connect (i.e. forbidden in capabilities mode). Similarly for bindat. Disable connectat/bindat with AT_FDCWD in capabilities mode, fix up the documentation and add tests. PR: 222632 Submitted by: Jan Kokemüller Reviewed by: Domagoj Stolfa MFC after: 1 week Relnotes: Yes Differential Revision: https://reviews.freebsd.org/D15221 Added: head/tests/sys/capsicum/bindat_connectat.c (contents, props changed) Modified: head/share/man/man4/rights.4 head/sys/kern/uipc_syscalls.c head/tests/sys/capsicum/Makefile Modified: head/share/man/man4/rights.4 ============================================================================== --- head/share/man/man4/rights.4 Mon Apr 30 17:16:17 2018 (r333119) +++ head/share/man/man4/rights.4 Mon Apr 30 17:31:06 2018 (r333120) @@ -32,7 +32,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 17, 2016 +.Dd April 30, 2018 .Dt RIGHTS 4 .Os .Sh NAME @@ -94,8 +94,15 @@ Permit and .Xr acl_set_fd_np 3 . .It Dv CAP_BIND -Permit -.Xr bind 2 . +When not in capabilities mode, permit +.Xr bind 2 +and +.Xr bindat 2 +with special value +.Dv AT_FDCWD +in the +.Fa fd +parameter. Note that sockets can also become bound implicitly as a result of .Xr connect 2 or @@ -116,9 +123,16 @@ An alias to and .Dv CAP_LOOKUP . .It Dv CAP_CONNECT -Permit -.Xr connect 2 ; -also required for +When not in capabilities mode, permit +.Xr connect 2 +and +.Xr connectat 2 +with special value +.Dv AT_FDCWD +in the +.Fa fd +parameter. +This right is also required for .Xr sendto 2 with a non-NULL destination address. .It Dv CAP_CONNECTAT Modified: head/sys/kern/uipc_syscalls.c ============================================================================== --- head/sys/kern/uipc_syscalls.c Mon Apr 30 17:16:17 2018 (r333119) +++ head/sys/kern/uipc_syscalls.c Mon Apr 30 17:31:06 2018 (r333120) @@ -187,6 +187,11 @@ kern_bindat(struct thread *td, int dirfd, int fd, stru cap_rights_t rights; int error; +#ifdef CAPABILITY_MODE + if (IN_CAPABILITY_MODE(td) && (dirfd == AT_FDCWD)) + return (ECAPMODE); +#endif + AUDIT_ARG_FD(fd); AUDIT_ARG_SOCKADDR(td, dirfd, sa); error = getsock_cap(td, fd, cap_rights_init(&rights, CAP_BIND), @@ -482,6 +487,11 @@ kern_connectat(struct thread *td, int dirfd, int fd, s struct file *fp; cap_rights_t rights; int error, interrupted = 0; + +#ifdef CAPABILITY_MODE + if (IN_CAPABILITY_MODE(td) && (dirfd == AT_FDCWD)) + return (ECAPMODE); +#endif AUDIT_ARG_FD(fd); AUDIT_ARG_SOCKADDR(td, dirfd, sa); Modified: head/tests/sys/capsicum/Makefile ============================================================================== --- head/tests/sys/capsicum/Makefile Mon Apr 30 17:16:17 2018 (r333119) +++ head/tests/sys/capsicum/Makefile Mon Apr 30 17:31:06 2018 (r333120) @@ -2,7 +2,10 @@ TESTSDIR= ${TESTSBASE}/sys/capsicum +ATF_TESTS_C+= bindat_connectat ATF_TESTS_C+= ioctls_test + +CFLAGS.bindat_connectat.c+= -I${SRCTOP}/tests WARNS?= 6 Added: head/tests/sys/capsicum/bindat_connectat.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tests/sys/capsicum/bindat_connectat.c Mon Apr 30 17:31:06 2018 (r333120) @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2017 Jan Kokemüller + * + * 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 +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "freebsd_test_suite/macros.h" + +static int rootfd = -1; + +/* circumvent bug 215690 */ +int +open(const char *path, int flags, ...) +{ + mode_t mode = 0; + + if (flags & O_CREAT) { + va_list ap; + va_start(ap, flags); + mode = (mode_t) va_arg(ap, int); + va_end(ap); + } + + if (path && path[0] == '/' && rootfd >= 0) { + return (openat(rootfd, path + 1, flags, mode)); + } else { + return (openat(AT_FDCWD, path, flags, mode)); + } +} + +static void +check_capsicum(void) +{ + ATF_REQUIRE_FEATURE("security_capabilities"); + ATF_REQUIRE_FEATURE("security_capability_mode"); + + ATF_REQUIRE((rootfd = open("/", O_EXEC | O_CLOEXEC)) >= 0); +} + +typedef int (*socket_fun)(int, const struct sockaddr *, socklen_t); + +static int +connectat_fdcwd(int s, const struct sockaddr *name, socklen_t namelen) +{ + + return (connectat(AT_FDCWD, s, name, namelen)); +} + +static int +bindat_fdcwd(int s, const struct sockaddr *name, socklen_t namelen) +{ + + return (bindat(AT_FDCWD, s, name, namelen)); +} + + +ATF_TC(bindat_connectat_1); +ATF_TC_HEAD(bindat_connectat_1, tc) +{ + atf_tc_set_md_var(tc, "descr", + "Verify that connect/bind work in normal case"); +} + +static void +check_1(socket_fun f, int s, const struct sockaddr_in *name) +{ + + ATF_REQUIRE((s = socket(AF_INET, SOCK_STREAM, 0)) >= 0); + ATF_REQUIRE_ERRNO(EAFNOSUPPORT, + f(s, (const struct sockaddr *)(name), + sizeof(struct sockaddr_in)) < 0); +} + +ATF_TC_BODY(bindat_connectat_1, tc) +{ + struct sockaddr_in sin; + + memset(&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_port = htons(0); + sin.sin_addr.s_addr = htonl(0xE0000000); + + check_1(bindat_fdcwd, 0, &sin); + check_1(bind, 0, &sin); + check_1(connectat_fdcwd, 0, &sin); + check_1(connect, 0, &sin); +} + + +ATF_TC(bindat_connectat_2); +ATF_TC_HEAD(bindat_connectat_2, tc) +{ + atf_tc_set_md_var(tc, "descr", + "Verify that connect/bind are disabled in cap-mode"); +} + +static void +check_2(socket_fun f, int s, const struct sockaddr_in *name) +{ + + ATF_REQUIRE_ERRNO(ECAPMODE, + f(s, (const struct sockaddr *)name, + sizeof(struct sockaddr_in)) < 0); +} + +ATF_TC_BODY(bindat_connectat_2, tc) +{ + int sock; + struct sockaddr_in sin; + + check_capsicum(); + + ATF_REQUIRE(cap_enter() >= 0); + + /* note: sock is created _after_ cap_enter() and contains all rights */ + ATF_REQUIRE((sock = socket(AF_INET, SOCK_STREAM, 0)) >= 0); + + memset(&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + /* dummy port and multicast address (224.0.0.0) to distinguish two + * cases: + * - ECAPMODE/ENOTCAPABLE --> call blocked by capsicum + * - EAFNOSUPPORT --> call went through to protocol layer + */ + sin.sin_port = htons(0); + sin.sin_addr.s_addr = htonl(0xE0000000); + + check_2(bindat_fdcwd, sock, &sin); + check_2(bind, sock, &sin); + check_2(connectat_fdcwd, sock, &sin); + check_2(connect, sock, &sin); +} + + +ATF_TC(bindat_connectat_3); +ATF_TC_HEAD(bindat_connectat_3, tc) +{ + atf_tc_set_md_var(tc, "descr", + "Check that taking away CAP_BIND/CAP_CONNECT " + "sabotages bind/connect"); +} + +static void +check_3(socket_fun f, int s, const struct sockaddr_in *name, + cap_rights_t *rights, cap_rights_t *sub_rights) +{ + + ATF_REQUIRE((s = socket(AF_INET, SOCK_STREAM, 0)) >= 0); + ATF_REQUIRE(cap_rights_limit(s, rights) >= 0); + ATF_REQUIRE_ERRNO(EAFNOSUPPORT, + f(s, (const struct sockaddr *)name, + sizeof(struct sockaddr_in)) < 0); + ATF_REQUIRE(cap_rights_limit(s, + cap_rights_remove(rights, sub_rights)) >= 0); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + f(s, (const struct sockaddr *)name, + sizeof(struct sockaddr_in)) < 0); +} + +ATF_TC_BODY(bindat_connectat_3, tc) +{ + struct sockaddr_in sin; + cap_rights_t rights, sub_rights; + + check_capsicum(); + + memset(&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_port = htons(0); + sin.sin_addr.s_addr = htonl(0xE0000000); + + check_3(bindat_fdcwd, 0, &sin, + cap_rights_init(&rights, CAP_SOCK_SERVER), + cap_rights_init(&sub_rights, CAP_BIND)); + check_3(bind, 0, &sin, + cap_rights_init(&rights, CAP_SOCK_SERVER), + cap_rights_init(&sub_rights, CAP_BIND)); + check_3(connectat_fdcwd, 0, &sin, + cap_rights_init(&rights, CAP_SOCK_CLIENT), + cap_rights_init(&sub_rights, CAP_CONNECT)); + check_3(connect, 0, &sin, + cap_rights_init(&rights, CAP_SOCK_CLIENT), + cap_rights_init(&sub_rights, CAP_CONNECT)); +} + + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, bindat_connectat_1); + ATF_TP_ADD_TC(tp, bindat_connectat_2); + ATF_TP_ADD_TC(tp, bindat_connectat_3); + + return (atf_no_error()); +} From owner-svn-src-all@freebsd.org Mon Apr 30 17:33:44 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D6EFFFB1892; Mon, 30 Apr 2018 17:33:44 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7FA8D782FE; Mon, 30 Apr 2018 17:33:44 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 77D3D165BC; Mon, 30 Apr 2018 17:33:44 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UHXiXs024587; Mon, 30 Apr 2018 17:33:44 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UHXiho024586; Mon, 30 Apr 2018 17:33:44 GMT (envelope-from np@FreeBSD.org) Message-Id: <201804301733.w3UHXiho024586@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Mon, 30 Apr 2018 17:33:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333121 - head/sys/dev/cxgbe/tom X-SVN-Group: head X-SVN-Commit-Author: np X-SVN-Commit-Paths: head/sys/dev/cxgbe/tom X-SVN-Commit-Revision: 333121 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 17:33:45 -0000 Author: np Date: Mon Apr 30 17:33:44 2018 New Revision: 333121 URL: https://svnweb.freebsd.org/changeset/base/333121 Log: cxgbe/t4_tom: Use appropriate macros instead of magic math while constructing the atid of an active open work request. Sponsored by: Chelsio Communications Modified: head/sys/dev/cxgbe/tom/t4_connect.c Modified: head/sys/dev/cxgbe/tom/t4_connect.c ============================================================================== --- head/sys/dev/cxgbe/tom/t4_connect.c Mon Apr 30 17:31:06 2018 (r333120) +++ head/sys/dev/cxgbe/tom/t4_connect.c Mon Apr 30 17:33:44 2018 (r333121) @@ -418,7 +418,7 @@ t4_connect(struct toedev *tod, struct socket *so, stru else rscale = 0; mtu_idx = find_best_mtu_idx(sc, &inp->inp_inc, &settings); - qid_atid = (toep->ofld_rxq->iq.abs_id << 14) | toep->tid; + qid_atid = V_TID_QID(toep->ofld_rxq->iq.abs_id) | V_TID_TID(toep->tid); if (isipv6) { struct cpl_act_open_req6 *cpl = wrtod(wr); From owner-svn-src-all@freebsd.org Mon Apr 30 18:55:03 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DDEF8FB3991; Mon, 30 Apr 2018 18:55:02 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 852876884C; Mon, 30 Apr 2018 18:55:02 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 65224172B0; Mon, 30 Apr 2018 18:55:02 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UIt2HE065009; Mon, 30 Apr 2018 18:55:02 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UIt2UK065006; Mon, 30 Apr 2018 18:55:02 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201804301855.w3UIt2UK065006@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Mon, 30 Apr 2018 18:55:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333122 - head/usr.bin/seq X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/usr.bin/seq X-SVN-Commit-Revision: 333122 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 18:55:03 -0000 Author: kevans Date: Mon Apr 30 18:55:01 2018 New Revision: 333122 URL: https://svnweb.freebsd.org/changeset/base/333122 Log: seq(1): Provide some long options These match GNU seq(1) names where applicable for compatibility purposes. MFC after: 1 month Modified: head/usr.bin/seq/seq.1 head/usr.bin/seq/seq.c Modified: head/usr.bin/seq/seq.1 ============================================================================== --- head/usr.bin/seq/seq.1 Mon Apr 30 17:33:44 2018 (r333121) +++ head/usr.bin/seq/seq.1 Mon Apr 30 18:55:01 2018 (r333122) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 12, 2016 +.Dd April 30, 2018 .Dt SEQ 1 .Os .Sh NAME @@ -72,7 +72,7 @@ The .Nm utility accepts the following options: .Bl -tag -width Ar -.It Fl f Ar format +.It Fl f Ar format , Fl -format Ar format Use a .Xr printf 3 style @@ -98,7 +98,7 @@ defined in .St -ansiC . The default is .Cm %g . -.It Fl s Ar string +.It Fl s Ar string , Fl -separator Ar string Use .Ar string to separate numbers. @@ -109,7 +109,7 @@ defined in .St -ansiC . The default is .Cm \en . -.It Fl t Ar string +.It Fl t Ar string , Fl -terminator Ar string Use .Ar string to terminate sequence of numbers. @@ -121,7 +121,7 @@ defined in This option is useful when the default separator does not contain a .Cm \en . -.It Fl w +.It Fl w , Fl -fixed-width Equalize the widths of all numbers by padding with zeros as necessary. This option has no effect with the .Fl f Modified: head/usr.bin/seq/seq.c ============================================================================== --- head/usr.bin/seq/seq.c Mon Apr 30 17:33:44 2018 (r333121) +++ head/usr.bin/seq/seq.c Mon Apr 30 18:55:01 2018 (r333122) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -67,6 +68,15 @@ static int valid_format(const char *); static char *generate_format(double, double, double, int, char); static char *unescape(char *); +static const struct option long_opts[] = +{ + {"format", required_argument, NULL, 'f'}, + {"separator", required_argument, NULL, 's'}, + {"terminator", required_argument, NULL, 't'}, + {"equal-width", no_argument, NULL, 'w'}, + {NULL, no_argument, NULL, 0} +}; + /* * The seq command will print out a numeric sequence from 1, the default, * to a user specified upper limit by 1. The lower bound and increment @@ -100,7 +110,7 @@ main(int argc, char *argv[]) * least they trip up getopt(3). */ while ((optind < argc) && !numeric(argv[optind]) && - (c = getopt(argc, argv, "f:hs:t:w")) != -1) { + (c = getopt_long(argc, argv, "+f:hs:t:w", long_opts, NULL)) != -1) { switch (c) { case 'f': /* format (plan9) */ From owner-svn-src-all@freebsd.org Mon Apr 30 19:21:21 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 07429FB40A9; Mon, 30 Apr 2018 19:21:21 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B08286F8A5; Mon, 30 Apr 2018 19:21:20 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AB66717610; Mon, 30 Apr 2018 19:21:20 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UJLKqw075848; Mon, 30 Apr 2018 19:21:20 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UJLKKV075847; Mon, 30 Apr 2018 19:21:20 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201804301921.w3UJLKKV075847@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Mon, 30 Apr 2018 19:21:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333123 - head/sys/dev/nvme X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/dev/nvme X-SVN-Commit-Revision: 333123 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 19:21:21 -0000 Author: mav Date: Mon Apr 30 19:21:20 2018 New Revision: 333123 URL: https://svnweb.freebsd.org/changeset/base/333123 Log: Set si_drv1 for nvmeXnsY in a new race-free way. r332897 switched to new KPI, but havent used its main benefit. Sponsored by: iXsystems, Inc. Modified: head/sys/dev/nvme/nvme_ns.c Modified: head/sys/dev/nvme/nvme_ns.c ============================================================================== --- head/sys/dev/nvme/nvme_ns.c Mon Apr 30 18:55:01 2018 (r333122) +++ head/sys/dev/nvme/nvme_ns.c Mon Apr 30 19:21:20 2018 (r333123) @@ -596,6 +596,7 @@ nvme_ns_construct(struct nvme_namespace *ns, uint32_t md_args.mda_devsw = &nvme_ns_cdevsw; md_args.mda_unit = unit; md_args.mda_mode = 0600; + md_args.mda_si_drv1 = ns; res = make_dev_s(&md_args, &ns->cdev, "nvme%dns%d", device_get_unit(ctrlr->dev), ns->id); if (res != 0) @@ -604,8 +605,6 @@ nvme_ns_construct(struct nvme_namespace *ns, uint32_t #ifdef NVME_UNMAPPED_BIO_SUPPORT ns->cdev->si_flags |= SI_UNMAPPED; #endif - - ns->cdev->si_drv1 = ns; return (0); } From owner-svn-src-all@freebsd.org Mon Apr 30 19:37:33 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3957DFB4CB7; Mon, 30 Apr 2018 19:37:33 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DD0B571B12; Mon, 30 Apr 2018 19:37:32 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D80781790E; Mon, 30 Apr 2018 19:37:32 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UJbWZr086041; Mon, 30 Apr 2018 19:37:32 GMT (envelope-from nwhitehorn@FreeBSD.org) Received: (from nwhitehorn@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UJbWqj086040; Mon, 30 Apr 2018 19:37:32 GMT (envelope-from nwhitehorn@FreeBSD.org) Message-Id: <201804301937.w3UJbWqj086040@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: nwhitehorn set sender to nwhitehorn@FreeBSD.org using -f From: Nathan Whitehorn Date: Mon, 30 Apr 2018 19:37:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333124 - head/sys/powerpc/powermac X-SVN-Group: head X-SVN-Commit-Author: nwhitehorn X-SVN-Commit-Paths: head/sys/powerpc/powermac X-SVN-Commit-Revision: 333124 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 19:37:33 -0000 Author: nwhitehorn Date: Mon Apr 30 19:37:32 2018 New Revision: 333124 URL: https://svnweb.freebsd.org/changeset/base/333124 Log: Fix null pointer dereference on nodes without a "compatible" property. MFC after: 1 week Modified: head/sys/powerpc/powermac/macio.c Modified: head/sys/powerpc/powermac/macio.c ============================================================================== --- head/sys/powerpc/powermac/macio.c Mon Apr 30 19:21:20 2018 (r333123) +++ head/sys/powerpc/powermac/macio.c Mon Apr 30 19:37:32 2018 (r333124) @@ -399,7 +399,8 @@ macio_attach(device_t dev) continue; if (strcmp(ofw_bus_get_name(cdev), "bmac") == 0 || - strcmp(ofw_bus_get_compat(cdev), "bmac+") == 0) { + (ofw_bus_get_compat(cdev) != NULL && + strcmp(ofw_bus_get_compat(cdev), "bmac+") == 0)) { uint32_t fcr; fcr = bus_read_4(sc->sc_memr, HEATHROW_FCR); From owner-svn-src-all@freebsd.org Mon Apr 30 20:18:33 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 09172FB5A3B; Mon, 30 Apr 2018 20:18:33 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AA41C7B778; Mon, 30 Apr 2018 20:18:32 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A0B6317F86; Mon, 30 Apr 2018 20:18:32 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UKIWfU006124; Mon, 30 Apr 2018 20:18:32 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UKIW0n006122; Mon, 30 Apr 2018 20:18:32 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201804302018.w3UKIW0n006122@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Mon, 30 Apr 2018 20:18:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333125 - in head/sys/x86: acpica include X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in head/sys/x86: acpica include X-SVN-Commit-Revision: 333125 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 20:18:33 -0000 Author: kib Date: Mon Apr 30 20:18:32 2018 New Revision: 333125 URL: https://svnweb.freebsd.org/changeset/base/333125 Log: Turn off IBRS on suspend. Resume starts CPU from the init state, which clears any loaded microcode updates. As result, IBRS MSRs are no longer available, until the microcode is reloaded. I have to forcibly clear cpu_stdext_feature3, which assumes that CPUID leaf 7 reg %ebx does not report anything except Meltdown/Spectre bugs bits. If future CPUs add new bits there, hw_ibrs_recalculate() and identify_cpu1()/identify_cpu2() need to be adjusted for that. Submitted and tested by: Michael Danilov PR: 227866 Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D15236 Modified: head/sys/x86/acpica/acpi_wakeup.c head/sys/x86/include/x86_var.h Modified: head/sys/x86/acpica/acpi_wakeup.c ============================================================================== --- head/sys/x86/acpica/acpi_wakeup.c Mon Apr 30 19:37:32 2018 (r333124) +++ head/sys/x86/acpica/acpi_wakeup.c Mon Apr 30 20:18:32 2018 (r333125) @@ -209,6 +209,10 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state) { ACPI_STATUS status; struct pcb *pcb; +#ifdef __amd64__ + struct pcpu *pc; + int i; +#endif if (sc->acpi_wakeaddr == 0ul) return (-1); /* couldn't alloc wake memory */ @@ -236,6 +240,14 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state) if (!CPU_EMPTY(&suspcpus) && suspend_cpus(suspcpus) == 0) { device_printf(sc->acpi_dev, "Failed to suspend APs\n"); return (0); /* couldn't sleep */ + } +#endif +#ifdef __amd64__ + hw_ibrs_active = 0; + cpu_stdext_feature3 = 0; + CPU_FOREACH(i) { + pc = pcpu_find(i); + pc->pc_ibpb_set = 0; } #endif Modified: head/sys/x86/include/x86_var.h ============================================================================== --- head/sys/x86/include/x86_var.h Mon Apr 30 19:37:32 2018 (r333124) +++ head/sys/x86/include/x86_var.h Mon Apr 30 20:18:32 2018 (r333125) @@ -83,7 +83,8 @@ extern int _ugssel; extern int use_xsave; extern uint64_t xsave_mask; extern u_int max_apic_id; -extern int pti; +extern int pti; +extern int hw_ibrs_active; struct pcb; struct thread; From owner-svn-src-all@freebsd.org Mon Apr 30 20:29:29 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9FD98FB5DE8; Mon, 30 Apr 2018 20:29:29 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 514CB7E4FA; Mon, 30 Apr 2018 20:29:29 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4C52018131; Mon, 30 Apr 2018 20:29:29 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UKTTAW011260; Mon, 30 Apr 2018 20:29:29 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UKTT8Q011259; Mon, 30 Apr 2018 20:29:29 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201804302029.w3UKTT8Q011259@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 30 Apr 2018 20:29:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333126 - in stable: 10/sys/x86/x86 11/sys/x86/x86 X-SVN-Group: stable-10 X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in stable: 10/sys/x86/x86 11/sys/x86/x86 X-SVN-Commit-Revision: 333126 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 20:29:29 -0000 Author: jhb Date: Mon Apr 30 20:29:28 2018 New Revision: 333126 URL: https://svnweb.freebsd.org/changeset/base/333126 Log: MFC 332735: Fix two off-by-one errors when allocating MSI and MSI-X interrupts. x86 enforces an (arbitray) limit on the number of available MSI and MSI-X interrupts to simplify code (in particular, interrupt_source[] is statically sized). This means that an attempt to allocate an MSI vector needs to fail if it would go beyond the limit, but the checks for exceeding the limit had an off-by-one error. In the case of MSI-X which allocates interrupts one at a time this meant that IRQ 768 kept getting handed out multiple times for msix_alloc() instead of failing because all MSI IRQs were in use. Modified: stable/10/sys/x86/x86/msi.c Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/11/sys/x86/x86/msi.c Directory Properties: stable/11/ (props changed) Modified: stable/10/sys/x86/x86/msi.c ============================================================================== --- stable/10/sys/x86/x86/msi.c Mon Apr 30 20:18:32 2018 (r333125) +++ stable/10/sys/x86/x86/msi.c Mon Apr 30 20:29:28 2018 (r333126) @@ -381,7 +381,7 @@ again: /* Do we need to create some new sources? */ if (cnt < count) { /* If we would exceed the max, give up. */ - if (i + (count - cnt) > FIRST_MSI_INT + NUM_MSI_INTS) { + if (i + (count - cnt) >= FIRST_MSI_INT + NUM_MSI_INTS) { mtx_unlock(&msi_lock); free(mirqs, M_MSI); return (ENXIO); @@ -559,7 +559,7 @@ again: /* Do we need to create a new source? */ if (msi == NULL) { /* If we would exceed the max, give up. */ - if (i + 1 > FIRST_MSI_INT + NUM_MSI_INTS) { + if (i + 1 >= FIRST_MSI_INT + NUM_MSI_INTS) { mtx_unlock(&msi_lock); return (ENXIO); } From owner-svn-src-all@freebsd.org Mon Apr 30 20:29:30 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ED005FB5DED; Mon, 30 Apr 2018 20:29:29 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9F5207E4FB; Mon, 30 Apr 2018 20:29:29 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9987118132; Mon, 30 Apr 2018 20:29:29 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UKTTPl011266; Mon, 30 Apr 2018 20:29:29 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UKTTcI011265; Mon, 30 Apr 2018 20:29:29 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201804302029.w3UKTTcI011265@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 30 Apr 2018 20:29:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333126 - in stable: 10/sys/x86/x86 11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in stable: 10/sys/x86/x86 11/sys/x86/x86 X-SVN-Commit-Revision: 333126 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 20:29:30 -0000 Author: jhb Date: Mon Apr 30 20:29:28 2018 New Revision: 333126 URL: https://svnweb.freebsd.org/changeset/base/333126 Log: MFC 332735: Fix two off-by-one errors when allocating MSI and MSI-X interrupts. x86 enforces an (arbitray) limit on the number of available MSI and MSI-X interrupts to simplify code (in particular, interrupt_source[] is statically sized). This means that an attempt to allocate an MSI vector needs to fail if it would go beyond the limit, but the checks for exceeding the limit had an off-by-one error. In the case of MSI-X which allocates interrupts one at a time this meant that IRQ 768 kept getting handed out multiple times for msix_alloc() instead of failing because all MSI IRQs were in use. Modified: stable/11/sys/x86/x86/msi.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/10/sys/x86/x86/msi.c Directory Properties: stable/10/ (props changed) Modified: stable/11/sys/x86/x86/msi.c ============================================================================== --- stable/11/sys/x86/x86/msi.c Mon Apr 30 20:18:32 2018 (r333125) +++ stable/11/sys/x86/x86/msi.c Mon Apr 30 20:29:28 2018 (r333126) @@ -399,7 +399,7 @@ again: /* Do we need to create some new sources? */ if (cnt < count) { /* If we would exceed the max, give up. */ - if (i + (count - cnt) > FIRST_MSI_INT + NUM_MSI_INTS) { + if (i + (count - cnt) >= FIRST_MSI_INT + NUM_MSI_INTS) { mtx_unlock(&msi_lock); free(mirqs, M_MSI); return (ENXIO); @@ -637,7 +637,7 @@ again: /* Do we need to create a new source? */ if (msi == NULL) { /* If we would exceed the max, give up. */ - if (i + 1 > FIRST_MSI_INT + NUM_MSI_INTS) { + if (i + 1 >= FIRST_MSI_INT + NUM_MSI_INTS) { mtx_unlock(&msi_lock); return (ENXIO); } From owner-svn-src-all@freebsd.org Mon Apr 30 21:28:11 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E2ABDFB761C; Mon, 30 Apr 2018 21:28:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8A6296B742; Mon, 30 Apr 2018 21:28:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8100E18AC7; Mon, 30 Apr 2018 21:28:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3ULSAD1041009; Mon, 30 Apr 2018 21:28:10 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3ULSAAt041008; Mon, 30 Apr 2018 21:28:10 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201804302128.w3ULSAAt041008@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Mon, 30 Apr 2018 21:28:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333127 - head/sys/dev/nvme X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/dev/nvme X-SVN-Commit-Revision: 333127 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 21:28:11 -0000 Author: mav Date: Mon Apr 30 21:28:10 2018 New Revision: 333127 URL: https://svnweb.freebsd.org/changeset/base/333127 Log: Fix use-after-free in nvme_qpair_destroy(). dma_tag_payload should not be destroyed before payload_dma_map, and seems it should be used there instead of dma_tag to match creation. Sponsored by: iXsystems, Inc. Modified: head/sys/dev/nvme/nvme_qpair.c Modified: head/sys/dev/nvme/nvme_qpair.c ============================================================================== --- head/sys/dev/nvme/nvme_qpair.c Mon Apr 30 20:29:28 2018 (r333126) +++ head/sys/dev/nvme/nvme_qpair.c Mon Apr 30 21:28:10 2018 (r333127) @@ -690,21 +690,22 @@ nvme_qpair_destroy(struct nvme_qpair *qpair) qpair->queuemem_map); } - if (qpair->dma_tag) - bus_dma_tag_destroy(qpair->dma_tag); - - if (qpair->dma_tag_payload) - bus_dma_tag_destroy(qpair->dma_tag_payload); - if (qpair->act_tr) free(qpair->act_tr, M_NVME); while (!TAILQ_EMPTY(&qpair->free_tr)) { tr = TAILQ_FIRST(&qpair->free_tr); TAILQ_REMOVE(&qpair->free_tr, tr, tailq); - bus_dmamap_destroy(qpair->dma_tag, tr->payload_dma_map); + bus_dmamap_destroy(qpair->dma_tag_payload, + tr->payload_dma_map); free(tr, M_NVME); } + + if (qpair->dma_tag) + bus_dma_tag_destroy(qpair->dma_tag); + + if (qpair->dma_tag_payload) + bus_dma_tag_destroy(qpair->dma_tag_payload); } static void From owner-svn-src-all@freebsd.org Mon Apr 30 21:47:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 29786FB7B45; Mon, 30 Apr 2018 21:47:32 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C25706FD99; Mon, 30 Apr 2018 21:47:31 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B8BF818E1C; Mon, 30 Apr 2018 21:47:31 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3ULlVAG050995; Mon, 30 Apr 2018 21:47:31 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3ULlVWV050990; Mon, 30 Apr 2018 21:47:31 GMT (envelope-from np@FreeBSD.org) Message-Id: <201804302147.w3ULlVWV050990@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Mon, 30 Apr 2018 21:47:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333128 - in head/sys/dev/cxgbe: . common tom X-SVN-Group: head X-SVN-Commit-Author: np X-SVN-Commit-Paths: in head/sys/dev/cxgbe: . common tom X-SVN-Commit-Revision: 333128 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 21:47:32 -0000 Author: np Date: Mon Apr 30 21:47:30 2018 New Revision: 333128 URL: https://svnweb.freebsd.org/changeset/base/333128 Log: cxgbe(4): Convert ACT_OPEN_RPL to a shared CPL. Reserve 3b in the 14b atid to identify the owner and use it to dispatch the CPL. This allows all CPLs that use an atid to be used as shared CPLs, although ACT_OPEN_RPL is the only one being converted in this revision. Sponsored by: Chelsio Communications Modified: head/sys/dev/cxgbe/common/t4_msg.h head/sys/dev/cxgbe/offload.h head/sys/dev/cxgbe/t4_main.c head/sys/dev/cxgbe/t4_sge.c head/sys/dev/cxgbe/tom/t4_connect.c Modified: head/sys/dev/cxgbe/common/t4_msg.h ============================================================================== --- head/sys/dev/cxgbe/common/t4_msg.h Mon Apr 30 21:28:10 2018 (r333127) +++ head/sys/dev/cxgbe/common/t4_msg.h Mon Apr 30 21:47:30 2018 (r333128) @@ -308,9 +308,14 @@ union opcode_tid { /* partitioning of TID fields that also carry a queue id */ #define S_TID_TID 0 -#define M_TID_TID 0x3fff +#define M_TID_TID 0x7ff #define V_TID_TID(x) ((x) << S_TID_TID) #define G_TID_TID(x) (((x) >> S_TID_TID) & M_TID_TID) + +#define S_TID_COOKIE 11 +#define M_TID_COOKIE 0x7 +#define V_TID_COOKIE(x) ((x) << S_TID_COOKIE) +#define G_TID_COOKIE(x) (((x) >> S_TID_COOKIE) & M_TID_COOKIE) #define S_TID_QID 14 #define M_TID_QID 0x3ff Modified: head/sys/dev/cxgbe/offload.h ============================================================================== --- head/sys/dev/cxgbe/offload.h Mon Apr 30 21:28:10 2018 (r333127) +++ head/sys/dev/cxgbe/offload.h Mon Apr 30 21:47:30 2018 (r333128) @@ -66,9 +66,10 @@ struct stid_region { }; /* - * Max # of ATIDs. The absolute HW max is 16K but we keep it lower. + * Max # of ATIDs. The absolute HW max is 14b (enough for 16K) but we reserve + * the upper 3b for use as a cookie to demux the reply. */ -#define MAX_ATIDS 8192U +#define MAX_ATIDS 2048U union aopen_entry { void *data; Modified: head/sys/dev/cxgbe/t4_main.c ============================================================================== --- head/sys/dev/cxgbe/t4_main.c Mon Apr 30 21:28:10 2018 (r333127) +++ head/sys/dev/cxgbe/t4_main.c Mon Apr 30 21:47:30 2018 (r333128) @@ -2504,6 +2504,7 @@ alloc_atid(struct adapter *sc, void *ctx) union aopen_entry *p = t->afree; atid = p - t->atid_tab; + MPASS(atid <= M_TID_TID); t->afree = p->next; p->data = ctx; t->atids_in_use++; Modified: head/sys/dev/cxgbe/t4_sge.c ============================================================================== --- head/sys/dev/cxgbe/t4_sge.c Mon Apr 30 21:28:10 2018 (r333127) +++ head/sys/dev/cxgbe/t4_sge.c Mon Apr 30 21:47:30 2018 (r333128) @@ -287,6 +287,7 @@ fw_msg_handler_t t4_fw_msg_handler[NUM_FW6_TYPES]; cpl_handler_t t4_cpl_handler[NUM_CPL_CMDS]; cpl_handler_t set_tcb_rpl_handlers[NUM_CPL_COOKIES]; cpl_handler_t l2t_write_rpl_handlers[NUM_CPL_COOKIES]; +cpl_handler_t act_open_rpl_handlers[NUM_CPL_COOKIES]; void t4_register_an_handler(an_handler_t h) @@ -370,12 +371,26 @@ l2t_write_rpl_handler(struct sge_iq *iq, const struct return (l2t_write_rpl_handlers[cookie](iq, rss, m)); } +static int +act_open_rpl_handler(struct sge_iq *iq, const struct rss_header *rss, + struct mbuf *m) +{ + const struct cpl_act_open_rpl *cpl = (const void *)(rss + 1); + u_int cookie = G_TID_COOKIE(G_AOPEN_ATID(be32toh(cpl->atid_status))); + + MPASS(m == NULL); + MPASS(cookie != CPL_COOKIE_RESERVED); + + return (act_open_rpl_handlers[cookie](iq, rss, m)); +} + static void t4_init_shared_cpl_handlers(void) { t4_register_cpl_handler(CPL_SET_TCB_RPL, set_tcb_rpl_handler); t4_register_cpl_handler(CPL_L2T_WRITE_RPL, l2t_write_rpl_handler); + t4_register_cpl_handler(CPL_ACT_OPEN_RPL, act_open_rpl_handler); } void @@ -394,6 +409,9 @@ t4_register_shared_cpl_handler(int opcode, cpl_handler break; case CPL_L2T_WRITE_RPL: loc = (uintptr_t *)&l2t_write_rpl_handlers[cookie]; + break; + case CPL_ACT_OPEN_RPL: + loc = (uintptr_t *)&act_open_rpl_handlers[cookie]; break; default: MPASS(0); Modified: head/sys/dev/cxgbe/tom/t4_connect.c ============================================================================== --- head/sys/dev/cxgbe/tom/t4_connect.c Mon Apr 30 21:28:10 2018 (r333127) +++ head/sys/dev/cxgbe/tom/t4_connect.c Mon Apr 30 21:47:30 2018 (r333128) @@ -281,7 +281,8 @@ t4_init_connect_cpl_handlers(void) { t4_register_cpl_handler(CPL_ACT_ESTABLISH, do_act_establish); - t4_register_cpl_handler(CPL_ACT_OPEN_RPL, do_act_open_rpl); + t4_register_shared_cpl_handler(CPL_ACT_OPEN_RPL, do_act_open_rpl, + CPL_COOKIE_TOM); } void @@ -289,7 +290,7 @@ t4_uninit_connect_cpl_handlers(void) { t4_register_cpl_handler(CPL_ACT_ESTABLISH, NULL); - t4_register_cpl_handler(CPL_ACT_OPEN_RPL, NULL); + t4_register_shared_cpl_handler(CPL_ACT_OPEN_RPL, NULL, CPL_COOKIE_TOM); } #define DONT_OFFLOAD_ACTIVE_OPEN(x) do { \ @@ -418,7 +419,8 @@ t4_connect(struct toedev *tod, struct socket *so, stru else rscale = 0; mtu_idx = find_best_mtu_idx(sc, &inp->inp_inc, &settings); - qid_atid = V_TID_QID(toep->ofld_rxq->iq.abs_id) | V_TID_TID(toep->tid); + qid_atid = V_TID_QID(toep->ofld_rxq->iq.abs_id) | V_TID_TID(toep->tid) | + V_TID_COOKIE(CPL_COOKIE_TOM); if (isipv6) { struct cpl_act_open_req6 *cpl = wrtod(wr); From owner-svn-src-all@freebsd.org Mon Apr 30 21:56:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0110CFB7DBB; Mon, 30 Apr 2018 21:56:09 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A3C9B71CCE; Mon, 30 Apr 2018 21:56:08 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9A97718FA8; Mon, 30 Apr 2018 21:56:08 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3ULu8Vh055714; Mon, 30 Apr 2018 21:56:08 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3ULu8QI055713; Mon, 30 Apr 2018 21:56:08 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201804302156.w3ULu8QI055713@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 30 Apr 2018 21:56:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333129 - stable/11/share/man/man3 X-SVN-Group: stable-11 X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: stable/11/share/man/man3 X-SVN-Commit-Revision: 333129 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 21:56:09 -0000 Author: jhb Date: Mon Apr 30 21:56:08 2018 New Revision: 333129 URL: https://svnweb.freebsd.org/changeset/base/333129 Log: MFC 332975: Document the TRAP_CAP code for SIGTRAP. Modified: stable/11/share/man/man3/siginfo.3 Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man3/siginfo.3 ============================================================================== --- stable/11/share/man/man3/siginfo.3 Mon Apr 30 21:47:30 2018 (r333128) +++ stable/11/share/man/man3/siginfo.3 Mon Apr 30 21:56:08 2018 (r333129) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 14, 2016 +.Dd April 24, 2018 .Dt SIGINFO 3 .Os .Sh NAME @@ -156,6 +156,8 @@ process breakpoint process trace trap .It Ta Dv TRAP_DTRACE Ta DTrace induced trap +.It Ta Dv TRAP_CAP Ta +capabilities protective trap .It Dv SIGCHLD Ta Dv CLD_EXITED Ta child has exited .It Ta Dv CLD_KILLED Ta From owner-svn-src-all@freebsd.org Mon Apr 30 23:05:58 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B9E05FB8FAA; Mon, 30 Apr 2018 23:05:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5A91E7FB59; Mon, 30 Apr 2018 23:05:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4FABE19B89; Mon, 30 Apr 2018 23:05:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UN5wxC090695; Mon, 30 Apr 2018 23:05:58 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UN5weM090694; Mon, 30 Apr 2018 23:05:58 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201804302305.w3UN5weM090694@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Mon, 30 Apr 2018 23:05:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333130 - head/sys/dev/nvme X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/dev/nvme X-SVN-Commit-Revision: 333130 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 23:05:59 -0000 Author: mav Date: Mon Apr 30 23:05:57 2018 New Revision: 333130 URL: https://svnweb.freebsd.org/changeset/base/333130 Log: Improve nvme(4) attach/detach sequences. This change allows clean device detach on attach failures and driver unload, while previous code tried to talk to already shut down controller, or even accessed resources failed to allocate. Sponsored by: iXsystems, Inc. Modified: head/sys/dev/nvme/nvme_ctrlr.c Modified: head/sys/dev/nvme/nvme_ctrlr.c ============================================================================== --- head/sys/dev/nvme/nvme_ctrlr.c Mon Apr 30 21:56:08 2018 (r333129) +++ head/sys/dev/nvme/nvme_ctrlr.c Mon Apr 30 23:05:57 2018 (r333130) @@ -1203,6 +1203,7 @@ nvme_ctrlr_setup_interrupts(struct nvme_controller *ct int nvme_ctrlr_construct(struct nvme_controller *ctrlr, device_t dev) { + struct make_dev_args md_args; uint32_t cap_lo; uint32_t cap_hi; uint8_t to; @@ -1254,14 +1255,6 @@ nvme_ctrlr_construct(struct nvme_controller *ctrlr, de if (nvme_ctrlr_construct_admin_qpair(ctrlr) != 0) return (ENXIO); - ctrlr->cdev = make_dev(&nvme_ctrlr_cdevsw, device_get_unit(dev), - UID_ROOT, GID_WHEEL, 0600, "nvme%d", device_get_unit(dev)); - - if (ctrlr->cdev == NULL) - return (ENXIO); - - ctrlr->cdev->si_drv1 = (void *)ctrlr; - ctrlr->taskqueue = taskqueue_create("nvme_taskq", M_WAITOK, taskqueue_thread_enqueue, &ctrlr->taskqueue); taskqueue_start_threads(&ctrlr->taskqueue, 1, PI_DISK, "nvme taskq"); @@ -1270,11 +1263,22 @@ nvme_ctrlr_construct(struct nvme_controller *ctrlr, de ctrlr->is_initialized = 0; ctrlr->notification_sent = 0; TASK_INIT(&ctrlr->reset_task, 0, nvme_ctrlr_reset_task, ctrlr); - TASK_INIT(&ctrlr->fail_req_task, 0, nvme_ctrlr_fail_req_task, ctrlr); STAILQ_INIT(&ctrlr->fail_req); ctrlr->is_failed = FALSE; + make_dev_args_init(&md_args); + md_args.mda_devsw = &nvme_ctrlr_cdevsw; + md_args.mda_uid = UID_ROOT; + md_args.mda_gid = GID_WHEEL; + md_args.mda_mode = 0600; + md_args.mda_unit = device_get_unit(dev); + md_args.mda_si_drv1 = (void *)ctrlr; + status = make_dev_s(&md_args, &ctrlr->cdev, "nvme%d", + device_get_unit(dev)); + if (status != 0) + return (ENXIO); + return (0); } @@ -1283,18 +1287,9 @@ nvme_ctrlr_destruct(struct nvme_controller *ctrlr, dev { int i; - /* - * Notify the controller of a shutdown, even though this is due to - * a driver unload, not a system shutdown (this path is not invoked - * during shutdown). This ensures the controller receives a - * shutdown notification in case the system is shutdown before - * reloading the driver. - */ - nvme_ctrlr_shutdown(ctrlr); + if (ctrlr->resource == NULL) + goto nores; - nvme_ctrlr_disable(ctrlr); - taskqueue_free(ctrlr->taskqueue); - for (i = 0; i < NVME_MAX_NAMESPACES; i++) nvme_ns_destruct(&ctrlr->ns[i]); @@ -1305,21 +1300,24 @@ nvme_ctrlr_destruct(struct nvme_controller *ctrlr, dev nvme_ctrlr_destroy_qpair(ctrlr, &ctrlr->ioq[i]); nvme_io_qpair_destroy(&ctrlr->ioq[i]); } - free(ctrlr->ioq, M_NVME); nvme_admin_qpair_destroy(&ctrlr->adminq); - if (ctrlr->resource != NULL) { - bus_release_resource(dev, SYS_RES_MEMORY, - ctrlr->resource_id, ctrlr->resource); - } + /* + * Notify the controller of a shutdown, even though this is due to + * a driver unload, not a system shutdown (this path is not invoked + * during shutdown). This ensures the controller receives a + * shutdown notification in case the system is shutdown before + * reloading the driver. + */ + nvme_ctrlr_shutdown(ctrlr); - if (ctrlr->bar4_resource != NULL) { - bus_release_resource(dev, SYS_RES_MEMORY, - ctrlr->bar4_resource_id, ctrlr->bar4_resource); - } + nvme_ctrlr_disable(ctrlr); + if (ctrlr->taskqueue) + taskqueue_free(ctrlr->taskqueue); + if (ctrlr->tag) bus_teardown_intr(ctrlr->dev, ctrlr->res, ctrlr->tag); @@ -1329,6 +1327,17 @@ nvme_ctrlr_destruct(struct nvme_controller *ctrlr, dev if (ctrlr->msix_enabled) pci_release_msi(dev); + + if (ctrlr->bar4_resource != NULL) { + bus_release_resource(dev, SYS_RES_MEMORY, + ctrlr->bar4_resource_id, ctrlr->bar4_resource); + } + + bus_release_resource(dev, SYS_RES_MEMORY, + ctrlr->resource_id, ctrlr->resource); + +nores: + mtx_destroy(&ctrlr->lock); } void From owner-svn-src-all@freebsd.org Mon Apr 30 23:53:28 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2D107FB9989; Mon, 30 Apr 2018 23:53:28 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D59A06A962; Mon, 30 Apr 2018 23:53:27 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D07D81A35C; Mon, 30 Apr 2018 23:53:27 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3UNrRmU015490; Mon, 30 Apr 2018 23:53:27 GMT (envelope-from gallatin@FreeBSD.org) Received: (from gallatin@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3UNrREN015489; Mon, 30 Apr 2018 23:53:27 GMT (envelope-from gallatin@FreeBSD.org) Message-Id: <201804302353.w3UNrREN015489@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gallatin set sender to gallatin@FreeBSD.org using -f From: Andrew Gallatin Date: Mon, 30 Apr 2018 23:53:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333131 - head/sys/net X-SVN-Group: head X-SVN-Commit-Author: gallatin X-SVN-Commit-Paths: head/sys/net X-SVN-Commit-Revision: 333131 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2018 23:53:28 -0000 Author: gallatin Date: Mon Apr 30 23:53:27 2018 New Revision: 333131 URL: https://svnweb.freebsd.org/changeset/base/333131 Log: Fix iflib_encap() EFBIG handling bugs 1) Don't give up if m_collapse() fails. Rather than giving up, try m_defrag() immediately. 2) Fix a leak where, if the NIC driver rejected the defrag'ed chain as having too many segments, we would fail to free the chain. Reviewed by: Matthew Macy (this version of patch) Submitted by: Matthew Macy (early version of leak fix) Modified: head/sys/net/iflib.c Modified: head/sys/net/iflib.c ============================================================================== --- head/sys/net/iflib.c Mon Apr 30 23:05:57 2018 (r333130) +++ head/sys/net/iflib.c Mon Apr 30 23:53:27 2018 (r333131) @@ -3244,8 +3244,12 @@ defrag: switch (err) { case EFBIG: /* try collapse once and defrag once */ - if (remap == 0) + if (remap == 0) { m_head = m_collapse(*m_headp, M_NOWAIT, max_segs); + /* try defrag if collapsing fails */ + if (m_head == NULL) + remap++; + } if (remap == 1) m_head = m_defrag(*m_headp, M_NOWAIT); remap++; @@ -3333,13 +3337,18 @@ defrag: */ txq->ift_pidx = pi.ipi_new_pidx; txq->ift_npending += pi.ipi_ndescs; - } else if (__predict_false(err == EFBIG && remap < 2)) { + } else { *m_headp = m_head = iflib_remove_mbuf(txq); - remap = 1; - txq->ift_txd_encap_efbig++; - goto defrag; - } else + if (err == EFBIG) { + txq->ift_txd_encap_efbig++; + if (remap < 2) { + remap = 1; + goto defrag; + } + } DBG_COUNTER_INC(encap_txd_encap_fail); + goto defrag_failed; + } return (err); defrag_failed: From owner-svn-src-all@freebsd.org Tue May 1 00:36:57 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 06D70FBA848; Tue, 1 May 2018 00:36:57 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A4609731C8; Tue, 1 May 2018 00:36:56 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 98EB31A9CB; Tue, 1 May 2018 00:36:56 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w410auTU035906; Tue, 1 May 2018 00:36:56 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w410auKV035905; Tue, 1 May 2018 00:36:56 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805010036.w410auKV035905@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 1 May 2018 00:36:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333132 - head/share/man/man4 X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/share/man/man4 X-SVN-Commit-Revision: 333132 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 00:36:57 -0000 Author: emaste Date: Tue May 1 00:36:56 2018 New Revision: 333132 URL: https://svnweb.freebsd.org/changeset/base/333132 Log: Install smartpqi.4 only on amd64, as with the driver Sponsored by: The FreeBSD Foundation Modified: head/share/man/man4/Makefile Modified: head/share/man/man4/Makefile ============================================================================== --- head/share/man/man4/Makefile Mon Apr 30 23:53:27 2018 (r333131) +++ head/share/man/man4/Makefile Tue May 1 00:36:56 2018 (r333132) @@ -479,7 +479,7 @@ MAN= aac.4 \ sio.4 \ sis.4 \ sk.4 \ - smartpqi.4 \ + ${_smartpqi.4} \ smb.4 \ smbus.4 \ smp.4 \ @@ -879,6 +879,7 @@ _qlxgb.4= qlxgb.4 _qlxgbe.4= qlxgbe.4 _qlnxe.4= qlnxe.4 _sfxge.4= sfxge.4 +_smartpqi.4= smartpqi.4 MLINKS+=qlxge.4 if_qlxge.4 MLINKS+=qlxgb.4 if_qlxgb.4 From owner-svn-src-all@freebsd.org Tue May 1 00:53:47 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1968DFBAD32; Tue, 1 May 2018 00:53:47 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id BA9CE7544A; Tue, 1 May 2018 00:53:46 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B58C51AD2A; Tue, 1 May 2018 00:53:46 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w410rk6M046228; Tue, 1 May 2018 00:53:46 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w410rkGi046226; Tue, 1 May 2018 00:53:46 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805010053.w410rkGi046226@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 1 May 2018 00:53:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333133 - head/usr.sbin/pwd_mkdb X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/usr.sbin/pwd_mkdb X-SVN-Commit-Revision: 333133 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 00:53:47 -0000 Author: emaste Date: Tue May 1 00:53:46 2018 New Revision: 333133 URL: https://svnweb.freebsd.org/changeset/base/333133 Log: pwd_mkdb: retire legacy v3 db support (-l option) pwd_mkdb has emitted v4 password database records since 2003 (r113596) in addition to v3, and as of r283981 by default it emitted only v4. As described in r283981, retire the -l legacy option. The -B and -L options were originally added to set the endianness of v3 records emitted by pwd_mkdb, but they also set the db hash endiannes and so have been retained temporarily. Announced on the FreeBSD-Current and FreeBSD-Stable lists. In stable/11 the man page contains a deprecation notice, and pwd_mkdb will emit a deprecation notice if the -l option is specified. Reviewed by: delphij, lidl, rgrimes Relnotes: Yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D15144 Modified: head/usr.sbin/pwd_mkdb/pwd_mkdb.8 head/usr.sbin/pwd_mkdb/pwd_mkdb.c Modified: head/usr.sbin/pwd_mkdb/pwd_mkdb.8 ============================================================================== --- head/usr.sbin/pwd_mkdb/pwd_mkdb.8 Tue May 1 00:36:56 2018 (r333132) +++ head/usr.sbin/pwd_mkdb/pwd_mkdb.8 Tue May 1 00:53:46 2018 (r333133) @@ -28,7 +28,7 @@ .\" @(#)pwd_mkdb.8 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd April 22, 2018 +.Dd April 30, 2018 .Dt PWD_MKDB 8 .Os .Sh NAME @@ -36,7 +36,7 @@ .Nd "generate the password databases" .Sh SYNOPSIS .Nm -.Op Fl BCilLNp +.Op Fl BCiLNp .Op Fl d Ar directory .Op Fl s Ar cachesize .Op Fl u Ar username @@ -112,31 +112,8 @@ encrypted password and the insecure version has an ast The databases are used by the C library password routines (see .Xr getpwent 3 ) . .Pp -By default, -the -.Nm -utility generates new, -machine independent format -.Pq v4 -entries only. -For compatibility with -.Fx 5.0 -and earlier releases, -the -.Fl l -option may be specified, -which enables generation of legacy format -.Pq v3 -entries. -The legacy format entries are endianness dependent. -The -.Fl l -option is deprecated and is not present in -.Fx 12.0 -and later. -.Pp -The following options may be specified and will affect the -generation of legacy entries. +The following options affected the generation of legacy entries, +and are now deprecated. .Bl -tag -width flag .It Fl B Store data in big-endian format. Modified: head/usr.sbin/pwd_mkdb/pwd_mkdb.c ============================================================================== --- head/usr.sbin/pwd_mkdb/pwd_mkdb.c Tue May 1 00:36:56 2018 (r333132) +++ head/usr.sbin/pwd_mkdb/pwd_mkdb.c Tue May 1 00:53:46 2018 (r333133) @@ -115,26 +115,25 @@ main(int argc, char *argv[]) char sbuf2[MAXPATHLEN]; char *username; u_int method, methoduid; - int Cflag, dflag, iflag, lflag; + int Cflag, dflag, iflag; int nblock = 0; - iflag = dflag = Cflag = lflag = 0; + iflag = dflag = Cflag = 0; strcpy(prefix, _PATH_PWD); makeold = 0; username = NULL; oldfp = NULL; - while ((ch = getopt(argc, argv, "BCLlNd:ips:u:v")) != -1) + while ((ch = getopt(argc, argv, "BCLNd:ips:u:v")) != -1) switch(ch) { case 'B': /* big-endian output */ + warnx("endiannes options (-B/-L) are deprecated"); openinfo.lorder = BIG_ENDIAN; break; case 'C': /* verify only */ Cflag = 1; break; - case 'l': /* generate legacy entries */ - lflag = 1; - break; case 'L': /* little-endian output */ + warnx("endiannes options (-B/-L) are deprecated"); openinfo.lorder = LITTLE_ENDIAN; break; case 'N': /* do not wait for lock */ @@ -166,8 +165,6 @@ main(int argc, char *argv[]) if (argc != 1 || (username && (*username == '+' || *username == '-'))) usage(); - if (lflag) - warnx("legacy (v3) database format support is deprecated"); /* * This could be changed to allow the user to interrupt. @@ -472,98 +469,6 @@ main(int argc, char *argv[]) if ((sdp->put)(sdp, &key, &sdata, method) == -1) error("put"); } - - if (lflag) { - /* Create insecure data. (legacy version) */ - p = buf; - COMPACT(pwd.pw_name); - COMPACT("*"); - LSCALAR(pwd.pw_uid); - LSCALAR(pwd.pw_gid); - LSCALAR(pwd.pw_change); - COMPACT(pwd.pw_class); - COMPACT(pwd.pw_gecos); - COMPACT(pwd.pw_dir); - COMPACT(pwd.pw_shell); - LSCALAR(pwd.pw_expire); - LSCALAR(pwd.pw_fields); - data.size = p - buf; - - /* Create secure data. (legacy version) */ - p = sbuf; - COMPACT(pwd.pw_name); - COMPACT(pwd.pw_passwd); - LSCALAR(pwd.pw_uid); - LSCALAR(pwd.pw_gid); - LSCALAR(pwd.pw_change); - COMPACT(pwd.pw_class); - COMPACT(pwd.pw_gecos); - COMPACT(pwd.pw_dir); - COMPACT(pwd.pw_shell); - LSCALAR(pwd.pw_expire); - LSCALAR(pwd.pw_fields); - sdata.size = p - sbuf; - - /* Store insecure by name. */ - tbuf[0] = LEGACY_VERSION(_PW_KEYBYNAME); - len = strlen(pwd.pw_name); - memmove(tbuf + 1, pwd.pw_name, len); - key.size = len + 1; - if ((dp->put)(dp, &key, &data, method) == -1) - error("put"); - - /* Store insecure by number. */ - tbuf[0] = LEGACY_VERSION(_PW_KEYBYNUM); - store = HTOL(cnt); - memmove(tbuf + 1, &store, sizeof(store)); - key.size = sizeof(store) + 1; - if ((dp->put)(dp, &key, &data, method) == -1) - error("put"); - - /* Store insecure by uid. */ - tbuf[0] = LEGACY_VERSION(_PW_KEYBYUID); - store = HTOL(pwd.pw_uid); - memmove(tbuf + 1, &store, sizeof(store)); - key.size = sizeof(store) + 1; - if ((dp->put)(dp, &key, &data, methoduid) == -1) - error("put"); - - /* Store secure by name. */ - tbuf[0] = LEGACY_VERSION(_PW_KEYBYNAME); - len = strlen(pwd.pw_name); - memmove(tbuf + 1, pwd.pw_name, len); - key.size = len + 1; - if ((sdp->put)(sdp, &key, &sdata, method) == -1) - error("put"); - - /* Store secure by number. */ - tbuf[0] = LEGACY_VERSION(_PW_KEYBYNUM); - store = HTOL(cnt); - memmove(tbuf + 1, &store, sizeof(store)); - key.size = sizeof(store) + 1; - if ((sdp->put)(sdp, &key, &sdata, method) == -1) - error("put"); - - /* Store secure by uid. */ - tbuf[0] = LEGACY_VERSION(_PW_KEYBYUID); - store = HTOL(pwd.pw_uid); - memmove(tbuf + 1, &store, sizeof(store)); - key.size = sizeof(store) + 1; - if ((sdp->put)(sdp, &key, &sdata, methoduid) == -1) - error("put"); - - /* Store insecure and secure special plus and special minus */ - if (pwd.pw_name[0] == '+' || pwd.pw_name[0] == '-') { - tbuf[0] = LEGACY_VERSION(_PW_KEYYPBYNUM); - store = HTOL(ypcnt); - memmove(tbuf + 1, &store, sizeof(store)); - key.size = sizeof(store) + 1; - if ((dp->put)(dp, &key, &data, method) == -1) - error("put"); - if ((sdp->put)(sdp, &key, &sdata, method) == -1) - error("put"); - } - } } /* Create original format password file entry */ if (is_comment && makeold){ /* copy comments */ @@ -593,14 +498,6 @@ main(int argc, char *argv[]) error("put"); if ((sdp->put)(sdp, &key, &data, method) == -1) error("put"); - if (lflag) { - tbuf[0] = LEGACY_VERSION(_PW_KEYYPENABLED); - key.size = 1; - if ((dp->put)(dp, &key, &data, method) == -1) - error("put"); - if ((sdp->put)(sdp, &key, &data, method) == -1) - error("put"); - } } if ((dp->close)(dp) == -1) From owner-svn-src-all@freebsd.org Tue May 1 04:06:59 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A91F4FC4096; Tue, 1 May 2018 04:06:59 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5B3797FE1A; Tue, 1 May 2018 04:06:59 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 550121CF42; Tue, 1 May 2018 04:06:59 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4146xRc041838; Tue, 1 May 2018 04:06:59 GMT (envelope-from nwhitehorn@FreeBSD.org) Received: (from nwhitehorn@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4146xEv041837; Tue, 1 May 2018 04:06:59 GMT (envelope-from nwhitehorn@FreeBSD.org) Message-Id: <201805010406.w4146xEv041837@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: nwhitehorn set sender to nwhitehorn@FreeBSD.org using -f From: Nathan Whitehorn Date: Tue, 1 May 2018 04:06:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333134 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: nwhitehorn X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 333134 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 04:06:59 -0000 Author: nwhitehorn Date: Tue May 1 04:06:59 2018 New Revision: 333134 URL: https://svnweb.freebsd.org/changeset/base/333134 Log: Report the kernel base address properly in kldstat when using PowerPC kernels loaded at addresses other than their link address. Modified: head/sys/kern/link_elf.c Modified: head/sys/kern/link_elf.c ============================================================================== --- head/sys/kern/link_elf.c Tue May 1 00:53:46 2018 (r333133) +++ head/sys/kern/link_elf.c Tue May 1 04:06:59 2018 (r333134) @@ -383,7 +383,7 @@ link_elf_link_common_finish(linker_file_t lf) return (0); } -extern vm_offset_t __startkernel; +extern vm_offset_t __startkernel, __endkernel; static void link_elf_init(void* arg) @@ -424,8 +424,13 @@ link_elf_init(void* arg) if (dp != NULL) parse_dynamic(ef); +#ifdef __powerpc__ + linker_kernel_file->address = (caddr_t)__startkernel; + linker_kernel_file->size = (intptr_t)(__endkernel - __startkernel); +#else linker_kernel_file->address += KERNBASE; linker_kernel_file->size = -(intptr_t)linker_kernel_file->address; +#endif if (modptr != NULL) { ef->modptr = modptr; From owner-svn-src-all@freebsd.org Tue May 1 04:31:18 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0CFF2FC49A8; Tue, 1 May 2018 04:31:18 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B2A0985D0E; Tue, 1 May 2018 04:31:17 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id ABEA71D436; Tue, 1 May 2018 04:31:17 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w414VHq9054091; Tue, 1 May 2018 04:31:17 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w414VHnE054086; Tue, 1 May 2018 04:31:17 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201805010431.w414VHnE054086@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Tue, 1 May 2018 04:31:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333135 - in head/sys/powerpc: booke mpc85xx X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: in head/sys/powerpc: booke mpc85xx X-SVN-Commit-Revision: 333135 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 04:31:18 -0000 Author: jhibbits Date: Tue May 1 04:31:17 2018 New Revision: 333135 URL: https://svnweb.freebsd.org/changeset/base/333135 Log: Remove dead errata fixup code This code caused more problems than it should have fixed (boot failures) on the machines I tested, so has been commented out for a while now. Remove it, and assume the errata fixups were done by the bootloader where they belong. Modified: head/sys/powerpc/booke/locore.S head/sys/powerpc/mpc85xx/mpc85xx.c head/sys/powerpc/mpc85xx/mpc85xx.h head/sys/powerpc/mpc85xx/platform_mpc85xx.c Modified: head/sys/powerpc/booke/locore.S ============================================================================== --- head/sys/powerpc/booke/locore.S Tue May 1 04:06:59 2018 (r333134) +++ head/sys/powerpc/booke/locore.S Tue May 1 04:31:17 2018 (r333135) @@ -906,68 +906,6 @@ ENTRY(bpred_enable) isync blr -ENTRY(dataloss_erratum_access) - /* Lock two cache lines into I-Cache */ - sync - mfspr %r11, SPR_L1CSR1 - rlwinm %r11, %r11, 0, ~L1CSR1_ICUL - sync - isync - mtspr SPR_L1CSR1, %r11 - isync - - lis %r8, 2f@h - ori %r8, %r8, 2f@l - icbtls 0, 0, %r8 - addi %r9, %r8, 64 - - sync - mfspr %r11, SPR_L1CSR1 -3: andi. %r11, %r11, L1CSR1_ICUL - bne 3b - - icbtls 0, 0, %r9 - - sync - mfspr %r11, SPR_L1CSR1 -3: andi. %r11, %r11, L1CSR1_ICUL - bne 3b - - b 2f - .align 6 - /* Inside a locked cacheline, wait a while, write, then wait a while */ -2: sync - - mfspr %r5, TBR_TBL -4: addis %r11, %r5, 0x100000@h /* wait around one million timebase ticks */ - mfspr %r5, TBR_TBL - subf. %r5, %r5, %r11 - bgt 4b - - stw %r4, 0(%r3) - - mfspr %r5, TBR_TBL -4: addis %r11, %r5, 0x100000@h /* wait around one million timebase ticks */ - mfspr %r5, TBR_TBL - subf. %r5, %r5, %r11 - bgt 4b - - sync - - /* - * Fill out the rest of this cache line and the next with nops, - * to ensure that nothing outside the locked area will be - * fetched due to a branch. - */ - .rept 19 - nop - .endr - - icblc 0, 0, %r8 - icblc 0, 0, %r9 - - blr - /* * XXX: This should be moved to a shared AIM/booke asm file, if one ever is * created. Modified: head/sys/powerpc/mpc85xx/mpc85xx.c ============================================================================== --- head/sys/powerpc/mpc85xx/mpc85xx.c Tue May 1 04:06:59 2018 (r333134) +++ head/sys/powerpc/mpc85xx/mpc85xx.c Tue May 1 04:31:17 2018 (r333135) @@ -329,120 +329,6 @@ mpc85xx_is_qoriq(void) return (0); } -static void -mpc85xx_dataloss_erratum_spr976(void) -{ - uint32_t svr = SVR_VER(mfspr(SPR_SVR)); - - /* Ignore whether it's the E variant */ - svr &= ~0x8; - - if (svr != SVR_P3041 && svr != SVR_P4040 && - svr != SVR_P4080 && svr != SVR_P5020) - return; - - mb(); - isync(); - mtspr(976, (mfspr(976) & ~0x1f8) | 0x48); - isync(); -} - -static vm_offset_t -mpc85xx_map_dcsr(void) -{ - phandle_t node; - u_long b, s; - int err; - - /* - * Try to access the dcsr node directly i.e. through /aliases/. - */ - if ((node = OF_finddevice("dcsr")) != -1) - if (fdt_is_compatible_strict(node, "fsl,dcsr")) - goto moveon; - /* - * Find the node the long way. - */ - if ((node = OF_finddevice("/")) == -1) - return (0); - - if ((node = ofw_bus_find_compatible(node, "fsl,dcsr")) == 0) - return (0); - -moveon: - err = fdt_get_range(node, 0, &b, &s); - - if (err != 0) - return (0); - - law_enable(OCP85XX_TGTIF_DCSR, b, 0x400000); - return pmap_early_io_map(b, 0x400000); -} - - - -void -mpc85xx_fix_errata(vm_offset_t va_ccsr) -{ - uint32_t svr = SVR_VER(mfspr(SPR_SVR)); - vm_offset_t va_dcsr; - - /* Ignore whether it's the E variant */ - svr &= ~0x8; - - if (svr != SVR_P3041 && svr != SVR_P4040 && - svr != SVR_P4080 && svr != SVR_P5020) - return; - - if (mfmsr() & PSL_EE) - return; - - /* - * dcsr region need to be mapped thus patch can refer to. - * Align dcsr right after ccsbar. - */ - va_dcsr = mpc85xx_map_dcsr(); - if (va_dcsr == 0) - goto err; - - /* - * As A004510 errata specify, special purpose register 976 - * SPR976[56:60] = 6'b001001 must be set. e500mc core reference manual - * does not document SPR976 register. - */ - mpc85xx_dataloss_erratum_spr976(); - - /* - * Specific settings in the CCF and core platform cache (CPC) - * are required to reconfigure the CoreNet coherency fabric. - * The register settings that should be updated are described - * in errata and relay on base address, offset and updated value. - * Special conditions must be used to update these registers correctly. - */ - dataloss_erratum_access(va_dcsr + 0xb0e08, 0xe0201800); - dataloss_erratum_access(va_dcsr + 0xb0e18, 0xe0201800); - dataloss_erratum_access(va_dcsr + 0xb0e38, 0xe0400000); - dataloss_erratum_access(va_dcsr + 0xb0008, 0x00900000); - dataloss_erratum_access(va_dcsr + 0xb0e40, 0xe00a0000); - - switch (svr) { - case SVR_P5020: - dataloss_erratum_access(va_ccsr + 0x18600, 0xc0000000); - break; - case SVR_P4040: - case SVR_P4080: - dataloss_erratum_access(va_ccsr + 0x18600, 0xff000000); - break; - case SVR_P3041: - dataloss_erratum_access(va_ccsr + 0x18600, 0xf0000000); - } - dataloss_erratum_access(va_ccsr + 0x10f00, 0x415e5000); - dataloss_erratum_access(va_ccsr + 0x11f00, 0x415e5000); - -err: - return; -} - uint32_t mpc85xx_get_platform_clock(void) { Modified: head/sys/powerpc/mpc85xx/mpc85xx.h ============================================================================== --- head/sys/powerpc/mpc85xx/mpc85xx.h Tue May 1 04:06:59 2018 (r333134) +++ head/sys/powerpc/mpc85xx/mpc85xx.h Tue May 1 04:31:17 2018 (r333135) @@ -170,8 +170,6 @@ DECLARE_CLASS(mpc85xx_platform); int mpc85xx_attach(platform_t); void mpc85xx_enable_l3_cache(void); -void mpc85xx_fix_errata(vm_offset_t); -void dataloss_erratum_access(vm_offset_t, uint32_t); int mpc85xx_is_qoriq(void); uint32_t mpc85xx_get_platform_clock(void); uint32_t mpc85xx_get_system_clock(void); Modified: head/sys/powerpc/mpc85xx/platform_mpc85xx.c ============================================================================== --- head/sys/powerpc/mpc85xx/platform_mpc85xx.c Tue May 1 04:06:59 2018 (r333134) +++ head/sys/powerpc/mpc85xx/platform_mpc85xx.c Tue May 1 04:31:17 2018 (r333135) @@ -199,9 +199,6 @@ mpc85xx_attach(platform_t plat) ccsrbar_pa = ccsrbar; ccsrbar_size = ccsrsize; -#if 0 - mpc85xx_fix_errata(ccsrbar_va); -#endif mpc85xx_enable_l3_cache(); return (0); From owner-svn-src-all@freebsd.org Tue May 1 08:03:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 883F7FB545F; Tue, 1 May 2018 08:03:13 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 37D147FF10; Tue, 1 May 2018 08:03:13 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 301981F6CE; Tue, 1 May 2018 08:03:13 +0000 (UTC) (envelope-from wulf@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4183DpW060831; Tue, 1 May 2018 08:03:13 GMT (envelope-from wulf@FreeBSD.org) Received: (from wulf@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4183C9U060829; Tue, 1 May 2018 08:03:12 GMT (envelope-from wulf@FreeBSD.org) Message-Id: <201805010803.w4183C9U060829@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wulf set sender to wulf@FreeBSD.org using -f From: Vladimir Kondratyev Date: Tue, 1 May 2018 08:03:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333136 - head/lib/libbluetooth X-SVN-Group: head X-SVN-Commit-Author: wulf X-SVN-Commit-Paths: head/lib/libbluetooth X-SVN-Commit-Revision: 333136 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 08:03:13 -0000 Author: wulf Date: Tue May 1 08:03:12 2018 New Revision: 333136 URL: https://svnweb.freebsd.org/changeset/base/333136 Log: Fix bthidd build with GCC 4.2 after r333110 Rename inlined function parameter to avoid shadowing of devname libc function declared in stdlib.h header Reported by: lwhsu Tested by: lwhsu Modified: head/lib/libbluetooth/bluetooth.3 head/lib/libbluetooth/bluetooth.h Modified: head/lib/libbluetooth/bluetooth.3 ============================================================================== --- head/lib/libbluetooth/bluetooth.3 Tue May 1 04:31:17 2018 (r333135) +++ head/lib/libbluetooth/bluetooth.3 Tue May 1 08:03:12 2018 (r333136) @@ -25,7 +25,7 @@ .\" $Id: bluetooth.3,v 1.5 2003/05/20 23:04:30 max Exp $ .\" $FreeBSD$ .\" -.Dd April 30, 2018 +.Dd May 1, 2018 .Dt BLUETOOTH 3 .Os .Sh NAME @@ -132,7 +132,7 @@ .Fn bt_devremote_name "char const *devname" "const bdaddr_t *remote" \ "time_t to" "uint16_t clk_off" "uint8_t ps_rep_mode" "uint8_t ps_mode" .Ft char * -.Fn bt_devremote_name_gen "char const *devname" "const bdaddr_t *remote" +.Fn bt_devremote_name_gen "char const *btooth_devname" "const bdaddr_t *remote" .Ft int .Fn bdaddr_same "const bdaddr_t *a" "const bdaddr_t *b" .Ft int Modified: head/lib/libbluetooth/bluetooth.h ============================================================================== --- head/lib/libbluetooth/bluetooth.h Tue May 1 04:31:17 2018 (r333135) +++ head/lib/libbluetooth/bluetooth.h Tue May 1 08:03:12 2018 (r333136) @@ -189,9 +189,9 @@ int bt_devinfo (struct bt_devinfo *di); int bt_devenum (bt_devenum_cb_t cb, void *arg); static __inline char * -bt_devremote_name_gen(char const *devname, const bdaddr_t *remote) +bt_devremote_name_gen(char const *btooth_devname, const bdaddr_t *remote) { - return (bt_devremote_name(devname, remote, 0, 0x0000, + return (bt_devremote_name(btooth_devname, remote, 0, 0x0000, NG_HCI_SCAN_REP_MODE0, NG_HCI_MANDATORY_PAGE_SCAN_MODE)); } From owner-svn-src-all@freebsd.org Tue May 1 12:58:02 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0942FFAB138; Tue, 1 May 2018 12:58:02 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A3AD07EE0F; Tue, 1 May 2018 12:58:01 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8FB7822502; Tue, 1 May 2018 12:58:01 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41Cw1DY005527; Tue, 1 May 2018 12:58:01 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41Cw1su005525; Tue, 1 May 2018 12:58:01 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805011258.w41Cw1su005525@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Tue, 1 May 2018 12:58:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333137 - in head: share/man/man4 sys/dev/ixgb X-SVN-Group: head X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: in head: share/man/man4 sys/dev/ixgb X-SVN-Commit-Revision: 333137 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 12:58:02 -0000 Author: sbruno Date: Tue May 1 12:58:01 2018 New Revision: 333137 URL: https://svnweb.freebsd.org/changeset/base/333137 Log: ixgb(4): Add deprecation notice for this old and busted 10GE adapter. This is a prequisite before we remove the driver from -current. Reviewed by: emaste kbowling imp Relnotes: yes Differential Revision: https://reviews.freebsd.org/D15244 Modified: head/share/man/man4/ixgb.4 head/sys/dev/ixgb/if_ixgb.c Modified: head/share/man/man4/ixgb.4 ============================================================================== --- head/share/man/man4/ixgb.4 Tue May 1 08:03:12 2018 (r333136) +++ head/share/man/man4/ixgb.4 Tue May 1 12:58:01 2018 (r333137) @@ -31,7 +31,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 18, 2006 +.Dd April 30, 2018 .Dt IXGB 4 .Os .Sh NAME @@ -51,6 +51,12 @@ module at boot time, place the following line in .Bd -literal -offset indent if_ixgb_load="YES" .Ed +.Sh DEPRECATION NOTICE +The +.Nm +driver is not present in +.Fx 12.0 +and later. .Sh DESCRIPTION The .Nm Modified: head/sys/dev/ixgb/if_ixgb.c ============================================================================== --- head/sys/dev/ixgb/if_ixgb.c Tue May 1 08:03:12 2018 (r333136) +++ head/sys/dev/ixgb/if_ixgb.c Tue May 1 12:58:01 2018 (r333137) @@ -350,6 +350,7 @@ ixgb_attach(device_t dev) ixgb_clear_hw_cntrs(&adapter->hw); ixgb_update_stats_counters(adapter); + gone_in_dev(dev, 12, "ixgb(4) driver"); INIT_DEBUGOUT("ixgb_attach: end"); return (0); From owner-svn-src-all@freebsd.org Tue May 1 13:01:17 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E911CFAB224; Tue, 1 May 2018 13:01:16 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 80AED7F155; Tue, 1 May 2018 13:01:16 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.86 (FreeBSD)) (envelope-from ) id 1fDUu4-000EOY-6U; Tue, 01 May 2018 16:01:08 +0300 Date: Tue, 1 May 2018 16:01:08 +0300 From: Slawa Olhovchenkov To: Ed Maste Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333133 - head/usr.sbin/pwd_mkdb Message-ID: <20180501130108.GC80496@zxy.spb.ru> References: <201805010053.w410rkGi046226@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201805010053.w410rkGi046226@repo.freebsd.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 13:01:17 -0000 On Tue, May 01, 2018 at 12:53:46AM +0000, Ed Maste wrote: > Author: emaste > Date: Tue May 1 00:53:46 2018 > New Revision: 333133 > URL: https://svnweb.freebsd.org/changeset/base/333133 > > Log: > pwd_mkdb: retire legacy v3 db support (-l option) > > pwd_mkdb has emitted v4 password database records since 2003 (r113596) > in addition to v3, and as of r283981 by default it emitted only v4. > As described in r283981, retire the -l legacy option. > > The -B and -L options were originally added to set the endianness of v3 > records emitted by pwd_mkdb, but they also set the db hash endiannes and > so have been retained temporarily. > > Announced on the FreeBSD-Current and FreeBSD-Stable lists. In stable/11 > the man page contains a deprecation notice, and pwd_mkdb will emit a > deprecation notice if the -l option is specified. > > Reviewed by: delphij, lidl, rgrimes > Relnotes: Yes > Sponsored by: The FreeBSD Foundation > Differential Revision: https://reviews.freebsd.org/D15144 May be good idea to check db version before install new binary? From owner-svn-src-all@freebsd.org Tue May 1 13:57:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3F9E9FAC722; Tue, 1 May 2018 13:57:09 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E8D126C62B; Tue, 1 May 2018 13:57:08 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CAEBA22EA0; Tue, 1 May 2018 13:57:08 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41Dv8Pv035115; Tue, 1 May 2018 13:57:08 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41Dv8f5035113; Tue, 1 May 2018 13:57:08 GMT (envelope-from manu@FreeBSD.org) Message-Id: <201805011357.w41Dv8f5035113@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Tue, 1 May 2018 13:57:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333138 - in head/sys: arm/allwinner dev/uart X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in head/sys: arm/allwinner dev/uart X-SVN-Commit-Revision: 333138 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 13:57:09 -0000 Author: manu Date: Tue May 1 13:57:08 2018 New Revision: 333138 URL: https://svnweb.freebsd.org/changeset/base/333138 Log: uart_snps: Add early printf support Move the allwinner early printf support to the snps driver as it should work with all implementation. While here add instruction for enabling it on 64bits SoCs. Modified: head/sys/arm/allwinner/aw_machdep.c head/sys/dev/uart/uart_dev_snps.c Modified: head/sys/arm/allwinner/aw_machdep.c ============================================================================== --- head/sys/arm/allwinner/aw_machdep.c Tue May 1 12:58:01 2018 (r333137) +++ head/sys/arm/allwinner/aw_machdep.c Tue May 1 13:57:08 2018 (r333138) @@ -164,30 +164,6 @@ allwinner_cpu_reset(platform_t plat) while (1); } -/* - * To use early printf on Allwinner SoC, add to kernel config - * options SOCDEV_PA=0x01C00000 - * options SOCDEV_VA=0x10000000 - * options EARLY_PRINTF - * And remove the if 0 -*/ -#if 0 -#ifdef EARLY_PRINTF -static void -allwinner_early_putc(int c) -{ - volatile uint32_t * UART_STAT_REG = (uint32_t *)0x1002807C; - volatile uint32_t * UART_TX_REG = (uint32_t *)0x10028000; - const uint32_t UART_TXRDY = (1 << 2); - - while ((*UART_STAT_REG & UART_TXRDY) == 0) - continue; - *UART_TX_REG = c; -} -early_putc_t *early_putc = allwinner_early_putc; -#endif /* EARLY_PRINTF */ -#endif - #if defined(SOC_ALLWINNER_A10) static platform_method_t a10_methods[] = { PLATFORMMETHOD(platform_attach, a10_attach), Modified: head/sys/dev/uart/uart_dev_snps.c ============================================================================== --- head/sys/dev/uart/uart_dev_snps.c Tue May 1 12:58:01 2018 (r333137) +++ head/sys/dev/uart/uart_dev_snps.c Tue May 1 13:57:08 2018 (r333138) @@ -61,6 +61,44 @@ struct snps_softc { #endif }; +/* + * To use early printf on 64 bits Allwinner SoC, add to kernel config + * options SOCDEV_PA=0x0 + * options SOCDEV_VA=0x40000000 + * options EARLY_PRINTF + * + * To use early printf on 32 bits Allwinner SoC, add to kernel config + * options SOCDEV_PA=0x01C00000 + * options SOCDEV_VA=0x10000000 + * options EARLY_PRINTF + * + * remove the if 0 +*/ +#if 0 +#ifdef EARLY_PRINTF +static void +uart_snps_early_putc(int c) +{ + volatile uint32_t *stat; + volatile uint32_t *tx; + +#ifdef ALLWINNER_64 + stat = (uint32_t *) (SOCDEV_VA + 0x1C2807C); + tx = (uint32_t *) (SOCDEV_VA + 0x1C28000); +#endif +#ifdef ALLWINNER_32 + stat = (uint32_t *) (SOCDEV_VA + 0x2807C); + tx = (uint32_t *) (SOCDEV_VA + 0x28000); +#endif + + while ((*stat & (1 << 2)) == 0) + continue; + *tx = c; +} +early_putc_t *early_putc = uart_snps_early_putc; +#endif /* EARLY_PRINTF */ +#endif + static int snps_uart_attach(struct uart_softc *uart_sc) { From owner-svn-src-all@freebsd.org Tue May 1 14:59:39 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8C3D0FAD88B; Tue, 1 May 2018 14:59:39 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2F0617986C; Tue, 1 May 2018 14:59:39 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1DD822387A; Tue, 1 May 2018 14:59:39 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41Exc47064926; Tue, 1 May 2018 14:59:38 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41ExcaF064925; Tue, 1 May 2018 14:59:38 GMT (envelope-from np@FreeBSD.org) Message-Id: <201805011459.w41ExcaF064925@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Tue, 1 May 2018 14:59:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333139 - head/sys/dev/cxgbe X-SVN-Group: head X-SVN-Commit-Author: np X-SVN-Commit-Paths: head/sys/dev/cxgbe X-SVN-Commit-Revision: 333139 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 14:59:39 -0000 Author: np Date: Tue May 1 14:59:38 2018 New Revision: 333139 URL: https://svnweb.freebsd.org/changeset/base/333139 Log: cxgbe(4): Destroy the cdev before disabling interrupts in driver detach. Filter work requests are submitted in the nexus cdev's ioctl which then blocks waiting for a reply. If driver detach runs in this state and disables interrupts the ioctl will never complete and detach will hang in destroy_cdev. Sponsored by: Chelsio Communications Modified: head/sys/dev/cxgbe/t4_main.c Modified: head/sys/dev/cxgbe/t4_main.c ============================================================================== --- head/sys/dev/cxgbe/t4_main.c Tue May 1 13:57:08 2018 (r333138) +++ head/sys/dev/cxgbe/t4_main.c Tue May 1 14:59:38 2018 (r333139) @@ -1317,15 +1317,15 @@ t4_detach_common(device_t dev) sc = device_get_softc(dev); + if (sc->cdev) { + destroy_dev(sc->cdev); + sc->cdev = NULL; + } + sc->flags &= ~CHK_MBOX_ACCESS; if (sc->flags & FULL_INIT_DONE) { if (!(sc->flags & IS_VF)) t4_intr_disable(sc); - } - - if (sc->cdev) { - destroy_dev(sc->cdev); - sc->cdev = NULL; } if (device_is_attached(dev)) { From owner-svn-src-all@freebsd.org Tue May 1 15:17:48 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C753CFADE5A; Tue, 1 May 2018 15:17:47 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7A15B7DA51; Tue, 1 May 2018 15:17:47 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7411223BAE; Tue, 1 May 2018 15:17:47 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41FHlPh075281; Tue, 1 May 2018 15:17:47 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41FHlqI075276; Tue, 1 May 2018 15:17:47 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201805011517.w41FHlqI075276@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Tue, 1 May 2018 15:17:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333140 - head/usr.sbin/bhyve X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/usr.sbin/bhyve X-SVN-Commit-Revision: 333140 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 15:17:48 -0000 Author: jhb Date: Tue May 1 15:17:46 2018 New Revision: 333140 URL: https://svnweb.freebsd.org/changeset/base/333140 Log: Initial debug server for bhyve. This commit adds a new debug server to bhyve. Unlike the existing -g option which provides an efficient connection to a debug server running in the guest OS, this debug server permits inspection and control of the guest from within the hypervisor itself without requiring any cooperation from the guest. It is similar to the debug server provided by qemu. To avoid conflicting with the existing -g option, a new -G option has been added that accepts a TCP port. An IPv4 socket is bound to this port and listens for connections from debuggers. In addition, if the port begins with the character 'w', the hypervisor will pause the guest at the first instruction until a debugger attaches and explicitly continues the guest. Note that only a single debugger can attach to a guest at a time. Virtual CPUs are exposed to the remote debugger as threads. General purpose register values can be read for each virtual CPU. Other registers cannot currently be read, and no register values can be changed by the debugger. The remote debugger can read guest memory but not write to guest memory. To facilitate source-level debugging of the guest, memory addresses from the debugger are treated as virtual addresses (rather than physical addresses) and are resolved to a physical address using the active virtual address translation of the current virtual CPU. Memory reads should honor memory mapped I/O regions, though the debug server does not attempt to honor any alignment or size constraints when accessing MMIO. The debug server provides limited support for controlling the guest. The guest is suspended when a debugger is attached and resumes when a debugger detaches. A debugger can suspend a guest by sending a Ctrl-C request (e.g. via Ctrl-C in GDB). A debugger can also continue a suspended guest while remaining attached. Breakpoints are not yet supported. Single stepping is supported on Intel CPUs that support MTRAP VM exits, but is not available on other systems. While the current debug server has limited functionality, it should at least be usable for basic debugging now. It is also a useful checkpoint to serve as a base for adding additional features. Reviewed by: grehan Differential Revision: https://reviews.freebsd.org/D15022 Added: head/usr.sbin/bhyve/gdb.c (contents, props changed) head/usr.sbin/bhyve/gdb.h (contents, props changed) Modified: head/usr.sbin/bhyve/Makefile head/usr.sbin/bhyve/bhyve.8 head/usr.sbin/bhyve/bhyverun.c head/usr.sbin/bhyve/mem.c head/usr.sbin/bhyve/mem.h Modified: head/usr.sbin/bhyve/Makefile ============================================================================== --- head/usr.sbin/bhyve/Makefile Tue May 1 14:59:38 2018 (r333139) +++ head/usr.sbin/bhyve/Makefile Tue May 1 15:17:46 2018 (r333140) @@ -24,6 +24,7 @@ SRCS= \ consport.c \ dbgport.c \ fwctl.c \ + gdb.c \ inout.c \ ioapic.c \ mem.c \ @@ -74,6 +75,10 @@ LIBADD+= crypto CFLAGS+= -I${BHYVE_SYSDIR}/sys/dev/e1000 CFLAGS+= -I${BHYVE_SYSDIR}/sys/dev/mii CFLAGS+= -I${BHYVE_SYSDIR}/sys/dev/usb/controller + +.ifdef GDB_LOG +CFLAGS+=-DGDB_LOG +.endif WARNS?= 2 Modified: head/usr.sbin/bhyve/bhyve.8 ============================================================================== --- head/usr.sbin/bhyve/bhyve.8 Tue May 1 14:59:38 2018 (r333139) +++ head/usr.sbin/bhyve/bhyve.8 Tue May 1 15:17:46 2018 (r333140) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 6, 2018 +.Dd May 1, 2018 .Dt BHYVE 8 .Os .Sh NAME @@ -48,6 +48,7 @@ .Op Fl m Ar memsize Ns Op Ar K|k|M|m|G|g|T|t .Op Fl p Ar vcpu:hostcpu .Op Fl s Ar slot,emulation Ns Op , Ns Ar conf +.Op Fl G Ar port .Op Fl U Ar uuid .Ar vmname .Sh DESCRIPTION @@ -125,6 +126,19 @@ kernels compiled with allow a remote kernel kgdb to be relayed to the guest kernel gdb stub via a local IPv4 address and this port. This option will be deprecated in a future version. +.It Fl G Ar port +Start a debug server that uses the GDB protocol to export guest state to a +debugger. +An IPv4 TCP socket will be bound to the supplied +.Ar port +to listen for debugger connections. +Only a single debugger may be attached to the debug server at a time. +If +.Ar port +begins with +.Sq w , +.Nm +will pause execution at the first instruction waiting for a debugger to attach. .It Fl h Print help message and exit. .It Fl H @@ -438,6 +452,24 @@ Alphanumeric name of the guest. This should be the same as that created by .Xr bhyveload 8 . .El +.Sh DEBUG SERVER +The current debug server provides limited support for debuggers. +.Ss Registers +Each virtual CPU is exposed to the debugger as a thread. +.Pp +General purpose registers can be queried for each virtual CPU, but other +registers such as floating-point and system registers cannot be queried. +.Ss Memory +Memory (including memory mapped I/O regions) can be read by the debugger, +but not written. Memory operations use virtual addresses that are resolved +to physical addresses via the current virtual CPU's active address translation. +.Ss Control +The running guest can be interrupted by the debugger at any time +.Pq for example, by pressing Ctrl-C in the debugger . +.Pp +Single stepping is only supported on Intel CPUs supporting the MTRAP VM exit. +.Pp +Breakpoints are not supported. .Sh SIGNAL HANDLING .Nm deals with the following signals: Modified: head/usr.sbin/bhyve/bhyverun.c ============================================================================== --- head/usr.sbin/bhyve/bhyverun.c Tue May 1 14:59:38 2018 (r333139) +++ head/usr.sbin/bhyve/bhyverun.c Tue May 1 15:17:46 2018 (r333140) @@ -71,6 +71,7 @@ __FBSDID("$FreeBSD$"); #include "inout.h" #include "dbgport.h" #include "fwctl.h" +#include "gdb.h" #include "ioapic.h" #include "mem.h" #include "mevent.h" @@ -338,6 +339,8 @@ fbsdrun_start_thread(void *param) snprintf(tname, sizeof(tname), "vcpu %d", vcpu); pthread_set_name_np(mtp->mt_thr, tname); + gdb_cpu_add(vcpu); + vm_loop(mtp->mt_ctx, vcpu, vmexit[vcpu].rip); /* not reached */ @@ -601,6 +604,8 @@ vmexit_mtrap(struct vmctx *ctx, struct vm_exit *vmexit stats.vmexit_mtrap++; + gdb_cpu_mtrap(*pvcpu); + return (VMEXIT_CONTINUE); } @@ -675,6 +680,14 @@ vmexit_suspend(struct vmctx *ctx, struct vm_exit *vmex return (0); /* NOTREACHED */ } +static int +vmexit_debug(struct vmctx *ctx, struct vm_exit *vmexit, int *pvcpu) +{ + + gdb_cpu_suspend(*pvcpu); + return (VMEXIT_CONTINUE); +} + static vmexit_handler_t handler[VM_EXITCODE_MAX] = { [VM_EXITCODE_INOUT] = vmexit_inout, [VM_EXITCODE_INOUT_STR] = vmexit_inout, @@ -689,6 +702,7 @@ static vmexit_handler_t handler[VM_EXITCODE_MAX] = { [VM_EXITCODE_SPINUP_AP] = vmexit_spinup_ap, [VM_EXITCODE_SUSPENDED] = vmexit_suspend, [VM_EXITCODE_TASK_SWITCH] = vmexit_task_switch, + [VM_EXITCODE_DEBUG] = vmexit_debug, }; static void @@ -877,9 +891,10 @@ do_open(const char *vmname) int main(int argc, char *argv[]) { - int c, error, gdb_port, err, bvmcons; + int c, error, dbg_port, gdb_port, err, bvmcons; int max_vcpus, mptgen, memflags; int rtc_localtime; + bool gdb_stop; struct vmctx *ctx; uint64_t rip; size_t memsize; @@ -887,7 +902,9 @@ main(int argc, char *argv[]) bvmcons = 0; progname = basename(argv[0]); + dbg_port = 0; gdb_port = 0; + gdb_stop = false; guest_ncpus = 1; sockets = cores = threads = 1; maxcpus = 0; @@ -896,7 +913,7 @@ main(int argc, char *argv[]) rtc_localtime = 1; memflags = 0; - optstr = "abehuwxACHIPSWYp:g:c:s:m:l:U:"; + optstr = "abehuwxACHIPSWYp:g:G:c:s:m:l:U:"; while ((c = getopt(argc, argv, optstr)) != -1) { switch (c) { case 'a': @@ -924,6 +941,13 @@ main(int argc, char *argv[]) memflags |= VM_MEM_F_INCORE; break; case 'g': + dbg_port = atoi(optarg); + break; + case 'G': + if (optarg[0] == 'w') { + gdb_stop = true; + optarg++; + } gdb_port = atoi(optarg); break; case 'l': @@ -1033,8 +1057,11 @@ main(int argc, char *argv[]) if (init_pci(ctx) != 0) exit(1); + if (dbg_port != 0) + init_dbgport(dbg_port); + if (gdb_port != 0) - init_dbgport(gdb_port); + init_gdb(ctx, gdb_port, gdb_stop); if (bvmcons) init_bvmcons(); Added: head/usr.sbin/bhyve/gdb.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.sbin/bhyve/gdb.c Tue May 1 15:17:46 2018 (r333140) @@ -0,0 +1,1313 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2017-2018 John H. Baldwin + * 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 +__FBSDID("$FreeBSD$"); + +#include +#ifndef WITHOUT_CAPSICUM +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WITHOUT_CAPSICUM +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bhyverun.h" +#include "mem.h" +#include "mevent.h" + +/* + * GDB_SIGNAL_* numbers are part of the GDB remote protocol. Most stops + * use SIGTRAP. + */ +#define GDB_SIGNAL_TRAP 5 + +static void gdb_resume_vcpus(void); +static void check_command(int fd); + +static struct mevent *read_event, *write_event; + +static cpuset_t vcpus_active, vcpus_suspended, vcpus_waiting; +static pthread_mutex_t gdb_lock; +static pthread_cond_t idle_vcpus; +static bool stop_pending, first_stop; +static int stepping_vcpu, stopped_vcpu; + +/* + * An I/O buffer contains 'capacity' bytes of room at 'data'. For a + * read buffer, 'start' is unused and 'len' contains the number of + * valid bytes in the buffer. For a write buffer, 'start' is set to + * the index of the next byte in 'data' to send, and 'len' contains + * the remaining number of valid bytes to send. + */ +struct io_buffer { + uint8_t *data; + size_t capacity; + size_t start; + size_t len; +}; + +static struct io_buffer cur_comm, cur_resp; +static uint8_t cur_csum; +static int cur_vcpu; +static struct vmctx *ctx; +static int cur_fd = -1; + +const int gdb_regset[] = { + VM_REG_GUEST_RAX, + VM_REG_GUEST_RBX, + VM_REG_GUEST_RCX, + VM_REG_GUEST_RDX, + VM_REG_GUEST_RSI, + VM_REG_GUEST_RDI, + VM_REG_GUEST_RBP, + VM_REG_GUEST_RSP, + VM_REG_GUEST_R8, + VM_REG_GUEST_R9, + VM_REG_GUEST_R10, + VM_REG_GUEST_R11, + VM_REG_GUEST_R12, + VM_REG_GUEST_R13, + VM_REG_GUEST_R14, + VM_REG_GUEST_R15, + VM_REG_GUEST_RIP, + VM_REG_GUEST_RFLAGS, + VM_REG_GUEST_CS, + VM_REG_GUEST_SS, + VM_REG_GUEST_DS, + VM_REG_GUEST_ES, + VM_REG_GUEST_FS, + VM_REG_GUEST_GS +}; + +const int gdb_regsize[] = { + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 4, + 4, + 4, + 4, + 4, + 4, + 4 +}; + +#ifdef GDB_LOG +#include +#include + +static void __printflike(1, 2) +debug(const char *fmt, ...) +{ + static FILE *logfile; + va_list ap; + + if (logfile == NULL) { + logfile = fopen("/tmp/bhyve_gdb.log", "w"); + if (logfile == NULL) + return; +#ifndef WITHOUT_CAPSICUM + if (caph_limit_stream(fileno(logfile), CAPH_WRITE) == -1) { + fclose(logfile); + logfile = NULL; + return; + } +#endif + setlinebuf(logfile); + } + va_start(ap, fmt); + vfprintf(logfile, fmt, ap); + va_end(ap); +} +#else +#define debug(...) +#endif + +static int +guest_paging_info(int vcpu, struct vm_guest_paging *paging) +{ + uint64_t regs[4]; + const int regset[4] = { + VM_REG_GUEST_CR0, + VM_REG_GUEST_CR3, + VM_REG_GUEST_CR4, + VM_REG_GUEST_EFER + }; + + if (vm_get_register_set(ctx, vcpu, nitems(regset), regset, regs) == -1) + return (-1); + + /* + * For the debugger, always pretend to be the kernel (CPL 0), + * and if long-mode is enabled, always parse addresses as if + * in 64-bit mode. + */ + paging->cr3 = regs[1]; + paging->cpl = 0; + if (regs[3] & EFER_LMA) + paging->cpu_mode = CPU_MODE_64BIT; + else if (regs[0] & CR0_PE) + paging->cpu_mode = CPU_MODE_PROTECTED; + else + paging->cpu_mode = CPU_MODE_REAL; + if (!(regs[0] & CR0_PG)) + paging->paging_mode = PAGING_MODE_FLAT; + else if (!(regs[2] & CR4_PAE)) + paging->paging_mode = PAGING_MODE_32; + else if (regs[3] & EFER_LME) + paging->paging_mode = PAGING_MODE_64; + else + paging->paging_mode = PAGING_MODE_PAE; + return (0); +} + +/* + * Map a guest virtual address to a physical address (for a given vcpu). + * If a guest virtual address is valid, return 1. If the address is + * not valid, return 0. If an error occurs obtaining the mapping, + * return -1. + */ +static int +guest_vaddr2paddr(int vcpu, uint64_t vaddr, uint64_t *paddr) +{ + struct vm_guest_paging paging; + int fault; + + if (guest_paging_info(vcpu, &paging) == -1) + return (-1); + + /* + * Always use PROT_READ. We really care if the VA is + * accessible, not if the current vCPU can write. + */ + if (vm_gla2gpa_nofault(ctx, vcpu, &paging, vaddr, PROT_READ, paddr, + &fault) == -1) + return (-1); + if (fault) + return (0); + return (1); +} + +static void +io_buffer_reset(struct io_buffer *io) +{ + + io->start = 0; + io->len = 0; +} + +/* Available room for adding data. */ +static size_t +io_buffer_avail(struct io_buffer *io) +{ + + return (io->capacity - (io->start + io->len)); +} + +static uint8_t * +io_buffer_head(struct io_buffer *io) +{ + + return (io->data + io->start); +} + +static uint8_t * +io_buffer_tail(struct io_buffer *io) +{ + + return (io->data + io->start + io->len); +} + +static void +io_buffer_advance(struct io_buffer *io, size_t amount) +{ + + assert(amount <= io->len); + io->start += amount; + io->len -= amount; +} + +static void +io_buffer_consume(struct io_buffer *io, size_t amount) +{ + + io_buffer_advance(io, amount); + if (io->len == 0) { + io->start = 0; + return; + } + + /* + * XXX: Consider making this move optional and compacting on a + * future read() before realloc(). + */ + memmove(io->data, io_buffer_head(io), io->len); + io->start = 0; +} + +static void +io_buffer_grow(struct io_buffer *io, size_t newsize) +{ + uint8_t *new_data; + size_t avail, new_cap; + + avail = io_buffer_avail(io); + if (newsize <= avail) + return; + + new_cap = io->capacity + (newsize - avail); + new_data = realloc(io->data, new_cap); + if (new_data == NULL) + err(1, "Failed to grow GDB I/O buffer"); + io->data = new_data; + io->capacity = new_cap; +} + +static bool +response_pending(void) +{ + + if (cur_resp.start == 0 && cur_resp.len == 0) + return (false); + if (cur_resp.start + cur_resp.len == 1 && cur_resp.data[0] == '+') + return (false); + return (true); +} + +static void +close_connection(void) +{ + + /* + * XXX: This triggers a warning because mevent does the close + * before the EV_DELETE. + */ + pthread_mutex_lock(&gdb_lock); + mevent_delete(write_event); + mevent_delete_close(read_event); + write_event = NULL; + read_event = NULL; + io_buffer_reset(&cur_comm); + io_buffer_reset(&cur_resp); + cur_fd = -1; + + /* Resume any stopped vCPUs. */ + gdb_resume_vcpus(); + pthread_mutex_unlock(&gdb_lock); +} + +static uint8_t +hex_digit(uint8_t nibble) +{ + + if (nibble <= 9) + return (nibble + '0'); + else + return (nibble + 'a' - 10); +} + +static uint8_t +parse_digit(uint8_t v) +{ + + if (v >= '0' && v <= '9') + return (v - '0'); + if (v >= 'a' && v <= 'f') + return (v - 'a' + 10); + if (v >= 'A' && v <= 'F') + return (v - 'A' + 10); + return (0xF); +} + +/* Parses big-endian hexadecimal. */ +static uintmax_t +parse_integer(const uint8_t *p, size_t len) +{ + uintmax_t v; + + v = 0; + while (len > 0) { + v <<= 4; + v |= parse_digit(*p); + p++; + len--; + } + return (v); +} + +static uint8_t +parse_byte(const uint8_t *p) +{ + + return (parse_digit(p[0]) << 4 | parse_digit(p[1])); +} + +static void +send_pending_data(int fd) +{ + ssize_t nwritten; + + if (cur_resp.len == 0) { + mevent_disable(write_event); + return; + } + nwritten = write(fd, io_buffer_head(&cur_resp), cur_resp.len); + if (nwritten == -1) { + warn("Write to GDB socket failed"); + close_connection(); + } else { + io_buffer_advance(&cur_resp, nwritten); + if (cur_resp.len == 0) + mevent_disable(write_event); + else + mevent_enable(write_event); + } +} + +/* Append a single character to the output buffer. */ +static void +send_char(uint8_t data) +{ + io_buffer_grow(&cur_resp, 1); + *io_buffer_tail(&cur_resp) = data; + cur_resp.len++; +} + +/* Append an array of bytes to the output buffer. */ +static void +send_data(const uint8_t *data, size_t len) +{ + + io_buffer_grow(&cur_resp, len); + memcpy(io_buffer_tail(&cur_resp), data, len); + cur_resp.len += len; +} + +static void +format_byte(uint8_t v, uint8_t *buf) +{ + + buf[0] = hex_digit(v >> 4); + buf[1] = hex_digit(v & 0xf); +} + +/* + * Append a single byte (formatted as two hex characters) to the + * output buffer. + */ +static void +send_byte(uint8_t v) +{ + uint8_t buf[2]; + + format_byte(v, buf); + send_data(buf, sizeof(buf)); +} + +static void +start_packet(void) +{ + + send_char('$'); + cur_csum = 0; +} + +static void +finish_packet(void) +{ + + send_char('#'); + send_byte(cur_csum); + debug("-> %.*s\n", (int)cur_resp.len, io_buffer_head(&cur_resp)); +} + +/* + * Append a single character (for the packet payload) and update the + * checksum. + */ +static void +append_char(uint8_t v) +{ + + send_char(v); + cur_csum += v; +} + +/* + * Append an array of bytes (for the packet payload) and update the + * checksum. + */ +static void +append_packet_data(const uint8_t *data, size_t len) +{ + + send_data(data, len); + while (len > 0) { + cur_csum += *data; + data++; + len--; + } +} + +static void +append_string(const char *str) +{ + + append_packet_data(str, strlen(str)); +} + +static void +append_byte(uint8_t v) +{ + uint8_t buf[2]; + + format_byte(v, buf); + append_packet_data(buf, sizeof(buf)); +} + +static void +append_unsigned_native(uintmax_t value, size_t len) +{ + size_t i; + + for (i = 0; i < len; i++) { + append_byte(value); + value >>= 8; + } +} + +static void +append_unsigned_be(uintmax_t value, size_t len) +{ + char buf[len * 2]; + size_t i; + + for (i = 0; i < len; i++) { + format_byte(value, buf + (len - i - 1) * 2); + value >>= 8; + } + append_packet_data(buf, sizeof(buf)); +} + +static void +append_integer(unsigned int value) +{ + + if (value == 0) + append_char('0'); + else + append_unsigned_be(value, fls(value) + 7 / 8); +} + +static void +append_asciihex(const char *str) +{ + + while (*str != '\0') { + append_byte(*str); + str++; + } +} + +static void +send_empty_response(void) +{ + + start_packet(); + finish_packet(); +} + +static void +send_error(int error) +{ + + start_packet(); + append_char('E'); + append_byte(error); + finish_packet(); +} + +static void +send_ok(void) +{ + + start_packet(); + append_string("OK"); + finish_packet(); +} + +static int +parse_threadid(const uint8_t *data, size_t len) +{ + + if (len == 1 && *data == '0') + return (0); + if (len == 2 && memcmp(data, "-1", 2) == 0) + return (-1); + if (len == 0) + return (-2); + return (parse_integer(data, len)); +} + +static void +report_stop(void) +{ + + start_packet(); + if (stopped_vcpu == -1) + append_char('S'); + else + append_char('T'); + append_byte(GDB_SIGNAL_TRAP); + if (stopped_vcpu != -1) { + append_string("thread:"); + append_integer(stopped_vcpu + 1); + append_char(';'); + } + stopped_vcpu = -1; + finish_packet(); +} + +static void +gdb_finish_suspend_vcpus(void) +{ + + if (first_stop) { + first_stop = false; + stopped_vcpu = -1; + } else if (response_pending()) + stop_pending = true; + else { + report_stop(); + send_pending_data(cur_fd); + } +} + +static void +_gdb_cpu_suspend(int vcpu, bool report_stop) +{ + + debug("$vCPU %d suspending\n", vcpu); + CPU_SET(vcpu, &vcpus_waiting); + if (report_stop && CPU_CMP(&vcpus_waiting, &vcpus_suspended) == 0) + gdb_finish_suspend_vcpus(); + while (CPU_ISSET(vcpu, &vcpus_suspended) && vcpu != stepping_vcpu) + pthread_cond_wait(&idle_vcpus, &gdb_lock); + CPU_CLR(vcpu, &vcpus_waiting); + debug("$vCPU %d resuming\n", vcpu); +} + +void +gdb_cpu_add(int vcpu) +{ + + debug("$vCPU %d starting\n", vcpu); + pthread_mutex_lock(&gdb_lock); + CPU_SET(vcpu, &vcpus_active); + + /* + * If a vcpu is added while vcpus are stopped, suspend the new + * vcpu so that it will pop back out with a debug exit before + * executing the first instruction. + */ + if (!CPU_EMPTY(&vcpus_suspended)) { + CPU_SET(vcpu, &vcpus_suspended); + _gdb_cpu_suspend(vcpu, false); + } + pthread_mutex_unlock(&gdb_lock); +} + +void +gdb_cpu_suspend(int vcpu) +{ + + pthread_mutex_lock(&gdb_lock); + _gdb_cpu_suspend(vcpu, true); + pthread_mutex_unlock(&gdb_lock); +} + +void +gdb_cpu_mtrap(int vcpu) +{ + + debug("$vCPU %d MTRAP\n", vcpu); + pthread_mutex_lock(&gdb_lock); + if (vcpu == stepping_vcpu) { + stepping_vcpu = -1; + vm_set_capability(ctx, vcpu, VM_CAP_MTRAP_EXIT, 0); + vm_suspend_cpu(ctx, vcpu); + assert(stopped_vcpu == -1); + stopped_vcpu = vcpu; + _gdb_cpu_suspend(vcpu, true); + } + pthread_mutex_unlock(&gdb_lock); +} + +static void +gdb_suspend_vcpus(void) +{ + + assert(pthread_mutex_isowned_np(&gdb_lock)); + debug("suspending all CPUs\n"); + vcpus_suspended = vcpus_active; + vm_suspend_cpu(ctx, -1); + if (CPU_CMP(&vcpus_waiting, &vcpus_suspended) == 0) + gdb_finish_suspend_vcpus(); +} + +static bool +gdb_step_vcpu(int vcpu) +{ + int error, val; + + debug("$vCPU %d step\n", vcpu); + error = vm_get_capability(ctx, vcpu, VM_CAP_MTRAP_EXIT, &val); + if (error < 0) + return (false); + error = vm_set_capability(ctx, vcpu, VM_CAP_MTRAP_EXIT, 1); + vm_resume_cpu(ctx, vcpu); + stepping_vcpu = vcpu; + pthread_cond_broadcast(&idle_vcpus); + return (true); +} + +static void +gdb_resume_vcpus(void) +{ + + assert(pthread_mutex_isowned_np(&gdb_lock)); + vm_resume_cpu(ctx, -1); + debug("resuming all CPUs\n"); + CPU_ZERO(&vcpus_suspended); + pthread_cond_broadcast(&idle_vcpus); +} + +static void +gdb_read_regs(void) +{ + uint64_t regvals[nitems(gdb_regset)]; + int i; + + if (vm_get_register_set(ctx, cur_vcpu, nitems(gdb_regset), + gdb_regset, regvals) == -1) { + send_error(errno); + return; + } + start_packet(); + for (i = 0; i < nitems(regvals); i++) + append_unsigned_native(regvals[i], gdb_regsize[i]); + finish_packet(); +} + +static void +gdb_read_mem(const uint8_t *data, size_t len) +{ + uint64_t gpa, gva, val; + uint8_t *cp; + size_t resid, todo, bytes; + bool started; + int error; + + cp = memchr(data, ',', len); + if (cp == NULL) { + send_error(EINVAL); + return; + } + gva = parse_integer(data + 1, cp - (data + 1)); + resid = parse_integer(cp + 1, len - (cp + 1 - data)); + started = false; + + while (resid > 0) { + error = guest_vaddr2paddr(cur_vcpu, gva, &gpa); + if (error == -1) { + if (started) + finish_packet(); + else + send_error(errno); + return; + } + if (error == 0) { + if (started) + finish_packet(); + else + send_error(EFAULT); + return; + } + + /* Read bytes from current page. */ + todo = getpagesize() - gpa % getpagesize(); + if (todo > resid) + todo = resid; + + cp = paddr_guest2host(ctx, gpa, todo); + if (cp != NULL) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 1 15:31:39 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 72EFDFAE634; Tue, 1 May 2018 15:31:39 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from smtp.freebsd.org (unknown [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1C92A7FE23; Tue, 1 May 2018 15:31:39 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id EA0062A8BE; Tue, 1 May 2018 15:31:38 +0000 (UTC) (envelope-from jhb@freebsd.org) From: John Baldwin To: src-committers@freebsd.org Cc: svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333140 - head/usr.sbin/bhyve Date: Tue, 01 May 2018 08:31:28 -0700 Message-ID: <1760664.chHeORK2x4@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <201805011517.w41FHlqI075276@repo.freebsd.org> References: <201805011517.w41FHlqI075276@repo.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 15:31:39 -0000 On Tuesday, May 01, 2018 03:17:47 PM John Baldwin wrote: > Author: jhb > Date: Tue May 1 15:17:46 2018 > New Revision: 333140 > URL: https://svnweb.freebsd.org/changeset/base/333140 > > Log: > Initial debug server for bhyve. This is definitely "early" work and there are still many things to improve. Note that if you aren't using a file gdb you will need to explicitly set the architecture. Here is an example of booting a VM with -G w1234 which stops at the first instruction: (gdb) set architecture i386:x86-64 The target architecture is assumed to be i386:x86-64 (gdb) target remote localhost:1234 Remote debugging using localhost:1234 warning: No executable has been specified and target does not support determining executable automatically. Try using the "file" command. 0xffffffff8029e9a0 in ?? () (gdb) x/i $pc => 0xffffffff8029e9a0: movw $0x1234,0x472 (gdb) si 0xffffffff8029e9aa in ?? () (gdb) info threads Id Target Id Frame * 1 Thread 1 (vCPU 0) 0xffffffff8029e9aa in ?? () (gdb) c Continuing. ^C[New Thread 2] Thread 1 received signal SIGTRAP, Trace/breakpoint trap. 0xffffffff807e0673 in ?? () (gdb) info threads Id Target Id Frame * 1 Thread 1 (vCPU 0) 0xffffffff807e0673 in ?? () 2 Thread 2 (vCPU 1) 0xffffffff807f4fa2 in ?? () (gdb) info registers rax 0x0 0 rbx 0xffffffff80d75400 -2133371904 rcx 0x0 0 rdx 0x40024 262180 rsi 0x1 1 rdi 0xffffffffffffffff -1 rbp 0xfffffe0015282980 0xfffffe0015282980 rsp 0xfffffe0015282970 0xfffffe0015282970 r8 0xfffff80002148000 -8796058124288 r9 0xffffffff80d49090 -2133553008 r10 0xfffff80002148000 -8796058124288 r11 0x1 1 r12 0x0 0 r13 0xfffff80002144000 -8796058140672 r14 0xffffffffffffffff -1 r15 0xffffffff80c30a00 -2134701568 rip 0xffffffff807e0673 0xffffffff807e0673 eflags 0x246 [ PF ZF IF ] cs 0x20 32 ss 0x28 40 ds 0x3b 59 es 0x3b 59 fs 0x13 19 gs 0x28 40 fs_base gs_base (gdb) detach Detaching from program: , Remote target Ending remote debugging. Stepping will only work on Intel CPUs currently and not AMD. (Implementing single-stepping on AMD will prove "interesting" as it will mean raising single-step debug exceptions in the guest and then hiding them from the guest as well as properly shadowing the TF flag in %rflags in the guest and injecting suitable DB# exceptions in the guest if it is also tracing itself, etc.) There is a lot more to work on, but I think this is a useful initial checkpoint. Note that just as with the debug server in QEMU, kgdb does not currently know how to enumerate kernel threads on top of the virtual CPU "threads", so commands like 'tid' and 'proc' will not work if using kgdb. -- John Baldwin From owner-svn-src-all@freebsd.org Tue May 1 15:33:22 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2D09FFAE74F; Tue, 1 May 2018 15:33:22 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D2D6480A92; Tue, 1 May 2018 15:33:21 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CC52623F03; Tue, 1 May 2018 15:33:21 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41FXLKd084623; Tue, 1 May 2018 15:33:21 GMT (envelope-from gallatin@FreeBSD.org) Received: (from gallatin@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41FXLpo084622; Tue, 1 May 2018 15:33:21 GMT (envelope-from gallatin@FreeBSD.org) Message-Id: <201805011533.w41FXLpo084622@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gallatin set sender to gallatin@FreeBSD.org using -f From: Andrew Gallatin Date: Tue, 1 May 2018 15:33:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333141 - head/sys/dev/cxgbe X-SVN-Group: head X-SVN-Commit-Author: gallatin X-SVN-Commit-Paths: head/sys/dev/cxgbe X-SVN-Commit-Revision: 333141 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 15:33:22 -0000 Author: gallatin Date: Tue May 1 15:33:21 2018 New Revision: 333141 URL: https://svnweb.freebsd.org/changeset/base/333141 Log: Optionally panic when cxgbe encounters a fatal error Sometimes it is better to panic than to leave a machine unreachable. Reviewed by: np Sponsored by: Netflix Modified: head/sys/dev/cxgbe/t4_main.c Modified: head/sys/dev/cxgbe/t4_main.c ============================================================================== --- head/sys/dev/cxgbe/t4_main.c Tue May 1 15:17:46 2018 (r333140) +++ head/sys/dev/cxgbe/t4_main.c Tue May 1 15:33:21 2018 (r333141) @@ -469,6 +469,8 @@ TUNABLE_INT("hw.cxgbe.num_vis", &t4_num_vis); static int pcie_relaxed_ordering = -1; TUNABLE_INT("hw.cxgbe.pcie_relaxed_ordering", &pcie_relaxed_ordering); +static int t4_panic_on_fatal_err = 0; +TUNABLE_INT("hw.cxgbe.panic_on_fatal_err", &t4_panic_on_fatal_err); #ifdef TCP_OFFLOAD /* @@ -2222,6 +2224,8 @@ t4_fatal_err(struct adapter *sc) t4_intr_disable(sc); log(LOG_EMERG, "%s: encountered fatal error, adapter stopped.\n", device_get_nameunit(sc->dev)); + if (t4_panic_on_fatal_err) + panic("panic requested on fatal error"); } void From owner-svn-src-all@freebsd.org Tue May 1 15:59:34 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 13D1EFAEE8E; Tue, 1 May 2018 15:59:34 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6C6E386B06; Tue, 1 May 2018 15:59:33 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w41FxUBG026648; Tue, 1 May 2018 08:59:30 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w41FxUr7026647; Tue, 1 May 2018 08:59:30 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201805011559.w41FxUr7026647@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r333140 - head/usr.sbin/bhyve In-Reply-To: <201805011517.w41FHlqI075276@repo.freebsd.org> To: John Baldwin Date: Tue, 1 May 2018 08:59:30 -0700 (PDT) CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 15:59:34 -0000 > Author: jhb > Date: Tue May 1 15:17:46 2018 > New Revision: 333140 > URL: https://svnweb.freebsd.org/changeset/base/333140 > > Log: > Initial debug server for bhyve. ... > > Added: head/usr.sbin/bhyve/gdb.c > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/usr.sbin/bhyve/gdb.c Tue May 1 15:17:46 2018 (r333140) > @@ -0,0 +1,1313 @@ > +/*- > + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD > + * > + * Copyright (c) 2017-2018 John H. Baldwin > + * All rights reserved. The All rights reserved clause is an obsolete requirement from the 1910 Buenos Aires Convention, and should not be used on new code since 2000. Regards, -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Tue May 1 16:21:07 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 10804FAF404; Tue, 1 May 2018 16:21:07 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B8B3269C85; Tue, 1 May 2018 16:21:06 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B265A245B8; Tue, 1 May 2018 16:21:06 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41GL6h1008189; Tue, 1 May 2018 16:21:06 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41GL17P008142; Tue, 1 May 2018 16:21:01 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201805011621.w41GL17P008142@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Tue, 1 May 2018 16:21:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333142 - in head/sys/arm: at91 conf include X-SVN-Group: head X-SVN-Commit-Author: imp X-SVN-Commit-Paths: in head/sys/arm: at91 conf include X-SVN-Commit-Revision: 333142 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 16:21:07 -0000 Author: imp Date: Tue May 1 16:21:01 2018 New Revision: 333142 URL: https://svnweb.freebsd.org/changeset/base/333142 Log: Remove 'All Rights Reserved.' from all of my Copyrights in sys/arm and always use 'M. Warner Losh' for consistency. 'All Rights Reserved.' was prescribed by the Buenos Aires Copyright Convention of 1910, but has been mostly dead since the early 1990's and completely meaningless since 2000 when Nicaragua ratified the Berne convention. Some files not done due to ambiguity of various types. Modified: head/sys/arm/at91/at91_aic.c head/sys/arm/at91/at91_common.c head/sys/arm/at91/at91_gpio.h head/sys/arm/at91/at91_mci.c head/sys/arm/at91/at91_mcireg.h head/sys/arm/at91/at91_ohci.c head/sys/arm/at91/at91_ohci_fdt.c head/sys/arm/at91/at91_pdcreg.h head/sys/arm/at91/at91_pinctrl.c head/sys/arm/at91/at91_pio.c head/sys/arm/at91/at91_pioreg.h head/sys/arm/at91/at91_piovar.h head/sys/arm/at91/at91_pmc.c head/sys/arm/at91/at91_pmcreg.h head/sys/arm/at91/at91_pmcvar.h head/sys/arm/at91/at91_rtc.c head/sys/arm/at91/at91_rtcreg.h head/sys/arm/at91/at91_sdramc.c head/sys/arm/at91/at91_shdwc.c head/sys/arm/at91/at91_smc.c head/sys/arm/at91/at91_smc.h head/sys/arm/at91/at91_spireg.h head/sys/arm/at91/at91_ssc.c head/sys/arm/at91/at91_sscreg.h head/sys/arm/at91/at91_streg.h head/sys/arm/at91/at91_tcb.c head/sys/arm/at91/at91_twi.c head/sys/arm/at91/at91_twiio.h head/sys/arm/at91/at91_twireg.h head/sys/arm/at91/at91board.h head/sys/arm/at91/at91rm9200_devices.c head/sys/arm/at91/at91rm9200var.h head/sys/arm/at91/at91sam9x5.c head/sys/arm/at91/at91soc.c head/sys/arm/at91/at91soc.h head/sys/arm/at91/board_bwct.c head/sys/arm/at91/board_eb9200.c head/sys/arm/at91/board_hl200.c head/sys/arm/at91/board_hl201.c head/sys/arm/at91/board_kb920x.c head/sys/arm/at91/board_tsc4370.c head/sys/arm/at91/if_ate.c head/sys/arm/at91/if_atereg.h head/sys/arm/conf/genboardid.awk head/sys/arm/include/_bus.h head/sys/arm/include/at91_gpio.h head/sys/arm/include/atags.h head/sys/arm/include/board.h Modified: head/sys/arm/at91/at91_aic.c ============================================================================== --- head/sys/arm/at91/at91_aic.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_aic.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2014 Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_common.c ============================================================================== --- head/sys/arm/at91/at91_common.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_common.c Tue May 1 16:21:01 2018 (r333142) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2014 M. Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_gpio.h ============================================================================== --- head/sys/arm/at91/at91_gpio.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_gpio.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2014 M. Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_mci.c ============================================================================== --- head/sys/arm/at91/at91_mci.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_mci.c Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2006 Bernd Walter. All rights reserved. - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * Copyright (c) 2010 Greg Ansley. All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/arm/at91/at91_mcireg.h ============================================================================== --- head/sys/arm/at91/at91_mcireg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_mcireg.h Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2006 Berndt Walter. All rights reserved. - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_ohci.c ============================================================================== --- head/sys/arm/at91/at91_ohci.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_ohci.c Tue May 1 16:21:01 2018 (r333142) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_ohci_fdt.c ============================================================================== --- head/sys/arm/at91/at91_ohci_fdt.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_ohci_fdt.c Tue May 1 16:21:01 2018 (r333142) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_pdcreg.h ============================================================================== --- head/sys/arm/at91/at91_pdcreg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_pdcreg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_pinctrl.c ============================================================================== --- head/sys/arm/at91/at91_pinctrl.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_pinctrl.c Tue May 1 16:21:01 2018 (r333142) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2014 Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_pio.c ============================================================================== --- head/sys/arm/at91/at91_pio.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_pio.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * Copyright (C) 2012 Ian Lepore. All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/arm/at91/at91_pioreg.h ============================================================================== --- head/sys/arm/at91/at91_pioreg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_pioreg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_piovar.h ============================================================================== --- head/sys/arm/at91/at91_piovar.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_piovar.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_pmc.c ============================================================================== --- head/sys/arm/at91/at91_pmc.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_pmc.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * Copyright (c) 2010 Greg Ansley. All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/arm/at91/at91_pmcreg.h ============================================================================== --- head/sys/arm/at91/at91_pmcreg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_pmcreg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2005 M. Warner Losh. All rights reserved. + * Copyright (c) 2005 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_pmcvar.h ============================================================================== --- head/sys/arm/at91/at91_pmcvar.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_pmcvar.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2005 M. Warner Losh. All rights reserved. + * Copyright (c) 2005 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_rtc.c ============================================================================== --- head/sys/arm/at91/at91_rtc.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_rtc.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * Copyright (c) 2012 Ian Lepore. All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/arm/at91/at91_rtcreg.h ============================================================================== --- head/sys/arm/at91/at91_rtcreg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_rtcreg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_sdramc.c ============================================================================== --- head/sys/arm/at91/at91_sdramc.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_sdramc.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2014 Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_shdwc.c ============================================================================== --- head/sys/arm/at91/at91_shdwc.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_shdwc.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2014 Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_smc.c ============================================================================== --- head/sys/arm/at91/at91_smc.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_smc.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2014 M. Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_smc.h ============================================================================== --- head/sys/arm/at91/at91_smc.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_smc.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2014 M. Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_spireg.h ============================================================================== --- head/sys/arm/at91/at91_spireg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_spireg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_ssc.c ============================================================================== --- head/sys/arm/at91/at91_ssc.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_ssc.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_sscreg.h ============================================================================== --- head/sys/arm/at91/at91_sscreg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_sscreg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_streg.h ============================================================================== --- head/sys/arm/at91/at91_streg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_streg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2005 M. Warner Losh. All rights reserved. + * Copyright (c) 2005 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_tcb.c ============================================================================== --- head/sys/arm/at91/at91_tcb.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_tcb.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2014 Warner Losh. All rights reserved. + * Copyright (c) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_twi.c ============================================================================== --- head/sys/arm/at91/at91_twi.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_twi.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_twiio.h ============================================================================== --- head/sys/arm/at91/at91_twiio.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_twiio.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91_twireg.h ============================================================================== --- head/sys/arm/at91/at91_twireg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91_twireg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91board.h ============================================================================== --- head/sys/arm/at91/at91board.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91board.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2008 Warner Losh. All rights reserved. + * Copyright (c) 2008 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91rm9200_devices.c ============================================================================== --- head/sys/arm/at91/at91rm9200_devices.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91rm9200_devices.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2012 M. Warner Losh. All Rights Reserved. + * Copyright (c) 2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91rm9200var.h ============================================================================== --- head/sys/arm/at91/at91rm9200var.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91rm9200var.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2012 M. Warner Losh. All rights reserved. + * Copyright (c) 2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91sam9x5.c ============================================================================== --- head/sys/arm/at91/at91sam9x5.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91sam9x5.c Tue May 1 16:21:01 2018 (r333142) @@ -3,7 +3,7 @@ * * Copyright (c) 2005 Olivier Houchard. All rights reserved. * Copyright (c) 2010 Greg Ansley. All rights reserved. - * Copyright (c) 2012 M. Warner Losh.. All rights reserved. + * Copyright (c) 2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91soc.c ============================================================================== --- head/sys/arm/at91/at91soc.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91soc.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2012 Warner Losh. All rights reserved. + * Copyright (c) 2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/at91soc.h ============================================================================== --- head/sys/arm/at91/at91soc.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/at91soc.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2012 Warner Losh. All rights reserved. + * Copyright (c) 2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/board_bwct.c ============================================================================== --- head/sys/arm/at91/board_bwct.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/board_bwct.c Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2005-2008 Olivier Houchard. All rights reserved. - * Copyright (c) 2005-2012 Warner Losh. All rights reserved. + * Copyright (c) 2005-2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/board_eb9200.c ============================================================================== --- head/sys/arm/at91/board_eb9200.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/board_eb9200.c Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2005-2008 Olivier Houchard. All rights reserved. - * Copyright (c) 2005-2012 Warner Losh. All rights reserved. + * Copyright (c) 2005-2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/board_hl200.c ============================================================================== --- head/sys/arm/at91/board_hl200.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/board_hl200.c Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2005-2008 Olivier Houchard. All rights reserved. - * Copyright (c) 2005-2012 Warner Losh. All rights reserved. + * Copyright (c) 2005-2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/board_hl201.c ============================================================================== --- head/sys/arm/at91/board_hl201.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/board_hl201.c Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2005-2008 Olivier Houchard. All rights reserved. - * Copyright (c) 2005-2008 Warner Losh. All rights reserved. + * Copyright (c) 2005-2008 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/board_kb920x.c ============================================================================== --- head/sys/arm/at91/board_kb920x.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/board_kb920x.c Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2005-2008 Olivier Houchard. All rights reserved. - * Copyright (c) 2005-2012 Warner Losh. All rights reserved. + * Copyright (c) 2005-2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/at91/board_tsc4370.c ============================================================================== --- head/sys/arm/at91/board_tsc4370.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/board_tsc4370.c Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2005-2008 Olivier Houchard. All rights reserved. - * Copyright (c) 2005-2012 Warner Losh. All rights reserved. + * Copyright (c) 2005-2012 M. Warner Losh. * Copyright (c) 2007-2014 Ian Lepore. All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/arm/at91/if_ate.c ============================================================================== --- head/sys/arm/at91/if_ate.c Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/if_ate.c Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * Copyright (c) 2009 Greg Ansley. All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/arm/at91/if_atereg.h ============================================================================== --- head/sys/arm/at91/if_atereg.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/at91/if_atereg.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 M. Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/conf/genboardid.awk ============================================================================== --- head/sys/arm/conf/genboardid.awk Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/conf/genboardid.awk Tue May 1 16:21:01 2018 (r333142) @@ -4,7 +4,7 @@ #- # SPDX-License-Identifier: BSD-2-Clause-FreeBSD # -# Copyright (c) 2012 M. Warner Losh. All Rights Reserved. +# Copyright (c) 2012 M. Warner Losh. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions Modified: head/sys/arm/include/_bus.h ============================================================================== --- head/sys/arm/include/_bus.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/include/_bus.h Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2005 M. Warner Losh. - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/include/at91_gpio.h ============================================================================== --- head/sys/arm/include/at91_gpio.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/include/at91_gpio.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (C) 2006 M. Warner Losh. All rights reserved. + * Copyright (C) 2006 M. Warner Losh. * Copyright (C) 2012 Ian Lepore. All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/arm/include/atags.h ============================================================================== --- head/sys/arm/include/atags.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/include/atags.h Tue May 1 16:21:01 2018 (r333142) @@ -2,7 +2,6 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2012 M. Warner Losh. - * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/arm/include/board.h ============================================================================== --- head/sys/arm/include/board.h Tue May 1 15:33:21 2018 (r333141) +++ head/sys/arm/include/board.h Tue May 1 16:21:01 2018 (r333142) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2012 Warner Losh. All rights reserved. + * Copyright (c) 2012 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions From owner-svn-src-all@freebsd.org Tue May 1 16:29:26 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 66376FAF8AC; Tue, 1 May 2018 16:29:26 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0F6D06CA6B; Tue, 1 May 2018 16:29:26 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E4D7724736; Tue, 1 May 2018 16:29:25 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41GTPwC011155; Tue, 1 May 2018 16:29:25 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41GTM00011122; Tue, 1 May 2018 16:29:22 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201805011629.w41GTM00011122@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Tue, 1 May 2018 16:29:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333143 - in head: etc/rc.d share/man/man4 stand/common stand/liblua sys/dev/exca sys/dev/iicbus sys/dev/nand sys/dev/pccbb tools/tools/nanobsd/dhcpd tools/tools/nanobsd/embedded X-SVN-Group: head X-SVN-Commit-Author: imp X-SVN-Commit-Paths: in head: etc/rc.d share/man/man4 stand/common stand/liblua sys/dev/exca sys/dev/iicbus sys/dev/nand sys/dev/pccbb tools/tools/nanobsd/dhcpd tools/tools/nanobsd/embedded X-SVN-Commit-Revision: 333143 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 16:29:26 -0000 Author: imp Date: Tue May 1 16:29:22 2018 New Revision: 333143 URL: https://svnweb.freebsd.org/changeset/base/333143 Log: Use M. Warner Losh everywhere on my copyrights. Remove 'All Rights Reserved' where I can. Modified: head/etc/rc.d/devmatch head/share/man/man4/sn.4 head/stand/common/zfs_cmd.c head/stand/liblua/float.h head/stand/liblua/locale.h head/stand/liblua/math.h head/sys/dev/exca/exca.c head/sys/dev/exca/excareg.h head/sys/dev/exca/excavar.h head/sys/dev/iicbus/icee.c head/sys/dev/nand/nfc_at91.h head/sys/dev/pccbb/pccbbvar.h head/tools/tools/nanobsd/dhcpd/common head/tools/tools/nanobsd/dhcpd/os-base head/tools/tools/nanobsd/embedded/beaglebone.cfg head/tools/tools/nanobsd/embedded/common head/tools/tools/nanobsd/embedded/i386.cfg head/tools/tools/nanobsd/embedded/pandaboard.cfg head/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg head/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg head/tools/tools/nanobsd/embedded/qemu-amd64.cfg head/tools/tools/nanobsd/embedded/qemu-armv7.cfg head/tools/tools/nanobsd/embedded/qemu-i386.cfg head/tools/tools/nanobsd/embedded/qemu-mips.cfg head/tools/tools/nanobsd/embedded/qemu-mips64.cfg head/tools/tools/nanobsd/embedded/qemu-powerpc.cfg head/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg head/tools/tools/nanobsd/embedded/qemu-sparc64.cfg head/tools/tools/nanobsd/embedded/rpi.cfg head/tools/tools/nanobsd/embedded/rpi2.cfg head/tools/tools/nanobsd/embedded/rpi3.cfg head/tools/tools/nanobsd/embedded/sam9260ek.cfg head/tools/tools/nanobsd/embedded/sam9g20ek.cfg Modified: head/etc/rc.d/devmatch ============================================================================== --- head/etc/rc.d/devmatch Tue May 1 16:21:01 2018 (r333142) +++ head/etc/rc.d/devmatch Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,6 @@ #!/bin/sh -# Copyright (c) 2018 Warner Losh -# All rights reserved. +# Copyright (c) 2018 M. Warner Losh # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions Modified: head/share/man/man4/sn.4 ============================================================================== --- head/share/man/man4/sn.4 Tue May 1 16:21:01 2018 (r333142) +++ head/share/man/man4/sn.4 Tue May 1 16:29:22 2018 (r333143) @@ -1,6 +1,5 @@ .\" -.\" Copyright (c) 2000 Warner Losh -.\" All rights reserved. +.\" Copyright (c) 2000 M. Warner Losh .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/stand/common/zfs_cmd.c ============================================================================== --- head/stand/common/zfs_cmd.c Tue May 1 16:21:01 2018 (r333142) +++ head/stand/common/zfs_cmd.c Tue May 1 16:29:22 2018 (r333143) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2018 Warner Losh - * All rights reserved. + * Copyright (c) 2018 M. Warner Losh * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/stand/liblua/float.h ============================================================================== --- head/stand/liblua/float.h Tue May 1 16:21:01 2018 (r333142) +++ head/stand/liblua/float.h Tue May 1 16:29:22 2018 (r333143) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2018 M Warner Losh - * All rights reserved. + * Copyright (c) 2018 M. Warner Losh * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/stand/liblua/locale.h ============================================================================== --- head/stand/liblua/locale.h Tue May 1 16:21:01 2018 (r333142) +++ head/stand/liblua/locale.h Tue May 1 16:29:22 2018 (r333143) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2018 M Warner Losh - * All rights reserved. + * Copyright (c) 2018 M. Warner Losh * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/stand/liblua/math.h ============================================================================== --- head/stand/liblua/math.h Tue May 1 16:21:01 2018 (r333142) +++ head/stand/liblua/math.h Tue May 1 16:29:22 2018 (r333143) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2018 M Warner Losh - * All rights reserved. + * Copyright (c) 2018 M. Warner Losh * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/dev/exca/exca.c ============================================================================== --- head/sys/dev/exca/exca.c Tue May 1 16:21:01 2018 (r333142) +++ head/sys/dev/exca/exca.c Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-4-Clause AND BSD-2-Clause-FreeBSD * - * Copyright (c) 2002-2005 M Warner Losh. All rights reserved. + * Copyright (c) 2002-2005 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/dev/exca/excareg.h ============================================================================== --- head/sys/dev/exca/excareg.h Tue May 1 16:21:01 2018 (r333142) +++ head/sys/dev/exca/excareg.h Tue May 1 16:29:22 2018 (r333143) @@ -4,7 +4,7 @@ /*- * SPDX-License-Identifier: BSD-4-Clause AND BSD-2-Clause-FreeBSD * - * Copyright (c) 2002 M Warner Losh. All rights reserved. + * Copyright (c) 2002 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/dev/exca/excavar.h ============================================================================== --- head/sys/dev/exca/excavar.h Tue May 1 16:21:01 2018 (r333142) +++ head/sys/dev/exca/excavar.h Tue May 1 16:29:22 2018 (r333143) @@ -3,7 +3,7 @@ /*- * SPDX-License-Identifier: BSD-4-Clause AND BSD-2-Clause-FreeBSD * - * Copyright (c) 2002 M Warner Losh. All rights reserved. + * Copyright (c) 2002 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/dev/iicbus/icee.c ============================================================================== --- head/sys/dev/iicbus/icee.c Tue May 1 16:21:01 2018 (r333142) +++ head/sys/dev/iicbus/icee.c Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2006 Warner Losh. All rights reserved. + * Copyright (c) 2006 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/dev/nand/nfc_at91.h ============================================================================== --- head/sys/dev/nand/nfc_at91.h Tue May 1 16:21:01 2018 (r333142) +++ head/sys/dev/nand/nfc_at91.h Tue May 1 16:29:22 2018 (r333143) @@ -1,8 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (C) 2014 Warner Losh. - * All rights reserved. + * Copyright (C) 2014 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: head/sys/dev/pccbb/pccbbvar.h ============================================================================== --- head/sys/dev/pccbb/pccbbvar.h Tue May 1 16:21:01 2018 (r333142) +++ head/sys/dev/pccbb/pccbbvar.h Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2003-2004 Warner Losh. + * Copyright (c) 2003-2004 M. Warner Losh. * Copyright (c) 2000,2001 Jonathan Chen. * All rights reserved. * Modified: head/tools/tools/nanobsd/dhcpd/common ============================================================================== --- head/tools/tools/nanobsd/dhcpd/common Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/dhcpd/common Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2014 Warner Losh. All Rights Reserved. +# Copyright (c) 2014 M. Warner Losh. # Copyright (c) 2010 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/dhcpd/os-base ============================================================================== --- head/tools/tools/nanobsd/dhcpd/os-base Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/dhcpd/os-base Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2014 Warner Losh. All Rights Reserved. +# Copyright (c) 2014 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/beaglebone.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/beaglebone.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/beaglebone.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/common ============================================================================== --- head/tools/tools/nanobsd/embedded/common Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/common Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/i386.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/i386.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/i386.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/pandaboard.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/pandaboard.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/pandaboard.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2016 Warner Losh. All Rights Reserved. +# Copyright (c) 2016 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-amd64-uefi-bios.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-amd64-uefi.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-amd64.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-amd64.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-amd64.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-armv7.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-armv7.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-armv7.cfg Tue May 1 16:29:22 2018 (r333143) @@ -2,7 +2,7 @@ #- # Copyright (c) 2016 Andrew Turner. All Rights Reserved. -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-i386.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-i386.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-i386.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-mips.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-mips.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-mips.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-mips64.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-mips64.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-mips64.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-powerpc.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-powerpc.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-powerpc.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-powerpc64.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/qemu-sparc64.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/qemu-sparc64.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/qemu-sparc64.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/rpi.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/rpi.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/rpi.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/rpi2.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/rpi2.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/rpi2.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/rpi3.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/rpi3.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/rpi3.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/sam9260ek.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/sam9260ek.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/sam9260ek.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/nanobsd/embedded/sam9g20ek.cfg ============================================================================== --- head/tools/tools/nanobsd/embedded/sam9g20ek.cfg Tue May 1 16:21:01 2018 (r333142) +++ head/tools/tools/nanobsd/embedded/sam9g20ek.cfg Tue May 1 16:29:22 2018 (r333143) @@ -1,7 +1,7 @@ # $FreeBSD$ #- -# Copyright (c) 2015 Warner Losh. All Rights Reserved. +# Copyright (c) 2015 M. Warner Losh. # Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved. # # Redistribution and use in source and binary forms, with or without From owner-svn-src-all@freebsd.org Tue May 1 16:30:50 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0AE6CFAFAA6; Tue, 1 May 2018 16:30:50 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B186F6CC69; Tue, 1 May 2018 16:30:49 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 92DFC24841; Tue, 1 May 2018 16:30:49 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41GUnv7011307; Tue, 1 May 2018 16:30:49 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41GUmkN011298; Tue, 1 May 2018 16:30:48 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805011630.w41GUmkN011298@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 1 May 2018 16:30:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333144 - in head: . include lib/libsysdecode share/man/man4 sys/conf sys/dev/lmc sys/modules sys/modules/lmc tools/kerneldoc/subsys usr.sbin usr.sbin/lmcconfig X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: in head: . include lib/libsysdecode share/man/man4 sys/conf sys/dev/lmc sys/modules sys/modules/lmc tools/kerneldoc/subsys usr.sbin usr.sbin/lmcconfig X-SVN-Commit-Revision: 333144 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 16:30:50 -0000 Author: emaste Date: Tue May 1 16:30:48 2018 New Revision: 333144 URL: https://svnweb.freebsd.org/changeset/base/333144 Log: Retire lmc(4) This driver supports legacy, 32-bit PCI devices, and had an ambiguous license. Supported devices were already reported to be rare in 2003 (when an earlier version of the driver was removed in r123201). Reviewed by: rgrimes Relnotes: Yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D15245 Deleted: head/share/man/man4/lmc.4 head/sys/dev/lmc/ head/sys/modules/lmc/ head/tools/kerneldoc/subsys/Doxyfile-dev_lmc head/usr.sbin/lmcconfig/ Modified: head/ObsoleteFiles.inc head/UPDATING head/include/Makefile head/lib/libsysdecode/Makefile head/share/man/man4/Makefile head/sys/conf/NOTES head/sys/conf/files head/sys/modules/Makefile head/usr.sbin/Makefile Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Tue May 1 16:29:22 2018 (r333143) +++ head/ObsoleteFiles.inc Tue May 1 16:30:48 2018 (r333144) @@ -38,6 +38,13 @@ # xargs -n1 | sort | uniq -d; # done +# 20180501: retire lmc +OLD_FILES+=usr/include/dev/lmc/if_lmc.h +OLD_DIRS+=usr/include/dev/lmc +OLD_FILES+=usr/sbin/lmcconfig +OLD_FILES+=usr/share/man/man4/lmc.4.gz +OLD_FILES+=usr/share/man/man4/if_lmc.4.gz +OLD_FILES+=usr/share/man/man8/lmcconfig.8.gz # 20180417: remove fuswintr and suswintr OLD_FILES+=usr/share/man/man9/fuswintr.9.gz OLD_FILES+=usr/share/man/man9/suswintr.9.gz Modified: head/UPDATING ============================================================================== --- head/UPDATING Tue May 1 16:29:22 2018 (r333143) +++ head/UPDATING Tue May 1 16:30:48 2018 (r333144) @@ -51,6 +51,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20180501: + The lmc(4) driver has been removed. This was a WAN interface + card that was already reportedly rare in 2003, and had an ambiguous + license. If you have device lmc in your kernel config file it must + be removed. + 20180413: Support for Arcnet networks has been removed. If you have device arcnet or device cm in your kernel config file they must be Modified: head/include/Makefile ============================================================================== --- head/include/Makefile Tue May 1 16:29:22 2018 (r333143) +++ head/include/Makefile Tue May 1 16:30:48 2018 (r333144) @@ -45,7 +45,7 @@ LDIRS= bsm cam geom net net80211 netgraph netinet neti LSUBDIRS= cam/ata cam/mmc cam/nvme cam/scsi \ dev/acpica dev/agp dev/an dev/bktr dev/ciss dev/filemon dev/firewire \ dev/hwpmc dev/hyperv \ - dev/ic dev/iicbus dev/io dev/lmc dev/mfi dev/mmc dev/nvme \ + dev/ic dev/iicbus dev/io dev/mfi dev/mmc dev/nvme \ dev/ofw dev/pbio dev/pci ${_dev_powermac_nvram} dev/ppbus dev/smbus \ dev/speaker dev/tcp_log dev/vkbd dev/wi \ fs/devfs fs/fdescfs fs/msdosfs fs/nandfs fs/nfs fs/nullfs \ Modified: head/lib/libsysdecode/Makefile ============================================================================== --- head/lib/libsysdecode/Makefile Tue May 1 16:29:22 2018 (r333143) +++ head/lib/libsysdecode/Makefile Tue May 1 16:30:48 2018 (r333144) @@ -120,9 +120,6 @@ CFLAGS+=-DPF # Workaround duplicate declarations in CFLAGS.gcc.ioctl.c+= -Wno-redundant-decls -# Workaround warning for unused ssi_cables[] in -CFLAGS.gcc.ioctl.c+= -Wno-unused - CFLAGS.gcc+= ${CFLAGS.gcc.${.IMPSRC}} DEPENDOBJS+= tables.h Modified: head/share/man/man4/Makefile ============================================================================== --- head/share/man/man4/Makefile Tue May 1 16:29:22 2018 (r333143) +++ head/share/man/man4/Makefile Tue May 1 16:30:48 2018 (r333144) @@ -266,7 +266,6 @@ MAN= aac.4 \ ${_linux.4} \ liquidio.4 \ lm75.4 \ - lmc.4 \ lo.4 \ lp.4 \ lpbb.4 \ @@ -688,7 +687,6 @@ MLINKS+=lagg.4 trunk.4 MLINKS+=lagg.4 if_lagg.4 MLINKS+=le.4 if_le.4 MLINKS+=lge.4 if_lge.4 -MLINKS+=lmc.4 if_lmc.4 MLINKS+=lo.4 loop.4 MLINKS+=lp.4 plip.4 MLINKS+=malo.4 if_malo.4 Modified: head/sys/conf/NOTES ============================================================================== --- head/sys/conf/NOTES Tue May 1 16:29:22 2018 (r333143) +++ head/sys/conf/NOTES Tue May 1 16:30:48 2018 (r333144) @@ -1982,7 +1982,6 @@ device xmphy # XaQti XMAC II # Yukon II Gigabit controllers, including 88E8021, 88E8022, 88E8061, # 88E8062, 88E8035, 88E8036, 88E8038, 88E8050, 88E8052, 88E8053, # 88E8055, 88E8056 and D-Link 560T/550SX. -# lmc: Support for the LMC/SBE wide-area network interface cards. # mlx5: Mellanox ConnectX-4 and ConnectX-4 LX IB and Eth shared code module. # mlx5en:Mellanox ConnectX-4 and ConnectX-4 LX PCIe Ethernet adapters. # my: Myson Fast Ethernet (MTD80X, MTD89X) @@ -2135,9 +2134,6 @@ device ti # Alteon Networks Tigon I/II gigabit Ether device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') device vxge # Exar/Neterion XFrame 3100 10GbE - -# PCI WAN adapters. -device lmc # PCI IEEE 802.11 Wireless NICs device ath # Atheros pci/cardbus NIC's Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Tue May 1 16:29:22 2018 (r333143) +++ head/sys/conf/files Tue May 1 16:30:48 2018 (r333144) @@ -2373,7 +2373,6 @@ lio_23xx_nic.bin.fw optional lio \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "lio_23xx_nic.bin.fw" -dev/lmc/if_lmc.c optional lmc dev/malo/if_malo.c optional malo dev/malo/if_malohal.c optional malo dev/malo/if_malo_pci.c optional malo pci Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Tue May 1 16:29:22 2018 (r333143) +++ head/sys/modules/Makefile Tue May 1 16:30:48 2018 (r333144) @@ -226,7 +226,6 @@ SUBDIR= \ ${_linux64} \ linuxkpi \ ${_lio} \ - lmc \ lpt \ mac_biba \ mac_bsdextended \ Modified: head/usr.sbin/Makefile ============================================================================== --- head/usr.sbin/Makefile Tue May 1 16:29:22 2018 (r333143) +++ head/usr.sbin/Makefile Tue May 1 16:30:48 2018 (r333144) @@ -162,7 +162,6 @@ SUBDIR.${MK_MAN_UTILS}+= manctl SUBDIR.${MK_NAND}+= nandsim SUBDIR.${MK_NAND}+= nandtool SUBDIR.${MK_NETGRAPH}+= flowctl -SUBDIR.${MK_NETGRAPH}+= lmcconfig SUBDIR.${MK_NETGRAPH}+= ngctl SUBDIR.${MK_NETGRAPH}+= nghook SUBDIR.${MK_NIS}+= rpc.yppasswdd From owner-svn-src-all@freebsd.org Tue May 1 17:14:55 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 129B7FB0F06; Tue, 1 May 2018 17:14:55 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: from mail-io0-f169.google.com (mail-io0-f169.google.com [209.85.223.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A055677E02; Tue, 1 May 2018 17:14:54 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: by mail-io0-f169.google.com with SMTP id t23-v6so14367273ioc.10; Tue, 01 May 2018 10:14:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:in-reply-to:references :from:date:message-id:subject:to:cc; bh=XwswZ1RL/GXCfDW+CQqe5XYFAFAHH3FIdiOt3vu8nwU=; b=TtaZjgVUkRcBjtIgtpwdV20sP6WN96WsZzga6Y2eFm2Q7p9yirf2lURNmJulLMYXj+ dn14rF2az7cSgPEeJQB552nk2TABLA7UcSBlm2P3l52ZQgxRhvQSYS2cYv26YxuYRivf WumEjOiWWhqYeAgrmPCQUqJn6X5Nm11yMW0loaDO3QYnnmZ/It8Uf3XgZgk/joIOKK14 h5kj8A4LK00LCz30sZxmpg9wPZizp4kHuEYt5bqJq2L84rjm5LAy2SAZ30G7PcaYKAEf oPONQxjOXYbScTTfVvSNCgSnNqUE1fOEWP3eaQFvM/SCDb61T6yOIuRjRo4wOPYfVaqM Ddtg== X-Gm-Message-State: ALQs6tCfBo+hcrzhzY3SoKNhQ2kVJRx6TybgoTdDQSN6bc9c7VVQX+Qf Jv05/4GqBj+42QTkj4a2KWkytX4X X-Google-Smtp-Source: AB8JxZohOxrRByRM1E4ibWje0QB0d+cHTNzzo+aL+eiib49UQ+Bu/0EawmsnC0FyoHwF7L2UUkgN0g== X-Received: by 2002:a6b:980a:: with SMTP id a10-v6mr17952017ioe.212.1525191137965; Tue, 01 May 2018 09:12:17 -0700 (PDT) Received: from mail-io0-f169.google.com (mail-io0-f169.google.com. [209.85.223.169]) by smtp.gmail.com with ESMTPSA id g1-v6sm325996itg.27.2018.05.01.09.12.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 01 May 2018 09:12:17 -0700 (PDT) Received: by mail-io0-f169.google.com with SMTP id e20-v6so14188404iof.4; Tue, 01 May 2018 09:12:17 -0700 (PDT) X-Received: by 2002:a6b:b513:: with SMTP id e19-v6mr12801068iof.267.1525191137340; Tue, 01 May 2018 09:12:17 -0700 (PDT) MIME-Version: 1.0 Reply-To: cem@freebsd.org Received: by 2002:a02:a40b:0:0:0:0:0 with HTTP; Tue, 1 May 2018 09:12:16 -0700 (PDT) In-Reply-To: <201805011559.w41FxUr7026647@pdx.rh.CN85.dnsmgr.net> References: <201805011517.w41FHlqI075276@repo.freebsd.org> <201805011559.w41FxUr7026647@pdx.rh.CN85.dnsmgr.net> From: Conrad Meyer Date: Tue, 1 May 2018 09:12:16 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r333140 - head/usr.sbin/bhyve To: "Rodney W. Grimes" Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 17:14:55 -0000 On Tue, May 1, 2018 at 8:59 AM, Rodney W. Grimes wrote: > The All rights reserved clause is an obsolete requirement from the > 1910 Buenos Aires Convention, and should not be used on new code > since 2000. Can you please provide a source for that claim? Thanks, Conrad From owner-svn-src-all@freebsd.org Tue May 1 17:18:15 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6EB0FFB10A4; Tue, 1 May 2018 17:18:15 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CC35678333; Tue, 1 May 2018 17:18:14 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w41HIBCZ027005; Tue, 1 May 2018 10:18:11 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w41HIBnJ027004; Tue, 1 May 2018 10:18:11 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201805011718.w41HIBnJ027004@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r333140 - head/usr.sbin/bhyve In-Reply-To: To: cem@freebsd.org Date: Tue, 1 May 2018 10:18:11 -0700 (PDT) CC: "Rodney W. Grimes" , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 17:18:15 -0000 [ Charset UTF-8 unsupported, converting... ] > On Tue, May 1, 2018 at 8:59 AM, Rodney W. Grimes > wrote: > > The All rights reserved clause is an obsolete requirement from the > > 1910 Buenos Aires Convention, and should not be used on new code > > since 2000. > > Can you please provide a source for that claim? Google "All rights reserved" Google "Buenes Aires Convention" > Thanks, > Conrad -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Tue May 1 17:32:44 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 731E7FB16E5; Tue, 1 May 2018 17:32:44 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1E2B57B184; Tue, 1 May 2018 17:32:44 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 171932527E; Tue, 1 May 2018 17:32:44 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41HWh47045840; Tue, 1 May 2018 17:32:43 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41HWhCL045833; Tue, 1 May 2018 17:32:43 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201805011732.w41HWhCL045833@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 1 May 2018 17:32:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333145 - in head/sys: amd64/amd64 arm/arm arm64/arm64 i386/i386 kern mips/mips sparc64/sparc64 X-SVN-Group: head X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in head/sys: amd64/amd64 arm/arm arm64/arm64 i386/i386 kern mips/mips sparc64/sparc64 X-SVN-Commit-Revision: 333145 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 17:32:44 -0000 Author: markj Date: Tue May 1 17:32:43 2018 New Revision: 333145 URL: https://svnweb.freebsd.org/changeset/base/333145 Log: Print the dump progress indicator after calling dump_start(). Dumpers may wish to print messages from an initialization hook; this change ensures that such messages aren't mixed with output from the generic dump code. MFC after: 1 week Modified: head/sys/amd64/amd64/minidump_machdep.c head/sys/arm/arm/minidump_machdep.c head/sys/arm64/arm64/minidump_machdep.c head/sys/i386/i386/minidump_machdep.c head/sys/kern/kern_dump.c head/sys/mips/mips/minidump_machdep.c head/sys/sparc64/sparc64/dump_machdep.c Modified: head/sys/amd64/amd64/minidump_machdep.c ============================================================================== --- head/sys/amd64/amd64/minidump_machdep.c Tue May 1 16:30:48 2018 (r333144) +++ head/sys/amd64/amd64/minidump_machdep.c Tue May 1 17:32:43 2018 (r333145) @@ -337,12 +337,12 @@ minidumpsys(struct dumperinfo *di) dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_AMD64_VERSION, dumpsize); - printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, - ptoa((uintmax_t)physmem) / 1048576); - error = dump_start(di, &kdh); if (error != 0) goto fail; + + printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, + ptoa((uintmax_t)physmem) / 1048576); /* Dump my header */ bzero(&fakepd, sizeof(fakepd)); Modified: head/sys/arm/arm/minidump_machdep.c ============================================================================== --- head/sys/arm/arm/minidump_machdep.c Tue May 1 16:30:48 2018 (r333144) +++ head/sys/arm/arm/minidump_machdep.c Tue May 1 17:32:43 2018 (r333145) @@ -246,12 +246,12 @@ minidumpsys(struct dumperinfo *di) dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_ARM_VERSION, dumpsize); - printf("Physical memory: %u MB\n", ptoa((uintmax_t)physmem) / 1048576); - printf("Dumping %llu MB:", (long long)dumpsize >> 20); - error = dump_start(di, &kdh); if (error != 0) goto fail; + + printf("Physical memory: %u MB\n", ptoa((uintmax_t)physmem) / 1048576); + printf("Dumping %llu MB:", (long long)dumpsize >> 20); /* Dump my header */ bzero(dumpbuf, sizeof(dumpbuf)); Modified: head/sys/arm64/arm64/minidump_machdep.c ============================================================================== --- head/sys/arm64/arm64/minidump_machdep.c Tue May 1 16:30:48 2018 (r333144) +++ head/sys/arm64/arm64/minidump_machdep.c Tue May 1 17:32:43 2018 (r333145) @@ -289,12 +289,12 @@ minidumpsys(struct dumperinfo *di) dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_AARCH64_VERSION, dumpsize); - printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, - ptoa((uintmax_t)physmem) / 1048576); - error = dump_start(di, &kdh); if (error != 0) goto fail; + + printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, + ptoa((uintmax_t)physmem) / 1048576); /* Dump my header */ bzero(&tmpbuffer, sizeof(tmpbuffer)); Modified: head/sys/i386/i386/minidump_machdep.c ============================================================================== --- head/sys/i386/i386/minidump_machdep.c Tue May 1 16:30:48 2018 (r333144) +++ head/sys/i386/i386/minidump_machdep.c Tue May 1 17:32:43 2018 (r333145) @@ -254,12 +254,12 @@ minidumpsys(struct dumperinfo *di) dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_I386_VERSION, dumpsize); - printf("Physical memory: %ju MB\n", ptoa((uintmax_t)physmem) / 1048576); - printf("Dumping %llu MB:", (long long)dumpsize >> 20); - error = dump_start(di, &kdh); if (error != 0) goto fail; + + printf("Physical memory: %ju MB\n", ptoa((uintmax_t)physmem) / 1048576); + printf("Dumping %llu MB:", (long long)dumpsize >> 20); /* Dump my header */ bzero(&fakept, sizeof(fakept)); Modified: head/sys/kern/kern_dump.c ============================================================================== --- head/sys/kern/kern_dump.c Tue May 1 16:30:48 2018 (r333144) +++ head/sys/kern/kern_dump.c Tue May 1 17:32:43 2018 (r333145) @@ -330,12 +330,12 @@ dumpsys_generic(struct dumperinfo *di) dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_ARCH_VERSION, dumpsize); - printf("Dumping %ju MB (%d chunks)\n", (uintmax_t)dumpsize >> 20, - ehdr.e_phnum - DUMPSYS_NUM_AUX_HDRS); - error = dump_start(di, &kdh); if (error != 0) goto fail; + + printf("Dumping %ju MB (%d chunks)\n", (uintmax_t)dumpsize >> 20, + ehdr.e_phnum - DUMPSYS_NUM_AUX_HDRS); /* Dump ELF header */ error = dumpsys_buf_write(di, (char*)&ehdr, sizeof(ehdr)); Modified: head/sys/mips/mips/minidump_machdep.c ============================================================================== --- head/sys/mips/mips/minidump_machdep.c Tue May 1 16:30:48 2018 (r333144) +++ head/sys/mips/mips/minidump_machdep.c Tue May 1 17:32:43 2018 (r333145) @@ -264,12 +264,12 @@ minidumpsys(struct dumperinfo *di) dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_MIPS_VERSION, dumpsize); - printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, - ptoa((uintmax_t)physmem) / 1048576); - error = dump_start(di, &kdh); if (error != 0) goto fail; + + printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, + ptoa((uintmax_t)physmem) / 1048576); /* Dump my header */ bzero(tmpbuffer, sizeof(tmpbuffer)); Modified: head/sys/sparc64/sparc64/dump_machdep.c ============================================================================== --- head/sys/sparc64/sparc64/dump_machdep.c Tue May 1 16:30:48 2018 (r333144) +++ head/sys/sparc64/sparc64/dump_machdep.c Tue May 1 17:32:43 2018 (r333145) @@ -98,11 +98,11 @@ dumpsys(struct dumperinfo *di) dump_init_header(di, &kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size); - printf("Dumping %lu MB (%d chunks)\n", (u_long)(size >> 20), nreg); - error = dump_start(di, &kdh); if (error != 0) goto fail; + + printf("Dumping %lu MB (%d chunks)\n", (u_long)(size >> 20), nreg); /* Dump the private header. */ hdr.dh_hdr_size = hdrsize; From owner-svn-src-all@freebsd.org Tue May 1 17:33:17 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 78F21FB1723; Tue, 1 May 2018 17:33:17 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: from mail-io0-f173.google.com (mail-io0-f173.google.com [209.85.223.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 114567B700; Tue, 1 May 2018 17:33:16 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: by mail-io0-f173.google.com with SMTP id e12-v6so14437214iob.8; Tue, 01 May 2018 10:33:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:in-reply-to:references :from:date:message-id:subject:to:cc; bh=hpzwjLLjp01r6QyV9gISJnu0atBmxaCC9oM1/ee7Y8Q=; b=XYOOzwknwxjRRseVksavUBFkYpj8ZCcevZ2a2KeG4Gv/T35D+P4fkxkzvtzqp7bFDc WZK5Ts0K/BUEM2J35grBExba6tBSkcWP53/MHjX11YeI2qFfU0ZXSx5yTZ+1oo/IoRmc rpmzLFDA9IpIHvEAxtUYrSpFgahR7GWWOq7QPlbri+vDq5yJSUdJXBz30QSZPerqhLmC DKxLjH7fE7jOM/fFiagUglKG+TlX+NrzjTOGeNTvequqxhfIwaJw6sTpMJ9A73dO21pX j1Wfc56zlMrRoc2YfnfSU8IHc1jiTEhcMdjlo0HMc9iP7mQLYZynRGiOSIFJORY4k1b5 WAtQ== X-Gm-Message-State: ALQs6tDj+QljEoY7MldwSK/0aR+abzVU7ycZ7Qp3OasU0k8aSd55EeLz Jm2RFf45Cs82CywovwrY/4/TJXMM X-Google-Smtp-Source: AB8JxZrV2HnPPnwBl6xEoc/F4JH/wERNXW2WI7ja4EMfyNgigm0+HspCIH4CwVdUgeX9zQiRf7Bnzg== X-Received: by 2002:a6b:6708:: with SMTP id b8-v6mr17385832ioc.178.1525195996071; Tue, 01 May 2018 10:33:16 -0700 (PDT) Received: from mail-it0-f50.google.com (mail-it0-f50.google.com. [209.85.214.50]) by smtp.gmail.com with ESMTPSA id b75-v6sm5596086ioa.50.2018.05.01.10.33.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 01 May 2018 10:33:15 -0700 (PDT) Received: by mail-it0-f50.google.com with SMTP id p3-v6so14421408itc.0; Tue, 01 May 2018 10:33:15 -0700 (PDT) X-Received: by 2002:a24:b310:: with SMTP id e16-v6mr17178062itf.58.1525195995772; Tue, 01 May 2018 10:33:15 -0700 (PDT) MIME-Version: 1.0 Reply-To: cem@freebsd.org Received: by 2002:a02:a40b:0:0:0:0:0 with HTTP; Tue, 1 May 2018 10:33:15 -0700 (PDT) In-Reply-To: <201805011718.w41HIBnJ027004@pdx.rh.CN85.dnsmgr.net> References: <201805011718.w41HIBnJ027004@pdx.rh.CN85.dnsmgr.net> From: Conrad Meyer Date: Tue, 1 May 2018 10:33:15 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r333140 - head/usr.sbin/bhyve To: "Rodney W. Grimes" Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 17:33:17 -0000 On Tue, May 1, 2018 at 10:18 AM, Rodney W. Grimes wrote: > [ Charset UTF-8 unsupported, converting... ] >> On Tue, May 1, 2018 at 8:59 AM, Rodney W. Grimes >> wrote: >> > The All rights reserved clause is an obsolete requirement from the >> > 1910 Buenos Aires Convention, and should not be used on new code >> > since 2000. >> >> Can you please provide a source for that claim? > > Google "All rights reserved" > Google "Buenes Aires Convention" Telling me to go google something is not a source, and is pretty rude. From owner-svn-src-all@freebsd.org Tue May 1 17:35:27 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D73F1FB185A; Tue, 1 May 2018 17:35:27 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id F3D517C992; Tue, 1 May 2018 17:35:26 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w41HZO9Y027148; Tue, 1 May 2018 10:35:24 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w41HZORN027147; Tue, 1 May 2018 10:35:24 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201805011735.w41HZORN027147@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r333140 - head/usr.sbin/bhyve In-Reply-To: To: cem@freebsd.org Date: Tue, 1 May 2018 10:35:24 -0700 (PDT) CC: "Rodney W. Grimes" , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 17:35:28 -0000 [ Charset UTF-8 unsupported, converting... ] > On Tue, May 1, 2018 at 10:18 AM, Rodney W. Grimes > wrote: > > [ Charset UTF-8 unsupported, converting... ] > >> On Tue, May 1, 2018 at 8:59 AM, Rodney W. Grimes > >> wrote: > >> > The All rights reserved clause is an obsolete requirement from the > >> > 1910 Buenos Aires Convention, and should not be used on new code > >> > since 2000. > >> > >> Can you please provide a source for that claim? > > > > Google "All rights reserved" > > Google "Buenes Aires Convention" > > Telling me to go google something is not a source, and is pretty rude. Asserting that I need to provide a source is actually the rude part. -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Tue May 1 17:39:21 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8019BFB19AD; Tue, 1 May 2018 17:39:21 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3473C7CBC6; Tue, 1 May 2018 17:39:21 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2B2FA25282; Tue, 1 May 2018 17:39:21 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41HdLXe046131; Tue, 1 May 2018 17:39:21 GMT (envelope-from jpaetzel@FreeBSD.org) Received: (from jpaetzel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41HdKLJ046129; Tue, 1 May 2018 17:39:20 GMT (envelope-from jpaetzel@FreeBSD.org) Message-Id: <201805011739.w41HdKLJ046129@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jpaetzel set sender to jpaetzel@FreeBSD.org using -f From: Josh Paetzel Date: Tue, 1 May 2018 17:39:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333146 - head/sys/dev/oce X-SVN-Group: head X-SVN-Commit-Author: jpaetzel X-SVN-Commit-Paths: head/sys/dev/oce X-SVN-Commit-Revision: 333146 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 17:39:21 -0000 Author: jpaetzel Date: Tue May 1 17:39:20 2018 New Revision: 333146 URL: https://svnweb.freebsd.org/changeset/base/333146 Log: Add ability to perform a firmware reset during driver initialization. Required by Lancer Gen 5 hardware. Submitted by: Ram Kishore Vegesna Obtained from: Broadcom Modified: head/sys/dev/oce/oce_if.h head/sys/dev/oce/oce_mbox.c Modified: head/sys/dev/oce/oce_if.h ============================================================================== --- head/sys/dev/oce/oce_if.h Tue May 1 17:32:43 2018 (r333145) +++ head/sys/dev/oce/oce_if.h Tue May 1 17:39:20 2018 (r333146) @@ -1016,6 +1016,7 @@ void oce_free_lro(POCE_SOFTC sc); * Mailbox functions ************************************************************/ int oce_fw_clean(POCE_SOFTC sc); +int oce_wait_ready(POCE_SOFTC sc); int oce_reset_fun(POCE_SOFTC sc); int oce_mbox_init(POCE_SOFTC sc); int oce_mbox_dispatch(POCE_SOFTC sc, uint32_t tmo_sec); Modified: head/sys/dev/oce/oce_mbox.c ============================================================================== --- head/sys/dev/oce/oce_mbox.c Tue May 1 17:32:43 2018 (r333145) +++ head/sys/dev/oce/oce_mbox.c Tue May 1 17:39:20 2018 (r333146) @@ -43,6 +43,34 @@ #include "oce_if.h" extern uint32_t sfp_vpd_dump_buffer[TRANSCEIVER_DATA_NUM_ELE]; +int +oce_wait_ready(POCE_SOFTC sc) +{ +#define SLIPORT_READY_TIMEOUT 30000 + uint32_t sliport_status, i; + + if (!IS_XE201(sc)) + return (-1); + + for (i = 0; i < SLIPORT_READY_TIMEOUT; i++) { + sliport_status = OCE_READ_REG32(sc, db, SLIPORT_STATUS_OFFSET); + if (sliport_status & SLIPORT_STATUS_RDY_MASK) + return 0; + + if (sliport_status & SLIPORT_STATUS_ERR_MASK && + !(sliport_status & SLIPORT_STATUS_RN_MASK)) { + device_printf(sc->dev, "Error detected in the card\n"); + return EIO; + } + + DELAY(1000); + } + + device_printf(sc->dev, "Firmware wait timed out\n"); + + return (-1); +} + /** * @brief Reset (firmware) common function * @param sc software handle to the device @@ -56,26 +84,36 @@ oce_reset_fun(POCE_SOFTC sc) struct ioctl_common_function_reset *fwcmd; int rc = 0; - if (sc->flags & OCE_FLAGS_FUNCRESET_RQD) { - mb = OCE_DMAPTR(&sc->bsmbx, struct oce_bmbx); - mbx = &mb->mbx; - bzero(mbx, sizeof(struct oce_mbx)); + if (IS_XE201(sc)) { + OCE_WRITE_REG32(sc, db, SLIPORT_CONTROL_OFFSET, + SLI_PORT_CONTROL_IP_MASK); - fwcmd = (struct ioctl_common_function_reset *)&mbx->payload; - mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, - MBX_SUBSYSTEM_COMMON, - OPCODE_COMMON_FUNCTION_RESET, - 10, /* MBX_TIMEOUT_SEC */ - sizeof(struct - ioctl_common_function_reset), - OCE_MBX_VER_V0); + rc = oce_wait_ready(sc); + if (rc) { + device_printf(sc->dev, "Firmware reset Failed\n"); + } - mbx->u0.s.embedded = 1; - mbx->payload_length = - sizeof(struct ioctl_common_function_reset); - - rc = oce_mbox_dispatch(sc, 2); + return rc; } + + mb = OCE_DMAPTR(&sc->bsmbx, struct oce_bmbx); + mbx = &mb->mbx; + bzero(mbx, sizeof(struct oce_mbx)); + + fwcmd = (struct ioctl_common_function_reset *)&mbx->payload; + mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, + MBX_SUBSYSTEM_COMMON, + OPCODE_COMMON_FUNCTION_RESET, + 10, /* MBX_TIMEOUT_SEC */ + sizeof(struct + ioctl_common_function_reset), + OCE_MBX_VER_V0); + + mbx->u0.s.embedded = 1; + mbx->payload_length = + sizeof(struct ioctl_common_function_reset); + + rc = oce_mbox_dispatch(sc, 2); return rc; } From owner-svn-src-all@freebsd.org Tue May 1 17:48:51 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 459D2FB1F4C; Tue, 1 May 2018 17:48:51 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D96FC7F212; Tue, 1 May 2018 17:48:50 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CF7692541C; Tue, 1 May 2018 17:48:50 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41HmocJ051683; Tue, 1 May 2018 17:48:50 GMT (envelope-from scottl@FreeBSD.org) Received: (from scottl@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41HmoxI051682; Tue, 1 May 2018 17:48:50 GMT (envelope-from scottl@FreeBSD.org) Message-Id: <201805011748.w41HmoxI051682@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: scottl set sender to scottl@FreeBSD.org using -f From: Scott Long Date: Tue, 1 May 2018 17:48:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333147 - head/sys/cam X-SVN-Group: head X-SVN-Commit-Author: scottl X-SVN-Commit-Paths: head/sys/cam X-SVN-Commit-Revision: 333147 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 17:48:51 -0000 Author: scottl Date: Tue May 1 17:48:50 2018 New Revision: 333147 URL: https://svnweb.freebsd.org/changeset/base/333147 Log: Add and fix comments for cam_periph_runccb() Sponsored by: Netflix Modified: head/sys/cam/cam_periph.c Modified: head/sys/cam/cam_periph.c ============================================================================== --- head/sys/cam/cam_periph.c Tue May 1 17:39:20 2018 (r333146) +++ head/sys/cam/cam_periph.c Tue May 1 17:48:50 2018 (r333147) @@ -1148,6 +1148,10 @@ cam_periph_ccbwait(union ccb *ccb) ccb->ccb_h.status, ccb->ccb_h.pinfo.index)); } +/* + * Dispatch a CCB and wait for it to complete. If the CCB has set a + * callback function (ccb->ccb_h.cbfcnp), it will be overwritten and lost. + */ int cam_periph_runccb(union ccb *ccb, int (*error_routine)(union ccb *ccb, @@ -1201,9 +1205,9 @@ cam_periph_runccb(union ccb *ccb, /* * If we're polling, then we need to ensure that we have ample resources - * in the periph. - * cam_periph_error can reschedule the ccb by calling xpt_action and returning - * ERESTART, so we have to effect the polling in the do loop below. + * in the periph. cam_periph_error can reschedule the ccb by calling + * xpt_action and returning ERESTART, so we have to effect the polling + * in the do loop below. */ if (must_poll) { timeout = xpt_poll_setup(ccb); From owner-svn-src-all@freebsd.org Tue May 1 18:07:53 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3E51BFB280F for ; Tue, 1 May 2018 18:07:53 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x235.google.com (mail-io0-x235.google.com [IPv6:2607:f8b0:4001:c06::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 52E2584BD2 for ; Tue, 1 May 2018 18:07:52 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x235.google.com with SMTP id d73-v6so14561893iog.3 for ; Tue, 01 May 2018 11:07:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=ay2+ZLFoSNx4K/pUkGqsxU8GGtIIqRBvEEd85GThG1g=; b=lo3zkrkbIllQA83ce0HuAYgURVvRyS64mnEsX6gn4W6NHaKOpBDT7GF6SvnbNG9RPR lBbJYx8JpavI4MHsIhGKcrnnPHC5yeDjj7GVj35LvpKJb63nFCpa6ElRGyX40eS7xj4J chxQTBnDP5pGKPZmeh/XH8xyQoc0if5KaNKyBeW1RChlebtsA8GGnGdlrRxjbTgmzp5o 7yLx678tkSRV0f/Tkd+2f1oaDAGfwjtoZ3csi7tIK4rQKaDrzrxJgcE+a+wBEebiIWH3 yIpse+8sXQnYR1nWVmhTaQQbqwDnpXsXrv138SMxTqJP++c7/QmL3HcMXy7I57uhfifS sjqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=ay2+ZLFoSNx4K/pUkGqsxU8GGtIIqRBvEEd85GThG1g=; b=EfL1OqK2rCr0QhbpXUn1+qAdtC3FphUIw5uVUfZe4Tpi4b4Y4Kt0Var21iroTvfzXd Qc4UCwGSdawHOiedP/PiO2ZUiV34l7cQZfIfgrDUEKsTfNN34qrdpGqSpQTHTgDVONHi B63/qhvEjKg0jRlkW22Y0zQqdUA/gjip4FBnkdkacXeB0Z1aQsmUj78BI26oWTK4OQv7 oE5QeYg2UMzuooVJ0WvDzEdB/FzDWa3cMjrxi0mF8m8w3DdMSndTxgf3qqwA0leldO+i ccAZkNQF5RKazXRwObJpLAbUZ7MxBnQ9N4Z8nyvrONv2rhXSJNJGeFvbbaRRCJHjlDZY C6sg== X-Gm-Message-State: ALQs6tDK8fPtdiH5pi0RBcrQrm9qDYHOn1xGQcRhXWRQGIXlWUASCjCT S+b5ZnqM8aG9VsiC2NBaqHbiVEFSme7ApFIzrJyoIA== X-Google-Smtp-Source: AB8JxZqsoHZn9Ni6cggqIr5JXN0ehzh4vvBMMpAudgr3Gdtq0+tQeavc6SunAuGjamFFIEHDxcVg7c95hknlEsufkYI= X-Received: by 2002:a6b:d404:: with SMTP id l4-v6mr17763730iog.37.1525198071641; Tue, 01 May 2018 11:07:51 -0700 (PDT) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 2002:a4f:a65a:0:0:0:0:0 with HTTP; Tue, 1 May 2018 11:07:50 -0700 (PDT) X-Originating-IP: [2603:300b:6:5100:1052:acc7:f9de:2b6d] In-Reply-To: References: <201805011517.w41FHlqI075276@repo.freebsd.org> <201805011559.w41FxUr7026647@pdx.rh.CN85.dnsmgr.net> From: Warner Losh Date: Tue, 1 May 2018 12:07:50 -0600 X-Google-Sender-Auth: JxTeAIuHiYOD_-xZaLndqY7znRY Message-ID: Subject: Re: svn commit: r333140 - head/usr.sbin/bhyve To: "Conrad E. Meyer" Cc: "Rodney W. Grimes" , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 18:07:53 -0000 On Tue, May 1, 2018 at 10:12 AM, Conrad Meyer wrote: > On Tue, May 1, 2018 at 8:59 AM, Rodney W. Grimes > wrote: > > The All rights reserved clause is an obsolete requirement from the > > 1910 Buenos Aires Convention, and should not be used on new code > > since 2000. > > Can you please provide a source for that claim? > https://en.wikipedia.org/wiki/Buenos_Aires_Convention has all the relevant information. It's backed up by https://definitions.uslegal.com/b/buenos-aires-convention/ and http://www.iusmentis.com/copyright/allrightsreserved/ There's many other site that list this as well. The copyright office used to have a page on this, but I can't seem to find it now. Warner From owner-svn-src-all@freebsd.org Tue May 1 18:19:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4F330FB2EDC; Tue, 1 May 2018 18:19:13 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-io0-x234.google.com (mail-io0-x234.google.com [IPv6:2607:f8b0:4001:c06::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 01319874AB; Tue, 1 May 2018 18:19:13 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by mail-io0-x234.google.com with SMTP id f21-v6so14553896iob.13; Tue, 01 May 2018 11:19:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=/52oTbgCpR8M/HQdH/KKj8fku/KeqS/b9PifADfiP4Y=; b=Pxa9Ze0zVQW003I0XOeyr1wmwkgQ+Vhe9cnBJsrqVqBPut40UV79KQZ1e55Nz39Zzg xK2kmJvGDH1TdlG+in3rOMUtNHCIyqcI3kX+1StQ8S4MUJXnp+CfacO1W24A2QHNaPim yt06Bx+CZFrD2/n3sPLxE8qHrrutRoJj29n/k3dIeGxStZhOGimZ5t0q3MEiac09fShQ IYM+IZR2BX29ST29IOi1IfNK3+agfxBdrxeS1YFWfjL1Zff8BvA6e5kvFcU2NnwcnZQL 2YuFdkU2Iu8LsHS2bWMUGWERpEUlBfFYGs4SEIPk+dHXWgZKFbaREObxHy3LpZDqLgq7 R4Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=/52oTbgCpR8M/HQdH/KKj8fku/KeqS/b9PifADfiP4Y=; b=kwueL22Xyys6TCIRI54naVAjm3SDzT0d+jhzNFZ7zzAiXVy15Z4IL4AWSx4yYoGMlN +rBtNGLMi4Oaulr++kawcNQsHVOX8ziUf0OU6DIDmydwOVkPuRlILvqaMFPxmHQZ07IC wV/nKPEPD9a9GX3Ao82oiyPivSOGt/lH7IpRd1cA60wYiI+4eGuE9Em23Kiyr8kq6Eec hF1xDRf3osI+vPqJOUtaeGOcMcIt9HRP60mJ1J5F1TX+JNlnvH4aloU7MQ74UerHTjpC GZ8vy2KZVn+9ogbzq1uMvQp3wVvXNjoinJ+TdTBum8VTEHsLhEWHoDH/UCLRhXBpuW+m FXIQ== X-Gm-Message-State: ALQs6tAY/gddXxrR5AboIpVcifMOkhYmmfWRO5nBSwTWw/EykxOd25LI +LKQnBoi7GxcHkkgT9ON9rOnJejkVvdVctkmgYAuzg== X-Google-Smtp-Source: AB8JxZrAGNZarIoEvtmXrrpOv1tP83rVByWSkzKcF8i4eDF4hBqafzGyUsNU7w/20mRF+vmZD/1mUvR6/qB25bmr6U0= X-Received: by 2002:a6b:298f:: with SMTP id p137-v6mr18275516iop.288.1525198752517; Tue, 01 May 2018 11:19:12 -0700 (PDT) MIME-Version: 1.0 Sender: carpeddiem@gmail.com Received: by 10.107.130.167 with HTTP; Tue, 1 May 2018 11:18:52 -0700 (PDT) In-Reply-To: <20180501130108.GC80496@zxy.spb.ru> References: <201805010053.w410rkGi046226@repo.freebsd.org> <20180501130108.GC80496@zxy.spb.ru> From: Ed Maste Date: Tue, 1 May 2018 14:18:52 -0400 X-Google-Sender-Auth: _1TN7tKSNAAMXjz6xjp_pd9kwmg Message-ID: Subject: Re: svn commit: r333133 - head/usr.sbin/pwd_mkdb To: Slawa Olhovchenkov Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 18:19:13 -0000 On 1 May 2018 at 09:01, Slawa Olhovchenkov wrote: > On Tue, May 01, 2018 at 12:53:46AM +0000, Ed Maste wrote: > >> Author: emaste >> Date: Tue May 1 00:53:46 2018 >> New Revision: 333133 >> URL: https://svnweb.freebsd.org/changeset/base/333133 >> >> Log: >> pwd_mkdb: retire legacy v3 db support (-l option) >> > May be good idea to check db version before install new binary? Perhaps "v3 db" is too brief shorthand: it's not that the database as a whole is v3/v4, but that it contains records of one or both types. For 15 years we've been emitting v4 and consuming v4 records. From owner-svn-src-all@freebsd.org Tue May 1 18:44:22 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 614FFFB3B08; Tue, 1 May 2018 18:44:22 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EF6906D618; Tue, 1 May 2018 18:44:21 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.86 (FreeBSD)) (envelope-from ) id 1fDaGB-000FyQ-5c; Tue, 01 May 2018 21:44:19 +0300 Date: Tue, 1 May 2018 21:44:19 +0300 From: Slawa Olhovchenkov To: Ed Maste Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333133 - head/usr.sbin/pwd_mkdb Message-ID: <20180501184419.GV4305@zxy.spb.ru> References: <201805010053.w410rkGi046226@repo.freebsd.org> <20180501130108.GC80496@zxy.spb.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 18:44:22 -0000 On Tue, May 01, 2018 at 02:18:52PM -0400, Ed Maste wrote: > On 1 May 2018 at 09:01, Slawa Olhovchenkov wrote: > > On Tue, May 01, 2018 at 12:53:46AM +0000, Ed Maste wrote: > > > >> Author: emaste > >> Date: Tue May 1 00:53:46 2018 > >> New Revision: 333133 > >> URL: https://svnweb.freebsd.org/changeset/base/333133 > >> > >> Log: > >> pwd_mkdb: retire legacy v3 db support (-l option) > >> > > May be good idea to check db version before install new binary? > > Perhaps "v3 db" is too brief shorthand: it's not that the database as > a whole is v3/v4, but that it contains records of one or both types. > For 15 years we've been emitting v4 and consuming v4 records. 15 years is not aged, I am not sure about some of my databases. From owner-svn-src-all@freebsd.org Tue May 1 18:50:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4A167FB3D1E; Tue, 1 May 2018 18:50:13 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EE6436E015; Tue, 1 May 2018 18:50:12 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E5B1E25DF9; Tue, 1 May 2018 18:50:12 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41IoC1J082009; Tue, 1 May 2018 18:50:12 GMT (envelope-from erj@FreeBSD.org) Received: (from erj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41IoC7t082002; Tue, 1 May 2018 18:50:12 GMT (envelope-from erj@FreeBSD.org) Message-Id: <201805011850.w41IoC7t082002@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: erj set sender to erj@FreeBSD.org using -f From: Eric Joyner Date: Tue, 1 May 2018 18:50:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333149 - in head/sys: conf dev/ixl modules/ixl X-SVN-Group: head X-SVN-Commit-Author: erj X-SVN-Commit-Paths: in head/sys: conf dev/ixl modules/ixl X-SVN-Commit-Revision: 333149 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 18:50:13 -0000 Author: erj Date: Tue May 1 18:50:12 2018 New Revision: 333149 URL: https://svnweb.freebsd.org/changeset/base/333149 Log: ixl(4): Update to 1.9.9-k Refresh upstream driver before impending conversion to iflib. Major changes: - Support for descriptor writeback mode (required by ixlv(4) for AVF support) - Ability to disable firmware LLDP agent by user (PR 221530) - Fix for TX queue hang when using TSO (PR 221919) - Separate descriptor ring sizes for TX and RX rings PR: 221530, 221919 Submitted by: Krzysztof Galazka Reviewed by: #IntelNetworking MFC after: 1 day Relnotes: Yes Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D14985 Added: head/sys/dev/ixl/i40e_dcb.c (contents, props changed) head/sys/dev/ixl/i40e_dcb.h (contents, props changed) head/sys/dev/ixl/virtchnl.h (contents, props changed) Deleted: head/sys/dev/ixl/i40e_virtchnl.h Modified: head/sys/conf/files.amd64 head/sys/dev/ixl/i40e_adminq.c head/sys/dev/ixl/i40e_adminq.h head/sys/dev/ixl/i40e_adminq_cmd.h head/sys/dev/ixl/i40e_alloc.h head/sys/dev/ixl/i40e_common.c head/sys/dev/ixl/i40e_devids.h head/sys/dev/ixl/i40e_hmc.c head/sys/dev/ixl/i40e_hmc.h head/sys/dev/ixl/i40e_lan_hmc.c head/sys/dev/ixl/i40e_lan_hmc.h head/sys/dev/ixl/i40e_nvm.c head/sys/dev/ixl/i40e_osdep.c head/sys/dev/ixl/i40e_osdep.h head/sys/dev/ixl/i40e_prototype.h head/sys/dev/ixl/i40e_register.h head/sys/dev/ixl/i40e_status.h head/sys/dev/ixl/i40e_type.h head/sys/dev/ixl/if_ixl.c head/sys/dev/ixl/if_ixlv.c head/sys/dev/ixl/ixl.h head/sys/dev/ixl/ixl_iw.c head/sys/dev/ixl/ixl_iw.h head/sys/dev/ixl/ixl_iw_int.h head/sys/dev/ixl/ixl_pf.h head/sys/dev/ixl/ixl_pf_i2c.c head/sys/dev/ixl/ixl_pf_iov.c head/sys/dev/ixl/ixl_pf_iov.h head/sys/dev/ixl/ixl_pf_main.c head/sys/dev/ixl/ixl_pf_qmgr.c head/sys/dev/ixl/ixl_pf_qmgr.h head/sys/dev/ixl/ixl_txrx.c head/sys/dev/ixl/ixlv.h head/sys/dev/ixl/ixlv_vc_mgr.h head/sys/dev/ixl/ixlvc.c head/sys/modules/ixl/Makefile Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Tue May 1 18:28:42 2018 (r333148) +++ head/sys/conf/files.amd64 Tue May 1 18:50:12 2018 (r333149) @@ -290,6 +290,8 @@ dev/ixl/i40e_nvm.c optional ixl pci | ixlv pci \ compile-with "${NORMAL_C} -I$S/dev/ixl" dev/ixl/i40e_adminq.c optional ixl pci | ixlv pci \ compile-with "${NORMAL_C} -I$S/dev/ixl" +dev/ixl/i40e_dcb.c optional ixl pci \ + compile-with "${NORMAL_C} -I$S/dev/ixl" dev/fdc/fdc.c optional fdc dev/fdc/fdc_acpi.c optional fdc dev/fdc/fdc_isa.c optional fdc isa Modified: head/sys/dev/ixl/i40e_adminq.c ============================================================================== --- head/sys/dev/ixl/i40e_adminq.c Tue May 1 18:28:42 2018 (r333148) +++ head/sys/dev/ixl/i40e_adminq.c Tue May 1 18:50:12 2018 (r333149) @@ -1,6 +1,6 @@ /****************************************************************************** - Copyright (c) 2013-2015, Intel Corporation + Copyright (c) 2013-2017, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without @@ -644,6 +644,24 @@ enum i40e_status_code i40e_init_adminq(struct i40e_hw &oem_lo); hw->nvm.oem_ver = ((u32)oem_hi << 16) | oem_lo; + /* The ability to RX (not drop) 802.1ad frames was added in API 1.7 */ + if ((hw->aq.api_maj_ver > 1) || + ((hw->aq.api_maj_ver == 1) && + (hw->aq.api_min_ver >= 7))) + hw->flags |= I40E_HW_FLAG_802_1AD_CAPABLE; + + if (hw->mac.type == I40E_MAC_XL710 && + hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR && + hw->aq.api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710) { + hw->flags |= I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE; + } + + /* Newer versions of firmware require lock when reading the NVM */ + if ((hw->aq.api_maj_ver > 1) || + ((hw->aq.api_maj_ver == 1) && + (hw->aq.api_min_ver >= 5))) + hw->flags |= I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK; + if (hw->aq.api_maj_ver > I40E_FW_API_VERSION_MAJOR) { ret_code = I40E_ERR_FIRMWARE_API_VERSION; goto init_adminq_free_arq; @@ -899,8 +917,8 @@ enum i40e_status_code i40e_asq_send_command(struct i40 */ if (i40e_asq_done(hw)) break; - i40e_msec_delay(1); - total_delay++; + i40e_usec_delay(50); + total_delay += 50; } while (total_delay < hw->aq.asq_cmd_timeout); } @@ -941,10 +959,15 @@ enum i40e_status_code i40e_asq_send_command(struct i40 /* update the error if time out occurred */ if ((!cmd_completed) && (!details->async && !details->postpone)) { - i40e_debug(hw, - I40E_DEBUG_AQ_MESSAGE, - "AQTX: Writeback timeout.\n"); - status = I40E_ERR_ADMIN_QUEUE_TIMEOUT; + if (rd32(hw, hw->aq.asq.len) & I40E_GL_ATQLEN_ATQCRIT_MASK) { + i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, + "AQTX: AQ Critical error.\n"); + status = I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR; + } else { + i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, + "AQTX: Writeback timeout.\n"); + status = I40E_ERR_ADMIN_QUEUE_TIMEOUT; + } } asq_send_command_error: @@ -1007,9 +1030,9 @@ enum i40e_status_code i40e_clean_arq_element(struct i4 /* set next_to_use to head */ if (!i40e_is_vf(hw)) - ntu = (rd32(hw, hw->aq.arq.head) & I40E_PF_ARQH_ARQH_MASK); - if (i40e_is_vf(hw)) - ntu = (rd32(hw, hw->aq.arq.head) & I40E_VF_ARQH1_ARQH_MASK); + ntu = rd32(hw, hw->aq.arq.head) & I40E_PF_ARQH_ARQH_MASK; + else + ntu = rd32(hw, hw->aq.arq.head) & I40E_VF_ARQH1_ARQH_MASK; if (ntu == ntc) { /* nothing to do - shouldn't need to update ring's values */ ret_code = I40E_ERR_ADMIN_QUEUE_NO_WORK; @@ -1067,7 +1090,7 @@ enum i40e_status_code i40e_clean_arq_element(struct i4 hw->aq.arq.next_to_clean = ntc; hw->aq.arq.next_to_use = ntu; - i40e_nvmupd_check_wait_event(hw, LE16_TO_CPU(e->desc.opcode)); + i40e_nvmupd_check_wait_event(hw, LE16_TO_CPU(e->desc.opcode), &e->desc); clean_arq_element_out: /* Set pending if needed, unlock and return */ if (pending != NULL) Modified: head/sys/dev/ixl/i40e_adminq.h ============================================================================== --- head/sys/dev/ixl/i40e_adminq.h Tue May 1 18:28:42 2018 (r333148) +++ head/sys/dev/ixl/i40e_adminq.h Tue May 1 18:50:12 2018 (r333149) @@ -1,6 +1,6 @@ /****************************************************************************** - Copyright (c) 2013-2015, Intel Corporation + Copyright (c) 2013-2017, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without @@ -159,7 +159,7 @@ static INLINE int i40e_aq_rc_to_posix(int aq_ret, int /* general information */ #define I40E_AQ_LARGE_BUF 512 -#define I40E_ASQ_CMD_TIMEOUT 250 /* msecs */ +#define I40E_ASQ_CMD_TIMEOUT 250000 /* usecs */ void i40e_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc, u16 opcode); Modified: head/sys/dev/ixl/i40e_adminq_cmd.h ============================================================================== --- head/sys/dev/ixl/i40e_adminq_cmd.h Tue May 1 18:28:42 2018 (r333148) +++ head/sys/dev/ixl/i40e_adminq_cmd.h Tue May 1 18:50:12 2018 (r333149) @@ -1,6 +1,6 @@ /****************************************************************************** - Copyright (c) 2013-2015, Intel Corporation + Copyright (c) 2013-2017, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without @@ -41,9 +41,18 @@ * This file needs to comply with the Linux Kernel coding style. */ + #define I40E_FW_API_VERSION_MAJOR 0x0001 -#define I40E_FW_API_VERSION_MINOR 0x0005 +#define I40E_FW_API_VERSION_MINOR_X722 0x0005 +#define I40E_FW_API_VERSION_MINOR_X710 0x0007 +#define I40E_FW_MINOR_VERSION(_h) ((_h)->mac.type == I40E_MAC_XL710 ? \ + I40E_FW_API_VERSION_MINOR_X710 : \ + I40E_FW_API_VERSION_MINOR_X722) + +/* API version 1.7 implements additional link and PHY-specific APIs */ +#define I40E_MINOR_VER_GET_LINK_INFO_XL710 0x0007 + struct i40e_aq_desc { __le16 flags; __le16 opcode; @@ -202,6 +211,7 @@ enum i40e_admin_queue_opc { /* DCB commands */ i40e_aqc_opc_dcb_ignore_pfc = 0x0301, i40e_aqc_opc_dcb_updated = 0x0302, + i40e_aqc_opc_set_dcb_parameters = 0x0303, /* TX scheduler */ i40e_aqc_opc_configure_vsi_bw_limit = 0x0400, @@ -241,6 +251,8 @@ enum i40e_admin_queue_opc { i40e_aqc_opc_set_phy_debug = 0x0622, i40e_aqc_opc_upload_ext_phy_fm = 0x0625, i40e_aqc_opc_run_phy_activity = 0x0626, + i40e_aqc_opc_set_phy_register = 0x0628, + i40e_aqc_opc_get_phy_register = 0x0629, /* NVM commands */ i40e_aqc_opc_nvm_read = 0x0701, @@ -248,6 +260,7 @@ enum i40e_admin_queue_opc { i40e_aqc_opc_nvm_update = 0x0703, i40e_aqc_opc_nvm_config_read = 0x0704, i40e_aqc_opc_nvm_config_write = 0x0705, + i40e_aqc_opc_nvm_progress = 0x0706, i40e_aqc_opc_oem_post_update = 0x0720, i40e_aqc_opc_thermal_sensor = 0x0721, @@ -771,8 +784,52 @@ struct i40e_aqc_set_switch_config { /* flags used for both fields below */ #define I40E_AQ_SET_SWITCH_CFG_PROMISC 0x0001 #define I40E_AQ_SET_SWITCH_CFG_L2_FILTER 0x0002 +#define I40E_AQ_SET_SWITCH_CFG_HW_ATR_EVICT 0x0004 __le16 valid_flags; - u8 reserved[12]; + /* The ethertype in switch_tag is dropped on ingress and used + * internally by the switch. Set this to zero for the default + * of 0x88a8 (802.1ad). Should be zero for firmware API + * versions lower than 1.7. + */ + __le16 switch_tag; + /* The ethertypes in first_tag and second_tag are used to + * match the outer and inner VLAN tags (respectively) when HW + * double VLAN tagging is enabled via the set port parameters + * AQ command. Otherwise these are both ignored. Set them to + * zero for their defaults of 0x8100 (802.1Q). Should be zero + * for firmware API versions lower than 1.7. + */ + __le16 first_tag; + __le16 second_tag; + /* Next byte is split into following: + * Bit 7 : 0 : No action, 1: Switch to mode defined by bits 6:0 + * Bit 6 : 0 : Destination Port, 1: source port + * Bit 5..4 : L4 type + * 0: rsvd + * 1: TCP + * 2: UDP + * 3: Both TCP and UDP + * Bits 3:0 Mode + * 0: default mode + * 1: L4 port only mode + * 2: non-tunneled mode + * 3: tunneled mode + */ +#define I40E_AQ_SET_SWITCH_BIT7_VALID 0x80 + +#define I40E_AQ_SET_SWITCH_L4_SRC_PORT 0x40 + +#define I40E_AQ_SET_SWITCH_L4_TYPE_RSVD 0x00 +#define I40E_AQ_SET_SWITCH_L4_TYPE_TCP 0x10 +#define I40E_AQ_SET_SWITCH_L4_TYPE_UDP 0x20 +#define I40E_AQ_SET_SWITCH_L4_TYPE_BOTH 0x30 + +#define I40E_AQ_SET_SWITCH_MODE_DEFAULT 0x00 +#define I40E_AQ_SET_SWITCH_MODE_L4_PORT 0x01 +#define I40E_AQ_SET_SWITCH_MODE_NON_TUNNEL 0x02 +#define I40E_AQ_SET_SWITCH_MODE_TUNNEL 0x03 + u8 mode; + u8 rsvd5[5]; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_set_switch_config); @@ -1703,6 +1760,8 @@ enum i40e_aq_phy_type { I40E_PHY_TYPE_10GBASE_CR1_CU = 0xB, I40E_PHY_TYPE_10GBASE_AOC = 0xC, I40E_PHY_TYPE_40GBASE_AOC = 0xD, + I40E_PHY_TYPE_UNRECOGNIZED = 0xE, + I40E_PHY_TYPE_UNSUPPORTED = 0xF, I40E_PHY_TYPE_100BASE_TX = 0x11, I40E_PHY_TYPE_1000BASE_T = 0x12, I40E_PHY_TYPE_10GBASE_T = 0x13, @@ -1721,9 +1780,51 @@ enum i40e_aq_phy_type { I40E_PHY_TYPE_25GBASE_CR = 0x20, I40E_PHY_TYPE_25GBASE_SR = 0x21, I40E_PHY_TYPE_25GBASE_LR = 0x22, - I40E_PHY_TYPE_MAX + I40E_PHY_TYPE_25GBASE_AOC = 0x23, + I40E_PHY_TYPE_25GBASE_ACC = 0x24, + I40E_PHY_TYPE_MAX, + I40E_PHY_TYPE_NOT_SUPPORTED_HIGH_TEMP = 0xFD, + I40E_PHY_TYPE_EMPTY = 0xFE, + I40E_PHY_TYPE_DEFAULT = 0xFF, }; +#define I40E_PHY_TYPES_BITMASK (BIT_ULL(I40E_PHY_TYPE_SGMII) | \ + BIT_ULL(I40E_PHY_TYPE_1000BASE_KX) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_KX4) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_KR) | \ + BIT_ULL(I40E_PHY_TYPE_40GBASE_KR4) | \ + BIT_ULL(I40E_PHY_TYPE_XAUI) | \ + BIT_ULL(I40E_PHY_TYPE_XFI) | \ + BIT_ULL(I40E_PHY_TYPE_SFI) | \ + BIT_ULL(I40E_PHY_TYPE_XLAUI) | \ + BIT_ULL(I40E_PHY_TYPE_XLPPI) | \ + BIT_ULL(I40E_PHY_TYPE_40GBASE_CR4_CU) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_CR1_CU) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_AOC) | \ + BIT_ULL(I40E_PHY_TYPE_40GBASE_AOC) | \ + BIT_ULL(I40E_PHY_TYPE_UNRECOGNIZED) | \ + BIT_ULL(I40E_PHY_TYPE_UNSUPPORTED) | \ + BIT_ULL(I40E_PHY_TYPE_100BASE_TX) | \ + BIT_ULL(I40E_PHY_TYPE_1000BASE_T) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_T) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_SR) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_LR) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_SFPP_CU) | \ + BIT_ULL(I40E_PHY_TYPE_10GBASE_CR1) | \ + BIT_ULL(I40E_PHY_TYPE_40GBASE_CR4) | \ + BIT_ULL(I40E_PHY_TYPE_40GBASE_SR4) | \ + BIT_ULL(I40E_PHY_TYPE_40GBASE_LR4) | \ + BIT_ULL(I40E_PHY_TYPE_1000BASE_SX) | \ + BIT_ULL(I40E_PHY_TYPE_1000BASE_LX) | \ + BIT_ULL(I40E_PHY_TYPE_1000BASE_T_OPTICAL) | \ + BIT_ULL(I40E_PHY_TYPE_20GBASE_KR2) | \ + BIT_ULL(I40E_PHY_TYPE_25GBASE_KR) | \ + BIT_ULL(I40E_PHY_TYPE_25GBASE_CR) | \ + BIT_ULL(I40E_PHY_TYPE_25GBASE_SR) | \ + BIT_ULL(I40E_PHY_TYPE_25GBASE_LR) | \ + BIT_ULL(I40E_PHY_TYPE_25GBASE_AOC) | \ + BIT_ULL(I40E_PHY_TYPE_25GBASE_ACC)) + #define I40E_LINK_SPEED_100MB_SHIFT 0x1 #define I40E_LINK_SPEED_1000MB_SHIFT 0x2 #define I40E_LINK_SPEED_10GB_SHIFT 0x3 @@ -1778,6 +1879,8 @@ struct i40e_aq_get_phy_abilities_resp { #define I40E_AQ_PHY_TYPE_EXT_25G_CR 0x02 #define I40E_AQ_PHY_TYPE_EXT_25G_SR 0x04 #define I40E_AQ_PHY_TYPE_EXT_25G_LR 0x08 +#define I40E_AQ_PHY_TYPE_EXT_25G_AOC 0x10 +#define I40E_AQ_PHY_TYPE_EXT_25G_ACC 0x20 u8 fec_cfg_curr_mod_ext_info; #define I40E_AQ_ENABLE_FEC_KR 0x01 #define I40E_AQ_ENABLE_FEC_RS 0x02 @@ -1907,19 +2010,31 @@ struct i40e_aqc_get_link_status { #define I40E_AQ_25G_SERDES_UCODE_ERR 0X04 #define I40E_AQ_25G_NIMB_UCODE_ERR 0X05 u8 loopback; /* use defines from i40e_aqc_set_lb_mode */ +/* Since firmware API 1.7 loopback field keeps power class info as well */ +#define I40E_AQ_LOOPBACK_MASK 0x07 +#define I40E_AQ_PWR_CLASS_SHIFT_LB 6 +#define I40E_AQ_PWR_CLASS_MASK_LB (0x03 << I40E_AQ_PWR_CLASS_SHIFT_LB) __le16 max_frame_size; u8 config; #define I40E_AQ_CONFIG_FEC_KR_ENA 0x01 #define I40E_AQ_CONFIG_FEC_RS_ENA 0x02 #define I40E_AQ_CONFIG_CRC_ENA 0x04 #define I40E_AQ_CONFIG_PACING_MASK 0x78 - u8 power_desc; + union { + struct { + u8 power_desc; #define I40E_AQ_LINK_POWER_CLASS_1 0x00 #define I40E_AQ_LINK_POWER_CLASS_2 0x01 #define I40E_AQ_LINK_POWER_CLASS_3 0x02 #define I40E_AQ_LINK_POWER_CLASS_4 0x03 #define I40E_AQ_PWR_CLASS_MASK 0x03 - u8 reserved[4]; + u8 reserved[4]; + }; + struct { + u8 link_type[4]; + u8 link_type_ext; + }; + }; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_get_link_status); @@ -1956,11 +2071,28 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_an_advt_reg); /* Set Loopback mode (0x0618) */ struct i40e_aqc_set_lb_mode { - __le16 lb_mode; + u8 lb_level; +#define I40E_AQ_LB_NONE 0 +#define I40E_AQ_LB_MAC 1 +#define I40E_AQ_LB_SERDES 2 +#define I40E_AQ_LB_PHY_INT 3 +#define I40E_AQ_LB_PHY_EXT 4 +#define I40E_AQ_LB_CPVL_PCS 5 +#define I40E_AQ_LB_CPVL_EXT 6 #define I40E_AQ_LB_PHY_LOCAL 0x01 #define I40E_AQ_LB_PHY_REMOTE 0x02 #define I40E_AQ_LB_MAC_LOCAL 0x04 - u8 reserved[14]; + u8 lb_type; +#define I40E_AQ_LB_LOCAL 0 +#define I40E_AQ_LB_FAR 0x01 + u8 speed; +#define I40E_AQ_LB_SPEED_NONE 0 +#define I40E_AQ_LB_SPEED_1G 1 +#define I40E_AQ_LB_SPEED_10G 2 +#define I40E_AQ_LB_SPEED_40G 3 +#define I40E_AQ_LB_SPEED_20G 4 + u8 force_speed; + u8 reserved[12]; }; I40E_CHECK_CMD_LENGTH(i40e_aqc_set_lb_mode); @@ -2002,14 +2134,34 @@ struct i40e_aqc_run_phy_activity { I40E_CHECK_CMD_LENGTH(i40e_aqc_run_phy_activity); +/* Set PHY Register command (0x0628) */ +/* Get PHY Register command (0x0629) */ +struct i40e_aqc_phy_register_access { + u8 phy_interface; +#define I40E_AQ_PHY_REG_ACCESS_INTERNAL 0 +#define I40E_AQ_PHY_REG_ACCESS_EXTERNAL 1 +#define I40E_AQ_PHY_REG_ACCESS_EXTERNAL_MODULE 2 + u8 dev_addres; + u8 reserved1[2]; + __le32 reg_address; + __le32 reg_value; + u8 reserved2[4]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_phy_register_access); + /* NVM Read command (indirect 0x0701) * NVM Erase commands (direct 0x0702) * NVM Update commands (indirect 0x0703) */ struct i40e_aqc_nvm_update { u8 command_flags; -#define I40E_AQ_NVM_LAST_CMD 0x01 -#define I40E_AQ_NVM_FLASH_ONLY 0x80 +#define I40E_AQ_NVM_LAST_CMD 0x01 +#define I40E_AQ_NVM_FLASH_ONLY 0x80 +#define I40E_AQ_NVM_PRESERVATION_FLAGS_SHIFT 1 +#define I40E_AQ_NVM_PRESERVATION_FLAGS_MASK 0x03 +#define I40E_AQ_NVM_PRESERVATION_FLAGS_SELECTED 0x03 +#define I40E_AQ_NVM_PRESERVATION_FLAGS_ALL 0x01 u8 module_pointer; __le16 length; __le32 offset; @@ -2268,6 +2420,17 @@ struct i40e_aqc_lldp_start { }; I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_start); + +/* Set DCB (direct 0x0303) */ +struct i40e_aqc_set_dcb_parameters { + u8 command; +#define I40E_AQ_DCB_SET_AGENT 0x1 +#define I40E_DCB_VALID 0x1 + u8 valid_flags; + u8 reserved[14]; +}; + +I40E_CHECK_CMD_LENGTH(i40e_aqc_set_dcb_parameters); /* Get CEE DCBX Oper Config (0x0A07) * uses the generic descriptor struct Modified: head/sys/dev/ixl/i40e_alloc.h ============================================================================== --- head/sys/dev/ixl/i40e_alloc.h Tue May 1 18:28:42 2018 (r333148) +++ head/sys/dev/ixl/i40e_alloc.h Tue May 1 18:50:12 2018 (r333149) @@ -1,6 +1,6 @@ /****************************************************************************** - Copyright (c) 2013-2015, Intel Corporation + Copyright (c) 2013-2017, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without Modified: head/sys/dev/ixl/i40e_common.c ============================================================================== --- head/sys/dev/ixl/i40e_common.c Tue May 1 18:28:42 2018 (r333148) +++ head/sys/dev/ixl/i40e_common.c Tue May 1 18:50:12 2018 (r333149) @@ -1,6 +1,6 @@ /****************************************************************************** - Copyright (c) 2013-2015, Intel Corporation + Copyright (c) 2013-2017, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without @@ -35,7 +35,7 @@ #include "i40e_type.h" #include "i40e_adminq.h" #include "i40e_prototype.h" -#include "i40e_virtchnl.h" +#include "virtchnl.h" /** @@ -68,7 +68,6 @@ enum i40e_status_code i40e_set_mac_type(struct i40e_hw case I40E_DEV_ID_25G_SFP28: hw->mac.type = I40E_MAC_XL710; break; - case I40E_DEV_ID_X722_A0: case I40E_DEV_ID_KX_X722: case I40E_DEV_ID_QSFP_X722: case I40E_DEV_ID_SFP_X722: @@ -78,11 +77,11 @@ enum i40e_status_code i40e_set_mac_type(struct i40e_hw hw->mac.type = I40E_MAC_X722; break; case I40E_DEV_ID_X722_VF: - case I40E_DEV_ID_X722_A0_VF: hw->mac.type = I40E_MAC_X722_VF; break; case I40E_DEV_ID_VF: case I40E_DEV_ID_VF_HV: + case I40E_DEV_ID_ADAPTIVE_VF: hw->mac.type = I40E_MAC_VF; break; default: @@ -298,6 +297,8 @@ const char *i40e_stat_str(struct i40e_hw *hw, enum i40 return "I40E_NOT_SUPPORTED"; case I40E_ERR_FIRMWARE_API_VERSION: return "I40E_ERR_FIRMWARE_API_VERSION"; + case I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR: + return "I40E_ERR_ADMIN_QUEUE_CRITICAL_ERROR"; } snprintf(hw->err_str, sizeof(hw->err_str), "%d", stat_err); @@ -318,13 +319,15 @@ void i40e_debug_aq(struct i40e_hw *hw, enum i40e_debug void *buffer, u16 buf_len) { struct i40e_aq_desc *aq_desc = (struct i40e_aq_desc *)desc; - u16 len = LE16_TO_CPU(aq_desc->datalen); u8 *buf = (u8 *)buffer; + u16 len; u16 i = 0; if ((!(mask & hw->debug_mask)) || (desc == NULL)) return; + len = LE16_TO_CPU(aq_desc->datalen); + i40e_debug(hw, mask, "AQ CMD: opcode 0x%04X, flags 0x%04X, datalen 0x%04X, retval 0x%04X\n", LE16_TO_CPU(aq_desc->opcode), @@ -1008,7 +1011,8 @@ enum i40e_status_code i40e_init_shared_code(struct i40 hw->pf_id = (u8)(func_rid & 0x7); if (hw->mac.type == I40E_MAC_X722) - hw->flags |= I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE; + hw->flags |= I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE | + I40E_HW_FLAG_NVM_READ_REQUIRES_LOCK; status = i40e_init_nvm(hw); return status; @@ -1242,6 +1246,8 @@ static enum i40e_media_type i40e_get_media_type(struct case I40E_PHY_TYPE_40GBASE_AOC: case I40E_PHY_TYPE_10GBASE_AOC: case I40E_PHY_TYPE_25GBASE_CR: + case I40E_PHY_TYPE_25GBASE_AOC: + case I40E_PHY_TYPE_25GBASE_ACC: media = I40E_MEDIA_TYPE_DA; break; case I40E_PHY_TYPE_1000BASE_KX: @@ -1324,6 +1330,8 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw * we don't need to do the PF Reset */ if (!cnt) { + u32 reg2 = 0; + reg = rd32(hw, I40E_PFGEN_CTRL); wr32(hw, I40E_PFGEN_CTRL, (reg | I40E_PFGEN_CTRL_PFSWR_MASK)); @@ -1331,6 +1339,12 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw reg = rd32(hw, I40E_PFGEN_CTRL); if (!(reg & I40E_PFGEN_CTRL_PFSWR_MASK)) break; + reg2 = rd32(hw, I40E_GLGEN_RSTAT); + if (reg2 & I40E_GLGEN_RSTAT_DEVSTATE_MASK) { + DEBUGOUT("Core reset upcoming. Skipping PF reset request.\n"); + DEBUGOUT1("I40E_GLGEN_RSTAT = 0x%x\n", reg2); + return I40E_ERR_NOT_READY; + } i40e_msec_delay(1); } if (reg & I40E_PFGEN_CTRL_PFSWR_MASK) { @@ -1519,6 +1533,7 @@ u32 i40e_led_get(struct i40e_hw *hw) case I40E_COMBINED_ACTIVITY: case I40E_FILTER_ACTIVITY: case I40E_MAC_ACTIVITY: + case I40E_LINK_ACTIVITY: continue; default: break; @@ -1567,6 +1582,7 @@ void i40e_led_set(struct i40e_hw *hw, u32 mode, bool b case I40E_COMBINED_ACTIVITY: case I40E_FILTER_ACTIVITY: case I40E_MAC_ACTIVITY: + case I40E_LINK_ACTIVITY: continue; default: break; @@ -1577,9 +1593,6 @@ void i40e_led_set(struct i40e_hw *hw, u32 mode, bool b gpio_val |= ((mode << I40E_GLGEN_GPIO_CTL_LED_MODE_SHIFT) & I40E_GLGEN_GPIO_CTL_LED_MODE_MASK); - if (mode == I40E_LINK_ACTIVITY) - blink = FALSE; - if (blink) gpio_val |= BIT(I40E_GLGEN_GPIO_CTL_LED_BLINK_SHIFT); else @@ -1609,35 +1622,58 @@ enum i40e_status_code i40e_aq_get_phy_capabilities(str { struct i40e_aq_desc desc; enum i40e_status_code status; + u16 max_delay = I40E_MAX_PHY_TIMEOUT, total_delay = 0; u16 abilities_size = sizeof(struct i40e_aq_get_phy_abilities_resp); if (!abilities) return I40E_ERR_PARAM; - i40e_fill_default_direct_cmd_desc(&desc, - i40e_aqc_opc_get_phy_abilities); + do { + i40e_fill_default_direct_cmd_desc(&desc, + i40e_aqc_opc_get_phy_abilities); - desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_BUF); - if (abilities_size > I40E_AQ_LARGE_BUF) - desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_LB); + desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_BUF); + if (abilities_size > I40E_AQ_LARGE_BUF) + desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_LB); - if (qualified_modules) - desc.params.external.param0 |= + if (qualified_modules) + desc.params.external.param0 |= CPU_TO_LE32(I40E_AQ_PHY_REPORT_QUALIFIED_MODULES); - if (report_init) - desc.params.external.param0 |= + if (report_init) + desc.params.external.param0 |= CPU_TO_LE32(I40E_AQ_PHY_REPORT_INITIAL_VALUES); - status = i40e_asq_send_command(hw, &desc, abilities, abilities_size, - cmd_details); + status = i40e_asq_send_command(hw, &desc, abilities, + abilities_size, cmd_details); - if (hw->aq.asq_last_status == I40E_AQ_RC_EIO) - status = I40E_ERR_UNKNOWN_PHY; + if (status != I40E_SUCCESS) + break; + if (hw->aq.asq_last_status == I40E_AQ_RC_EIO) { + status = I40E_ERR_UNKNOWN_PHY; + break; + } else if (hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN) { + i40e_msec_delay(1); + total_delay++; + status = I40E_ERR_TIMEOUT; + } + } while ((hw->aq.asq_last_status != I40E_AQ_RC_OK) && + (total_delay < max_delay)); + + if (status != I40E_SUCCESS) + return status; + if (report_init) { - hw->phy.phy_types = LE32_TO_CPU(abilities->phy_type); - hw->phy.phy_types |= ((u64)abilities->phy_type_ext << 32); + if (hw->mac.type == I40E_MAC_XL710 && + hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR && + hw->aq.api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710) { + status = i40e_aq_get_link_info(hw, TRUE, NULL, NULL); + } else { + hw->phy.phy_types = LE32_TO_CPU(abilities->phy_type); + hw->phy.phy_types |= + ((u64)abilities->phy_type_ext << 32); + } } return status; @@ -1680,6 +1716,8 @@ enum i40e_status_code i40e_aq_set_phy_config(struct i4 /** * i40e_set_fc * @hw: pointer to the hw struct + * @aq_failures: buffer to return AdminQ failure information + * @atomic_restart: whether to enable atomic link restart * * Set the requested flow control mode using set_phy_config. **/ @@ -1899,7 +1937,7 @@ enum i40e_status_code i40e_aq_get_link_info(struct i40 hw_link_info->fec_info = resp->config & (I40E_AQ_CONFIG_FEC_KR_ENA | I40E_AQ_CONFIG_FEC_RS_ENA); hw_link_info->ext_info = resp->ext_info; - hw_link_info->loopback = resp->loopback; + hw_link_info->loopback = resp->loopback & I40E_AQ_LOOPBACK_MASK; hw_link_info->max_frame_size = LE16_TO_CPU(resp->max_frame_size); hw_link_info->pacing = resp->config & I40E_AQ_CONFIG_PACING_MASK; @@ -1930,6 +1968,16 @@ enum i40e_status_code i40e_aq_get_link_info(struct i40 hw->aq.fw_min_ver < 40)) && hw_link_info->phy_type == 0xE) hw_link_info->phy_type = I40E_PHY_TYPE_10GBASE_SFPP_CU; + if (hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR && + hw->aq.api_min_ver >= 7) { + __le32 tmp; + + i40e_memcpy(&tmp, resp->link_type, sizeof(tmp), + I40E_NONDMA_TO_NONDMA); + hw->phy.phy_types = LE32_TO_CPU(tmp); + hw->phy.phy_types |= ((u64)resp->link_type_ext << 32); + } + /* save link status information */ if (link) i40e_memcpy(link, hw_link_info, sizeof(*hw_link_info), @@ -2069,9 +2117,9 @@ aq_get_partner_advt_exit: * * Sets loopback modes. **/ -enum i40e_status_code i40e_aq_set_lb_modes(struct i40e_hw *hw, - u16 lb_modes, - struct i40e_asq_cmd_details *cmd_details) +enum i40e_status_code +i40e_aq_set_lb_modes(struct i40e_hw *hw, u8 lb_level, u8 lb_type, u8 speed, + struct i40e_asq_cmd_details *cmd_details) { struct i40e_aq_desc desc; struct i40e_aqc_set_lb_mode *cmd = @@ -2081,7 +2129,11 @@ enum i40e_status_code i40e_aq_set_lb_modes(struct i40e i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_set_lb_modes); - cmd->lb_mode = CPU_TO_LE16(lb_modes); + cmd->lb_level = lb_level; + cmd->lb_type = lb_type; + cmd->speed = speed; + if (speed) + cmd->force_speed = 1; status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); @@ -2607,13 +2659,14 @@ enum i40e_status_code i40e_aq_get_switch_config(struct * i40e_aq_set_switch_config * @hw: pointer to the hardware structure * @flags: bit flag values to set + * @mode: cloud filter mode * @valid_flags: which bit flags to set * @cmd_details: pointer to command details structure or NULL * * Set switch configuration bits **/ enum i40e_status_code i40e_aq_set_switch_config(struct i40e_hw *hw, - u16 flags, u16 valid_flags, + u16 flags, u16 valid_flags, u8 mode, struct i40e_asq_cmd_details *cmd_details) { struct i40e_aq_desc desc; @@ -2625,7 +2678,12 @@ enum i40e_status_code i40e_aq_set_switch_config(struct i40e_aqc_opc_set_switch_config); scfg->flags = CPU_TO_LE16(flags); scfg->valid_flags = CPU_TO_LE16(valid_flags); - + scfg->mode = mode; + if (hw->flags & I40E_HW_FLAG_802_1AD_CAPABLE) { + scfg->switch_tag = CPU_TO_LE16(hw->switch_tag); + scfg->first_tag = CPU_TO_LE16(hw->first_tag); + scfg->second_tag = CPU_TO_LE16(hw->second_tag); + } status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); return status; @@ -2771,6 +2829,10 @@ enum i40e_status_code i40e_update_link_info(struct i40 if (status) return status; + hw->phy.link_info.req_fec_info = + abilities.fec_cfg_curr_mod_ext_info & + (I40E_AQ_REQUEST_FEC_KR | I40E_AQ_REQUEST_FEC_RS); + i40e_memcpy(hw->phy.link_info.module_type, &abilities.module_type, sizeof(hw->phy.link_info.module_type), I40E_NONDMA_TO_NONDMA); } @@ -3019,8 +3081,8 @@ enum i40e_status_code i40e_aq_remove_macvlan(struct i4 * @mr_list: list of mirrored VSI SEIDs or VLAN IDs * @cmd_details: pointer to command details structure or NULL * @rule_id: Rule ID returned from FW - * @rule_used: Number of rules used in internal switch - * @rule_free: Number of rules free in internal switch + * @rules_used: Number of rules used in internal switch + * @rules_free: Number of rules free in internal switch * * Add/Delete a mirror rule to a specific switch. Mirror rules are supported for * VEBs/VEPA elements only @@ -3080,8 +3142,8 @@ static enum i40e_status_code i40e_mirrorrule_op(struct * @mr_list: list of mirrored VSI SEIDs or VLAN IDs * @cmd_details: pointer to command details structure or NULL * @rule_id: Rule ID returned from FW - * @rule_used: Number of rules used in internal switch - * @rule_free: Number of rules free in internal switch + * @rules_used: Number of rules used in internal switch + * @rules_free: Number of rules free in internal switch * * Add mirror rule. Mirror rules are supported for VEBs or VEPA elements only **/ @@ -3111,8 +3173,8 @@ enum i40e_status_code i40e_aq_add_mirrorrule(struct i4 * add_mirrorrule. * @mr_list: list of mirrored VLAN IDs to be removed * @cmd_details: pointer to command details structure or NULL - * @rule_used: Number of rules used in internal switch - * @rule_free: Number of rules free in internal switch + * @rules_used: Number of rules used in internal switch + * @rules_free: Number of rules free in internal switch * * Delete a mirror rule. Mirror rules are supported for VEBs/VEPA elements only **/ @@ -3515,6 +3577,8 @@ enum i40e_status_code i40e_aq_write_nvm_config(struct /** * i40e_aq_oem_post_update - triggers an OEM specific flow after update * @hw: pointer to the hw struct + * @buff: buffer for result + * @buff_size: buffer size * @cmd_details: pointer to command details structure or NULL **/ enum i40e_status_code i40e_aq_oem_post_update(struct i40e_hw *hw, @@ -3593,9 +3657,10 @@ static void i40e_parse_discover_capabilities(struct i4 u32 valid_functions, num_functions; u32 number, logical_id, phys_id; struct i40e_hw_capabilities *p; + enum i40e_status_code status; + u16 id, ocp_cfg_word0; u8 major_rev; u32 i = 0; - u16 id; cap = (struct i40e_aqc_list_capabilities_element_resp *) buff; @@ -3887,6 +3952,26 @@ static void i40e_parse_discover_capabilities(struct i4 hw->num_ports++; } + /* OCP cards case: if a mezz is removed the ethernet port is at + * disabled state in PRTGEN_CNF register. Additional NVM read is + * needed in order to check if we are dealing with OCP card. + * Those cards have 4 PFs at minimum, so using PRTGEN_CNF for counting + * physical ports results in wrong partition id calculation and thus + * not supporting WoL. + */ + if (hw->mac.type == I40E_MAC_X722) { + if (i40e_acquire_nvm(hw, I40E_RESOURCE_READ) == I40E_SUCCESS) { + status = i40e_aq_read_nvm(hw, I40E_SR_EMP_MODULE_PTR, + 2 * I40E_SR_OCP_CFG_WORD0, + sizeof(ocp_cfg_word0), + &ocp_cfg_word0, TRUE, NULL); + if (status == I40E_SUCCESS && + (ocp_cfg_word0 & I40E_SR_OCP_ENABLED)) + hw->num_ports = 4; + i40e_release_nvm(hw); + } + } + valid_functions = p->valid_functions; num_functions = 0; while (valid_functions) { @@ -3964,13 +4049,14 @@ exit: * @length: length of the section to be written (in bytes from the offset) * @data: command buffer (size [bytes] = length) * @last_command: tells if this is the last command in a series + * @preservation_flags: Preservation mode flags * @cmd_details: pointer to command details structure or NULL * * Update the NVM using the admin queue commands **/ enum i40e_status_code i40e_aq_update_nvm(struct i40e_hw *hw, u8 module_pointer, u32 offset, u16 length, void *data, - bool last_command, + bool last_command, u8 preservation_flags, struct i40e_asq_cmd_details *cmd_details) { struct i40e_aq_desc desc; @@ -3991,6 +4077,16 @@ enum i40e_status_code i40e_aq_update_nvm(struct i40e_h /* If this is the last command in a series, set the proper flag. */ if (last_command) cmd->command_flags |= I40E_AQ_NVM_LAST_CMD; + if (hw->mac.type == I40E_MAC_X722) { + if (preservation_flags == I40E_NVM_PRESERVATION_FLAGS_SELECTED) + cmd->command_flags |= + (I40E_AQ_NVM_PRESERVATION_FLAGS_SELECTED << + I40E_AQ_NVM_PRESERVATION_FLAGS_SHIFT); + else if (preservation_flags == I40E_NVM_PRESERVATION_FLAGS_ALL) + cmd->command_flags |= + (I40E_AQ_NVM_PRESERVATION_FLAGS_ALL << + I40E_AQ_NVM_PRESERVATION_FLAGS_SHIFT); + } cmd->module_pointer = module_pointer; cmd->offset = CPU_TO_LE32(offset); cmd->length = CPU_TO_LE16(length); @@ -4006,6 +4102,28 @@ i40e_aq_update_nvm_exit: } /** + * i40e_aq_nvm_progress + * @hw: pointer to the hw struct + * @progress: pointer to progress returned from AQ + * @cmd_details: pointer to command details structure or NULL + * + * Gets progress of flash rearrangement process + **/ +enum i40e_status_code i40e_aq_nvm_progress(struct i40e_hw *hw, u8 *progress, + struct i40e_asq_cmd_details *cmd_details) +{ + enum i40e_status_code status; + struct i40e_aq_desc desc; + + DEBUGFUNC("i40e_aq_nvm_progress"); + + i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_nvm_progress); + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); + *progress = desc.params.raw[0]; + return status; +} + +/** * i40e_aq_get_lldp_mib * @hw: pointer to the hw struct * @bridge_type: type of bridge requested @@ -4319,7 +4437,39 @@ enum i40e_status_code i40e_aq_start_lldp(struct i40e_h i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_lldp_start); cmd->command = I40E_AQ_LLDP_AGENT_START; + status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); + return status; +} + +/** + * i40e_aq_set_dcb_parameters + * @hw: pointer to the hw struct + * @cmd_details: pointer to command details structure or NULL + * @dcb_enable: True if DCB configuration needs to be applied + * + **/ +enum i40e_status_code +i40e_aq_set_dcb_parameters(struct i40e_hw *hw, bool dcb_enable, + struct i40e_asq_cmd_details *cmd_details) +{ + struct i40e_aq_desc desc; + struct i40e_aqc_set_dcb_parameters *cmd = + (struct i40e_aqc_set_dcb_parameters *)&desc.params.raw; + enum i40e_status_code status; + + if ((hw->mac.type != I40E_MAC_XL710) || + ((hw->aq.api_maj_ver < 1) || + ((hw->aq.api_maj_ver == 1) && (hw->aq.api_min_ver < 6)))) + return I40E_ERR_DEVICE_NOT_SUPPORTED; + + i40e_fill_default_direct_cmd_desc(&desc, + i40e_aqc_opc_set_dcb_parameters); + + if (dcb_enable) { + cmd->valid_flags = I40E_DCB_VALID; + cmd->command = I40E_AQ_DCB_SET_AGENT; + } status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); return status; @@ -4387,7 +4537,6 @@ enum i40e_status_code i40e_aq_start_stop_dcbx(struct i * i40e_aq_add_udp_tunnel * @hw: pointer to the hw struct * @udp_port: the UDP port to add in Host byte order - * @header_len: length of the tunneling header length in DWords * @protocol_index: protocol index type * @filter_index: pointer to filter index * @cmd_details: pointer to command details structure or NULL @@ -5434,7 +5583,7 @@ enum i40e_status_code i40e_aq_add_rem_control_packet_f } if (mac_addr) - i40e_memcpy(cmd->mac, mac_addr, I40E_ETH_LENGTH_OF_ADDRESS, + i40e_memcpy(cmd->mac, mac_addr, ETH_ALEN, I40E_NONDMA_TO_NONDMA); cmd->etype = CPU_TO_LE16(ethtype); @@ -5458,10 +5607,10 @@ enum i40e_status_code i40e_aq_add_rem_control_packet_f * @hw: pointer to the hw struct * @seid: VSI seid to add ethertype filter from **/ -#define I40E_FLOW_CONTROL_ETHTYPE 0x8808 void i40e_add_filter_to_drop_tx_flow_control_frames(struct i40e_hw *hw, u16 seid) { +#define I40E_FLOW_CONTROL_ETHTYPE 0x8808 u16 flag = I40E_AQC_ADD_CONTROL_PACKET_FLAGS_IGNORE_MAC | I40E_AQC_ADD_CONTROL_PACKET_FLAGS_DROP | I40E_AQC_ADD_CONTROL_PACKET_FLAGS_TX; @@ -5892,6 +6041,7 @@ void i40e_set_pci_config_data(struct i40e_hw *hw, u16 * @ret_buff_size: actual buffer size returned * @ret_next_table: next block to read * @ret_next_index: next index to read + * @cmd_details: pointer to command details structure or NULL * * Dump internal FW/HW data for debug purposes. * @@ -6014,7 +6164,7 @@ enum i40e_status_code i40e_aq_configure_partition_bw(s * i40e_read_phy_register_clause22 * @hw: pointer to the HW structure * @reg: register address in the page - * @phy_adr: PHY address on MDIO interface + * @phy_addr: PHY address on MDIO interface * @value: PHY register value * * Reads specified PHY register value @@ -6059,7 +6209,7 @@ enum i40e_status_code i40e_read_phy_register_clause22( * i40e_write_phy_register_clause22 * @hw: pointer to the HW structure * @reg: register address in the page - * @phy_adr: PHY address on MDIO interface + * @phy_addr: PHY address on MDIO interface * @value: PHY register value * * Writes specified PHY register value @@ -6100,7 +6250,7 @@ enum i40e_status_code i40e_write_phy_register_clause22 * @hw: pointer to the HW structure * @page: registers page number * @reg: register address in the page - * @phy_adr: PHY address on MDIO interface + * @phy_addr: PHY address on MDIO interface * @value: PHY register value * * Reads specified PHY register value @@ -6174,7 +6324,7 @@ phy_read_end: * @hw: pointer to the HW structure * @page: registers page number * @reg: register address in the page - * @phy_adr: PHY address on MDIO interface + * @phy_addr: PHY address on MDIO interface * @value: PHY register value * * Writes value to specified PHY register @@ -6241,7 +6391,7 @@ phy_write_end: * @hw: pointer to the HW structure * @page: registers page number * @reg: register address in the page - * @phy_adr: PHY address on MDIO interface + * @phy_addr: PHY address on MDIO interface * @value: PHY register value *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 1 19:17:41 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C9419FB4E61; Tue, 1 May 2018 19:17:40 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 75DF275418; Tue, 1 May 2018 19:17:40 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 709C626319; Tue, 1 May 2018 19:17:40 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41JHeRX097175; Tue, 1 May 2018 19:17:40 GMT (envelope-from jkim@FreeBSD.org) Received: (from jkim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41JHcdV097157; Tue, 1 May 2018 19:17:38 GMT (envelope-from jkim@FreeBSD.org) Message-Id: <201805011917.w41JHcdV097157@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jkim set sender to jkim@FreeBSD.org using -f From: Jung-uk Kim Date: Tue, 1 May 2018 19:17:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333150 - in head/sys/contrib/dev/acpica: . common compiler components/debugger components/dispatcher components/resources components/tables components/utilities include X-SVN-Group: head X-SVN-Commit-Author: jkim X-SVN-Commit-Paths: in head/sys/contrib/dev/acpica: . common compiler components/debugger components/dispatcher components/resources components/tables components/utilities include X-SVN-Commit-Revision: 333150 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 19:17:41 -0000 Author: jkim Date: Tue May 1 19:17:38 2018 New Revision: 333150 URL: https://svnweb.freebsd.org/changeset/base/333150 Log: MFV: r333077 Merge ACPICA 20180427. Modified: head/sys/contrib/dev/acpica/changes.txt head/sys/contrib/dev/acpica/common/adfile.c head/sys/contrib/dev/acpica/common/dmtbinfo2.c head/sys/contrib/dev/acpica/compiler/aslcompiler.h head/sys/contrib/dev/acpica/compiler/aslglobal.h head/sys/contrib/dev/acpica/compiler/aslhex.c head/sys/contrib/dev/acpica/compiler/aslload.c head/sys/contrib/dev/acpica/compiler/aslmessages.c head/sys/contrib/dev/acpica/compiler/aslmessages.h head/sys/contrib/dev/acpica/compiler/asloperands.c head/sys/contrib/dev/acpica/compiler/asltypes.h head/sys/contrib/dev/acpica/compiler/aslutils.c head/sys/contrib/dev/acpica/compiler/aslxref.c head/sys/contrib/dev/acpica/components/debugger/dbnames.c head/sys/contrib/dev/acpica/components/debugger/dbtest.c head/sys/contrib/dev/acpica/components/dispatcher/dswscope.c head/sys/contrib/dev/acpica/components/resources/rsdump.c head/sys/contrib/dev/acpica/components/tables/tbinstal.c head/sys/contrib/dev/acpica/components/utilities/utstring.c head/sys/contrib/dev/acpica/include/acapps.h head/sys/contrib/dev/acpica/include/acnames.h head/sys/contrib/dev/acpica/include/acpixf.h Directory Properties: head/sys/contrib/dev/acpica/ (props changed) Modified: head/sys/contrib/dev/acpica/changes.txt ============================================================================== --- head/sys/contrib/dev/acpica/changes.txt Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/changes.txt Tue May 1 19:17:38 2018 (r333150) @@ -1,4 +1,47 @@ ---------------------------------------- +27 April 2018. Summary of changes for version 20180427: + + +1) ACPICA kernel-resident subsystem: + +Debugger: Added support for Package objects in the "Test Objects" +command. This command walks the entire namespace and evaluates all named +data objects (Integers, Strings, Buffers, and now Packages). + +Improved error messages for the namespace root node. Originally, the root +was referred to by the confusing string "\___". This has been replaced by +"Namespace Root" for clarification. + +Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin +Ian King . + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented support to detect and flag illegal forward references. +For compatibility with other ACPI implementations, these references are +now illegal at the root level of the DSDT or SSDTs. Forward references +have always been illegal within control methods. This change should not +affect existing ASL/AML code because of the fact that these references +have always been illegal in the other ACPI implementation. + +iASL: Added error messages for the case where a table OEM ID and OEM +TABLE ID strings are longer than the ACPI-defined length. Previously, +these strings were simply silently truncated. + +iASL: Enhanced the -tc option (which creates an AML hex file in C, +suitable for import into a firmware project): + 1) Create a unique name for the table, to simplify use of multiple +SSDTs. + 2) Add a protection #ifdef in the file, similar to a .h header file. +With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, +evan.lloyd@arm.com + +AcpiExec: Added a new option, -df, to disable the local fault handler. +This is useful during debugging, where it may be desired to drop into a +debugger on a fault. + +---------------------------------------- 13 March 2018. Summary of changes for version 20180313: Modified: head/sys/contrib/dev/acpica/common/adfile.c ============================================================================== --- head/sys/contrib/dev/acpica/common/adfile.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/common/adfile.c Tue May 1 19:17:38 2018 (r333150) @@ -454,3 +454,59 @@ FlSplitInputPathname ( return (AE_OK); } + + +/******************************************************************************* + * + * FUNCTION: FlGetFileBasename + * + * PARAMETERS: FilePathname - File path to be split + * + * RETURN: The extracted base name of the file, in upper case + * + * DESCRIPTION: Extract the file base name (the file name with no extension) + * from the input pathname. + * + * Note: Any backslashes in the pathname should be previously + * converted to forward slashes before calling this function. + * + ******************************************************************************/ + +char * +FlGetFileBasename ( + char *FilePathname) +{ + char *FileBasename; + char *Substring; + + + /* Backup to last slash or colon */ + + Substring = strrchr (FilePathname, '/'); + if (!Substring) + { + Substring = strrchr (FilePathname, ':'); + } + + /* Extract the full filename (base + extension) */ + + if (Substring) + { + FileBasename = FlStrdup (Substring + 1); + } + else + { + FileBasename = FlStrdup (FilePathname); + } + + /* Remove the filename extension if present */ + + Substring = strchr (FileBasename, '.'); + if (Substring) + { + *Substring = 0; + } + + AcpiUtStrupr (FileBasename); + return (FileBasename); +} Modified: head/sys/contrib/dev/acpica/common/dmtbinfo2.c ============================================================================== --- head/sys/contrib/dev/acpica/common/dmtbinfo2.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/common/dmtbinfo2.c Tue May 1 19:17:38 2018 (r333150) @@ -1063,7 +1063,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNfit7[] = {ACPI_DMT_UINT24, ACPI_NFIT7_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_NFIT7_OFFSET (Capabilities), "Capabilities (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Cache Flush to NVDIMM", 0}, - {ACPI_DMT_FLAG1, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Memory Flush to MVDIMM", 0}, + {ACPI_DMT_FLAG1, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Memory Flush to NVDIMM", 0}, {ACPI_DMT_FLAG2, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Memory Mirroring", 0}, {ACPI_DMT_UINT32, ACPI_NFIT7_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR Modified: head/sys/contrib/dev/acpica/compiler/aslcompiler.h ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslcompiler.h Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslcompiler.h Tue May 1 19:17:38 2018 (r333150) @@ -1187,6 +1187,15 @@ UtDumpBasicOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level); +void * +UtGetParentMethod ( + ACPI_NAMESPACE_NODE *Node); + +BOOLEAN +UtNodeIsDescendantOf ( + ACPI_NAMESPACE_NODE *Node1, + ACPI_NAMESPACE_NODE *Node2); + void UtDisplaySupportedTables ( void); Modified: head/sys/contrib/dev/acpica/compiler/aslglobal.h ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslglobal.h Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslglobal.h Tue May 1 19:17:38 2018 (r333150) @@ -220,7 +220,8 @@ const char *Gbl_OpFlagNames[A "OP_COMPILER_EMITTED", "OP_IS_DUPLICATE", "OP_IS_RESOURCE_DATA", - "OP_IS_NULL_RETURN" + "OP_IS_NULL_RETURN", + "OP_NOT_FOUND_DURING_LOAD" }; #else Modified: head/sys/contrib/dev/acpica/compiler/aslhex.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslhex.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslhex.c Tue May 1 19:17:38 2018 (r333150) @@ -150,6 +150,7 @@ *****************************************************************************/ #include +#include #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("ashex") @@ -265,6 +266,9 @@ HxReadAmlOutputFile ( * output file, but formatted into hex/ascii bytes suitable for * inclusion into a C source file. * + * Note: the base name of the hex output file is prepended to + * all symbols as they are output to the file. + * ******************************************************************************/ static void @@ -276,18 +280,30 @@ HxDoHexOutputC ( UINT32 Offset = 0; UINT32 AmlFileSize; UINT32 i; + char *FileBasename; + /* Obtain the file basename (filename with no extension) */ + + FileBasename = FlGetFileBasename (Gbl_Files [ASL_FILE_HEX_OUTPUT].Filename); + /* Get AML size, seek back to start */ AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT); FlSeekFile (ASL_FILE_AML_OUTPUT, 0); + /* Finish the file header and emit the non-data symbols */ + FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n"); FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n", AmlFileSize); - FlPrintFile (ASL_FILE_HEX_OUTPUT, "unsigned char AmlCode[] =\n{\n"); + FlPrintFile (ASL_FILE_HEX_OUTPUT, "#ifndef __%s_HEX__\n", FileBasename); + FlPrintFile (ASL_FILE_HEX_OUTPUT, "#define __%s_HEX__\n\n", FileBasename); + + AcpiUtStrlwr (FileBasename); + FlPrintFile (ASL_FILE_HEX_OUTPUT, "unsigned char %s_aml_code[] =\n{\n", FileBasename); + while (Offset < AmlFileSize) { /* Read enough bytes needed for one output line */ @@ -303,7 +319,7 @@ HxDoHexOutputC ( for (i = 0; i < LineLength; i++) { /* - * Print each hex byte. + * Output each hex byte in the form: "0xnn," * Add a comma until the very last byte of the AML file * (Some C compilers complain about a trailing comma) */ @@ -337,7 +353,8 @@ HxDoHexOutputC ( Offset += LineLength; } - FlPrintFile (ASL_FILE_HEX_OUTPUT, "};\n"); + FlPrintFile (ASL_FILE_HEX_OUTPUT, "};\n\n"); + FlPrintFile (ASL_FILE_HEX_OUTPUT, "#endif\n"); } Modified: head/sys/contrib/dev/acpica/compiler/aslload.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslload.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslload.c Tue May 1 19:17:38 2018 (r333150) @@ -153,9 +153,10 @@ #include #include #include - +#include #include "aslcompiler.y.h" + #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslload") @@ -470,9 +471,13 @@ LdNamespace1Begin ( UINT32 i; BOOLEAN ForceNewScope = FALSE; ACPI_OWNER_ID OwnerId = 0; + const ACPI_OPCODE_INFO *OpInfo; + ACPI_PARSE_OBJECT *ParentOp; ACPI_FUNCTION_NAME (LdNamespace1Begin); + + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op %p [%s]\n", Op, Op->Asl.ParseOpName)); @@ -548,6 +553,69 @@ LdNamespace1Begin ( return (AE_OK); } + /* Check for a possible illegal forward reference */ + + if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || + (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) + { + /* + * Op->Asl.Namepath will be NULL for these opcodes. + * These opcodes are guaranteed to have a parent. + * Examine the parent opcode. + */ + Status = AE_OK; + ParentOp = Op->Asl.Parent; + OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Asl.AmlOpcode); + + /* + * Exclude all operators that actually declare a new name: + * Name (ABCD, 1) -> Ignore (AML_CLASS_NAMED_OBJECT) + * We only want references to named objects: + * Store (2, WXYZ) -> Attempt to resolve the name + */ + if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) + { + return (AE_OK); + } + + /* + * Check if the referenced object exists at this point during + * the load: + * 1) If it exists, then this cannot be a forward reference. + * 2) If it does not exist, it could be a forward reference or + * it truly does not exist (and no external declaration). + */ + Status = AcpiNsLookup (WalkState->ScopeInfo, + Op->Asl.Value.Name, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Node); + if (Status == AE_NOT_FOUND) + { + /* + * This is either a foward reference or the object truly + * does not exist. The two cases can only be differentiated + * during the cross-reference stage later. Mark the Op/Name + * as not-found for now to indicate the need for further + * processing. + * + * Special case: Allow forward references from elements of + * Package objects. This provides compatibility with other + * ACPI implementations. To correctly implement this, the + * ACPICA table load defers package resolution until the entire + * namespace has been loaded. + */ + if ((ParentOp->Asl.ParseOpcode != PARSEOP_PACKAGE) && + (ParentOp->Asl.ParseOpcode != PARSEOP_VAR_PACKAGE)) + { + Op->Asl.CompileFlags |= OP_NOT_FOUND_DURING_LOAD; + } + + return (AE_OK); + } + + return (Status); + } + Path = Op->Asl.Namepath; if (!Path) { @@ -584,7 +652,6 @@ LdNamespace1Begin ( } break; - case PARSEOP_EXTERNAL: /* * "External" simply enters a name and type into the namespace. @@ -765,7 +832,6 @@ LdNamespace1Begin ( Status = AE_OK; goto FinishNode; - default: Modified: head/sys/contrib/dev/acpica/compiler/aslmessages.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslmessages.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslmessages.c Tue May 1 19:17:38 2018 (r333150) @@ -342,8 +342,8 @@ const char *AslCompilerMsgs [] = /* ASL_MSG_RANGE */ "Constant out of range", /* ASL_MSG_BUFFER_ALLOCATION */ "Could not allocate line buffer", /* ASL_MSG_MISSING_DEPENDENCY */ "Missing dependency", -/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Illegal forward reference within a method", -/* ASL_MSG_ILLEGAL_METHOD_REF */ "Illegal reference across two methods", +/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Illegal forward reference", +/* ASL_MSG_ILLEGAL_METHOD_REF */ "Object is declared in a different method", /* ASL_MSG_LOCAL_NOT_USED */ "Method Local is set but never used", /* ASL_MSG_ARG_AS_LOCAL_NOT_USED */ "Method Argument (as a local) is set but never used", /* ASL_MSG_ARG_NOT_USED */ "Method Argument is never used", @@ -354,7 +354,9 @@ const char *AslCompilerMsgs [] = /* ASL_MSG_FOUND_HERE */ "Original name creation/declaration below: ", /* ASL_MSG_ILLEGAL_RECURSION */ "Illegal recursive call to method that creates named objects", /* ASL_MSG_EXTERN_COLLISION */ "A name cannot be defined and declared external in the same table", -/* ASL_MSG_FOUND_HERE_EXTERN*/ "Remove one of the declarations indicated above or below:" +/* ASL_MSG_FOUND_HERE_EXTERN */ "Remove one of the declarations indicated above or below:", +/* ASL_MSG_OEM_TABLE_ID */ "Invalid OEM Table ID", +/* ASL_MSG_OEM_ID */ "Invalid OEM ID" }; /* Table compiler */ Modified: head/sys/contrib/dev/acpica/compiler/aslmessages.h ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslmessages.h Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslmessages.h Tue May 1 19:17:38 2018 (r333150) @@ -357,6 +357,8 @@ typedef enum ASL_MSG_ILLEGAL_RECURSION, ASL_MSG_EXTERN_COLLISION, ASL_MSG_EXTERN_FOUND_HERE, + ASL_MSG_OEM_TABLE_ID, + ASL_MSG_OEM_ID, /* These messages are used by the Data Table compiler only */ Modified: head/sys/contrib/dev/acpica/compiler/asloperands.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/asloperands.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/asloperands.c Tue May 1 19:17:38 2018 (r333150) @@ -1061,7 +1061,7 @@ OpnDoDefinitionBlock ( if (strlen (Gbl_TableSignature) != ACPI_NAME_SIZE) { AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child, - "Length is not exactly 4"); + "Length must be exactly 4 characters"); } for (i = 0; i < ACPI_NAME_SIZE; i++) @@ -1078,6 +1078,7 @@ OpnDoDefinitionBlock ( Child = Child->Asl.Next; Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; + /* * We used the revision to set the integer width earlier */ @@ -1086,6 +1087,12 @@ OpnDoDefinitionBlock ( Child = Child->Asl.Next; Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; + if (Child->Asl.Value.String && + strlen (Child->Asl.Value.String) > ACPI_OEM_ID_SIZE) + { + AslError (ASL_ERROR, ASL_MSG_OEM_ID, Child, + "Length cannot exceed 6 characters"); + } /* OEM TableID */ @@ -1094,6 +1101,12 @@ OpnDoDefinitionBlock ( if (Child->Asl.Value.String) { Length = strlen (Child->Asl.Value.String); + if (Length > ACPI_OEM_TABLE_ID_SIZE) + { + AslError (ASL_ERROR, ASL_MSG_OEM_TABLE_ID, Child, + "Length cannot exceed 8 characters"); + } + Gbl_TableId = UtLocalCacheCalloc (Length + 1); strcpy (Gbl_TableId, Child->Asl.Value.String); Modified: head/sys/contrib/dev/acpica/compiler/asltypes.h ============================================================================== --- head/sys/contrib/dev/acpica/compiler/asltypes.h Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/asltypes.h Tue May 1 19:17:38 2018 (r333150) @@ -183,8 +183,9 @@ #define OP_IS_DUPLICATE 0x00040000 #define OP_IS_RESOURCE_DATA 0x00080000 #define OP_IS_NULL_RETURN 0x00100000 +#define OP_NOT_FOUND_DURING_LOAD 0x00200000 -#define ACPI_NUM_OP_FLAGS 0x21 +#define ACPI_NUM_OP_FLAGS 0x22 /* Keeps information about individual control methods */ Modified: head/sys/contrib/dev/acpica/compiler/aslutils.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslutils.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslutils.c Tue May 1 19:17:38 2018 (r333150) @@ -238,6 +238,97 @@ UtQueryForOverwrite ( /******************************************************************************* * + * FUNCTION: UtNodeIsDescendantOf + * + * PARAMETERS: Node1 - Child node + * Node2 - Possible parent node + * + * RETURN: Boolean + * + * DESCRIPTION: Returns TRUE if Node1 is a descendant of Node2. Otherwise, + * return FALSE. Note, we assume a NULL Node2 element to be the + * topmost (root) scope. All nodes are descendants of the root. + * Note: Nodes at the same level (siblings) are not considered + * descendants. + * + ******************************************************************************/ + +BOOLEAN +UtNodeIsDescendantOf ( + ACPI_NAMESPACE_NODE *Node1, + ACPI_NAMESPACE_NODE *Node2) +{ + + if (Node1 == Node2) + { + return (FALSE); + } + + if (!Node2) + { + return (TRUE); /* All nodes descend from the root */ + } + + /* Walk upward until the root is reached or parent is found */ + + while (Node1) + { + if (Node1 == Node2) + { + return (TRUE); + } + + Node1 = Node1->Parent; + } + + return (FALSE); +} + + +/******************************************************************************* + * + * FUNCTION: UtGetParentMethod + * + * PARAMETERS: Node - Namespace node for any object + * + * RETURN: Namespace node for the parent method + * NULL - object is not within a method + * + * DESCRIPTION: Find the parent (owning) method node for a namespace object + * + ******************************************************************************/ + +void * +UtGetParentMethod ( + ACPI_NAMESPACE_NODE *Node) +{ + ACPI_NAMESPACE_NODE *ParentNode; + + + if (!Node) + { + return (NULL); + } + + /* Walk upward until a method is found, or the root is reached */ + + ParentNode = Node->Parent; + while (ParentNode) + { + if (ParentNode->Type == ACPI_TYPE_METHOD) + { + return (ParentNode); + } + + ParentNode = ParentNode->Parent; + } + + return (NULL); /* Object is not within a control method */ +} + + +/******************************************************************************* + * * FUNCTION: UtDisplaySupportedTables * * PARAMETERS: None Modified: head/sys/contrib/dev/acpica/compiler/aslxref.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslxref.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/compiler/aslxref.c Tue May 1 19:17:38 2018 (r333150) @@ -197,23 +197,7 @@ XfCheckFieldRange ( UINT32 FieldBitLength, UINT32 AccessBitWidth); -#ifdef __UNDER_DEVELOPMENT -static ACPI_PARSE_OBJECT * -XfGetParentMethod ( - ACPI_PARSE_OBJECT *Op); -static void -XfCheckIllegalReference ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *Node); - -static BOOLEAN -XfIsObjectParental ( - ACPI_PARSE_OBJECT *MethodOp1, - ACPI_PARSE_OBJECT *MethodOp2); -#endif - - /******************************************************************************* * * FUNCTION: XfCrossReferenceNamespace @@ -702,7 +686,7 @@ XfNamespaceLocateBegin ( Gbl_NsLookupCount++; Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_EXECUTE, Flags, WalkState, &(Node)); + ACPI_IMODE_EXECUTE, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) @@ -760,6 +744,26 @@ XfNamespaceLocateBegin ( return_ACPI_STATUS (Status); } + /* Object was found above, check for an illegal forward reference */ + + if (Op->Asl.CompileFlags & OP_NOT_FOUND_DURING_LOAD) + { + /* + * During the load phase, this Op was flagged as a possible + * illegal forward reference + * + * Note: Allow "forward references" from within a method to an + * object that is not within any method (module-level code) + */ + if (!WalkState->ScopeInfo || (UtGetParentMethod (Node) && + !UtNodeIsDescendantOf (WalkState->ScopeInfo->Scope.Node, + UtGetParentMethod (Node)))) + { + AslError (ASL_ERROR, ASL_MSG_ILLEGAL_FORWARD_REF, Op, + Op->Asl.ExternalName); + } + } + /* Check for a reference vs. name declaration */ if (!(OpInfo->Flags & AML_NAMED) && @@ -768,13 +772,6 @@ XfNamespaceLocateBegin ( /* This node has been referenced, mark it for reference check */ Node->Flags |= ANOBJ_IS_REFERENCED; - -#ifdef __UNDER_DEVELOPMENT - - /* Check for an illegal reference */ - - XfCheckIllegalReference (Op, Node); -#endif } /* Attempt to optimize the NamePath */ @@ -1205,178 +1202,3 @@ XfNamespaceLocateEnd ( return_ACPI_STATUS (AE_OK); } - - -#ifdef __UNDER_DEVELOPMENT -/******************************************************************************* - * - * FUNCTION: XfIsObjectParental - * - * PARAMETERS: ChildOp - Op to be checked - * PossibleParentOp - Determine if this op is in the family - * - * RETURN: TRUE if ChildOp is a descendent of PossibleParentOp - * - * DESCRIPTION: Determine if an Op is a descendent of another Op. Used to - * detect if a method is declared within another method. - * - ******************************************************************************/ - -static BOOLEAN -XfIsObjectParental ( - ACPI_PARSE_OBJECT *ChildOp, - ACPI_PARSE_OBJECT *PossibleParentOp) -{ - ACPI_PARSE_OBJECT *ParentOp; - - - /* Search upwards through the tree for possible parent */ - - ParentOp = ChildOp; - while (ParentOp) - { - if (ParentOp == PossibleParentOp) - { - return (TRUE); - } - - ParentOp = ParentOp->Asl.Parent; - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: XfGetParentMethod - * - * PARAMETERS: Op - Op to be checked - * - * RETURN: Op for parent method. NULL if object is not within a method. - * - * DESCRIPTION: Determine if an object is within a control method. Used to - * implement special rules for named references from within a - * control method. - * - * NOTE: It would be better to have the parser set a flag in the Op if possible. - * - ******************************************************************************/ - -static ACPI_PARSE_OBJECT * -XfGetParentMethod ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *ParentOp; - - - if (!Op) - { - return (NULL); - } - - if (Op->Asl.ParseOpcode == PARSEOP_METHOD) - { - return (NULL); - } - - /* Walk upwards through the parse tree, up to the root if necessary */ - - ParentOp = Op; - while (ParentOp) - { - if (ParentOp->Asl.ParseOpcode == PARSEOP_METHOD) - { - return (ParentOp); - } - - ParentOp = ParentOp->Asl.Parent; - } - - /* Object is not within a method */ - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: XfCheckIllegalReference - * - * PARAMETERS: Op - Op referring to the target - * TargetNode - Target of the reference - * - * RETURN: None. Emits error message for an illegal reference - * - * DESCRIPTION: Determine if a named reference is legal. A "named" reference - * is something like: Store(ABCD, ...), where ABCD is an AML - * Nameseg or Namepath. - * - * NOTE: Caller must ensure that the name Op is in fact a reference, and not - * an actual name declaration (creation of a named object). - * - ******************************************************************************/ - -static void -XfCheckIllegalReference ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *TargetNode) -{ - ACPI_PARSE_OBJECT *MethodOp1; - ACPI_PARSE_OBJECT *MethodOp2; - ACPI_PARSE_OBJECT *TargetOp; - - - /* - * Check for an illegal reference to a named object: - * - * 1) References from one control method to another, non-parent - * method are not allowed, they will fail at runtime. - * - * 2) Forward references within a control method are not allowed. - * AML interpreters use a one-pass parse of control methods - * so these forward references will fail at runtime. - */ - TargetOp = TargetNode->Op; - - MethodOp1 = XfGetParentMethod (Op); - MethodOp2 = XfGetParentMethod (TargetOp); - - /* Are both objects within control method(s)? */ - - if (!MethodOp1 || !MethodOp2) - { - return; - } - - /* Objects not in the same method? */ - - if (MethodOp1 != MethodOp2) - { - /* - * 1) Cross-method named reference - * - * This is OK if and only if the target reference is within in a - * method that is a parent of current method - */ - if (!XfIsObjectParental (MethodOp1, MethodOp2)) - { - AslError (ASL_ERROR, ASL_MSG_ILLEGAL_METHOD_REF, Op, - Op->Asl.ExternalName); - } - } - - /* - * 2) Both reference and target are in the same method. Check if this is - * an (illegal) forward reference by examining the exact source code - * location of each (the referenced object and the object declaration). - * This is a bit nasty, yet effective. - */ - else if (Op->Asl.LogicalByteOffset < TargetOp->Asl.LogicalByteOffset) - { - AslError (ASL_ERROR, ASL_MSG_ILLEGAL_FORWARD_REF, Op, - Op->Asl.ExternalName); - } - -} -#endif Modified: head/sys/contrib/dev/acpica/components/debugger/dbnames.c ============================================================================== --- head/sys/contrib/dev/acpica/components/debugger/dbnames.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/components/debugger/dbnames.c Tue May 1 19:17:38 2018 (r333150) @@ -372,8 +372,17 @@ AcpiDbDumpNamespace ( } AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("ACPI Namespace (from %4.4s (%p) subtree):\n", - ((ACPI_NAMESPACE_NODE *) SubtreeEntry)->Name.Ascii, SubtreeEntry); + + if (((ACPI_NAMESPACE_NODE *) SubtreeEntry)->Parent) + { + AcpiOsPrintf ("ACPI Namespace (from %4.4s (%p) subtree):\n", + ((ACPI_NAMESPACE_NODE *) SubtreeEntry)->Name.Ascii, SubtreeEntry); + } + else + { + AcpiOsPrintf ("ACPI Namespace (from %s):\n", + ACPI_NAMESPACE_ROOT); + } /* Display the subtree */ Modified: head/sys/contrib/dev/acpica/components/debugger/dbtest.c ============================================================================== --- head/sys/contrib/dev/acpica/components/debugger/dbtest.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/components/debugger/dbtest.c Tue May 1 19:17:38 2018 (r333150) @@ -189,6 +189,10 @@ AcpiDbTestStringType ( UINT32 ByteLength); static ACPI_STATUS +AcpiDbTestPackageType ( + ACPI_NAMESPACE_NODE *Node); + +static ACPI_STATUS AcpiDbReadFromObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE ExpectedType, @@ -456,6 +460,11 @@ AcpiDbTestOneObject ( BitLength = ByteLength * 8; break; + case ACPI_TYPE_PACKAGE: + + LocalType = ACPI_TYPE_PACKAGE; + break; + case ACPI_TYPE_FIELD_UNIT: case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: @@ -490,6 +499,7 @@ AcpiDbTestOneObject ( AcpiOsPrintf ("%14s: %4.4s", AcpiUtGetTypeName (Node->Type), Node->Name.Ascii); + if (!ObjDesc) { AcpiOsPrintf (" Ignoring, no attached object\n"); @@ -510,13 +520,12 @@ AcpiDbTestOneObject ( case ACPI_ADR_SPACE_SYSTEM_MEMORY: case ACPI_ADR_SPACE_SYSTEM_IO: case ACPI_ADR_SPACE_PCI_CONFIG: - case ACPI_ADR_SPACE_EC: break; default: - AcpiOsPrintf (" %s space is not supported [%4.4s]\n", + AcpiOsPrintf (" %s space is not supported in this command [%4.4s]\n", AcpiUtGetRegionName (RegionObj->Region.SpaceId), RegionObj->Region.Node->Name.Ascii); return (AE_OK); @@ -546,6 +555,11 @@ AcpiDbTestOneObject ( Status = AcpiDbTestBufferType (Node, BitLength); break; + case ACPI_TYPE_PACKAGE: + + Status = AcpiDbTestPackageType (Node); + break; + default: AcpiOsPrintf (" Ignoring, type not implemented (%2.2X)", @@ -553,6 +567,14 @@ AcpiDbTestOneObject ( break; } + /* Exit on error, but don't abort the namespace walk */ + + if (ACPI_FAILURE (Status)) + { + Status = AE_OK; + goto Exit; + } + switch (Node->Type) { case ACPI_TYPE_LOCAL_REGION_FIELD: @@ -560,12 +582,14 @@ AcpiDbTestOneObject ( RegionObj = ObjDesc->Field.RegionObj; AcpiOsPrintf (" (%s)", AcpiUtGetRegionName (RegionObj->Region.SpaceId)); + break; default: break; } +Exit: AcpiOsPrintf ("\n"); return (Status); } @@ -624,7 +648,6 @@ AcpiDbTestIntegerType ( { ValueToWrite = 0; } - /* Write a new value */ WriteValue.Type = ACPI_TYPE_INTEGER; @@ -917,6 +940,40 @@ Exit: /******************************************************************************* * + * FUNCTION: AcpiDbTestPackageType + * + * PARAMETERS: Node - Parent NS node for the object + * + * RETURN: Status + * + * DESCRIPTION: Test read for a Package object. + * + ******************************************************************************/ + +static ACPI_STATUS +AcpiDbTestPackageType ( + ACPI_NAMESPACE_NODE *Node) +{ + ACPI_OBJECT *Temp1 = NULL; + ACPI_STATUS Status; + + + /* Read the original value */ + + Status = AcpiDbReadFromObject (Node, ACPI_TYPE_PACKAGE, &Temp1); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + AcpiOsPrintf (" %8.8X Elements", Temp1->Package.Count); + AcpiOsFree (Temp1); + return (Status); +} + + +/******************************************************************************* + * * FUNCTION: AcpiDbReadFromObject * * PARAMETERS: Node - Parent NS node for the object @@ -957,8 +1014,8 @@ AcpiDbReadFromObject ( AcpiGbl_MethodExecuting = TRUE; Status = AcpiEvaluateObject (ReadHandle, NULL, &ParamObjects, &ReturnObj); - AcpiGbl_MethodExecuting = FALSE; + AcpiGbl_MethodExecuting = FALSE; if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not read from object, %s", @@ -973,6 +1030,7 @@ AcpiDbReadFromObject ( case ACPI_TYPE_INTEGER: case ACPI_TYPE_BUFFER: case ACPI_TYPE_STRING: + case ACPI_TYPE_PACKAGE: /* * Did we receive the type we wanted? Most important for the * Integer/Buffer case (when a field is larger than an Integer, @@ -984,6 +1042,7 @@ AcpiDbReadFromObject ( AcpiUtGetTypeName (ExpectedType), AcpiUtGetTypeName (RetValue->Type)); + AcpiOsFree (ReturnObj.Pointer); return (AE_TYPE); } Modified: head/sys/contrib/dev/acpica/components/dispatcher/dswscope.c ============================================================================== --- head/sys/contrib/dev/acpica/components/dispatcher/dswscope.c Tue May 1 18:50:12 2018 (r333149) +++ head/sys/contrib/dev/acpica/components/dispatcher/dswscope.c Tue May 1 19:17:38 2018 (r333150) @@ -269,8 +269,7 @@ AcpiDsScopeStackPush ( } else { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - "[\\___] (%s)", "ROOT")); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, ACPI_NAMESPACE_ROOT)); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, @@ -328,15 +327,13 @@ AcpiDsScopeStackPop ( NewScopeInfo = WalkState->ScopeInfo; if (NewScopeInfo) { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - "[%4.4s] (%s)\n", + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "[%4.4s] (%s)\n", AcpiUtGetNodeName (NewScopeInfo->Scope.Node), AcpiUtGetTypeName (NewScopeInfo->Common.Value))); } else { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - "[\\___] (ROOT)\n")); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "%s\n", ACPI_NAMESPACE_ROOT)); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 1 19:34:33 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CF6B4FB55D9; Tue, 1 May 2018 19:34:33 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7D1B779C20; Tue, 1 May 2018 19:34:33 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7410826666; Tue, 1 May 2018 19:34:33 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41JYXFW007230; Tue, 1 May 2018 19:34:33 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41JYXIF007229; Tue, 1 May 2018 19:34:33 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805011934.w41JYXIF007229@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 1 May 2018 19:34:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333151 - stable/11/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD X-SVN-Group: stable-11 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/11/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD X-SVN-Commit-Revision: 333151 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 19:34:34 -0000 Author: emaste Date: Tue May 1 19:34:33 2018 New Revision: 333151 URL: https://svnweb.freebsd.org/changeset/base/333151 Log: MFC r332849: lldb: propagate error to user if memory read fails Previously, an attempt to read an unreadable access reported zeros: (lldb) memory read -format hex -size 8 0 0x00000000: 0x0000000000000000 0x0000000000000000 0x00000010: 0x0000000000000000 0x0000000000000000 ... Now, if DoReadMemory encounters error then return 0 (bytes read) so we report the error to the user: (lldb) memory read -format hex -size 8 0 error: Bad address LLVM PR: 37190 Sponsored by: The FreeBSD Foundation Modified: stable/11/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp Directory Properties: stable/11/ (props changed) Modified: stable/11/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp ============================================================================== --- stable/11/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp Tue May 1 19:17:38 2018 (r333150) +++ stable/11/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp Tue May 1 19:34:33 2018 (r333151) @@ -163,8 +163,10 @@ static size_t DoReadMemory(lldb::pid_t pid, lldb::addr pi_desc.piod_addr = buf; pi_desc.piod_len = size; - if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) + if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) { error.SetErrorToErrno(); + return 0; + } return pi_desc.piod_len; } From owner-svn-src-all@freebsd.org Tue May 1 20:09:30 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B17B0FB6BD5; Tue, 1 May 2018 20:09:30 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6126084F8E; Tue, 1 May 2018 20:09:30 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5569D26B49; Tue, 1 May 2018 20:09:30 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41K9Ukm024518; Tue, 1 May 2018 20:09:30 GMT (envelope-from scottl@FreeBSD.org) Received: (from scottl@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41K9TgQ024512; Tue, 1 May 2018 20:09:29 GMT (envelope-from scottl@FreeBSD.org) Message-Id: <201805012009.w41K9TgQ024512@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: scottl set sender to scottl@FreeBSD.org using -f From: Scott Long Date: Tue, 1 May 2018 20:09:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333152 - in head/sys/cam: ata scsi X-SVN-Group: head X-SVN-Commit-Author: scottl X-SVN-Commit-Paths: in head/sys/cam: ata scsi X-SVN-Commit-Revision: 333152 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 20:09:31 -0000 Author: scottl Date: Tue May 1 20:09:29 2018 New Revision: 333152 URL: https://svnweb.freebsd.org/changeset/base/333152 Log: cam_periph_runccb() changed several years ago to overwrite the ccb callback pointer. It's now unhelpful and misleading for callers to continue to set it, so bring all callers into conformance. There's no real functional change, but it makes reading the code a lot less confusing. Sponsored by: Netflix Modified: head/sys/cam/ata/ata_da.c head/sys/cam/scsi/scsi_cd.c head/sys/cam/scsi/scsi_da.c head/sys/cam/scsi/scsi_pass.c head/sys/cam/scsi/scsi_sa.c head/sys/cam/scsi/scsi_sg.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Tue May 1 19:34:33 2018 (r333151) +++ head/sys/cam/ata/ata_da.c Tue May 1 20:09:29 2018 (r333152) @@ -957,7 +957,7 @@ adaclose(struct disk *dp) ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); cam_fill_ataio(&ccb->ataio, 1, - adadone, + NULL, CAM_DIR_NONE, 0, NULL, @@ -1075,7 +1075,7 @@ adadump(void *arg, void *virtual, vm_offset_t physical ataio.ccb_h.ccb_state = ADA_CCB_DUMP; cam_fill_ataio(&ataio, 0, - adadone, + NULL, CAM_DIR_OUT, 0, (u_int8_t *) virtual, @@ -1109,7 +1109,7 @@ adadump(void *arg, void *virtual, vm_offset_t physical ataio.ccb_h.ccb_state = ADA_CCB_DUMP; cam_fill_ataio(&ataio, 0, - adadone, + NULL, CAM_DIR_NONE, 0, NULL, @@ -3439,7 +3439,7 @@ adaflush(void) ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); cam_fill_ataio(&ccb->ataio, 0, - adadone, + NULL, CAM_DIR_NONE, 0, NULL, @@ -3491,7 +3491,7 @@ adaspindown(uint8_t cmd, int flags) cam_fill_ataio(&local_ccb, 0, - adadone, + NULL, CAM_DIR_NONE | flags, 0, NULL, Modified: head/sys/cam/scsi/scsi_cd.c ============================================================================== --- head/sys/cam/scsi/scsi_cd.c Tue May 1 19:34:33 2018 (r333151) +++ head/sys/cam/scsi/scsi_cd.c Tue May 1 20:09:29 2018 (r333152) @@ -2178,7 +2178,7 @@ cdprevent(struct cam_periph *periph, int action) scsi_prevent(&ccb->csio, /*retries*/ cd_retry_count, - cddone, + /*cbfcnp*/NULL, MSG_SIMPLE_Q_TAG, action, SSD_FULL_SIZE, @@ -2364,7 +2364,7 @@ cdsize(struct cam_periph *periph, u_int32_t *size) scsi_read_capacity(&ccb->csio, /*retries*/ cd_retry_count, - cddone, + /*cbfcnp*/NULL, MSG_SIMPLE_Q_TAG, rcap_buf, SSD_FULL_SIZE, @@ -2635,7 +2635,7 @@ cdreadtoc(struct cam_periph *periph, u_int32_t mode, u cam_fill_csio(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* flags */ CAM_DIR_IN, /* tag_action */ MSG_SIMPLE_Q_TAG, /* data_ptr */ data, @@ -2682,7 +2682,7 @@ cdreadsubchannel(struct cam_periph *periph, u_int32_t cam_fill_csio(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* flags */ CAM_DIR_IN, /* tag_action */ MSG_SIMPLE_Q_TAG, /* data_ptr */ (u_int8_t *)data, @@ -2743,7 +2743,7 @@ cdgetmode(struct cam_periph *periph, struct cd_mode_pa scsi_mode_sense_len(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* tag_action */ MSG_SIMPLE_Q_TAG, /* dbd */ 0, /* page_code */ SMS_PAGE_CTRL_CURRENT, @@ -2886,7 +2886,7 @@ cdsetmode(struct cam_periph *periph, struct cd_mode_pa scsi_mode_select_len(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* tag_action */ MSG_SIMPLE_Q_TAG, /* scsi_page_fmt */ 1, /* save_pages */ 0, @@ -2948,7 +2948,7 @@ cdplay(struct cam_periph *periph, u_int32_t blk, u_int } cam_fill_csio(csio, /*retries*/ cd_retry_count, - cddone, + /*cbfcnp*/NULL, /*flags*/CAM_DIR_NONE, MSG_SIMPLE_Q_TAG, /*dataptr*/NULL, @@ -2982,7 +2982,7 @@ cdplaymsf(struct cam_periph *periph, u_int32_t startm, cam_fill_csio(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* flags */ CAM_DIR_NONE, /* tag_action */ MSG_SIMPLE_Q_TAG, /* data_ptr */ NULL, @@ -3028,7 +3028,7 @@ cdplaytracks(struct cam_periph *periph, u_int32_t stra cam_fill_csio(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* flags */ CAM_DIR_NONE, /* tag_action */ MSG_SIMPLE_Q_TAG, /* data_ptr */ NULL, @@ -3070,7 +3070,7 @@ cdpause(struct cam_periph *periph, u_int32_t go) cam_fill_csio(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* flags */ CAM_DIR_NONE, /* tag_action */ MSG_SIMPLE_Q_TAG, /* data_ptr */ NULL, @@ -3105,7 +3105,7 @@ cdstartunit(struct cam_periph *periph, int load) scsi_start_stop(&ccb->csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* tag_action */ MSG_SIMPLE_Q_TAG, /* start */ TRUE, /* load_eject */ load, @@ -3133,7 +3133,7 @@ cdstopunit(struct cam_periph *periph, u_int32_t eject) scsi_start_stop(&ccb->csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* tag_action */ MSG_SIMPLE_Q_TAG, /* start */ FALSE, /* load_eject */ eject, @@ -3169,7 +3169,7 @@ cdsetspeed(struct cam_periph *periph, u_int32_t rdspee cam_fill_csio(csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* flags */ CAM_DIR_NONE, /* tag_action */ MSG_SIMPLE_Q_TAG, /* data_ptr */ NULL, @@ -3244,7 +3244,7 @@ cdreportkey(struct cam_periph *periph, struct dvd_auth scsi_report_key(&ccb->csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* tag_action */ MSG_SIMPLE_Q_TAG, /* lba */ lba, /* agid */ authinfo->agid, @@ -3422,7 +3422,7 @@ cdsendkey(struct cam_periph *periph, struct dvd_authin scsi_send_key(&ccb->csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* tag_action */ MSG_SIMPLE_Q_TAG, /* agid */ authinfo->agid, /* key_format */ authinfo->format, @@ -3526,7 +3526,7 @@ cdreaddvdstructure(struct cam_periph *periph, struct d scsi_read_dvd_structure(&ccb->csio, /* retries */ cd_retry_count, - /* cbfcnp */ cddone, + /* cbfcnp */ NULL, /* tag_action */ MSG_SIMPLE_Q_TAG, /* lba */ address, /* layer_number */ dvdstruct->layer_num, Modified: head/sys/cam/scsi/scsi_da.c ============================================================================== --- head/sys/cam/scsi/scsi_da.c Tue May 1 19:34:33 2018 (r333151) +++ head/sys/cam/scsi/scsi_da.c Tue May 1 20:09:29 2018 (r333152) @@ -1694,7 +1694,7 @@ daclose(struct disk *dp) (softc->flags & DA_FLAG_PACK_INVALID) == 0) { ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_synchronize_cache(&ccb->csio, /*retries*/1, - /*cbfcnp*/dadone, MSG_SIMPLE_Q_TAG, + /*cbfcnp*/NULL, MSG_SIMPLE_Q_TAG, /*begin_lba*/0, /*lb_count*/0, SSD_FULL_SIZE, 5 * 60 * 1000); cam_periph_runccb(ccb, daerror, /*cam_flags*/0, @@ -1812,7 +1812,7 @@ dadump(void *arg, void *virtual, vm_offset_t physical, csio.ccb_h.ccb_state = DA_CCB_DUMP; scsi_read_write(&csio, /*retries*/0, - dadone, + /*cbfcnp*/NULL, MSG_ORDERED_Q_TAG, /*read*/SCSI_RW_WRITE, /*byte2*/0, @@ -1839,7 +1839,7 @@ dadump(void *arg, void *virtual, vm_offset_t physical, csio.ccb_h.ccb_state = DA_CCB_DUMP; scsi_synchronize_cache(&csio, /*retries*/0, - /*cbfcnp*/dadone, + /*cbfcnp*/NULL, MSG_SIMPLE_Q_TAG, /*begin_lba*/0,/* Cover the whole disk */ /*lb_count*/0, @@ -5738,7 +5738,7 @@ daprevent(struct cam_periph *periph, int action) scsi_prevent(&ccb->csio, /*retries*/1, - /*cbcfp*/dadone, + /*cbcfp*/NULL, MSG_SIMPLE_Q_TAG, action, SSD_FULL_SIZE, @@ -5935,7 +5935,7 @@ dashutdown(void * arg, int howto) ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_synchronize_cache(&ccb->csio, /*retries*/0, - /*cbfcnp*/dadone, + /*cbfcnp*/NULL, MSG_SIMPLE_Q_TAG, /*begin_lba*/0, /* whole disk */ /*lb_count*/0, Modified: head/sys/cam/scsi/scsi_pass.c ============================================================================== --- head/sys/cam/scsi/scsi_pass.c Tue May 1 19:34:33 2018 (r333151) +++ head/sys/cam/scsi/scsi_pass.c Tue May 1 20:09:29 2018 (r333152) @@ -2221,10 +2221,6 @@ passsendccb(struct cam_periph *periph, union ccb *ccb, } /* - */ - ccb->ccb_h.cbfcnp = passdone; - - /* * Let cam_periph_mapmem do a sanity check on the data pointer format. * Even if no data transfer is needed, it's a cheap check and it * simplifies the code. Modified: head/sys/cam/scsi/scsi_sa.c ============================================================================== --- head/sys/cam/scsi/scsi_sa.c Tue May 1 19:34:33 2018 (r333151) +++ head/sys/cam/scsi/scsi_sa.c Tue May 1 20:09:29 2018 (r333152) @@ -2895,13 +2895,13 @@ samount(struct cam_periph *periph, int oflags, struct if (softc->flags & SA_FLAG_TAPE_MOUNTED) { ccb = cam_periph_getccb(periph, 1); - scsi_test_unit_ready(&ccb->csio, 0, sadone, + scsi_test_unit_ready(&ccb->csio, 0, NULL, MSG_SIMPLE_Q_TAG, SSD_FULL_SIZE, IO_TIMEOUT); error = cam_periph_runccb(ccb, saerror, 0, SF_NO_PRINT, softc->device_stats); if (error == ENXIO) { softc->flags &= ~SA_FLAG_TAPE_MOUNTED; - scsi_test_unit_ready(&ccb->csio, 0, sadone, + scsi_test_unit_ready(&ccb->csio, 0, NULL, MSG_SIMPLE_Q_TAG, SSD_FULL_SIZE, IO_TIMEOUT); error = cam_periph_runccb(ccb, saerror, 0, SF_NO_PRINT, softc->device_stats); @@ -2922,7 +2922,7 @@ samount(struct cam_periph *periph, int oflags, struct return (error); } ccb = cam_periph_getccb(periph, 1); - scsi_test_unit_ready(&ccb->csio, 0, sadone, + scsi_test_unit_ready(&ccb->csio, 0, NULL, MSG_SIMPLE_Q_TAG, SSD_FULL_SIZE, IO_TIMEOUT); error = cam_periph_runccb(ccb, saerror, 0, SF_NO_PRINT, softc->device_stats); @@ -2943,7 +2943,7 @@ samount(struct cam_periph *periph, int oflags, struct /* * *Very* first off, make sure we're loaded to BOT. */ - scsi_load_unload(&ccb->csio, 2, sadone, MSG_SIMPLE_Q_TAG, FALSE, + scsi_load_unload(&ccb->csio, 2, NULL, MSG_SIMPLE_Q_TAG, FALSE, FALSE, FALSE, 1, SSD_FULL_SIZE, REWIND_TIMEOUT); error = cam_periph_runccb(ccb, saerror, 0, SF_NO_PRINT, softc->device_stats); @@ -2952,7 +2952,7 @@ samount(struct cam_periph *periph, int oflags, struct * In case this doesn't work, do a REWIND instead */ if (error) { - scsi_rewind(&ccb->csio, 2, sadone, MSG_SIMPLE_Q_TAG, + scsi_rewind(&ccb->csio, 2, NULL, MSG_SIMPLE_Q_TAG, FALSE, SSD_FULL_SIZE, REWIND_TIMEOUT); error = cam_periph_runccb(ccb, saerror, 0, SF_NO_PRINT, softc->device_stats); @@ -2979,13 +2979,13 @@ samount(struct cam_periph *periph, int oflags, struct } if ((softc->quirks & SA_QUIRK_NODREAD) == 0) { - scsi_sa_read_write(&ccb->csio, 0, sadone, + scsi_sa_read_write(&ccb->csio, 0, NULL, MSG_SIMPLE_Q_TAG, 1, FALSE, 0, 8192, (void *) rblim, 8192, SSD_FULL_SIZE, IO_TIMEOUT); (void) cam_periph_runccb(ccb, saerror, 0, SF_NO_PRINT, softc->device_stats); - scsi_rewind(&ccb->csio, 1, sadone, MSG_SIMPLE_Q_TAG, + scsi_rewind(&ccb->csio, 1, NULL, MSG_SIMPLE_Q_TAG, FALSE, SSD_FULL_SIZE, REWIND_TIMEOUT); error = cam_periph_runccb(ccb, saerror, CAM_RETRY_SELTO, SF_NO_PRINT | SF_RETRY_UA, @@ -3001,7 +3001,7 @@ samount(struct cam_periph *periph, int oflags, struct /* * Next off, determine block limits. */ - scsi_read_block_limits(&ccb->csio, 5, sadone, MSG_SIMPLE_Q_TAG, + scsi_read_block_limits(&ccb->csio, 5, NULL, MSG_SIMPLE_Q_TAG, rblim, SSD_FULL_SIZE, SCSIOP_TIMEOUT); error = cam_periph_runccb(ccb, saerror, CAM_RETRY_SELTO, @@ -3616,7 +3616,7 @@ retry: mode_blk = (struct scsi_mode_blk_desc *)&mode_hdr[1]; /* it is safe to retry this */ - scsi_mode_sense(&ccb->csio, 5, sadone, MSG_SIMPLE_Q_TAG, FALSE, + scsi_mode_sense(&ccb->csio, 5, NULL, MSG_SIMPLE_Q_TAG, FALSE, SMS_PAGE_CTRL_CURRENT, (params_to_get & SA_PARAM_COMPRESSION) ? cpage : SMS_VENDOR_SPECIFIC_PAGE, mode_buffer, mode_buffer_len, SSD_FULL_SIZE, SCSIOP_TIMEOUT); @@ -3679,7 +3679,7 @@ retry: * for the block descriptor, etc. */ - scsi_mode_sense(&ccb->csio, 2, sadone, MSG_SIMPLE_Q_TAG, FALSE, + scsi_mode_sense(&ccb->csio, 2, NULL, MSG_SIMPLE_Q_TAG, FALSE, SMS_PAGE_CTRL_CURRENT, SMS_VENDOR_SPECIFIC_PAGE, mode_buffer, mode_buffer_len, SSD_FULL_SIZE, SCSIOP_TIMEOUT); @@ -3741,7 +3741,7 @@ retry: for (i = 0; i < SA_DENSITY_TYPES; i++) { scsi_report_density_support(&ccb->csio, /*retries*/ 1, - /*cbfcnp*/ sadone, + /*cbfcnp*/ NULL, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*media*/ softc->density_type_bits[i] & SRDS_MEDIA, /*medium_type*/ softc->density_type_bits[i] & @@ -3800,7 +3800,7 @@ retry: scsi_mode_sense_len(&ccb->csio, /*retries*/ 5, - /*cbfcnp*/ sadone, + /*cbfcnp*/ NULL, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*dbd*/ TRUE, /*page_code*/ (prot_changeable == 0) ? @@ -4031,7 +4031,7 @@ retry_length: scsi_mode_select_len(&ccb->csio, /*retries*/ 5, - /*cbfcnp*/ sadone, + /*cbfcnp*/ NULL, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*scsi_page_fmt*/ TRUE, /*save_pages*/ FALSE, @@ -4307,7 +4307,7 @@ retry: } /* It is safe to retry this operation */ - scsi_mode_select(&ccb->csio, 5, sadone, MSG_SIMPLE_Q_TAG, + scsi_mode_select(&ccb->csio, 5, NULL, MSG_SIMPLE_Q_TAG, (params_to_set & SA_PARAM_COMPRESSION)? TRUE : FALSE, FALSE, mode_buffer, mode_buffer_len, SSD_FULL_SIZE, SCSIOP_TIMEOUT); @@ -4625,7 +4625,7 @@ saprevent(struct cam_periph *periph, int action) ccb = cam_periph_getccb(periph, 1); /* It is safe to retry this operation */ - scsi_prevent(&ccb->csio, 5, sadone, MSG_SIMPLE_Q_TAG, action, + scsi_prevent(&ccb->csio, 5, NULL, MSG_SIMPLE_Q_TAG, action, SSD_FULL_SIZE, SCSIOP_TIMEOUT); error = cam_periph_runccb(ccb, saerror, 0, sf, softc->device_stats); @@ -4651,7 +4651,7 @@ sarewind(struct cam_periph *periph) ccb = cam_periph_getccb(periph, 1); /* It is safe to retry this operation */ - scsi_rewind(&ccb->csio, 2, sadone, MSG_SIMPLE_Q_TAG, FALSE, + scsi_rewind(&ccb->csio, 2, NULL, MSG_SIMPLE_Q_TAG, FALSE, SSD_FULL_SIZE, REWIND_TIMEOUT); softc->dsreg = MTIO_DSREG_REW; @@ -4683,7 +4683,7 @@ saspace(struct cam_periph *periph, int count, scsi_spa /* This cannot be retried */ - scsi_space(&ccb->csio, 0, sadone, MSG_SIMPLE_Q_TAG, code, count, + scsi_space(&ccb->csio, 0, NULL, MSG_SIMPLE_Q_TAG, code, count, SSD_FULL_SIZE, SPACE_TIMEOUT); /* @@ -4764,7 +4764,7 @@ sawritefilemarks(struct cam_periph *periph, int nmarks softc->dsreg = MTIO_DSREG_FMK; /* this *must* not be retried */ - scsi_write_filemarks(&ccb->csio, 0, sadone, MSG_SIMPLE_Q_TAG, + scsi_write_filemarks(&ccb->csio, 0, NULL, MSG_SIMPLE_Q_TAG, immed, setmarks, nmarks, SSD_FULL_SIZE, IO_TIMEOUT); softc->dsreg = MTIO_DSREG_REST; @@ -4827,7 +4827,7 @@ sagetpos(struct cam_periph *periph) ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_read_position_10(&ccb->csio, /*retries*/ 1, - /*cbfcnp*/ sadone, + /*cbfcnp*/ NULL, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*service_action*/ SA_RPOS_LONG_FORM, /*data_ptr*/ (uint8_t *)&long_pos, @@ -4928,7 +4928,7 @@ sardpos(struct cam_periph *periph, int hard, u_int32_t } ccb = cam_periph_getccb(periph, 1); - scsi_read_position(&ccb->csio, 1, sadone, MSG_SIMPLE_Q_TAG, + scsi_read_position(&ccb->csio, 1, NULL, MSG_SIMPLE_Q_TAG, hard, &loc, SSD_FULL_SIZE, SCSIOP_TIMEOUT); softc->dsreg = MTIO_DSREG_RBSY; error = cam_periph_runccb(ccb, saerror, 0, 0, softc->device_stats); @@ -4988,7 +4988,7 @@ sasetpos(struct cam_periph *periph, int hard, struct m if (locate16 != 0) { scsi_locate_16(&ccb->csio, /*retries*/ 1, - /*cbfcnp*/ sadone, + /*cbfcnp*/ NULL, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*immed*/ immed, /*cp*/ cp, @@ -5001,7 +5001,7 @@ sasetpos(struct cam_periph *periph, int hard, struct m } else { scsi_locate_10(&ccb->csio, /*retries*/ 1, - /*cbfcnp*/ sadone, + /*cbfcnp*/ NULL, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*immed*/ immed, /*cp*/ cp, @@ -5071,7 +5071,7 @@ saretension(struct cam_periph *periph) ccb = cam_periph_getccb(periph, 1); /* It is safe to retry this operation */ - scsi_load_unload(&ccb->csio, 5, sadone, MSG_SIMPLE_Q_TAG, FALSE, + scsi_load_unload(&ccb->csio, 5, NULL, MSG_SIMPLE_Q_TAG, FALSE, FALSE, TRUE, TRUE, SSD_FULL_SIZE, ERASE_TIMEOUT); softc->dsreg = MTIO_DSREG_TEN; @@ -5098,7 +5098,7 @@ sareservereleaseunit(struct cam_periph *periph, int re ccb = cam_periph_getccb(periph, 1); /* It is safe to retry this operation */ - scsi_reserve_release_unit(&ccb->csio, 2, sadone, MSG_SIMPLE_Q_TAG, + scsi_reserve_release_unit(&ccb->csio, 2, NULL, MSG_SIMPLE_Q_TAG, FALSE, 0, SSD_FULL_SIZE, SCSIOP_TIMEOUT, reserve); softc->dsreg = MTIO_DSREG_RBSY; error = cam_periph_runccb(ccb, saerror, 0, @@ -5129,7 +5129,7 @@ saloadunload(struct cam_periph *periph, int load) ccb = cam_periph_getccb(periph, 1); /* It is safe to retry this operation */ - scsi_load_unload(&ccb->csio, 5, sadone, MSG_SIMPLE_Q_TAG, FALSE, + scsi_load_unload(&ccb->csio, 5, NULL, MSG_SIMPLE_Q_TAG, FALSE, FALSE, FALSE, load, SSD_FULL_SIZE, REWIND_TIMEOUT); softc->dsreg = (load)? MTIO_DSREG_LD : MTIO_DSREG_UNL; @@ -5161,7 +5161,7 @@ saerase(struct cam_periph *periph, int longerase) ccb = cam_periph_getccb(periph, 1); - scsi_erase(&ccb->csio, 1, sadone, MSG_SIMPLE_Q_TAG, FALSE, longerase, + scsi_erase(&ccb->csio, 1, NULL, MSG_SIMPLE_Q_TAG, FALSE, longerase, SSD_FULL_SIZE, ERASE_TIMEOUT); softc->dsreg = MTIO_DSREG_ZER; Modified: head/sys/cam/scsi/scsi_sg.c ============================================================================== --- head/sys/cam/scsi/scsi_sg.c Tue May 1 19:34:33 2018 (r333151) +++ head/sys/cam/scsi/scsi_sg.c Tue May 1 20:09:29 2018 (r333152) @@ -580,7 +580,7 @@ sgioctl(struct cdev *dev, u_long cmd, caddr_t arg, int cam_fill_csio(csio, /*retries*/1, - sgdone, + /*cbfcnp*/NULL, dir|CAM_DEV_QFRZDIS, MSG_SIMPLE_Q_TAG, req->dxferp, From owner-svn-src-all@freebsd.org Tue May 1 20:17:24 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C36F8FB714E; Tue, 1 May 2018 20:17:23 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 719F386AF8; Tue, 1 May 2018 20:17:23 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 69FE226CDE; Tue, 1 May 2018 20:17:23 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41KHNCw029545; Tue, 1 May 2018 20:17:23 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41KHNRS029540; Tue, 1 May 2018 20:17:23 GMT (envelope-from np@FreeBSD.org) Message-Id: <201805012017.w41KHNRS029540@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Tue, 1 May 2018 20:17:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333153 - in head/sys: conf dev/cxgbe modules/cxgbe/if_cxgbe X-SVN-Group: head X-SVN-Commit-Author: np X-SVN-Commit-Paths: in head/sys: conf dev/cxgbe modules/cxgbe/if_cxgbe X-SVN-Commit-Revision: 333153 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 20:17:24 -0000 Author: np Date: Tue May 1 20:17:22 2018 New Revision: 333153 URL: https://svnweb.freebsd.org/changeset/base/333153 Log: cxgbe(4): Move all TCAM filter code into a separate file. Sponsored by: Chelsio Communications Added: head/sys/dev/cxgbe/t4_filter.c (contents, props changed) Modified: head/sys/conf/files head/sys/dev/cxgbe/adapter.h head/sys/dev/cxgbe/t4_main.c head/sys/modules/cxgbe/if_cxgbe/Makefile Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Tue May 1 20:09:29 2018 (r333152) +++ head/sys/conf/files Tue May 1 20:17:22 2018 (r333153) @@ -1394,6 +1394,8 @@ dev/cxgb/sys/uipc_mvec.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/cxgb_t3fw.c optional cxgb cxgb_t3fw \ compile-with "${NORMAL_C} -I$S/dev/cxgb" +dev/cxgbe/t4_filter.c optional cxgbe pci \ + compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_if.m optional cxgbe pci dev/cxgbe/t4_iov.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" Modified: head/sys/dev/cxgbe/adapter.h ============================================================================== --- head/sys/dev/cxgbe/adapter.h Tue May 1 20:09:29 2018 (r333152) +++ head/sys/dev/cxgbe/adapter.h Tue May 1 20:17:22 2018 (r333153) @@ -1158,7 +1158,6 @@ void t4_init_devnames(struct adapter *); void t4_add_adapter(struct adapter *); void t4_aes_getdeckey(void *, const void *, unsigned int); int t4_detach_common(device_t); -int t4_filter_rpl(struct sge_iq *, const struct rss_header *, struct mbuf *); int t4_map_bars_0_and_4(struct adapter *); int t4_map_bar_2(struct adapter *); int t4_setup_intr_handlers(struct adapter *); @@ -1237,6 +1236,14 @@ int t4_free_tx_sched(struct adapter *); void t4_update_tx_sched(struct adapter *); int t4_reserve_cl_rl_kbps(struct adapter *, int, u_int, int *); void t4_release_cl_rl_kbps(struct adapter *, int, int); + +/* t4_filter.c */ +int get_filter_mode(struct adapter *, uint32_t *); +int set_filter_mode(struct adapter *, uint32_t); +int get_filter(struct adapter *, struct t4_filter *); +int set_filter(struct adapter *, struct t4_filter *); +int del_filter(struct adapter *, struct t4_filter *); +int t4_filter_rpl(struct sge_iq *, const struct rss_header *, struct mbuf *); static inline struct wrqe * alloc_wrqe(int wr_len, struct sge_wrq *wrq) Added: head/sys/dev/cxgbe/t4_filter.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/cxgbe/t4_filter.c Tue May 1 20:17:22 2018 (r333153) @@ -0,0 +1,686 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018 Chelsio Communications, Inc. + * 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 +__FBSDID("$FreeBSD$"); + +#include "opt_inet.h" +#include "opt_inet6.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/common.h" +#include "common/t4_msg.h" +#include "common/t4_regs.h" +#include "t4_l2t.h" + +struct filter_entry { + uint32_t valid:1; /* filter allocated and valid */ + uint32_t locked:1; /* filter is administratively locked */ + uint32_t pending:1; /* filter action is pending firmware reply */ + uint32_t smtidx:8; /* Source MAC Table index for smac */ + struct l2t_entry *l2t; /* Layer Two Table entry for dmac */ + + struct t4_filter_specification fs; +}; + +static uint32_t +fconf_iconf_to_mode(uint32_t fconf, uint32_t iconf) +{ + uint32_t mode; + + mode = T4_FILTER_IPv4 | T4_FILTER_IPv6 | T4_FILTER_IP_SADDR | + T4_FILTER_IP_DADDR | T4_FILTER_IP_SPORT | T4_FILTER_IP_DPORT; + + if (fconf & F_FRAGMENTATION) + mode |= T4_FILTER_IP_FRAGMENT; + + if (fconf & F_MPSHITTYPE) + mode |= T4_FILTER_MPS_HIT_TYPE; + + if (fconf & F_MACMATCH) + mode |= T4_FILTER_MAC_IDX; + + if (fconf & F_ETHERTYPE) + mode |= T4_FILTER_ETH_TYPE; + + if (fconf & F_PROTOCOL) + mode |= T4_FILTER_IP_PROTO; + + if (fconf & F_TOS) + mode |= T4_FILTER_IP_TOS; + + if (fconf & F_VLAN) + mode |= T4_FILTER_VLAN; + + if (fconf & F_VNIC_ID) { + mode |= T4_FILTER_VNIC; + if (iconf & F_VNIC) + mode |= T4_FILTER_IC_VNIC; + } + + if (fconf & F_PORT) + mode |= T4_FILTER_PORT; + + if (fconf & F_FCOE) + mode |= T4_FILTER_FCoE; + + return (mode); +} + +static uint32_t +mode_to_fconf(uint32_t mode) +{ + uint32_t fconf = 0; + + if (mode & T4_FILTER_IP_FRAGMENT) + fconf |= F_FRAGMENTATION; + + if (mode & T4_FILTER_MPS_HIT_TYPE) + fconf |= F_MPSHITTYPE; + + if (mode & T4_FILTER_MAC_IDX) + fconf |= F_MACMATCH; + + if (mode & T4_FILTER_ETH_TYPE) + fconf |= F_ETHERTYPE; + + if (mode & T4_FILTER_IP_PROTO) + fconf |= F_PROTOCOL; + + if (mode & T4_FILTER_IP_TOS) + fconf |= F_TOS; + + if (mode & T4_FILTER_VLAN) + fconf |= F_VLAN; + + if (mode & T4_FILTER_VNIC) + fconf |= F_VNIC_ID; + + if (mode & T4_FILTER_PORT) + fconf |= F_PORT; + + if (mode & T4_FILTER_FCoE) + fconf |= F_FCOE; + + return (fconf); +} + +static uint32_t +mode_to_iconf(uint32_t mode) +{ + + if (mode & T4_FILTER_IC_VNIC) + return (F_VNIC); + return (0); +} + +static int check_fspec_against_fconf_iconf(struct adapter *sc, + struct t4_filter_specification *fs) +{ + struct tp_params *tpp = &sc->params.tp; + uint32_t fconf = 0; + + if (fs->val.frag || fs->mask.frag) + fconf |= F_FRAGMENTATION; + + if (fs->val.matchtype || fs->mask.matchtype) + fconf |= F_MPSHITTYPE; + + if (fs->val.macidx || fs->mask.macidx) + fconf |= F_MACMATCH; + + if (fs->val.ethtype || fs->mask.ethtype) + fconf |= F_ETHERTYPE; + + if (fs->val.proto || fs->mask.proto) + fconf |= F_PROTOCOL; + + if (fs->val.tos || fs->mask.tos) + fconf |= F_TOS; + + if (fs->val.vlan_vld || fs->mask.vlan_vld) + fconf |= F_VLAN; + + if (fs->val.ovlan_vld || fs->mask.ovlan_vld) { + fconf |= F_VNIC_ID; + if (tpp->ingress_config & F_VNIC) + return (EINVAL); + } + + if (fs->val.pfvf_vld || fs->mask.pfvf_vld) { + fconf |= F_VNIC_ID; + if ((tpp->ingress_config & F_VNIC) == 0) + return (EINVAL); + } + + if (fs->val.iport || fs->mask.iport) + fconf |= F_PORT; + + if (fs->val.fcoe || fs->mask.fcoe) + fconf |= F_FCOE; + + if ((tpp->vlan_pri_map | fconf) != tpp->vlan_pri_map) + return (E2BIG); + + return (0); +} + +int +get_filter_mode(struct adapter *sc, uint32_t *mode) +{ + struct tp_params *tpp = &sc->params.tp; + + /* + * We trust the cached values of the relevant TP registers. This means + * things work reliably only if writes to those registers are always via + * t4_set_filter_mode_. + */ + *mode = fconf_iconf_to_mode(tpp->vlan_pri_map, tpp->ingress_config); + + return (0); +} + +int +set_filter_mode(struct adapter *sc, uint32_t mode) +{ + struct tp_params *tpp = &sc->params.tp; + uint32_t fconf, iconf; + int rc; + + iconf = mode_to_iconf(mode); + if ((iconf ^ tpp->ingress_config) & F_VNIC) { + /* + * For now we just complain if A_TP_INGRESS_CONFIG is not + * already set to the correct value for the requested filter + * mode. It's not clear if it's safe to write to this register + * on the fly. (And we trust the cached value of the register). + */ + return (EBUSY); + } + + fconf = mode_to_fconf(mode); + + rc = begin_synchronized_op(sc, NULL, HOLD_LOCK | SLEEP_OK | INTR_OK, + "t4setfm"); + if (rc) + return (rc); + + if (sc->tids.ftids_in_use > 0) { + rc = EBUSY; + goto done; + } + +#ifdef TCP_OFFLOAD + if (uld_active(sc, ULD_TOM)) { + rc = EBUSY; + goto done; + } +#endif + + rc = -t4_set_filter_mode(sc, fconf, true); +done: + end_synchronized_op(sc, LOCK_HELD); + return (rc); +} + +static inline uint64_t +get_filter_hits(struct adapter *sc, uint32_t fid) +{ + uint32_t tcb_addr; + + tcb_addr = t4_read_reg(sc, A_TP_CMM_TCB_BASE) + + (fid + sc->tids.ftid_base) * TCB_SIZE; + + if (is_t4(sc)) { + uint64_t hits; + + read_via_memwin(sc, 0, tcb_addr + 16, (uint32_t *)&hits, 8); + return (be64toh(hits)); + } else { + uint32_t hits; + + read_via_memwin(sc, 0, tcb_addr + 24, &hits, 4); + return (be32toh(hits)); + } +} + +int +get_filter(struct adapter *sc, struct t4_filter *t) +{ + int i, rc, nfilters = sc->tids.nftids; + struct filter_entry *f; + + rc = begin_synchronized_op(sc, NULL, HOLD_LOCK | SLEEP_OK | INTR_OK, + "t4getf"); + if (rc) + return (rc); + + if (sc->tids.ftids_in_use == 0 || sc->tids.ftid_tab == NULL || + t->idx >= nfilters) { + t->idx = 0xffffffff; + goto done; + } + + f = &sc->tids.ftid_tab[t->idx]; + for (i = t->idx; i < nfilters; i++, f++) { + if (f->valid) { + t->idx = i; + t->l2tidx = f->l2t ? f->l2t->idx : 0; + t->smtidx = f->smtidx; + if (f->fs.hitcnts) + t->hits = get_filter_hits(sc, t->idx); + else + t->hits = UINT64_MAX; + t->fs = f->fs; + + goto done; + } + } + + t->idx = 0xffffffff; +done: + end_synchronized_op(sc, LOCK_HELD); + return (0); +} + +static int +set_filter_wr(struct adapter *sc, int fidx) +{ + struct filter_entry *f = &sc->tids.ftid_tab[fidx]; + struct fw_filter_wr *fwr; + unsigned int ftid, vnic_vld, vnic_vld_mask; + struct wrq_cookie cookie; + + ASSERT_SYNCHRONIZED_OP(sc); + + if (f->fs.newdmac || f->fs.newvlan) { + /* This filter needs an L2T entry; allocate one. */ + f->l2t = t4_l2t_alloc_switching(sc->l2t); + if (f->l2t == NULL) + return (EAGAIN); + if (t4_l2t_set_switching(sc, f->l2t, f->fs.vlan, f->fs.eport, + f->fs.dmac)) { + t4_l2t_release(f->l2t); + f->l2t = NULL; + return (ENOMEM); + } + } + + /* Already validated against fconf, iconf */ + MPASS((f->fs.val.pfvf_vld & f->fs.val.ovlan_vld) == 0); + MPASS((f->fs.mask.pfvf_vld & f->fs.mask.ovlan_vld) == 0); + if (f->fs.val.pfvf_vld || f->fs.val.ovlan_vld) + vnic_vld = 1; + else + vnic_vld = 0; + if (f->fs.mask.pfvf_vld || f->fs.mask.ovlan_vld) + vnic_vld_mask = 1; + else + vnic_vld_mask = 0; + + ftid = sc->tids.ftid_base + fidx; + + fwr = start_wrq_wr(&sc->sge.mgmtq, howmany(sizeof(*fwr), 16), &cookie); + if (fwr == NULL) + return (ENOMEM); + bzero(fwr, sizeof(*fwr)); + + fwr->op_pkd = htobe32(V_FW_WR_OP(FW_FILTER_WR)); + fwr->len16_pkd = htobe32(FW_LEN16(*fwr)); + fwr->tid_to_iq = + htobe32(V_FW_FILTER_WR_TID(ftid) | + V_FW_FILTER_WR_RQTYPE(f->fs.type) | + V_FW_FILTER_WR_NOREPLY(0) | + V_FW_FILTER_WR_IQ(f->fs.iq)); + fwr->del_filter_to_l2tix = + htobe32(V_FW_FILTER_WR_RPTTID(f->fs.rpttid) | + V_FW_FILTER_WR_DROP(f->fs.action == FILTER_DROP) | + V_FW_FILTER_WR_DIRSTEER(f->fs.dirsteer) | + V_FW_FILTER_WR_MASKHASH(f->fs.maskhash) | + V_FW_FILTER_WR_DIRSTEERHASH(f->fs.dirsteerhash) | + V_FW_FILTER_WR_LPBK(f->fs.action == FILTER_SWITCH) | + V_FW_FILTER_WR_DMAC(f->fs.newdmac) | + V_FW_FILTER_WR_SMAC(f->fs.newsmac) | + V_FW_FILTER_WR_INSVLAN(f->fs.newvlan == VLAN_INSERT || + f->fs.newvlan == VLAN_REWRITE) | + V_FW_FILTER_WR_RMVLAN(f->fs.newvlan == VLAN_REMOVE || + f->fs.newvlan == VLAN_REWRITE) | + V_FW_FILTER_WR_HITCNTS(f->fs.hitcnts) | + V_FW_FILTER_WR_TXCHAN(f->fs.eport) | + V_FW_FILTER_WR_PRIO(f->fs.prio) | + V_FW_FILTER_WR_L2TIX(f->l2t ? f->l2t->idx : 0)); + fwr->ethtype = htobe16(f->fs.val.ethtype); + fwr->ethtypem = htobe16(f->fs.mask.ethtype); + fwr->frag_to_ovlan_vldm = + (V_FW_FILTER_WR_FRAG(f->fs.val.frag) | + V_FW_FILTER_WR_FRAGM(f->fs.mask.frag) | + V_FW_FILTER_WR_IVLAN_VLD(f->fs.val.vlan_vld) | + V_FW_FILTER_WR_OVLAN_VLD(vnic_vld) | + V_FW_FILTER_WR_IVLAN_VLDM(f->fs.mask.vlan_vld) | + V_FW_FILTER_WR_OVLAN_VLDM(vnic_vld_mask)); + fwr->smac_sel = 0; + fwr->rx_chan_rx_rpl_iq = htobe16(V_FW_FILTER_WR_RX_CHAN(0) | + V_FW_FILTER_WR_RX_RPL_IQ(sc->sge.fwq.abs_id)); + fwr->maci_to_matchtypem = + htobe32(V_FW_FILTER_WR_MACI(f->fs.val.macidx) | + V_FW_FILTER_WR_MACIM(f->fs.mask.macidx) | + V_FW_FILTER_WR_FCOE(f->fs.val.fcoe) | + V_FW_FILTER_WR_FCOEM(f->fs.mask.fcoe) | + V_FW_FILTER_WR_PORT(f->fs.val.iport) | + V_FW_FILTER_WR_PORTM(f->fs.mask.iport) | + V_FW_FILTER_WR_MATCHTYPE(f->fs.val.matchtype) | + V_FW_FILTER_WR_MATCHTYPEM(f->fs.mask.matchtype)); + fwr->ptcl = f->fs.val.proto; + fwr->ptclm = f->fs.mask.proto; + fwr->ttyp = f->fs.val.tos; + fwr->ttypm = f->fs.mask.tos; + fwr->ivlan = htobe16(f->fs.val.vlan); + fwr->ivlanm = htobe16(f->fs.mask.vlan); + fwr->ovlan = htobe16(f->fs.val.vnic); + fwr->ovlanm = htobe16(f->fs.mask.vnic); + bcopy(f->fs.val.dip, fwr->lip, sizeof (fwr->lip)); + bcopy(f->fs.mask.dip, fwr->lipm, sizeof (fwr->lipm)); + bcopy(f->fs.val.sip, fwr->fip, sizeof (fwr->fip)); + bcopy(f->fs.mask.sip, fwr->fipm, sizeof (fwr->fipm)); + fwr->lp = htobe16(f->fs.val.dport); + fwr->lpm = htobe16(f->fs.mask.dport); + fwr->fp = htobe16(f->fs.val.sport); + fwr->fpm = htobe16(f->fs.mask.sport); + if (f->fs.newsmac) + bcopy(f->fs.smac, fwr->sma, sizeof (fwr->sma)); + + f->pending = 1; + sc->tids.ftids_in_use++; + + commit_wrq_wr(&sc->sge.mgmtq, fwr, &cookie); + return (0); +} + +int +set_filter(struct adapter *sc, struct t4_filter *t) +{ + unsigned int nfilters, nports; + struct filter_entry *f; + int i, rc; + + rc = begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4setf"); + if (rc) + return (rc); + + nfilters = sc->tids.nftids; + nports = sc->params.nports; + + if (nfilters == 0) { + rc = ENOTSUP; + goto done; + } + + if (t->idx >= nfilters) { + rc = EINVAL; + goto done; + } + + /* Validate against the global filter mode and ingress config */ + rc = check_fspec_against_fconf_iconf(sc, &t->fs); + if (rc != 0) + goto done; + + if (t->fs.action == FILTER_SWITCH && t->fs.eport >= nports) { + rc = EINVAL; + goto done; + } + + if (t->fs.val.iport >= nports) { + rc = EINVAL; + goto done; + } + + /* Can't specify an iq if not steering to it */ + if (!t->fs.dirsteer && t->fs.iq) { + rc = EINVAL; + goto done; + } + + /* IPv6 filter idx must be 4 aligned */ + if (t->fs.type == 1 && + ((t->idx & 0x3) || t->idx + 4 >= nfilters)) { + rc = EINVAL; + goto done; + } + + if (!(sc->flags & FULL_INIT_DONE) && + ((rc = adapter_full_init(sc)) != 0)) + goto done; + + if (sc->tids.ftid_tab == NULL) { + KASSERT(sc->tids.ftids_in_use == 0, + ("%s: no memory allocated but filters_in_use > 0", + __func__)); + + sc->tids.ftid_tab = malloc(sizeof (struct filter_entry) * + nfilters, M_CXGBE, M_NOWAIT | M_ZERO); + if (sc->tids.ftid_tab == NULL) { + rc = ENOMEM; + goto done; + } + mtx_init(&sc->tids.ftid_lock, "T4 filters", 0, MTX_DEF); + } + + for (i = 0; i < 4; i++) { + f = &sc->tids.ftid_tab[t->idx + i]; + + if (f->pending || f->valid) { + rc = EBUSY; + goto done; + } + if (f->locked) { + rc = EPERM; + goto done; + } + + if (t->fs.type == 0) + break; + } + + f = &sc->tids.ftid_tab[t->idx]; + f->fs = t->fs; + + rc = set_filter_wr(sc, t->idx); +done: + end_synchronized_op(sc, 0); + + if (rc == 0) { + mtx_lock(&sc->tids.ftid_lock); + for (;;) { + if (f->pending == 0) { + rc = f->valid ? 0 : EIO; + break; + } + + if (mtx_sleep(&sc->tids.ftid_tab, &sc->tids.ftid_lock, + PCATCH, "t4setfw", 0)) { + rc = EINPROGRESS; + break; + } + } + mtx_unlock(&sc->tids.ftid_lock); + } + return (rc); +} + +static int +del_filter_wr(struct adapter *sc, int fidx) +{ + struct filter_entry *f = &sc->tids.ftid_tab[fidx]; + struct fw_filter_wr *fwr; + unsigned int ftid; + struct wrq_cookie cookie; + + ftid = sc->tids.ftid_base + fidx; + + fwr = start_wrq_wr(&sc->sge.mgmtq, howmany(sizeof(*fwr), 16), &cookie); + if (fwr == NULL) + return (ENOMEM); + bzero(fwr, sizeof (*fwr)); + + t4_mk_filtdelwr(ftid, fwr, sc->sge.fwq.abs_id); + + f->pending = 1; + commit_wrq_wr(&sc->sge.mgmtq, fwr, &cookie); + return (0); +} + +int +del_filter(struct adapter *sc, struct t4_filter *t) +{ + unsigned int nfilters; + struct filter_entry *f; + int rc; + + rc = begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4delf"); + if (rc) + return (rc); + + nfilters = sc->tids.nftids; + + if (nfilters == 0) { + rc = ENOTSUP; + goto done; + } + + if (sc->tids.ftid_tab == NULL || sc->tids.ftids_in_use == 0 || + t->idx >= nfilters) { + rc = EINVAL; + goto done; + } + + if (!(sc->flags & FULL_INIT_DONE)) { + rc = EAGAIN; + goto done; + } + + f = &sc->tids.ftid_tab[t->idx]; + + if (f->pending) { + rc = EBUSY; + goto done; + } + if (f->locked) { + rc = EPERM; + goto done; + } + + if (f->valid) { + t->fs = f->fs; /* extra info for the caller */ + rc = del_filter_wr(sc, t->idx); + } + +done: + end_synchronized_op(sc, 0); + + if (rc == 0) { + mtx_lock(&sc->tids.ftid_lock); + for (;;) { + if (f->pending == 0) { + rc = f->valid ? EIO : 0; + break; + } + + if (mtx_sleep(&sc->tids.ftid_tab, &sc->tids.ftid_lock, + PCATCH, "t4delfw", 0)) { + rc = EINPROGRESS; + break; + } + } + mtx_unlock(&sc->tids.ftid_lock); + } + + return (rc); +} + +static void +clear_filter(struct filter_entry *f) +{ + if (f->l2t) + t4_l2t_release(f->l2t); + + bzero(f, sizeof (*f)); +} + +int +t4_filter_rpl(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) +{ + struct adapter *sc = iq->adapter; + const struct cpl_set_tcb_rpl *rpl = (const void *)(rss + 1); + unsigned int idx = GET_TID(rpl); + unsigned int rc; + struct filter_entry *f; + + KASSERT(m == NULL, ("%s: payload with opcode %02x", __func__, + rss->opcode)); + MPASS(iq == &sc->sge.fwq); + MPASS(is_ftid(sc, idx)); + + idx -= sc->tids.ftid_base; + f = &sc->tids.ftid_tab[idx]; + rc = G_COOKIE(rpl->cookie); + + mtx_lock(&sc->tids.ftid_lock); + if (rc == FW_FILTER_WR_FLT_ADDED) { + KASSERT(f->pending, ("%s: filter[%u] isn't pending.", + __func__, idx)); + f->smtidx = (be64toh(rpl->oldval) >> 24) & 0xff; + f->pending = 0; /* asynchronous setup completed */ + f->valid = 1; + } else { + if (rc != FW_FILTER_WR_FLT_DELETED) { + /* Add or delete failed, display an error */ + log(LOG_ERR, + "filter %u setup failed with error %u\n", + idx, rc); + } + + clear_filter(f); + sc->tids.ftids_in_use--; + } + wakeup(&sc->tids.ftid_tab); + mtx_unlock(&sc->tids.ftid_lock); + + return (0); +} Modified: head/sys/dev/cxgbe/t4_main.c ============================================================================== --- head/sys/dev/cxgbe/t4_main.c Tue May 1 20:09:29 2018 (r333152) +++ head/sys/dev/cxgbe/t4_main.c Tue May 1 20:17:22 2018 (r333153) @@ -509,16 +509,6 @@ struct intrs_and_queues { uint16_t nnmrxq_vi; /* # of netmap rxq's */ }; -struct filter_entry { - uint32_t valid:1; /* filter allocated and valid */ - uint32_t locked:1; /* filter is administratively locked */ - uint32_t pending:1; /* filter action is pending firmware reply */ - uint32_t smtidx:8; /* Source MAC Table index for smac */ - struct l2t_entry *l2t; /* Layer Two Table entry for dmac */ - - struct t4_filter_specification fs; -}; - static void setup_memwin(struct adapter *); static void position_memwin(struct adapter *, int, uint32_t); static int validate_mem_range(struct adapter *, uint32_t, int); @@ -605,20 +595,6 @@ static int sysctl_tp_backoff(SYSCTL_HANDLER_ARGS); static int sysctl_holdoff_tmr_idx_ofld(SYSCTL_HANDLER_ARGS); static int sysctl_holdoff_pktc_idx_ofld(SYSCTL_HANDLER_ARGS); #endif -static uint32_t fconf_iconf_to_mode(uint32_t, uint32_t); -static uint32_t mode_to_fconf(uint32_t); -static uint32_t mode_to_iconf(uint32_t); -static int check_fspec_against_fconf_iconf(struct adapter *, - struct t4_filter_specification *); -static int get_filter_mode(struct adapter *, uint32_t *); -static int set_filter_mode(struct adapter *, uint32_t); -static inline uint64_t get_filter_hits(struct adapter *, uint32_t); -static int get_filter(struct adapter *, struct t4_filter *); -static int set_filter(struct adapter *, struct t4_filter *); -static int del_filter(struct adapter *, struct t4_filter *); -static void clear_filter(struct filter_entry *); -static int set_filter_wr(struct adapter *, int); -static int del_filter_wr(struct adapter *, int); static int get_sge_context(struct adapter *, struct t4_sge_context *); static int load_fw(struct adapter *, struct t4_data *); static int load_cfg(struct adapter *, struct t4_data *); @@ -8645,632 +8621,6 @@ sysctl_holdoff_pktc_idx_ofld(SYSCTL_HANDLER_ARGS) return (rc); } #endif - -static uint32_t -fconf_iconf_to_mode(uint32_t fconf, uint32_t iconf) -{ - uint32_t mode; - - mode = T4_FILTER_IPv4 | T4_FILTER_IPv6 | T4_FILTER_IP_SADDR | - T4_FILTER_IP_DADDR | T4_FILTER_IP_SPORT | T4_FILTER_IP_DPORT; - - if (fconf & F_FRAGMENTATION) - mode |= T4_FILTER_IP_FRAGMENT; - - if (fconf & F_MPSHITTYPE) - mode |= T4_FILTER_MPS_HIT_TYPE; - - if (fconf & F_MACMATCH) - mode |= T4_FILTER_MAC_IDX; - - if (fconf & F_ETHERTYPE) - mode |= T4_FILTER_ETH_TYPE; - - if (fconf & F_PROTOCOL) - mode |= T4_FILTER_IP_PROTO; - - if (fconf & F_TOS) - mode |= T4_FILTER_IP_TOS; - - if (fconf & F_VLAN) - mode |= T4_FILTER_VLAN; - - if (fconf & F_VNIC_ID) { - mode |= T4_FILTER_VNIC; - if (iconf & F_VNIC) - mode |= T4_FILTER_IC_VNIC; - } - - if (fconf & F_PORT) - mode |= T4_FILTER_PORT; - - if (fconf & F_FCOE) - mode |= T4_FILTER_FCoE; - - return (mode); -} - -static uint32_t -mode_to_fconf(uint32_t mode) -{ - uint32_t fconf = 0; - - if (mode & T4_FILTER_IP_FRAGMENT) - fconf |= F_FRAGMENTATION; - - if (mode & T4_FILTER_MPS_HIT_TYPE) - fconf |= F_MPSHITTYPE; - - if (mode & T4_FILTER_MAC_IDX) - fconf |= F_MACMATCH; - - if (mode & T4_FILTER_ETH_TYPE) - fconf |= F_ETHERTYPE; - - if (mode & T4_FILTER_IP_PROTO) - fconf |= F_PROTOCOL; - - if (mode & T4_FILTER_IP_TOS) - fconf |= F_TOS; - - if (mode & T4_FILTER_VLAN) - fconf |= F_VLAN; - - if (mode & T4_FILTER_VNIC) - fconf |= F_VNIC_ID; - - if (mode & T4_FILTER_PORT) - fconf |= F_PORT; - - if (mode & T4_FILTER_FCoE) - fconf |= F_FCOE; - - return (fconf); -} - -static uint32_t -mode_to_iconf(uint32_t mode) -{ - - if (mode & T4_FILTER_IC_VNIC) - return (F_VNIC); - return (0); -} - -static int check_fspec_against_fconf_iconf(struct adapter *sc, - struct t4_filter_specification *fs) -{ - struct tp_params *tpp = &sc->params.tp; - uint32_t fconf = 0; - - if (fs->val.frag || fs->mask.frag) - fconf |= F_FRAGMENTATION; - - if (fs->val.matchtype || fs->mask.matchtype) - fconf |= F_MPSHITTYPE; - - if (fs->val.macidx || fs->mask.macidx) - fconf |= F_MACMATCH; - - if (fs->val.ethtype || fs->mask.ethtype) - fconf |= F_ETHERTYPE; - - if (fs->val.proto || fs->mask.proto) - fconf |= F_PROTOCOL; - - if (fs->val.tos || fs->mask.tos) - fconf |= F_TOS; - - if (fs->val.vlan_vld || fs->mask.vlan_vld) - fconf |= F_VLAN; - - if (fs->val.ovlan_vld || fs->mask.ovlan_vld) { - fconf |= F_VNIC_ID; - if (tpp->ingress_config & F_VNIC) - return (EINVAL); - } - - if (fs->val.pfvf_vld || fs->mask.pfvf_vld) { - fconf |= F_VNIC_ID; - if ((tpp->ingress_config & F_VNIC) == 0) - return (EINVAL); - } - - if (fs->val.iport || fs->mask.iport) - fconf |= F_PORT; - - if (fs->val.fcoe || fs->mask.fcoe) - fconf |= F_FCOE; - - if ((tpp->vlan_pri_map | fconf) != tpp->vlan_pri_map) - return (E2BIG); - - return (0); -} - -static int -get_filter_mode(struct adapter *sc, uint32_t *mode) -{ - struct tp_params *tpp = &sc->params.tp; - - /* - * We trust the cached values of the relevant TP registers. This means - * things work reliably only if writes to those registers are always via - * t4_set_filter_mode. - */ - *mode = fconf_iconf_to_mode(tpp->vlan_pri_map, tpp->ingress_config); - - return (0); -} - -static int -set_filter_mode(struct adapter *sc, uint32_t mode) -{ - struct tp_params *tpp = &sc->params.tp; - uint32_t fconf, iconf; - int rc; - - iconf = mode_to_iconf(mode); - if ((iconf ^ tpp->ingress_config) & F_VNIC) { - /* - * For now we just complain if A_TP_INGRESS_CONFIG is not - * already set to the correct value for the requested filter - * mode. It's not clear if it's safe to write to this register - * on the fly. (And we trust the cached value of the register). - */ - return (EBUSY); - } - - fconf = mode_to_fconf(mode); - - rc = begin_synchronized_op(sc, NULL, HOLD_LOCK | SLEEP_OK | INTR_OK, - "t4setfm"); - if (rc) - return (rc); - - if (sc->tids.ftids_in_use > 0) { - rc = EBUSY; - goto done; - } - -#ifdef TCP_OFFLOAD - if (uld_active(sc, ULD_TOM)) { - rc = EBUSY; - goto done; - } -#endif - - rc = -t4_set_filter_mode(sc, fconf, true); -done: - end_synchronized_op(sc, LOCK_HELD); - return (rc); -} - -static inline uint64_t -get_filter_hits(struct adapter *sc, uint32_t fid) -{ - uint32_t tcb_addr; - - tcb_addr = t4_read_reg(sc, A_TP_CMM_TCB_BASE) + - (fid + sc->tids.ftid_base) * TCB_SIZE; - - if (is_t4(sc)) { - uint64_t hits; - - read_via_memwin(sc, 0, tcb_addr + 16, (uint32_t *)&hits, 8); - return (be64toh(hits)); - } else { - uint32_t hits; - - read_via_memwin(sc, 0, tcb_addr + 24, &hits, 4); - return (be32toh(hits)); - } -} - -static int -get_filter(struct adapter *sc, struct t4_filter *t) -{ - int i, rc, nfilters = sc->tids.nftids; - struct filter_entry *f; - - rc = begin_synchronized_op(sc, NULL, HOLD_LOCK | SLEEP_OK | INTR_OK, - "t4getf"); - if (rc) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 1 21:42:28 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9D8A6FB8D2E; Tue, 1 May 2018 21:42:27 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48D747A568; Tue, 1 May 2018 21:42:27 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4378227BE3; Tue, 1 May 2018 21:42:27 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w41LgROY074240; Tue, 1 May 2018 21:42:27 GMT (envelope-from scottl@FreeBSD.org) Received: (from scottl@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w41LgR9k074238; Tue, 1 May 2018 21:42:27 GMT (envelope-from scottl@FreeBSD.org) Message-Id: <201805012142.w41LgR9k074238@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: scottl set sender to scottl@FreeBSD.org using -f From: Scott Long Date: Tue, 1 May 2018 21:42:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333154 - head/sys/cam/scsi X-SVN-Group: head X-SVN-Commit-Author: scottl X-SVN-Commit-Paths: head/sys/cam/scsi X-SVN-Commit-Revision: 333154 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 21:42:28 -0000 Author: scottl Date: Tue May 1 21:42:27 2018 New Revision: 333154 URL: https://svnweb.freebsd.org/changeset/base/333154 Log: Refactor dadone(). There was no useful code sharing in it; it was just a 1500 line switch statement. Callers now specify a discrete completion handler, though they're still welcome to track state via ccb_state. Sponsored by: Netflix Modified: head/sys/cam/scsi/scsi_da.c Modified: head/sys/cam/scsi/scsi_da.c ============================================================================== --- head/sys/cam/scsi/scsi_da.c Tue May 1 20:17:22 2018 (r333153) +++ head/sys/cam/scsi/scsi_da.c Tue May 1 21:42:27 2018 (r333154) @@ -163,7 +163,7 @@ typedef enum { DA_CCB_PROBE_ATA_ZONE = 0x11, DA_CCB_PROBE_WP = 0x12, DA_CCB_TYPE_MASK = 0x1F, - DA_CCB_RETRY_UA = 0x20 + DA_CCB_RETRY_UA = 0x20 } da_ccb_state; /* @@ -358,7 +358,7 @@ struct da_softc { u_int timeouts; u_int invalidations; #endif -#define DA_ANNOUNCETMP_SZ 80 +#define DA_ANNOUNCETMP_SZ 160 char announce_temp[DA_ANNOUNCETMP_SZ]; #define DA_ANNOUNCE_SZ 400 char announcebuf[DA_ANNOUNCE_SZ]; @@ -1405,6 +1405,30 @@ static periph_oninv_t daoninvalidate; static void dazonedone(struct cam_periph *periph, union ccb *ccb); static void dadone(struct cam_periph *periph, union ccb *done_ccb); +static void dadone_probewp(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_proberc(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probelbp(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probeblklimits(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probebdc(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probeata(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probeatalogdir(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probeataiddir(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probeatasup(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probeatazone(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_probezone(struct cam_periph *periph, + union ccb *done_ccb); +static void dadone_tur(struct cam_periph *periph, + union ccb *done_ccb); static int daerror(union ccb *ccb, u_int32_t cam_flags, u_int32_t sense_flags); static void daprevent(struct cam_periph *periph, int action); @@ -3114,12 +3138,14 @@ skipstate: more: bp = cam_iosched_next_bio(softc->cam_iosched); if (bp == NULL) { - if (cam_iosched_has_work_flags(softc->cam_iosched, DA_WORK_TUR)) { + if (cam_iosched_has_work_flags(softc->cam_iosched, + DA_WORK_TUR)) { softc->flags |= DA_FLAG_TUR_PENDING; - cam_iosched_clr_work_flags(softc->cam_iosched, DA_WORK_TUR); + cam_iosched_clr_work_flags(softc->cam_iosched, + DA_WORK_TUR); scsi_test_unit_ready(&start_ccb->csio, /*retries*/ da_retry_count, - dadone, + dadone_tur, MSG_SIMPLE_Q_TAG, SSD_FULL_SIZE, da_default_timeout * 1000); @@ -3136,14 +3162,19 @@ more: softc->delete_func(periph, start_ccb, bp); goto out; } else { - /* Not sure this is possible, but failsafe by lying and saying "sure, done." */ + /* + * Not sure this is possible, but failsafe by + * lying and saying "sure, done." + */ biofinish(bp, NULL, 0); goto more; } } - if (cam_iosched_has_work_flags(softc->cam_iosched, DA_WORK_TUR)) { - cam_iosched_clr_work_flags(softc->cam_iosched, DA_WORK_TUR); + if (cam_iosched_has_work_flags(softc->cam_iosched, + DA_WORK_TUR)) { + cam_iosched_clr_work_flags(softc->cam_iosched, + DA_WORK_TUR); da_periph_release_locked(periph, DA_REF_TUR); } @@ -3201,7 +3232,7 @@ more: /* * If we don't support sync cache, or the disk * isn't dirty, FLUSH is a no-op. Use the - * allocated * CCB for the next bio if one is + * allocated CCB for the next bio if one is * available. */ if ((softc->quirks & DA_Q_NO_SYNC_CACHE) != 0 || @@ -3290,7 +3321,7 @@ out: } scsi_mode_sense_len(&start_ccb->csio, /*retries*/ da_retry_count, - /*cbfcnp*/ dadone, + /*cbfcnp*/ dadone_probewp, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*dbd*/ FALSE, /*pc*/ SMS_PAGE_CTRL_CURRENT, @@ -3318,7 +3349,7 @@ out: } scsi_read_capacity(&start_ccb->csio, /*retries*/da_retry_count, - dadone, + dadone_proberc, MSG_SIMPLE_Q_TAG, rcap, SSD_FULL_SIZE, @@ -3341,7 +3372,7 @@ out: } scsi_read_capacity_16(&start_ccb->csio, /*retries*/ da_retry_count, - /*cbfcnp*/ dadone, + /*cbfcnp*/ dadone_proberc, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*lba*/ 0, /*reladr*/ 0, @@ -3384,7 +3415,7 @@ out: scsi_inquiry(&start_ccb->csio, /*retries*/da_retry_count, - /*cbfcnp*/dadone, + /*cbfcnp*/dadone_probelbp, /*tag_action*/MSG_SIMPLE_Q_TAG, /*inq_buf*/(u_int8_t *)lbp, /*inq_len*/sizeof(*lbp), @@ -3418,7 +3449,7 @@ out: scsi_inquiry(&start_ccb->csio, /*retries*/da_retry_count, - /*cbfcnp*/dadone, + /*cbfcnp*/dadone_probeblklimits, /*tag_action*/MSG_SIMPLE_Q_TAG, /*inq_buf*/(u_int8_t *)block_limits, /*inq_len*/sizeof(*block_limits), @@ -3451,7 +3482,7 @@ out: scsi_inquiry(&start_ccb->csio, /*retries*/da_retry_count, - /*cbfcnp*/dadone, + /*cbfcnp*/dadone_probebdc, /*tag_action*/MSG_SIMPLE_Q_TAG, /*inq_buf*/(u_int8_t *)bdc, /*inq_len*/sizeof(*bdc), @@ -3497,7 +3528,7 @@ out: scsi_ata_identify(&start_ccb->csio, /*retries*/da_retry_count, - /*cbfcnp*/dadone, + /*cbfcnp*/dadone_probeata, /*tag_action*/MSG_SIMPLE_Q_TAG, /*data_ptr*/(u_int8_t *)ata_params, /*dxfer_len*/sizeof(*ata_params), @@ -3540,7 +3571,7 @@ out: retval = scsi_ata_read_log(&start_ccb->csio, /*retries*/ da_retry_count, - /*cbfcnp*/ dadone, + /*cbfcnp*/ dadone_probeatalogdir, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*log_address*/ ATA_LOG_DIRECTORY, /*page_number*/ 0, @@ -3590,7 +3621,7 @@ out: retval = scsi_ata_read_log(&start_ccb->csio, /*retries*/ da_retry_count, - /*cbfcnp*/ dadone, + /*cbfcnp*/ dadone_probeataiddir, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*log_address*/ ATA_IDENTIFY_DATA_LOG, /*page_number*/ ATA_IDL_PAGE_LIST, @@ -3639,7 +3670,7 @@ out: retval = scsi_ata_read_log(&start_ccb->csio, /*retries*/ da_retry_count, - /*cbfcnp*/ dadone, + /*cbfcnp*/ dadone_probeatasup, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*log_address*/ ATA_IDENTIFY_DATA_LOG, /*page_number*/ ATA_IDL_SUP_CAP, @@ -3691,7 +3722,7 @@ out: retval = scsi_ata_read_log(&start_ccb->csio, /*retries*/ da_retry_count, - /*cbfcnp*/ dadone, + /*cbfcnp*/ dadone_probeatazone, /*tag_action*/ MSG_SIMPLE_Q_TAG, /*log_address*/ ATA_IDENTIFY_DATA_LOG, /*page_number*/ ATA_IDL_ZDI, @@ -3741,7 +3772,7 @@ out: } scsi_inquiry(&start_ccb->csio, /*retries*/da_retry_count, - /*cbfcnp*/dadone, + /*cbfcnp*/dadone_probezone, /*tag_action*/MSG_SIMPLE_Q_TAG, /*inq_buf*/(u_int8_t *)bdc, /*inq_len*/sizeof(*bdc), @@ -3830,7 +3861,8 @@ da_delete_unmap(struct cam_periph *periph, union ccb * totalcount -= c; lastlba -= c; lastcount -= c; - scsi_ulto4b(lastcount, d[ranges - 1].length); + scsi_ulto4b(lastcount, + d[ranges - 1].length); } } /* Align beginning of the new range. */ @@ -4301,1296 +4333,1360 @@ dazonedone(struct cam_periph *periph, union ccb *ccb) static void dadone(struct cam_periph *periph, union ccb *done_ccb) { + struct bio *bp, *bp1; struct da_softc *softc; struct ccb_scsiio *csio; u_int32_t priority; da_ccb_state state; - softc = (struct da_softc *)periph->softc; - priority = done_ccb->ccb_h.pinfo.priority; - CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("dadone\n")); + softc = (struct da_softc *)periph->softc; + priority = done_ccb->ccb_h.pinfo.priority; csio = &done_ccb->csio; + #if defined(BUF_TRACKING) || defined(FULL_BUF_TRACKING) if (csio->bio != NULL) biotrack(csio->bio, __func__); #endif state = csio->ccb_h.ccb_state & DA_CCB_TYPE_MASK; - switch (state) { - case DA_CCB_BUFFER_IO: - case DA_CCB_DELETE: - { - struct bio *bp, *bp1; - cam_periph_lock(periph); + cam_periph_lock(periph); + bp = (struct bio *)done_ccb->ccb_h.ccb_bp; + if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { + int error; + int sf; + + if ((csio->ccb_h.ccb_state & DA_CCB_RETRY_UA) != 0) + sf = SF_RETRY_UA; + else + sf = 0; + + error = daerror(done_ccb, CAM_RETRY_SELTO, sf); + if (error == ERESTART) { + /* A retry was scheduled, so just return. */ + cam_periph_unlock(periph); + return; + } bp = (struct bio *)done_ccb->ccb_h.ccb_bp; - if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { - int error; - int sf; + if (error != 0) { + int queued_error; - if ((csio->ccb_h.ccb_state & DA_CCB_RETRY_UA) != 0) - sf = SF_RETRY_UA; - else - sf = 0; + /* + * return all queued I/O with EIO, so that + * the client can retry these I/Os in the + * proper order should it attempt to recover. + */ + queued_error = EIO; - error = daerror(done_ccb, CAM_RETRY_SELTO, sf); - if (error == ERESTART) { + if (error == ENXIO + && (softc->flags & DA_FLAG_PACK_INVALID)== 0) { /* - * A retry was scheduled, so - * just return. + * Catastrophic error. Mark our pack as + * invalid. + * + * XXX See if this is really a media + * XXX change first? */ - cam_periph_unlock(periph); - return; - } - bp = (struct bio *)done_ccb->ccb_h.ccb_bp; - if (error != 0) { - int queued_error; - - /* - * return all queued I/O with EIO, so that - * the client can retry these I/Os in the - * proper order should it attempt to recover. - */ - queued_error = EIO; - - if (error == ENXIO - && (softc->flags & DA_FLAG_PACK_INVALID)== 0) { - /* - * Catastrophic error. Mark our pack as - * invalid. - */ - /* - * XXX See if this is really a media - * XXX change first? - */ - xpt_print(periph->path, - "Invalidating pack\n"); - softc->flags |= DA_FLAG_PACK_INVALID; + xpt_print(periph->path, "Invalidating pack\n"); + softc->flags |= DA_FLAG_PACK_INVALID; #ifdef CAM_IO_STATS - softc->invalidations++; + softc->invalidations++; #endif - queued_error = ENXIO; - } - cam_iosched_flush(softc->cam_iosched, NULL, - queued_error); - if (bp != NULL) { - bp->bio_error = error; - bp->bio_resid = bp->bio_bcount; - bp->bio_flags |= BIO_ERROR; - } - } else if (bp != NULL) { - if (state == DA_CCB_DELETE) - bp->bio_resid = 0; - else - bp->bio_resid = csio->resid; - bp->bio_error = 0; - if (bp->bio_resid != 0) - bp->bio_flags |= BIO_ERROR; + queued_error = ENXIO; } - if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) - cam_release_devq(done_ccb->ccb_h.path, - /*relsim_flags*/0, - /*reduction*/0, - /*timeout*/0, - /*getcount_only*/0); + cam_iosched_flush(softc->cam_iosched, NULL, + queued_error); + if (bp != NULL) { + bp->bio_error = error; + bp->bio_resid = bp->bio_bcount; + bp->bio_flags |= BIO_ERROR; + } } else if (bp != NULL) { - if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) - panic("REQ_CMP with QFRZN"); - if (bp->bio_cmd == BIO_ZONE) - dazonedone(periph, done_ccb); - else if (state == DA_CCB_DELETE) + if (state == DA_CCB_DELETE) bp->bio_resid = 0; else bp->bio_resid = csio->resid; - if ((csio->resid > 0) - && (bp->bio_cmd != BIO_ZONE)) + bp->bio_error = 0; + if (bp->bio_resid != 0) bp->bio_flags |= BIO_ERROR; - if (softc->error_inject != 0) { - bp->bio_error = softc->error_inject; - bp->bio_resid = bp->bio_bcount; - bp->bio_flags |= BIO_ERROR; - softc->error_inject = 0; - } } + if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) + cam_release_devq(done_ccb->ccb_h.path, + /*relsim_flags*/0, + /*reduction*/0, + /*timeout*/0, + /*getcount_only*/0); + } else if (bp != NULL) { + if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) + panic("REQ_CMP with QFRZN"); + if (bp->bio_cmd == BIO_ZONE) + dazonedone(periph, done_ccb); + else if (state == DA_CCB_DELETE) + bp->bio_resid = 0; + else + bp->bio_resid = csio->resid; + if ((csio->resid > 0) && (bp->bio_cmd != BIO_ZONE)) + bp->bio_flags |= BIO_ERROR; + if (softc->error_inject != 0) { + bp->bio_error = softc->error_inject; + bp->bio_resid = bp->bio_bcount; + bp->bio_flags |= BIO_ERROR; + softc->error_inject = 0; + } + } - if (bp != NULL) - biotrack(bp, __func__); - LIST_REMOVE(&done_ccb->ccb_h, periph_links.le); - if (LIST_EMPTY(&softc->pending_ccbs)) - softc->flags |= DA_FLAG_WAS_OTAG; + if (bp != NULL) + biotrack(bp, __func__); + LIST_REMOVE(&done_ccb->ccb_h, periph_links.le); + if (LIST_EMPTY(&softc->pending_ccbs)) + softc->flags |= DA_FLAG_WAS_OTAG; + /* + * We need to call cam_iosched before we call biodone so that we + * don't measure any activity that happens in the completion + * routine, which in the case of sendfile can be quite + * extensive. + */ + cam_iosched_bio_complete(softc->cam_iosched, bp, done_ccb); + xpt_release_ccb(done_ccb); + if (state == DA_CCB_DELETE) { + TAILQ_HEAD(, bio) queue; + + TAILQ_INIT(&queue); + TAILQ_CONCAT(&queue, &softc->delete_run_queue.queue, bio_queue); + softc->delete_run_queue.insert_point = NULL; /* - * We need to call cam_iosched before we call biodone so that we - * don't measure any activity that happens in the completion - * routine, which in the case of sendfile can be quite - * extensive. + * Normally, the xpt_release_ccb() above would make sure + * that when we have more work to do, that work would + * get kicked off. However, we specifically keep + * delete_running set to 0 before the call above to + * allow other I/O to progress when many BIO_DELETE + * requests are pushed down. We set delete_running to 0 + * and call daschedule again so that we don't stall if + * there are no other I/Os pending apart from BIO_DELETEs. */ - cam_iosched_bio_complete(softc->cam_iosched, bp, done_ccb); - xpt_release_ccb(done_ccb); - if (state == DA_CCB_DELETE) { - TAILQ_HEAD(, bio) queue; - - TAILQ_INIT(&queue); - TAILQ_CONCAT(&queue, &softc->delete_run_queue.queue, bio_queue); - softc->delete_run_queue.insert_point = NULL; - /* - * Normally, the xpt_release_ccb() above would make sure - * that when we have more work to do, that work would - * get kicked off. However, we specifically keep - * delete_running set to 0 before the call above to - * allow other I/O to progress when many BIO_DELETE - * requests are pushed down. We set delete_running to 0 - * and call daschedule again so that we don't stall if - * there are no other I/Os pending apart from BIO_DELETEs. - */ - cam_iosched_trim_done(softc->cam_iosched); - daschedule(periph); - cam_periph_unlock(periph); - while ((bp1 = TAILQ_FIRST(&queue)) != NULL) { - TAILQ_REMOVE(&queue, bp1, bio_queue); - bp1->bio_error = bp->bio_error; - if (bp->bio_flags & BIO_ERROR) { - bp1->bio_flags |= BIO_ERROR; - bp1->bio_resid = bp1->bio_bcount; - } else - bp1->bio_resid = 0; - biodone(bp1); - } - } else { - daschedule(periph); - cam_periph_unlock(periph); + cam_iosched_trim_done(softc->cam_iosched); + daschedule(periph); + cam_periph_unlock(periph); + while ((bp1 = TAILQ_FIRST(&queue)) != NULL) { + TAILQ_REMOVE(&queue, bp1, bio_queue); + bp1->bio_error = bp->bio_error; + if (bp->bio_flags & BIO_ERROR) { + bp1->bio_flags |= BIO_ERROR; + bp1->bio_resid = bp1->bio_bcount; + } else + bp1->bio_resid = 0; + biodone(bp1); } - if (bp != NULL) - biodone(bp); - return; + } else { + daschedule(periph); + cam_periph_unlock(periph); } - case DA_CCB_PROBE_WP: - { - struct scsi_mode_header_6 *mode_hdr6; - struct scsi_mode_header_10 *mode_hdr10; - uint8_t dev_spec; + if (bp != NULL) + biodone(bp); + return; +} - if (softc->minimum_cmd_size > 6) { - mode_hdr10 = (struct scsi_mode_header_10 *)csio->data_ptr; - dev_spec = mode_hdr10->dev_spec; - } else { - mode_hdr6 = (struct scsi_mode_header_6 *)csio->data_ptr; - dev_spec = mode_hdr6->dev_spec; - } - if (cam_ccb_status(done_ccb) == CAM_REQ_CMP) { - if ((dev_spec & 0x80) != 0) - softc->disk->d_flags |= DISKFLAG_WRITE_PROTECT; - else - softc->disk->d_flags &= ~DISKFLAG_WRITE_PROTECT; - } else { - int error; +static void +dadone_probewp(struct cam_periph *periph, union ccb *done_ccb) +{ + struct scsi_mode_header_6 *mode_hdr6; + struct scsi_mode_header_10 *mode_hdr10; + struct da_softc *softc; + struct ccb_scsiio *csio; + u_int32_t priority; + uint8_t dev_spec; - error = daerror(done_ccb, CAM_RETRY_SELTO, - SF_RETRY_UA|SF_NO_PRINT); - if (error == ERESTART) - return; - else if (error != 0) { - if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { - /* Don't wedge this device's queue */ - cam_release_devq(done_ccb->ccb_h.path, - /*relsim_flags*/0, - /*reduction*/0, - /*timeout*/0, - /*getcount_only*/0); - } - } - } + CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("dadone_probewp\n")); - free(csio->data_ptr, M_SCSIDA); - xpt_release_ccb(done_ccb); - if ((softc->flags & DA_FLAG_CAN_RC16) != 0) - softc->state = DA_STATE_PROBE_RC16; + softc = (struct da_softc *)periph->softc; + priority = done_ccb->ccb_h.pinfo.priority; + csio = &done_ccb->csio; + + if (softc->minimum_cmd_size > 6) { + mode_hdr10 = (struct scsi_mode_header_10 *)csio->data_ptr; + dev_spec = mode_hdr10->dev_spec; + } else { + mode_hdr6 = (struct scsi_mode_header_6 *)csio->data_ptr; + dev_spec = mode_hdr6->dev_spec; + } + if (cam_ccb_status(done_ccb) == CAM_REQ_CMP) { + if ((dev_spec & 0x80) != 0) + softc->disk->d_flags |= DISKFLAG_WRITE_PROTECT; else - softc->state = DA_STATE_PROBE_RC; - xpt_schedule(periph, priority); - return; + softc->disk->d_flags &= ~DISKFLAG_WRITE_PROTECT; + } else { + int error; + + error = daerror(done_ccb, CAM_RETRY_SELTO, + SF_RETRY_UA|SF_NO_PRINT); + if (error == ERESTART) + return; + else if (error != 0) { + if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { + /* Don't wedge this device's queue */ + cam_release_devq(done_ccb->ccb_h.path, + /*relsim_flags*/0, + /*reduction*/0, + /*timeout*/0, + /*getcount_only*/0); + } + } } - case DA_CCB_PROBE_RC: - case DA_CCB_PROBE_RC16: - { - struct scsi_read_capacity_data *rdcap; - struct scsi_read_capacity_data_long *rcaplong; - char *announce_buf; - int lbp; - lbp = 0; - rdcap = NULL; - rcaplong = NULL; - /* XXX TODO: can this be a malloc? */ - announce_buf = softc->announce_temp; - bzero(announce_buf, DA_ANNOUNCETMP_SZ); + free(csio->data_ptr, M_SCSIDA); + xpt_release_ccb(done_ccb); + if ((softc->flags & DA_FLAG_CAN_RC16) != 0) + softc->state = DA_STATE_PROBE_RC16; + else + softc->state = DA_STATE_PROBE_RC; + xpt_schedule(periph, priority); + return; +} - if (state == DA_CCB_PROBE_RC) - rdcap =(struct scsi_read_capacity_data *)csio->data_ptr; - else - rcaplong = (struct scsi_read_capacity_data_long *) - csio->data_ptr; +static void +dadone_proberc(struct cam_periph *periph, union ccb *done_ccb) +{ + struct scsi_read_capacity_data *rdcap; + struct scsi_read_capacity_data_long *rcaplong; + struct da_softc *softc; + struct ccb_scsiio *csio; + da_ccb_state state; + char *announce_buf; + u_int32_t priority; + int lbp; - if ((csio->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { - struct disk_params *dp; - uint32_t block_size; - uint64_t maxsector; - u_int lalba; /* Lowest aligned LBA. */ + CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("dadone_proberc\n")); - if (state == DA_CCB_PROBE_RC) { - block_size = scsi_4btoul(rdcap->length); - maxsector = scsi_4btoul(rdcap->addr); - lalba = 0; + softc = (struct da_softc *)periph->softc; + priority = done_ccb->ccb_h.pinfo.priority; + csio = &done_ccb->csio; + state = csio->ccb_h.ccb_state & DA_CCB_TYPE_MASK; - /* - * According to SBC-2, if the standard 10 - * byte READ CAPACITY command returns 2^32, - * we should issue the 16 byte version of - * the command, since the device in question - * has more sectors than can be represented - * with the short version of the command. - */ - if (maxsector == 0xffffffff) { - free(rdcap, M_SCSIDA); - xpt_release_ccb(done_ccb); - softc->state = DA_STATE_PROBE_RC16; - xpt_schedule(periph, priority); - return; - } - } else { - block_size = scsi_4btoul(rcaplong->length); - maxsector = scsi_8btou64(rcaplong->addr); - lalba = scsi_2btoul(rcaplong->lalba_lbp); - } + lbp = 0; + rdcap = NULL; + rcaplong = NULL; + /* XXX TODO: can this be a malloc? */ + announce_buf = softc->announce_temp; + bzero(announce_buf, DA_ANNOUNCETMP_SZ); + if (state == DA_CCB_PROBE_RC) + rdcap =(struct scsi_read_capacity_data *)csio->data_ptr; + else + rcaplong = (struct scsi_read_capacity_data_long *) + csio->data_ptr; + + if ((csio->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { + struct disk_params *dp; + uint32_t block_size; + uint64_t maxsector; + u_int lalba; /* Lowest aligned LBA. */ + + if (state == DA_CCB_PROBE_RC) { + block_size = scsi_4btoul(rdcap->length); + maxsector = scsi_4btoul(rdcap->addr); + lalba = 0; + /* - * Because GEOM code just will panic us if we - * give them an 'illegal' value we'll avoid that - * here. + * According to SBC-2, if the standard 10 + * byte READ CAPACITY command returns 2^32, + * we should issue the 16 byte version of + * the command, since the device in question + * has more sectors than can be represented + * with the short version of the command. */ - if (block_size == 0) { - block_size = 512; - if (maxsector == 0) - maxsector = -1; + if (maxsector == 0xffffffff) { + free(rdcap, M_SCSIDA); + xpt_release_ccb(done_ccb); + softc->state = DA_STATE_PROBE_RC16; + xpt_schedule(periph, priority); + return; } - if (block_size >= MAXPHYS) { - xpt_print(periph->path, - "unsupportable block size %ju\n", - (uintmax_t) block_size); - announce_buf = NULL; - cam_periph_invalidate(periph); - } else { - /* - * We pass rcaplong into dasetgeom(), - * because it will only use it if it is - * non-NULL. - */ - dasetgeom(periph, block_size, maxsector, - rcaplong, sizeof(*rcaplong)); - lbp = (lalba & SRC16_LBPME_A); - dp = &softc->params; - snprintf(announce_buf, DA_ANNOUNCETMP_SZ, - "%juMB (%ju %u byte sectors)", - ((uintmax_t)dp->secsize * dp->sectors) / - (1024 * 1024), - (uintmax_t)dp->sectors, dp->secsize); - } } else { - int error; + block_size = scsi_4btoul(rcaplong->length); + maxsector = scsi_8btou64(rcaplong->addr); + lalba = scsi_2btoul(rcaplong->lalba_lbp); + } + /* + * Because GEOM code just will panic us if we + * give them an 'illegal' value we'll avoid that + * here. + */ + if (block_size == 0) { + block_size = 512; + if (maxsector == 0) + maxsector = -1; + } + if (block_size >= MAXPHYS) { + xpt_print(periph->path, + "unsupportable block size %ju\n", + (uintmax_t) block_size); + announce_buf = NULL; + cam_periph_invalidate(periph); + } else { /* - * Retry any UNIT ATTENTION type errors. They - * are expected at boot. + * We pass rcaplong into dasetgeom(), + * because it will only use it if it is + * non-NULL. */ - error = daerror(done_ccb, CAM_RETRY_SELTO, - SF_RETRY_UA|SF_NO_PRINT); - if (error == ERESTART) { - /* - * A retry was scheuled, so - * just return. - */ - return; - } else if (error != 0) { - int asc, ascq; - int sense_key, error_code; - int have_sense; - cam_status status; - struct ccb_getdev cgd; + dasetgeom(periph, block_size, maxsector, + rcaplong, sizeof(*rcaplong)); + lbp = (lalba & SRC16_LBPME_A); + dp = &softc->params; + snprintf(announce_buf, DA_ANNOUNCETMP_SZ, + "%juMB (%ju %u byte sectors)", + ((uintmax_t)dp->secsize * dp->sectors) / + (1024 * 1024), + (uintmax_t)dp->sectors, dp->secsize); + } + } else { + int error; - /* Don't wedge this device's queue */ - status = done_ccb->ccb_h.status; - if ((status & CAM_DEV_QFRZN) != 0) - cam_release_devq(done_ccb->ccb_h.path, - /*relsim_flags*/0, - /*reduction*/0, - /*timeout*/0, - /*getcount_only*/0); + /* + * Retry any UNIT ATTENTION type errors. They + * are expected at boot. + */ + error = daerror(done_ccb, CAM_RETRY_SELTO, + SF_RETRY_UA|SF_NO_PRINT); + if (error == ERESTART) { + /* + * A retry was scheuled, so + * just return. + */ + return; + } else if (error != 0) { + int asc, ascq; + int sense_key, error_code; + int have_sense; + cam_status status; + struct ccb_getdev cgd; + /* Don't wedge this device's queue */ + status = done_ccb->ccb_h.status; + if ((status & CAM_DEV_QFRZN) != 0) + cam_release_devq(done_ccb->ccb_h.path, + /*relsim_flags*/0, + /*reduction*/0, + /*timeout*/0, + /*getcount_only*/0); - xpt_setup_ccb(&cgd.ccb_h, - done_ccb->ccb_h.path, - CAM_PRIORITY_NORMAL); - cgd.ccb_h.func_code = XPT_GDEV_TYPE; - xpt_action((union ccb *)&cgd); - if (scsi_extract_sense_ccb(done_ccb, - &error_code, &sense_key, &asc, &ascq)) - have_sense = TRUE; - else - have_sense = FALSE; + xpt_setup_ccb(&cgd.ccb_h, done_ccb->ccb_h.path, + CAM_PRIORITY_NORMAL); + cgd.ccb_h.func_code = XPT_GDEV_TYPE; + xpt_action((union ccb *)&cgd); - /* - * If we tried READ CAPACITY(16) and failed, - * fallback to READ CAPACITY(10). - */ - if ((state == DA_CCB_PROBE_RC16) && - (softc->flags & DA_FLAG_CAN_RC16) && - (((csio->ccb_h.status & CAM_STATUS_MASK) == - CAM_REQ_INVALID) || - ((have_sense) && - (error_code == SSD_CURRENT_ERROR || - error_code == SSD_DESC_CURRENT_ERROR) && - (sense_key == SSD_KEY_ILLEGAL_REQUEST)))) { - cam_periph_assert(periph, MA_OWNED); - softc->flags &= ~DA_FLAG_CAN_RC16; - free(rdcap, M_SCSIDA); - xpt_release_ccb(done_ccb); - softc->state = DA_STATE_PROBE_RC; - xpt_schedule(periph, priority); - return; - } + if (scsi_extract_sense_ccb(done_ccb, + &error_code, &sense_key, &asc, &ascq)) + have_sense = TRUE; + else + have_sense = FALSE; - /* - * Attach to anything that claims to be a - * direct access or optical disk device, - * as long as it doesn't return a "Logical - * unit not supported" (0x25) error. - * "Internal Target Failure" (0x44) is also - * special and typically means that the - * device is a SATA drive behind a SATL - * translation that's fallen into a - * terminally fatal state. - */ - if ((have_sense) - && (asc != 0x25) && (asc != 0x44) - && (error_code == SSD_CURRENT_ERROR - || error_code == SSD_DESC_CURRENT_ERROR)) { - const char *sense_key_desc; - const char *asc_desc; - - dasetgeom(periph, 512, -1, NULL, 0); - scsi_sense_desc(sense_key, asc, ascq, - &cgd.inq_data, - &sense_key_desc, - &asc_desc); - snprintf(announce_buf, - DA_ANNOUNCETMP_SZ, - "Attempt to query device " - "size failed: %s, %s", - sense_key_desc, asc_desc); - } else { - if (have_sense) - scsi_sense_print( - &done_ccb->csio); - else { - xpt_print(periph->path, - "got CAM status %#x\n", - done_ccb->ccb_h.status); - } - - xpt_print(periph->path, "fatal error, " - "failed to attach to device\n"); - - announce_buf = NULL; - - /* - * Free up resources. - */ - cam_periph_invalidate(periph); - } + /* + * If we tried READ CAPACITY(16) and failed, + * fallback to READ CAPACITY(10). + */ + if ((state == DA_CCB_PROBE_RC16) && + (softc->flags & DA_FLAG_CAN_RC16) && + (((csio->ccb_h.status & CAM_STATUS_MASK) == + CAM_REQ_INVALID) || + ((have_sense) && + (error_code == SSD_CURRENT_ERROR || + error_code == SSD_DESC_CURRENT_ERROR) && + (sense_key == SSD_KEY_ILLEGAL_REQUEST)))) { + cam_periph_assert(periph, MA_OWNED); + softc->flags &= ~DA_FLAG_CAN_RC16; + free(rdcap, M_SCSIDA); + xpt_release_ccb(done_ccb); + softc->state = DA_STATE_PROBE_RC; + xpt_schedule(periph, priority); + return; } - } - free(csio->data_ptr, M_SCSIDA); - if (announce_buf != NULL && - ((softc->flags & DA_FLAG_ANNOUNCED) == 0)) { - struct sbuf sb; - sbuf_new(&sb, softc->announcebuf, DA_ANNOUNCE_SZ, - SBUF_FIXEDLEN); - xpt_announce_periph_sbuf(periph, &sb, announce_buf); - xpt_announce_quirks_sbuf(periph, &sb, softc->quirks, - DA_Q_BIT_STRING); - sbuf_finish(&sb); - sbuf_putbuf(&sb); - /* - * Create our sysctl variables, now that we know - * we have successfully attached. + * Attach to anything that claims to be a + * direct access or optical disk device, + * as long as it doesn't return a "Logical + * unit not supported" (0x25) error. + * "Internal Target Failure" (0x44) is also + * special and typically means that the + * device is a SATA drive behind a SATL + * translation that's fallen into a + * terminally fatal state. */ - /* increase the refcount */ - if (da_periph_acquire(periph, DA_REF_SYSCTL) == 0) { + if ((have_sense) + && (asc != 0x25) && (asc != 0x44) + && (error_code == SSD_CURRENT_ERROR + || error_code == SSD_DESC_CURRENT_ERROR)) { + const char *sense_key_desc; + const char *asc_desc; - taskqueue_enqueue(taskqueue_thread, - &softc->sysctl_task); - } else { - /* XXX This message is useless! */ + dasetgeom(periph, 512, -1, NULL, 0); + scsi_sense_desc(sense_key, asc, ascq, + &cgd.inq_data, &sense_key_desc, + &asc_desc); + snprintf(announce_buf, DA_ANNOUNCETMP_SZ, + "Attempt to query device " + "size failed: %s, %s", + sense_key_desc, asc_desc); + } else { + if (have_sense) + scsi_sense_print(&done_ccb->csio); + else { + xpt_print(periph->path, + "got CAM status %#x\n", + done_ccb->ccb_h.status); + } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 1 23:00:56 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4347BFBA5CD; Tue, 1 May 2018 23:00:56 +0000 (UTC) (envelope-from jonlooney@gmail.com) Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B4F6F69E96; Tue, 1 May 2018 23:00:55 +0000 (UTC) (envelope-from jonlooney@gmail.com) Received: by mail-wm0-x241.google.com with SMTP id f8so10624581wmc.4; Tue, 01 May 2018 16:00:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=IGd1ZFRuCpr7lYdfHOPwm5KfxMyzvaMlbJo/N8cgkIk=; b=pnvtmNfoxFZltw8Y3MjNHWnJi5eK4fdqVkQMMdeXZ7dAd32sKQRlEQmAg20VBZm2qQ 08UJMRo1a79nmyCA9Pkv/LhBbsAf9LonIga2NCN2DZRmDqlfBmmWt860cNTUD8lTi49x WSy5MnWKPhOcLDOl2MSxsdr9ttrT8Lbc0PCotgQmvlkQJYAQyDnqI8DkYxhfpRxu37MT C7YHgg19Opvgr0A5LXBOabBnObQ7+5hYc/WmsAaJ4tA9C9+o6hWzqgBjsWh2JfvEBiSl FW+B1TdDrfGy9EtmtZFJTMdqO86qAfc0uLfc23zwqr3KzhUQvHSZFCKIZsPFg7iSLlaf oAOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=IGd1ZFRuCpr7lYdfHOPwm5KfxMyzvaMlbJo/N8cgkIk=; b=LEbNqvpJDqghMUs/tVSRQsi9k0UAwglkuxc2URt2okpF8CT/nvV+zFJTGdligMnAb6 h6Lyr/wfIOIxqHVrNGshVqxTqCNl80a11nEmNFpRohz5Uf+iSIDpI6VqyBJkkLoC5+41 +oCWyZIuYhMAkUawaPEDW5gsACxnNYauWF983rjM2T7MyLgNlAiFpPZslR9x52Nkc/ct yuQN0rjKQ/zgdcIW3S9f0TTD/I5yMN+s9NsdBHglvpn4dCC7zDAnF0hP8yuzNStAkbRu g7jDc08TA9smwFCU4GKiviOmIXCw8YoGb6swdmBbNihJLZGwSTaXRTrVPxoGsVB/B3PQ zxZQ== X-Gm-Message-State: ALQs6tAVhJlSGh11SRjtAXBJWjUI/sXO2/fdRWTce9+ywxABl8zy4LWx OGycEe7YYUP+JDhO4V8BD77XEE2t33HMcjaXr0GhfwAS X-Google-Smtp-Source: AB8JxZrwlgS1y5EC4X34qQvGLTzs+HFb9FycZ1IoFBtKREyZeSJKSuOGhpaS2Rh984UOcqmEvzznxFiBi7k7WZr7fIY= X-Received: by 10.28.45.147 with SMTP id t141mr11553440wmt.94.1525215654702; Tue, 01 May 2018 16:00:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.197.74 with HTTP; Tue, 1 May 2018 16:00:54 -0700 (PDT) In-Reply-To: <20180430071646.GE3653@strugglingcoder.info> References: <201804191338.w3JDc0to002106@repo.freebsd.org> <20180430071646.GE3653@strugglingcoder.info> From: Jonathan Looney Date: Tue, 1 May 2018 19:00:54 -0400 Message-ID: Subject: Re: svn commit: r332770 - in head/sys: conf netinet netinet/tcp_stacks sys To: hiren panchasara Cc: Randall Stewart , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 23:00:56 -0000 On Mon, Apr 30, 2018 at 3:16 AM, hiren panchasara < hiren@strugglingcoder.info> wrote: > > In my understanding, default stack currently cannot use this mechanism. When do > you think that'll be possible? I think I can speak to Randall's plans for this. Randall chose not to include in this commit the hooks for the default stack to use the high-precision timers. I believe his immediate priorities are upstreaming RACK and BBR. After that, if there is demand, he may upstream the (relatively untested) code that allows the default stack to use the high-precision timers (protected by a non-default kernel option) so others can choose to experiment with it. (By the way, we're hoping to change the terminology away from describing the traditional FreeBSD stack as the "default" stack. In theory, someone can make any stack be their local default. We'll need to figure out what to actually call it at some point. My suggestion was the "FreeBSD" stack, although that is lacking in some imagination. In any case, we should have that discussion at some point in the future.) Jonathan From owner-svn-src-all@freebsd.org Tue May 1 23:12:00 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 67869FBA7DB for ; Tue, 1 May 2018 23:12:00 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-it0-x233.google.com (mail-it0-x233.google.com [IPv6:2607:f8b0:4001:c0b::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E3FAD6CBF0 for ; Tue, 1 May 2018 23:11:59 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-it0-x233.google.com with SMTP id j186-v6so14866198ita.5 for ; Tue, 01 May 2018 16:11:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=PeBojuiugnqG/yXz+9RX+uxtR6K9n4ZfEWib9/x0xFM=; b=l+eKH/xtGFwlAc35RAvQE1hQjkPUwDSeIYJ0en2PaMiVpYGLdwP2jt+at7W7VbutD0 MmB43zhi8wQiW0iT7ox7hjMRmKvjxAWZ561y7ak24xOgHrLf80Wd0FsxQA4TY5OZ7HYo sGhopv/5pH80ExnDD2AJ8ZLqwLbMQa07y6wolBzKxfkU1hNW7aO1XqNBje8XlX+SQ59E D7wrk+5OPWMH7sUsV6WNpQ0vIds9XQ4VQikYy+XG7Pst16jTrcpkLjY5h6TycyyqmgFY Pohk/ZQW5InT6vFkjKULrUjB41wvCnwu40TDlhJMFCNxd4VfbnVQTOm2nywTIxNqesGi iRGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=PeBojuiugnqG/yXz+9RX+uxtR6K9n4ZfEWib9/x0xFM=; b=fo4GUMJ8LdYSt4OxJO+iNQPyKcMRKbGYumcfZGPpGRv1LeES4iACoD5TCrtoFJ5sRw 5R0m2wLAHBkWh00j7UYgCsmG1Oxruq2r1YlJUwM3iE7IoBZcQpiy4Mut0uqDFTcY7psP Y+mL9o9MonL5Wg+zrM7zEIAuUuP6IJRqElZNCnqucjUrp/ZecXoVDRJcZh4+s17bsEum NJLJK2C8CM3w5i05FGs32rV0FAfAa8ak73NPMv51MV01Hd4M1isDTDEWsrq2j+NHcha5 8Ux6mdwYonHsnpV6AhElA8ZCrnaUFFCW1s8c3GZq7+JMvDy/kGCbjI80TigGUCJrqi6z MJGA== X-Gm-Message-State: ALQs6tA4ToAO67zVpWEYzQXlB2AXUj5AkyEVDrvHyvMGb33MYL+vpmDi 4QeAysA4vVQ/Kg/W6xkUXYTbi58db7qy63woIidc3g== X-Google-Smtp-Source: AB8JxZo12kPKun1CC0VArD1mgs+dZwSIeJ2+6gfKLYNWUy8d6Q1TlAWiB16vSfXksNkqsUb3s9Tm0Ui38Oz5FloF8aM= X-Received: by 2002:a24:b649:: with SMTP id d9-v6mr18237449itj.51.1525216318876; Tue, 01 May 2018 16:11:58 -0700 (PDT) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 2002:a4f:a65a:0:0:0:0:0 with HTTP; Tue, 1 May 2018 16:11:58 -0700 (PDT) X-Originating-IP: [2603:300b:6:5100:1052:acc7:f9de:2b6d] In-Reply-To: References: <201804191338.w3JDc0to002106@repo.freebsd.org> <20180430071646.GE3653@strugglingcoder.info> From: Warner Losh Date: Tue, 1 May 2018 17:11:58 -0600 X-Google-Sender-Auth: tTfvCW6uZpP1Iqnbly76KN5Svl0 Message-ID: Subject: Re: svn commit: r332770 - in head/sys: conf netinet netinet/tcp_stacks sys To: Jonathan Looney Cc: hiren panchasara , Randall Stewart , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2018 23:12:00 -0000 On Tue, May 1, 2018 at 5:00 PM, Jonathan Looney wrote: > On Mon, Apr 30, 2018 at 3:16 AM, hiren panchasara < > hiren@strugglingcoder.info> wrote: > > > > In my understanding, default stack currently cannot use this mechanism. > When do > > you think that'll be possible? > > > I think I can speak to Randall's plans for this. > > Randall chose not to include in this commit the hooks for the default > stack to use the high-precision timers. I believe his immediate priorities > are upstreaming RACK and BBR. After that, if there is demand, he may > upstream the (relatively untested) code that allows the default stack to > use the high-precision timers (protected by a non-default kernel option) so > others can choose to experiment with it. > > (By the way, we're hoping to change the terminology away from describing > the traditional FreeBSD stack as the "default" stack. In theory, someone > can make any stack be their local default. We'll need to figure out what to > actually call it at some point. My suggestion was the "FreeBSD" stack, > although that is lacking in some imagination. In any case, we should have > that discussion at some point in the future. > Only slightly less poor would be "traditional" stack :) Warner From owner-svn-src-all@freebsd.org Wed May 2 01:04:14 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 32B90FBD265; Wed, 2 May 2018 01:04:14 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D62FE8296A; Wed, 2 May 2018 01:04:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D10421D11; Wed, 2 May 2018 01:04:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4214DLB074135; Wed, 2 May 2018 01:04:13 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4214DYk074134; Wed, 2 May 2018 01:04:13 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805020104.w4214DYk074134@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Wed, 2 May 2018 01:04:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333155 - head/usr.bin/seq X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/usr.bin/seq X-SVN-Commit-Revision: 333155 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 01:04:14 -0000 Author: kevans Date: Wed May 2 01:04:13 2018 New Revision: 333155 URL: https://svnweb.freebsd.org/changeset/base/333155 Log: seq(1): Move long_opts up with globals Modified: head/usr.bin/seq/seq.c Modified: head/usr.bin/seq/seq.c ============================================================================== --- head/usr.bin/seq/seq.c Tue May 1 21:42:27 2018 (r333154) +++ head/usr.bin/seq/seq.c Wed May 2 01:04:13 2018 (r333155) @@ -57,6 +57,15 @@ __FBSDID("$FreeBSD$"); static const char *decimal_point = "."; /* default */ static char default_format[] = { "%g" }; /* default */ +static const struct option long_opts[] = +{ + {"format", required_argument, NULL, 'f'}, + {"separator", required_argument, NULL, 's'}, + {"terminator", required_argument, NULL, 't'}, + {"equal-width", no_argument, NULL, 'w'}, + {NULL, no_argument, NULL, 0} +}; + /* Prototypes */ static double e_atof(const char *); @@ -67,15 +76,6 @@ static int valid_format(const char *); static char *generate_format(double, double, double, int, char); static char *unescape(char *); - -static const struct option long_opts[] = -{ - {"format", required_argument, NULL, 'f'}, - {"separator", required_argument, NULL, 's'}, - {"terminator", required_argument, NULL, 't'}, - {"equal-width", no_argument, NULL, 'w'}, - {NULL, no_argument, NULL, 0} -}; /* * The seq command will print out a numeric sequence from 1, the default, From owner-svn-src-all@freebsd.org Wed May 2 01:17:10 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 16C40FBD962; Wed, 2 May 2018 01:17:10 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A277D845C9; Wed, 2 May 2018 01:17:08 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9C9971EAC; Wed, 2 May 2018 01:17:08 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w421H803079226; Wed, 2 May 2018 01:17:08 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w421H8a6079224; Wed, 2 May 2018 01:17:08 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805020117.w421H8a6079224@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Wed, 2 May 2018 01:17:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333156 - head/usr.bin/uniq X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/usr.bin/uniq X-SVN-Commit-Revision: 333156 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 01:17:10 -0000 Author: kevans Date: Wed May 2 01:17:08 2018 New Revision: 333156 URL: https://svnweb.freebsd.org/changeset/base/333156 Log: uniq(1): Add some long options These match GNU uniq(1) where appropriate for compatibility's sake. While here, re-sort options alphabetically by the short-option. MFC after: 1 month Modified: head/usr.bin/uniq/uniq.1 head/usr.bin/uniq/uniq.c Modified: head/usr.bin/uniq/uniq.1 ============================================================================== --- head/usr.bin/uniq/uniq.1 Wed May 2 01:04:13 2018 (r333155) +++ head/usr.bin/uniq/uniq.1 Wed May 2 01:17:08 2018 (r333156) @@ -31,7 +31,7 @@ .\" From: @(#)uniq.1 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd May 15, 2017 +.Dd May 1, 2018 .Dt UNIQ 1 .Os .Sh NAME @@ -71,34 +71,34 @@ so it may be necessary to sort the files first. .Pp The following options are available: .Bl -tag -width Ds -.It Fl c +.It Fl c , Fl -count Precede each output line with the count of the number of times the line occurred in the input, followed by a single space. -.It Fl d +.It Fl d , Fl -repeated Only output lines that are repeated in the input. -.It Fl f Ar num +.It Fl f Ar num , Fl -skip-fields Ar num Ignore the first .Ar num fields in each input line when doing comparisons. A field is a string of non-blank characters separated from adjacent fields by blanks. Field numbers are one based, i.e., the first field is field one. -.It Fl s Ar chars +.It Fl i , Fl -ignore-case +Case insensitive comparison of lines. +.It Fl s Ar chars , Fl -skip-chars Ar chars Ignore the first .Ar chars characters in each input line when doing comparisons. If specified in conjunction with the -.Fl f +.Fl f , Fl -unique option, the first .Ar chars characters after the first .Ar num fields will be ignored. Character numbers are one based, i.e., the first character is character one. -.It Fl u +.It Fl u , Fl -unique Only output lines that are not repeated in the input. -.It Fl i -Case insensitive comparison of lines. .\".It Fl Ns Ar n .\"(Deprecated; replaced by .\".Fl f ) . Modified: head/usr.bin/uniq/uniq.c ============================================================================== --- head/usr.bin/uniq/uniq.c Wed May 2 01:04:13 2018 (r333155) +++ head/usr.bin/uniq/uniq.c Wed May 2 01:17:08 2018 (r333156) @@ -51,6 +51,7 @@ static const char rcsid[] = #include #include #include +#include #include #include #include @@ -66,6 +67,17 @@ static const char rcsid[] = static int cflag, dflag, uflag, iflag; static int numchars, numfields, repeats; +static const struct option long_opts[] = +{ + {"count", no_argument, NULL, 'c'}, + {"repeated", no_argument, NULL, 'd'}, + {"skip-fields", required_argument, NULL, 'f'}, + {"ignore-case", no_argument, NULL, 'i'}, + {"skip-chars", required_argument, NULL, 's'}, + {"unique", no_argument, NULL, 'u'}, + {NULL, no_argument, NULL, 0} +}; + static FILE *file(const char *, const char *); static wchar_t *convert(const char *); static int inlcmp(const char *, const char *); @@ -99,7 +111,8 @@ main (int argc, char *argv[]) (void) setlocale(LC_ALL, ""); obsolete(argv); - while ((ch = getopt(argc, argv, "cdif:s:u")) != -1) + while ((ch = getopt_long(argc, argv, "+cdif:s:u", long_opts, + NULL)) != -1) switch (ch) { case 'c': cflag = 1; From owner-svn-src-all@freebsd.org Wed May 2 01:32:35 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ABC15FBDFB8; Wed, 2 May 2018 01:32:35 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 591A687B34; Wed, 2 May 2018 01:32:35 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 53FFB21EA; Wed, 2 May 2018 01:32:35 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w421WZjJ089603; Wed, 2 May 2018 01:32:35 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w421WZiO089601; Wed, 2 May 2018 01:32:35 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805020132.w421WZiO089601@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Wed, 2 May 2018 01:32:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333157 - head/usr.bin/cmp X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/usr.bin/cmp X-SVN-Commit-Revision: 333157 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 01:32:35 -0000 Author: kevans Date: Wed May 2 01:32:34 2018 New Revision: 333157 URL: https://svnweb.freebsd.org/changeset/base/333157 Log: cmp(1): Provide some long options These match GNU cmp(1) for compatibility where applicable. Future work might implement the -i option from GNU cmp(1) to express skip either in terms of both files or of the form "SKIP1:SKIP2" rather than specifying them as additional arguments to cmp(1). MFC after: 1 month Modified: head/usr.bin/cmp/cmp.1 head/usr.bin/cmp/cmp.c Modified: head/usr.bin/cmp/cmp.1 ============================================================================== --- head/usr.bin/cmp/cmp.1 Wed May 2 01:17:08 2018 (r333156) +++ head/usr.bin/cmp/cmp.1 Wed May 2 01:32:34 2018 (r333157) @@ -31,7 +31,7 @@ .\" @(#)cmp.1 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd November 18, 2013 +.Dd May 1, 2018 .Dt CMP 1 .Os .Sh NAME @@ -59,10 +59,10 @@ The following options are available: .Bl -tag -width indent .It Fl h Do not follow symbolic links. -.It Fl l +.It Fl l , Fl -verbose Print the byte number (decimal) and the differing byte values (octal) for each difference. -.It Fl s +.It Fl s , Fl -silent , Fl -quiet Print nothing for differing files; return exit status only. .It Fl x Modified: head/usr.bin/cmp/cmp.c ============================================================================== --- head/usr.bin/cmp/cmp.c Wed May 2 01:17:08 2018 (r333156) +++ head/usr.bin/cmp/cmp.c Wed May 2 01:32:34 2018 (r333157) @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -62,6 +63,14 @@ __FBSDID("$FreeBSD$"); int lflag, sflag, xflag, zflag; +static const struct option long_opts[] = +{ + {"verbose", no_argument, NULL, 'l'}, + {"silent", no_argument, NULL, 's'}, + {"quiet", no_argument, NULL, 's'}, + {NULL, no_argument, NULL, 0} +}; + static void usage(void); int @@ -75,7 +84,7 @@ main(int argc, char *argv[]) uint32_t fcntls; oflag = O_RDONLY; - while ((ch = getopt(argc, argv, "hlsxz")) != -1) + while ((ch = getopt_long(argc, argv, "+hlsxz", long_opts, NULL)) != -1) switch (ch) { case 'h': /* Don't follow symlinks */ oflag |= O_NOFOLLOW; From owner-svn-src-all@freebsd.org Wed May 2 02:41:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D73E0FBF56F; Wed, 2 May 2018 02:41:09 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8A32276FC1; Wed, 2 May 2018 02:41:09 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 835F82BB3; Wed, 2 May 2018 02:41:09 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w422f9XN023443; Wed, 2 May 2018 02:41:09 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w422f98T023442; Wed, 2 May 2018 02:41:09 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201805020241.w422f98T023442@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Wed, 2 May 2018 02:41:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333158 - head/sys/dev/mpr X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/dev/mpr X-SVN-Commit-Revision: 333158 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 02:41:10 -0000 Author: mav Date: Wed May 2 02:41:09 2018 New Revision: 333158 URL: https://svnweb.freebsd.org/changeset/base/333158 Log: Clean enclosure_table when resetting num_enc_table_entries to zero. Garbage left there by r325363 in some scenarios found to lead to later enclosure mapping failures. MFC after: 1 week Sponsored by: iXsystems, Inc. Modified: head/sys/dev/mpr/mpr_mapping.c Modified: head/sys/dev/mpr/mpr_mapping.c ============================================================================== --- head/sys/dev/mpr/mpr_mapping.c Wed May 2 01:32:34 2018 (r333157) +++ head/sys/dev/mpr/mpr_mapping.c Wed May 2 02:41:09 2018 (r333158) @@ -2385,6 +2385,8 @@ fail: * sc->mapping_table volumes tooi */ } + for (enc_idx = 0; enc_idx < sc->num_enc_table_entries; enc_idx++) + _mapping_clear_enc_entry(sc->enclosure_table + enc_idx); sc->num_enc_table_entries = 0; return (false); } From owner-svn-src-all@freebsd.org Wed May 2 07:38:39 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1662BFC49C3; Wed, 2 May 2018 07:38:39 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A03636B90C; Wed, 2 May 2018 07:38:38 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 915036099; Wed, 2 May 2018 07:38:38 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w427ccZ8070282; Wed, 2 May 2018 07:38:38 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w427ccWK070281; Wed, 2 May 2018 07:38:38 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020738.w427ccWK070281@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 07:38:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333159 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 333159 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 07:38:39 -0000 Author: kib Date: Wed May 2 07:38:38 2018 New Revision: 333159 URL: https://svnweb.freebsd.org/changeset/base/333159 Log: MFC r332971: Ensure that cmci_monitor() is not executed in parallel. Modified: stable/11/sys/x86/x86/mca.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/mca.c ============================================================================== --- stable/11/sys/x86/x86/mca.c Wed May 2 02:41:09 2018 (r333158) +++ stable/11/sys/x86/x86/mca.c Wed May 2 07:38:38 2018 (r333159) @@ -1056,6 +1056,14 @@ _mca_init(int boot) if ((mask & (1UL << 5)) == 0) wrmsr(MSR_MC0_CTL_MASK, mask | (1UL << 5)); } + + /* + * The cmci_monitor() must not be executed + * simultaneously by several CPUs. + */ + if (boot) + mtx_lock_spin(&mca_lock); + for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) { /* By default enable logging of all errors. */ ctl = 0xffffffffffffffffUL; @@ -1090,6 +1098,8 @@ _mca_init(int boot) /* Clear all errors. */ wrmsr(MSR_MC_STATUS(i), 0); } + if (boot) + mtx_unlock_spin(&mca_lock); #ifdef DEV_APIC /* From owner-svn-src-all@freebsd.org Wed May 2 07:40:05 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3EE7FFC4AAB; Wed, 2 May 2018 07:40:05 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E51616BA84; Wed, 2 May 2018 07:40:04 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E0351609D; Wed, 2 May 2018 07:40:04 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w427e4J2070412; Wed, 2 May 2018 07:40:04 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w427e4Rx070411; Wed, 2 May 2018 07:40:04 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020740.w427e4Rx070411@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 07:40:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333160 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 333160 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 07:40:05 -0000 Author: kib Date: Wed May 2 07:40:04 2018 New Revision: 333160 URL: https://svnweb.freebsd.org/changeset/base/333160 Log: MFC r332972: Extend ap_boot_mtx scope to also cover mca_init(). Modified: stable/11/sys/x86/x86/mp_x86.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/mp_x86.c ============================================================================== --- stable/11/sys/x86/x86/mp_x86.c Wed May 2 07:38:38 2018 (r333159) +++ stable/11/sys/x86/x86/mp_x86.c Wed May 2 07:40:04 2018 (r333160) @@ -905,9 +905,9 @@ init_secondary_tail(void) KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); PCPU_SET(curthread, PCPU_GET(idlethread)); - mca_init(); - mtx_lock_spin(&ap_boot_mtx); + + mca_init(); /* Init local apic for irq's */ lapic_setup(1); From owner-svn-src-all@freebsd.org Wed May 2 07:42:48 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 55B4CFC4EBC; Wed, 2 May 2018 07:42:48 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 036F86BF55; Wed, 2 May 2018 07:42:48 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F28826225; Wed, 2 May 2018 07:42:47 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w427glqG075125; Wed, 2 May 2018 07:42:47 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w427glQ4075124; Wed, 2 May 2018 07:42:47 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020742.w427glQ4075124@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 07:42:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333161 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 333161 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 07:42:48 -0000 Author: kib Date: Wed May 2 07:42:47 2018 New Revision: 333161 URL: https://svnweb.freebsd.org/changeset/base/333161 Log: MFC r333002: Use CPUID leaf 0x15 to get TSC frequency when the calibration is disabled. Modified: stable/11/sys/x86/x86/tsc.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/tsc.c ============================================================================== --- stable/11/sys/x86/x86/tsc.c Wed May 2 07:40:04 2018 (r333160) +++ stable/11/sys/x86/x86/tsc.c Wed May 2 07:42:47 2018 (r333161) @@ -128,6 +128,26 @@ tsc_freq_vmware(void) tsc_is_invariant = 1; } +/* + * Calculate TSC frequency using information from the CPUID leaf 0x15 + * 'Time Stamp Counter and Nominal Core Crystal Clock'. It should be + * an improvement over the parsing of the CPU model name in + * tsc_freq_intel(), when available. + */ +static bool +tsc_freq_cpuid(void) +{ + u_int regs[4]; + + if (cpu_high < 0x15) + return (false); + do_cpuid(0x15, regs); + if (regs[0] == 0 || regs[1] == 0 || regs[2] == 0) + return (false); + tsc_freq = (uint64_t)regs[2] * regs[1] / regs[0]; + return (true); +} + static void tsc_freq_intel(void) { @@ -252,17 +272,18 @@ probe_tsc_freq(void) } if (tsc_skip_calibration) { - if (cpu_vendor_id == CPU_VENDOR_INTEL) + if (tsc_freq_cpuid()) + ; + else if (cpu_vendor_id == CPU_VENDOR_INTEL) tsc_freq_intel(); - return; + } else { + if (bootverbose) + printf("Calibrating TSC clock ... "); + tsc1 = rdtsc(); + DELAY(1000000); + tsc2 = rdtsc(); + tsc_freq = tsc2 - tsc1; } - - if (bootverbose) - printf("Calibrating TSC clock ... "); - tsc1 = rdtsc(); - DELAY(1000000); - tsc2 = rdtsc(); - tsc_freq = tsc2 - tsc1; if (bootverbose) printf("TSC clock: %ju Hz\n", (intmax_t)tsc_freq); } From owner-svn-src-all@freebsd.org Wed May 2 07:57:38 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2FAB9FC53E2; Wed, 2 May 2018 07:57:38 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id BA0986ED1F; Wed, 2 May 2018 07:57:37 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 91F8763B6; Wed, 2 May 2018 07:57:37 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w427vbKf080388; Wed, 2 May 2018 07:57:37 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w427vaQd080376; Wed, 2 May 2018 07:57:36 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020757.w427vaQd080376@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 07:57:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333162 - in stable/11: lib/libc/sys sys/compat/freebsd32 sys/kern sys/sys tests/sys/kern X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in stable/11: lib/libc/sys sys/compat/freebsd32 sys/kern sys/sys tests/sys/kern X-SVN-Commit-Revision: 333162 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 07:57:38 -0000 Author: kib Date: Wed May 2 07:57:36 2018 New Revision: 333162 URL: https://svnweb.freebsd.org/changeset/base/333162 Log: MFC r332740: Add PROC_PDEATHSIG_SET to procctl interface. MFC r332825: Rename PROC_PDEATHSIG_SET -> PROC_PDEATHSIG_CTL. MFC r333067: Remove redundant pipe from pdeathsig.c test. Added: stable/11/tests/sys/kern/pdeathsig.c - copied, changed from r332740, head/tests/sys/kern/pdeathsig.c stable/11/tests/sys/kern/pdeathsig_helper.c - copied, changed from r332740, head/tests/sys/kern/pdeathsig_helper.c Modified: stable/11/lib/libc/sys/procctl.2 stable/11/sys/compat/freebsd32/freebsd32_misc.c stable/11/sys/kern/kern_exec.c stable/11/sys/kern/kern_exit.c stable/11/sys/kern/kern_fork.c stable/11/sys/kern/kern_procctl.c stable/11/sys/sys/proc.h stable/11/sys/sys/procctl.h stable/11/tests/sys/kern/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/lib/libc/sys/procctl.2 ============================================================================== --- stable/11/lib/libc/sys/procctl.2 Wed May 2 07:42:47 2018 (r333161) +++ stable/11/lib/libc/sys/procctl.2 Wed May 2 07:57:36 2018 (r333162) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 21, 2017 +.Dd April 20, 2018 .Dt PROCCTL 2 .Os .Sh NAME @@ -391,6 +391,37 @@ otherwise. See the note about sysctl .Dv kern.trap_enocap above, which gives independent global control of signal delivery. +.It Dv PROC_PDEATHSIG_CTL +Request the delivery of a signal when the parent of the calling +process exits. +.Fa idtype +must be +.Dv P_PID +and +.Fa id +must be the either caller's pid or zero, with no difference in effect. +The value is cleared for child processes +and when executing set-user-ID or set-group-ID binaries. +.Fa arg +must point to a value of type +.Vt int +indicating the signal +that should be delivered to the caller. +Use zero to cancel a previously requested signal delivery. +.It Dv PROC_PDEATHSIG_STATUS +Query the current signal number that will be delivered when the parent +of the calling process exits. +.Fa idtype +must be +.Dv P_PID +and +.Fa id +must be the either caller's pid or zero, with no difference in effect. +.Fa arg +must point to a memory location that can hold a value of type +.Vt int . +If signal delivery has not been requested, it will contain zero +on return. .El .Sh NOTES Disabling tracing on a process should not be considered a security @@ -487,6 +518,15 @@ parameter for the or .Dv PROC_TRAPCAP_CTL request is invalid. +.It Bq Er EINVAL +The +.Dv PROC_PDEATHSIG_CTL +or +.Dv PROC_PDEATHSIG_STATUS +request referenced an unsupported +.Fa id , +.Fa idtype +or invalid signal number. .El .Sh SEE ALSO .Xr dtrace 1 , @@ -506,3 +546,8 @@ function appeared in The reaper facility is based on a similar feature of Linux and DragonflyBSD, and first appeared in .Fx 10.2 . +The +.Dv PROC_PDEATHSIG_CTL +facility is based on the prctl(PR_SET_PDEATHSIG, ...) feature of Linux, +and first appeared in +.Fx 12.0 . Modified: stable/11/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- stable/11/sys/compat/freebsd32/freebsd32_misc.c Wed May 2 07:42:47 2018 (r333161) +++ stable/11/sys/compat/freebsd32/freebsd32_misc.c Wed May 2 07:57:36 2018 (r333162) @@ -3057,7 +3057,7 @@ freebsd32_procctl(struct thread *td, struct freebsd32_ union { struct procctl_reaper_pids32 rp; } x32; - int error, error1, flags; + int error, error1, flags, signum; switch (uap->com) { case PROC_SPROTECT: @@ -3095,6 +3095,15 @@ freebsd32_procctl(struct thread *td, struct freebsd32_ case PROC_TRAPCAP_STATUS: data = &flags; break; + case PROC_PDEATHSIG_CTL: + error = copyin(uap->data, &signum, sizeof(signum)); + if (error != 0) + return (error); + data = &signum; + break; + case PROC_PDEATHSIG_STATUS: + data = &signum; + break; default: return (EINVAL); } @@ -3114,6 +3123,10 @@ freebsd32_procctl(struct thread *td, struct freebsd32_ case PROC_TRAPCAP_STATUS: if (error == 0) error = copyout(&flags, uap->data, sizeof(flags)); + break; + case PROC_PDEATHSIG_STATUS: + if (error == 0) + error = copyout(&signum, uap->data, sizeof(signum)); break; } return (error); Modified: stable/11/sys/kern/kern_exec.c ============================================================================== --- stable/11/sys/kern/kern_exec.c Wed May 2 07:42:47 2018 (r333161) +++ stable/11/sys/kern/kern_exec.c Wed May 2 07:57:36 2018 (r333162) @@ -520,6 +520,10 @@ interpret: credential_changing |= will_transition; #endif + /* Don't inherit PROC_PDEATHSIG_CTL value if setuid/setgid. */ + if (credential_changing) + imgp->proc->p_pdeathsig = 0; + if (credential_changing && #ifdef CAPABILITY_MODE ((oldcred->cr_flags & CRED_FLAG_CAPMODE) == 0) && Modified: stable/11/sys/kern/kern_exit.c ============================================================================== --- stable/11/sys/kern/kern_exit.c Wed May 2 07:42:47 2018 (r333161) +++ stable/11/sys/kern/kern_exit.c Wed May 2 07:57:36 2018 (r333162) @@ -479,6 +479,12 @@ exit1(struct thread *td, int rval, int signo) PROC_LOCK(q->p_reaper); pksignal(q->p_reaper, SIGCHLD, ksi1); PROC_UNLOCK(q->p_reaper); + } else if (q->p_pdeathsig > 0) { + /* + * The child asked to received a signal + * when we exit. + */ + kern_psignal(q, q->p_pdeathsig); } } else { /* @@ -519,6 +525,13 @@ exit1(struct thread *td, int rval, int signo) */ while ((q = LIST_FIRST(&p->p_orphans)) != NULL) { PROC_LOCK(q); + /* + * If we are the real parent of this process + * but it has been reparented to a debugger, then + * check if it asked for a signal when we exit. + */ + if (q->p_pdeathsig > 0) + kern_psignal(q, q->p_pdeathsig); CTR2(KTR_PTRACE, "exit: pid %d, clearing orphan %d", p->p_pid, q->p_pid); clear_orphan(q); Modified: stable/11/sys/kern/kern_fork.c ============================================================================== --- stable/11/sys/kern/kern_fork.c Wed May 2 07:42:47 2018 (r333161) +++ stable/11/sys/kern/kern_fork.c Wed May 2 07:57:36 2018 (r333162) @@ -425,6 +425,7 @@ do_fork(struct thread *td, struct fork_req *fr, struct bzero(&p2->p_startzero, __rangeof(struct proc, p_startzero, p_endzero)); p2->p_ptevents = 0; + p2->p_pdeathsig = 0; /* Tell the prison that we exist. */ prison_proc_hold(p2->p_ucred->cr_prison); Modified: stable/11/sys/kern/kern_procctl.c ============================================================================== --- stable/11/sys/kern/kern_procctl.c Wed May 2 07:42:47 2018 (r333161) +++ stable/11/sys/kern/kern_procctl.c Wed May 2 07:57:36 2018 (r333162) @@ -431,7 +431,7 @@ sys_procctl(struct thread *td, struct procctl_args *ua struct procctl_reaper_pids rp; struct procctl_reaper_kill rk; } x; - int error, error1, flags; + int error, error1, flags, signum; switch (uap->com) { case PROC_SPROTECT: @@ -467,6 +467,15 @@ sys_procctl(struct thread *td, struct procctl_args *ua case PROC_TRAPCAP_STATUS: data = &flags; break; + case PROC_PDEATHSIG_CTL: + error = copyin(uap->data, &signum, sizeof(signum)); + if (error != 0) + return (error); + data = &signum; + break; + case PROC_PDEATHSIG_STATUS: + data = &signum; + break; default: return (EINVAL); } @@ -486,6 +495,10 @@ sys_procctl(struct thread *td, struct procctl_args *ua if (error == 0) error = copyout(&flags, uap->data, sizeof(flags)); break; + case PROC_PDEATHSIG_STATUS: + if (error == 0) + error = copyout(&signum, uap->data, sizeof(signum)); + break; } return (error); } @@ -527,6 +540,7 @@ kern_procctl(struct thread *td, idtype_t idtype, id_t struct pgrp *pg; struct proc *p; int error, first_error, ok; + int signum; bool tree_locked; switch (com) { @@ -537,8 +551,31 @@ kern_procctl(struct thread *td, idtype_t idtype, id_t case PROC_REAP_KILL: case PROC_TRACE_STATUS: case PROC_TRAPCAP_STATUS: + case PROC_PDEATHSIG_CTL: + case PROC_PDEATHSIG_STATUS: if (idtype != P_PID) return (EINVAL); + } + + switch (com) { + case PROC_PDEATHSIG_CTL: + signum = *(int *)data; + p = td->td_proc; + if ((id != 0 && id != p->p_pid) || + (signum != 0 && !_SIG_VALID(signum))) + return (EINVAL); + PROC_LOCK(p); + p->p_pdeathsig = signum; + PROC_UNLOCK(p); + return (0); + case PROC_PDEATHSIG_STATUS: + p = td->td_proc; + if (id != 0 && id != p->p_pid) + return (EINVAL); + PROC_LOCK(p); + *(int *)data = p->p_pdeathsig; + PROC_UNLOCK(p); + return (0); } switch (com) { Modified: stable/11/sys/sys/proc.h ============================================================================== --- stable/11/sys/sys/proc.h Wed May 2 07:42:47 2018 (r333161) +++ stable/11/sys/sys/proc.h Wed May 2 07:57:36 2018 (r333162) @@ -674,6 +674,7 @@ struct proc { uint64_t p_elf_flags; /* (x) ELF flags */ sigqueue_t p_sigqueue; /* (c) Sigs not delivered to a td. */ #define p_siglist p_sigqueue.sq_signals + int p_pdeathsig; /* (c) Signal from parent on exit. */ }; #define p_session p_pgrp->pg_session Modified: stable/11/sys/sys/procctl.h ============================================================================== --- stable/11/sys/sys/procctl.h Wed May 2 07:42:47 2018 (r333161) +++ stable/11/sys/sys/procctl.h Wed May 2 07:57:36 2018 (r333162) @@ -49,6 +49,8 @@ #define PROC_TRACE_STATUS 8 /* query tracing status */ #define PROC_TRAPCAP_CTL 9 /* trap capability errors */ #define PROC_TRAPCAP_STATUS 10 /* query trap capability status */ +#define PROC_PDEATHSIG_CTL 11 /* set parent death signal */ +#define PROC_PDEATHSIG_STATUS 12 /* get parent death signal */ /* Operations for PROC_SPROTECT (passed in integer arg). */ #define PPROT_OP(x) ((x) & 0xf) Modified: stable/11/tests/sys/kern/Makefile ============================================================================== --- stable/11/tests/sys/kern/Makefile Wed May 2 07:42:47 2018 (r333161) +++ stable/11/tests/sys/kern/Makefile Wed May 2 07:57:36 2018 (r333162) @@ -15,6 +15,9 @@ ATF_TESTS_C+= unix_seqpacket_test ATF_TESTS_C+= unix_passfd_test TEST_METADATA.unix_seqpacket_test+= timeout="15" ATF_TESTS_C+= waitpid_nohang +ATF_TESTS_C+= pdeathsig + +PROGS+= pdeathsig_helper LIBADD.ptrace_test+= pthread LIBADD.unix_seqpacket_test+= pthread Copied and modified: stable/11/tests/sys/kern/pdeathsig.c (from r332740, head/tests/sys/kern/pdeathsig.c) ============================================================================== --- head/tests/sys/kern/pdeathsig.c Wed Apr 18 21:31:13 2018 (r332740, copy source) +++ stable/11/tests/sys/kern/pdeathsig.c Wed May 2 07:57:36 2018 (r333162) @@ -53,42 +53,42 @@ ATF_TC_BODY(arg_validation, tc) /* bad signal */ signum = 8888; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_SET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &signum); ATF_CHECK_EQ(-1, rc); ATF_CHECK_EQ(EINVAL, errno); /* bad id type */ signum = SIGINFO; - rc = procctl(8888, 0, PROC_PDEATHSIG_SET, &signum); + rc = procctl(8888, 0, PROC_PDEATHSIG_CTL, &signum); ATF_CHECK_EQ(-1, rc); ATF_CHECK_EQ(EINVAL, errno); /* bad id (pid that doesn't match mine or zero) */ signum = SIGINFO; rc = procctl(P_PID, (((getpid() + 1) % 10) + 100), - PROC_PDEATHSIG_SET, &signum); + PROC_PDEATHSIG_CTL, &signum); ATF_CHECK_EQ(-1, rc); ATF_CHECK_EQ(EINVAL, errno); /* null pointer */ signum = SIGINFO; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_SET, NULL); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_CTL, NULL); ATF_CHECK_EQ(-1, rc); ATF_CHECK_EQ(EFAULT, errno); /* good (pid == 0) */ signum = SIGINFO; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_SET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &signum); ATF_CHECK_EQ(0, rc); /* good (pid == my pid) */ signum = SIGINFO; - rc = procctl(P_PID, getpid(), PROC_PDEATHSIG_SET, &signum); + rc = procctl(P_PID, getpid(), PROC_PDEATHSIG_CTL, &signum); ATF_CHECK_EQ(0, rc); /* check that we can read the signal number back */ signum = 0xdeadbeef; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_GET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_STATUS, &signum); ATF_CHECK_EQ(0, rc); ATF_CHECK_EQ(SIGINFO, signum); } @@ -102,14 +102,14 @@ ATF_TC_BODY(fork_no_inherit, tc) /* request a signal on parent death in the parent */ signum = SIGINFO; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_SET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &signum); rc = fork(); ATF_REQUIRE(rc != -1); if (rc == 0) { /* check that we didn't inherit the setting */ signum = 0xdeadbeef; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_GET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_STATUS, &signum); assert(rc == 0); assert(signum == 0); _exit(0); @@ -138,7 +138,7 @@ ATF_TC_BODY(exec_inherit, tc) /* request a signal on parent death and register a handler */ signum = SIGINFO; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_SET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &signum); assert(rc == 0); /* execute helper program: it asserts that it has the setting */ @@ -186,7 +186,7 @@ ATF_TC_BODY(signal_delivered, tc) signal(signum, dummy_signal_handler); /* request a signal on death of our parent B */ - rc = procctl(P_PID, 0, PROC_PDEATHSIG_SET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &signum); assert(rc == 0); /* tell B that we're ready for it to exit now */ @@ -229,7 +229,6 @@ ATF_TC_BODY(signal_delivered_ptrace, tc) int rc; int pipe_ca[2]; int pipe_db[2]; - int pipe_cd[2]; char buffer; int status; @@ -237,8 +236,6 @@ ATF_TC_BODY(signal_delivered_ptrace, tc) ATF_REQUIRE(rc == 0); rc = pipe(pipe_db); ATF_REQUIRE(rc == 0); - rc = pipe(pipe_cd); - ATF_REQUIRE(rc == 0); rc = fork(); ATF_REQUIRE(rc != -1); @@ -263,12 +260,8 @@ ATF_TC_BODY(signal_delivered_ptrace, tc) signal(signum, dummy_signal_handler); /* request a signal on parent death and register a handler */ - rc = procctl(P_PID, 0, PROC_PDEATHSIG_SET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &signum); assert(rc == 0); - - /* tell D we are ready for it to attach */ - rc = write(pipe_cd[1], ".", 1); - assert(rc == 1); /* wait for B to die and signal us... */ signum = 0xdeadbeef; Copied and modified: stable/11/tests/sys/kern/pdeathsig_helper.c (from r332740, head/tests/sys/kern/pdeathsig_helper.c) ============================================================================== --- head/tests/sys/kern/pdeathsig_helper.c Wed Apr 18 21:31:13 2018 (r332740, copy source) +++ stable/11/tests/sys/kern/pdeathsig_helper.c Wed May 2 07:57:36 2018 (r333162) @@ -38,11 +38,11 @@ int main(int argc, char **argv) /* * This program is executed by the pdeathsig test - * to check if the PROC_PDEATHSIG_SET setting was + * to check if the PROC_PDEATHSIG_CTL setting was * inherited. */ signum = 0xdeadbeef; - rc = procctl(P_PID, 0, PROC_PDEATHSIG_GET, &signum); + rc = procctl(P_PID, 0, PROC_PDEATHSIG_STATUS, &signum); assert(rc == 0); assert(signum == SIGINFO); From owner-svn-src-all@freebsd.org Wed May 2 08:00:58 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 05279FC57AB; Wed, 2 May 2018 08:00:58 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AE5FB6F0F5; Wed, 2 May 2018 08:00:57 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A780F64CD; Wed, 2 May 2018 08:00:57 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4280vYT080591; Wed, 2 May 2018 08:00:57 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4280vQF080590; Wed, 2 May 2018 08:00:57 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020800.w4280vQF080590@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 08:00:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333163 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 333163 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 08:00:58 -0000 Author: kib Date: Wed May 2 08:00:57 2018 New Revision: 333163 URL: https://svnweb.freebsd.org/changeset/base/333163 Log: MFC r332934: Use relaxed atomics to access the monitor line. Modified: stable/11/sys/x86/x86/cpu_machdep.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 07:57:36 2018 (r333162) +++ stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 08:00:57 2018 (r333163) @@ -171,12 +171,12 @@ acpi_cpu_idle_mwait(uint32_t mwait_hint) */ state = (int *)PCPU_PTR(monitorbuf); - KASSERT(*state == STATE_SLEEPING, - ("cpu_mwait_cx: wrong monitorbuf state")); - *state = STATE_MWAIT; + KASSERT(atomic_load_int(state) == STATE_SLEEPING, + ("cpu_mwait_cx: wrong monitorbuf state")); + atomic_store_int(state, STATE_MWAIT); handle_ibrs_entry(); cpu_monitor(state, 0, 0); - if (*state == STATE_MWAIT) + if (atomic_load_int(state) == STATE_MWAIT) cpu_mwait(MWAIT_INTRBREAK, mwait_hint); handle_ibrs_exit(); @@ -184,7 +184,7 @@ acpi_cpu_idle_mwait(uint32_t mwait_hint) * We should exit on any event that interrupts mwait, because * that event might be a wanted interrupt. */ - *state = STATE_RUNNING; + atomic_store_int(state, STATE_RUNNING); } /* Get current clock frequency for the given cpu id. */ @@ -430,7 +430,7 @@ cpu_idle_acpi(sbintime_t sbt) int *state; state = (int *)PCPU_PTR(monitorbuf); - *state = STATE_SLEEPING; + atomic_store_int(state, STATE_SLEEPING); /* See comments in cpu_idle_hlt(). */ disable_intr(); @@ -440,7 +440,7 @@ cpu_idle_acpi(sbintime_t sbt) cpu_idle_hook(sbt); else acpi_cpu_c1(); - *state = STATE_RUNNING; + atomic_store_int(state, STATE_RUNNING); } #endif /* !PC98 */ @@ -450,7 +450,7 @@ cpu_idle_hlt(sbintime_t sbt) int *state; state = (int *)PCPU_PTR(monitorbuf); - *state = STATE_SLEEPING; + atomic_store_int(state, STATE_SLEEPING); /* * Since we may be in a critical section from cpu_idle(), if @@ -473,7 +473,7 @@ cpu_idle_hlt(sbintime_t sbt) enable_intr(); else acpi_cpu_c1(); - *state = STATE_RUNNING; + atomic_store_int(state, STATE_RUNNING); } static void @@ -482,21 +482,22 @@ cpu_idle_mwait(sbintime_t sbt) int *state; state = (int *)PCPU_PTR(monitorbuf); - *state = STATE_MWAIT; + atomic_store_int(state, STATE_MWAIT); /* See comments in cpu_idle_hlt(). */ disable_intr(); if (sched_runnable()) { + atomic_store_int(state, STATE_RUNNING); enable_intr(); - *state = STATE_RUNNING; return; } + cpu_monitor(state, 0, 0); - if (*state == STATE_MWAIT) + if (atomic_load_int(state) == STATE_MWAIT) __asm __volatile("sti; mwait" : : "a" (MWAIT_C1), "c" (0)); else enable_intr(); - *state = STATE_RUNNING; + atomic_store_int(state, STATE_RUNNING); } static void @@ -506,7 +507,7 @@ cpu_idle_spin(sbintime_t sbt) int i; state = (int *)PCPU_PTR(monitorbuf); - *state = STATE_RUNNING; + atomic_store_int(state, STATE_RUNNING); /* * The sched_runnable() call is racy but as long as there is @@ -604,20 +605,21 @@ out: int cpu_idle_wakeup(int cpu) { - struct pcpu *pcpu; int *state; - pcpu = pcpu_find(cpu); - state = (int *)pcpu->pc_monitorbuf; - /* - * This doesn't need to be atomic since missing the race will - * simply result in unnecessary IPIs. - */ - if (*state == STATE_SLEEPING) + state = (int *)pcpu_find(cpu)->pc_monitorbuf; + switch (atomic_load_int(state)) { + case STATE_SLEEPING: return (0); - if (*state == STATE_MWAIT) - *state = STATE_RUNNING; - return (1); + case STATE_MWAIT: + atomic_store_int(state, STATE_RUNNING); + return (1); + case STATE_RUNNING: + return (1); + default: + panic("bad monitor state"); + return (1); + } } /* From owner-svn-src-all@freebsd.org Wed May 2 08:12:26 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CA78AFC5A68; Wed, 2 May 2018 08:12:25 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7CE0172B57; Wed, 2 May 2018 08:12:25 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5D83A66E4; Wed, 2 May 2018 08:12:25 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w428CPQU089513; Wed, 2 May 2018 08:12:25 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w428CPha089497; Wed, 2 May 2018 08:12:25 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020812.w428CPha089497@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 08:12:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333164 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 333164 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 08:12:26 -0000 Author: kib Date: Wed May 2 08:12:25 2018 New Revision: 333164 URL: https://svnweb.freebsd.org/changeset/base/333164 Log: MFC r332973: Make the sysctl machdep.idle also a tunable. Modified: stable/11/sys/x86/x86/cpu_machdep.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 08:00:57 2018 (r333163) +++ stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 08:12:25 2018 (r333164) @@ -667,26 +667,12 @@ idle_sysctl_available(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_machdep, OID_AUTO, idle_available, CTLTYPE_STRING | CTLFLAG_RD, 0, 0, idle_sysctl_available, "A", "list of available idle functions"); -static int -idle_sysctl(SYSCTL_HANDLER_ARGS) +static bool +idle_selector(const char *new_idle_name) { - char buf[16]; - int error; - char *p; int i; - p = "unknown"; for (i = 0; idle_tbl[i].id_name != NULL; i++) { - if (idle_tbl[i].id_fn == cpu_idle_fn) { - p = idle_tbl[i].id_name; - break; - } - } - strncpy(buf, p, sizeof(buf)); - error = sysctl_handle_string(oidp, buf, sizeof(buf), req); - if (error != 0 || req->newptr == NULL) - return (error); - for (i = 0; idle_tbl[i].id_name != NULL; i++) { if (strstr(idle_tbl[i].id_name, "mwait") && (cpu_feature2 & CPUID2_MON) == 0) continue; @@ -695,16 +681,48 @@ idle_sysctl(SYSCTL_HANDLER_ARGS) cpu_idle_hook == NULL) continue; #endif - if (strcmp(idle_tbl[i].id_name, buf)) + if (strcmp(idle_tbl[i].id_name, new_idle_name)) continue; cpu_idle_fn = idle_tbl[i].id_fn; - return (0); + if (bootverbose) + printf("CPU idle set to %s\n", idle_tbl[i].id_name); + return (true); } - return (EINVAL); + return (false); } +static int +idle_sysctl(SYSCTL_HANDLER_ARGS) +{ + char buf[16], *p; + int error, i; + + p = "unknown"; + for (i = 0; idle_tbl[i].id_name != NULL; i++) { + if (idle_tbl[i].id_fn == cpu_idle_fn) { + p = idle_tbl[i].id_name; + break; + } + } + strncpy(buf, p, sizeof(buf)); + error = sysctl_handle_string(oidp, buf, sizeof(buf), req); + if (error != 0 || req->newptr == NULL) + return (error); + return (idle_selector(buf) ? 0 : EINVAL); +} + SYSCTL_PROC(_machdep, OID_AUTO, idle, CTLTYPE_STRING | CTLFLAG_RW, 0, 0, idle_sysctl, "A", "currently selected idle function"); + +static void +idle_tun(void *unused __unused) +{ + char tunvar[16]; + + if (TUNABLE_STR_FETCH("machdep.idle", tunvar, sizeof(tunvar))) + idle_selector(tunvar); +} +SYSINIT(idle_tun, SI_SUB_CPU, SI_ORDER_MIDDLE, idle_tun, NULL); static int panic_on_nmi = 1; SYSCTL_INT(_machdep, OID_AUTO, panic_on_nmi, CTLFLAG_RWTUN, From owner-svn-src-all@freebsd.org Wed May 2 08:16:39 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 129EBFC5B22; Wed, 2 May 2018 08:16:39 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AE6E974508; Wed, 2 May 2018 08:16:38 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A49FA66F3; Wed, 2 May 2018 08:16:38 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w428GcXL090205; Wed, 2 May 2018 08:16:38 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w428GcrF090204; Wed, 2 May 2018 08:16:38 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020816.w428GcrF090204@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 08:16:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333165 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 333165 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 08:16:39 -0000 Author: kib Date: Wed May 2 08:16:38 2018 New Revision: 333165 URL: https://svnweb.freebsd.org/changeset/base/333165 Log: MFC r333025: Some style and minor code improvements for idle selection. Modified: stable/11/sys/x86/x86/cpu_machdep.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 08:12:25 2018 (r333164) +++ stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 08:16:38 2018 (r333165) @@ -625,17 +625,18 @@ cpu_idle_wakeup(int cpu) /* * Ordered by speed/power consumption. */ -struct { +static struct { void *id_fn; char *id_name; + int id_cpuid2_flag; } idle_tbl[] = { - { cpu_idle_spin, "spin" }, - { cpu_idle_mwait, "mwait" }, - { cpu_idle_hlt, "hlt" }, + { .id_fn = cpu_idle_spin, .id_name = "spin" }, + { .id_fn = cpu_idle_mwait, .id_name = "mwait", + .id_cpuid2_flag = CPUID2_MON }, + { .id_fn = cpu_idle_hlt, .id_name = "hlt" }, #if !defined(__i386__) || !defined(PC98) - { cpu_idle_acpi, "acpi" }, + { .id_fn = cpu_idle_acpi, .id_name = "acpi" }, #endif - { NULL, NULL } }; static int @@ -647,9 +648,9 @@ idle_sysctl_available(SYSCTL_HANDLER_ARGS) avail = malloc(256, M_TEMP, M_WAITOK); p = avail; - for (i = 0; idle_tbl[i].id_name != NULL; i++) { - if (strstr(idle_tbl[i].id_name, "mwait") && - (cpu_feature2 & CPUID2_MON) == 0) + for (i = 0; i < nitems(idle_tbl); i++) { + if (idle_tbl[i].id_cpuid2_flag != 0 && + (cpu_feature2 & idle_tbl[i].id_cpuid2_flag) == 0) continue; #if !defined(__i386__) || !defined(PC98) if (strcmp(idle_tbl[i].id_name, "acpi") == 0 && @@ -668,13 +669,13 @@ SYSCTL_PROC(_machdep, OID_AUTO, idle_available, CTLTYP 0, 0, idle_sysctl_available, "A", "list of available idle functions"); static bool -idle_selector(const char *new_idle_name) +cpu_idle_selector(const char *new_idle_name) { int i; - for (i = 0; idle_tbl[i].id_name != NULL; i++) { - if (strstr(idle_tbl[i].id_name, "mwait") && - (cpu_feature2 & CPUID2_MON) == 0) + for (i = 0; i < nitems(idle_tbl); i++) { + if (idle_tbl[i].id_cpuid2_flag != 0 && + (cpu_feature2 & idle_tbl[i].id_cpuid2_flag) == 0) continue; #if !defined(__i386__) || !defined(PC98) if (strcmp(idle_tbl[i].id_name, "acpi") == 0 && @@ -692,13 +693,13 @@ idle_selector(const char *new_idle_name) } static int -idle_sysctl(SYSCTL_HANDLER_ARGS) +cpu_idle_sysctl(SYSCTL_HANDLER_ARGS) { char buf[16], *p; int error, i; p = "unknown"; - for (i = 0; idle_tbl[i].id_name != NULL; i++) { + for (i = 0; i < nitems(idle_tbl); i++) { if (idle_tbl[i].id_fn == cpu_idle_fn) { p = idle_tbl[i].id_name; break; @@ -708,21 +709,21 @@ idle_sysctl(SYSCTL_HANDLER_ARGS) error = sysctl_handle_string(oidp, buf, sizeof(buf), req); if (error != 0 || req->newptr == NULL) return (error); - return (idle_selector(buf) ? 0 : EINVAL); + return (cpu_idle_selector(buf) ? 0 : EINVAL); } SYSCTL_PROC(_machdep, OID_AUTO, idle, CTLTYPE_STRING | CTLFLAG_RW, 0, 0, - idle_sysctl, "A", "currently selected idle function"); + cpu_idle_sysctl, "A", "currently selected idle function"); static void -idle_tun(void *unused __unused) +cpu_idle_tun(void *unused __unused) { char tunvar[16]; if (TUNABLE_STR_FETCH("machdep.idle", tunvar, sizeof(tunvar))) - idle_selector(tunvar); + cpu_idle_selector(tunvar); } -SYSINIT(idle_tun, SI_SUB_CPU, SI_ORDER_MIDDLE, idle_tun, NULL); +SYSINIT(cpu_idle_tun, SI_SUB_CPU, SI_ORDER_MIDDLE, cpu_idle_tun, NULL); static int panic_on_nmi = 1; SYSCTL_INT(_machdep, OID_AUTO, panic_on_nmi, CTLFLAG_RWTUN, From owner-svn-src-all@freebsd.org Wed May 2 08:19:07 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EA827FC5BF7; Wed, 2 May 2018 08:19:06 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8AE07746DB; Wed, 2 May 2018 08:19:06 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8027266F5; Wed, 2 May 2018 08:19:06 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w428J682090387; Wed, 2 May 2018 08:19:06 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w428J6LF090386; Wed, 2 May 2018 08:19:06 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020819.w428J6LF090386@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 08:19:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333166 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 333166 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 08:19:07 -0000 Author: kib Date: Wed May 2 08:19:06 2018 New Revision: 333166 URL: https://svnweb.freebsd.org/changeset/base/333166 Log: MFC r333026: Handle Apollo Lake errata APL31. MFC r333034: Tweaks for r333026. Modified: stable/11/sys/x86/x86/cpu_machdep.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 08:16:38 2018 (r333165) +++ stable/11/sys/x86/x86/cpu_machdep.c Wed May 2 08:19:06 2018 (r333166) @@ -602,6 +602,11 @@ out: busy, curcpu); } +static int cpu_idle_apl31_workaround; +SYSCTL_INT(_machdep, OID_AUTO, idle_apl31, CTLFLAG_RW, + &cpu_idle_apl31_workaround, 0, + "Apollo Lake APL31 MWAIT bug workaround"); + int cpu_idle_wakeup(int cpu) { @@ -613,7 +618,7 @@ cpu_idle_wakeup(int cpu) return (0); case STATE_MWAIT: atomic_store_int(state, STATE_RUNNING); - return (1); + return (cpu_idle_apl31_workaround ? 0 : 1); case STATE_RUNNING: return (1); default: @@ -722,6 +727,17 @@ cpu_idle_tun(void *unused __unused) if (TUNABLE_STR_FETCH("machdep.idle", tunvar, sizeof(tunvar))) cpu_idle_selector(tunvar); + if (cpu_vendor_id == CPU_VENDOR_INTEL && cpu_id == 0x506c9) { + /* + * Apollo Lake errata APL31 (public errata APL30). + * Stores to the armed address range may not trigger + * MWAIT to resume execution. OS needs to use + * interrupts to wake processors from MWAIT-induced + * sleep states. + */ + cpu_idle_apl31_workaround = 1; + } + TUNABLE_INT_FETCH("machdep.idle_apl31", &cpu_idle_apl31_workaround); } SYSINIT(cpu_idle_tun, SI_SUB_CPU, SI_ORDER_MIDDLE, cpu_idle_tun, NULL); From owner-svn-src-all@freebsd.org Wed May 2 08:24:59 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C5605FC5DFA; Wed, 2 May 2018 08:24:59 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7448874ACC; Wed, 2 May 2018 08:24:59 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6B3636881; Wed, 2 May 2018 08:24:59 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w428OxnY095243; Wed, 2 May 2018 08:24:59 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w428OxpJ095242; Wed, 2 May 2018 08:24:59 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020824.w428OxpJ095242@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 08:24:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333167 - stable/11/sys/amd64/vmm X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/amd64/vmm X-SVN-Commit-Revision: 333167 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 08:24:59 -0000 Author: kib Date: Wed May 2 08:24:59 2018 New Revision: 333167 URL: https://svnweb.freebsd.org/changeset/base/333167 Log: MFC r332932: Correct undesirable interaction between caching of %cr4 in bhyve and invltlb_glob(). Modified: stable/11/sys/amd64/vmm/vmm_host.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/amd64/vmm/vmm_host.c ============================================================================== --- stable/11/sys/amd64/vmm/vmm_host.c Wed May 2 08:19:06 2018 (r333166) +++ stable/11/sys/amd64/vmm/vmm_host.c Wed May 2 08:24:59 2018 (r333167) @@ -59,7 +59,16 @@ vmm_host_state_init(void) */ vmm_host_cr0 = rcr0() | CR0_TS; - vmm_host_cr4 = rcr4(); + /* + * On non-PCID or PCID but without INVPCID support machines, + * we flush kernel i.e. global TLB entries, by temporary + * clearing the CR4.PGE bit, see invltlb_glob(). If + * preemption occurs at the wrong time, cached vmm_host_cr4 + * might store the value with CR4.PGE cleared. Since FreeBSD + * requires support for PG_G on amd64, just set it + * unconditionally. + */ + vmm_host_cr4 = rcr4() | CR4_PGE; /* * Only permit a guest to use XSAVE if the host is using From owner-svn-src-all@freebsd.org Wed May 2 08:27:00 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8CD12FC5E8C; Wed, 2 May 2018 08:27:00 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 39FCD75723; Wed, 2 May 2018 08:27:00 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2F1596882; Wed, 2 May 2018 08:27:00 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w428R0WT095371; Wed, 2 May 2018 08:27:00 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w428R0Bg095370; Wed, 2 May 2018 08:27:00 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805020827.w428R0Bg095370@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 08:27:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333168 - stable/11/lib/libc/secure X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/lib/libc/secure X-SVN-Commit-Revision: 333168 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 08:27:00 -0000 Author: kib Date: Wed May 2 08:26:59 2018 New Revision: 333168 URL: https://svnweb.freebsd.org/changeset/base/333168 Log: MFC r332940: Carefully update stack guard bytes inside __guard_setup(). Modified: stable/11/lib/libc/secure/stack_protector.c Directory Properties: stable/11/ (props changed) Modified: stable/11/lib/libc/secure/stack_protector.c ============================================================================== --- stable/11/lib/libc/secure/stack_protector.c Wed May 2 08:24:59 2018 (r333167) +++ stable/11/lib/libc/secure/stack_protector.c Wed May 2 08:26:59 2018 (r333168) @@ -54,15 +54,27 @@ static void __guard_setup(void) { static const int mib[2] = { CTL_KERN, KERN_ARND }; + volatile long tmp_stack_chk_guard[nitems(__stack_chk_guard)]; size_t len; - int error; + int error, idx; if (__stack_chk_guard[0] != 0) return; - error = _elf_aux_info(AT_CANARY, __stack_chk_guard, - sizeof(__stack_chk_guard)); - if (error == 0 && __stack_chk_guard[0] != 0) + /* + * Avoid using functions which might have stack protection + * enabled, to update the __stack_chk_guard. First fetch the + * data into a temporal array, then do manual volatile copy to + * not allow optimizer to call memcpy() behind us. + */ + error = _elf_aux_info(AT_CANARY, (void *)tmp_stack_chk_guard, + sizeof(tmp_stack_chk_guard)); + if (error == 0 && tmp_stack_chk_guard[0] != 0) { + for (idx = 0; idx < nitems(__stack_chk_guard); idx++) { + __stack_chk_guard[idx] = tmp_stack_chk_guard[idx]; + tmp_stack_chk_guard[idx] = 0; + } return; + } len = sizeof(__stack_chk_guard); if (__sysctl(mib, nitems(mib), __stack_chk_guard, &len, NULL, 0) == From owner-svn-src-all@freebsd.org Wed May 2 10:19:18 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 99753FC87B8; Wed, 2 May 2018 10:19:18 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3CD286DB33; Wed, 2 May 2018 10:19:18 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 33ACA7A4C; Wed, 2 May 2018 10:19:18 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42AJIIP051138; Wed, 2 May 2018 10:19:18 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42AJH6t051136; Wed, 2 May 2018 10:19:17 GMT (envelope-from royger@FreeBSD.org) Message-Id: <201805021019.w42AJH6t051136@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Date: Wed, 2 May 2018 10:19:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333169 - in head/sys: dev/xen/gntdev xen X-SVN-Group: head X-SVN-Commit-Author: royger X-SVN-Commit-Paths: in head/sys: dev/xen/gntdev xen X-SVN-Commit-Revision: 333169 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 10:19:18 -0000 Author: royger Date: Wed May 2 10:19:17 2018 New Revision: 333169 URL: https://svnweb.freebsd.org/changeset/base/333169 Log: xen: fix gntdev Current interface to the gntdev in FreeBSD is wrong, and mostly worked out of luck before the PTI FreeBSD fixes, when kernel and user-space where sharing the same page tables. On FreeBSD ioctls have the size of the passed struct encoded in the ioctl number, because the generic ioctl handler in the OS takes care of copying the data from user-space to kernel space, and then calls the device specific ioctl handler. Thus using ioctl structs with variable sizes is not possible. The fix is to turn the array of structs at the end of ioctl_gntdev_alloc_gref and ioctl_gntdev_map_grant_ref into pointers, that can be properly accessed from the kernel gntdev driver using the copyin/copyout functions. Note that this is exactly how it's done for the privcmd driver. Sponsored by: Citrix Systems R&D Modified: head/sys/dev/xen/gntdev/gntdev.c head/sys/xen/gntdev.h Modified: head/sys/dev/xen/gntdev/gntdev.c ============================================================================== --- head/sys/dev/xen/gntdev/gntdev.c Wed May 2 08:26:59 2018 (r333168) +++ head/sys/dev/xen/gntdev/gntdev.c Wed May 2 10:19:17 2018 (r333169) @@ -414,7 +414,7 @@ gntdev_alloc_gref(struct ioctl_gntdev_alloc_gref *arg) /* Copy the output values. */ arg->index = file_offset; for (i = 0; i < arg->count; i++) - arg->gref_ids[i] = grefs[i].gref_id; + suword32(&arg->gref_ids[i], grefs[i].gref_id); /* Modify the per user private data. */ mtx_lock(&priv_user->user_data_lock); @@ -659,16 +659,27 @@ gntdev_map_grant_ref(struct ioctl_gntdev_map_grant_ref gmap->grant_map_ops = malloc(sizeof(struct gnttab_map_grant_ref) * arg->count, M_GNTDEV, M_WAITOK | M_ZERO); - - error = get_file_offset(priv_user, arg->count, &gmap->file_index); - if (error != 0) - return (error); for (i = 0; i < arg->count; i++) { - gmap->grant_map_ops[i].dom = arg->refs[i].domid; - gmap->grant_map_ops[i].ref = arg->refs[i].ref; + struct ioctl_gntdev_grant_ref ref; + + error = copyin(&arg->refs[i], &ref, sizeof(ref)); + if (error != 0) { + free(gmap->grant_map_ops, M_GNTDEV); + free(gmap, M_GNTDEV); + return (error); + } + gmap->grant_map_ops[i].dom = ref.domid; + gmap->grant_map_ops[i].ref = ref.ref; gmap->grant_map_ops[i].handle = -1; gmap->grant_map_ops[i].flags = GNTMAP_host_map; + } + + error = get_file_offset(priv_user, arg->count, &gmap->file_index); + if (error != 0) { + free(gmap->grant_map_ops, M_GNTDEV); + free(gmap, M_GNTDEV); + return (error); } mtx_lock(&priv_user->user_data_lock); Modified: head/sys/xen/gntdev.h ============================================================================== --- head/sys/xen/gntdev.h Wed May 2 08:26:59 2018 (r333168) +++ head/sys/xen/gntdev.h Wed May 2 10:19:17 2018 (r333169) @@ -139,7 +139,7 @@ struct ioctl_gntdev_alloc_gref { /* OUT parameters */ uint64_t index; /* Variable OUT parameter */ - uint32_t gref_ids[1]; + uint32_t *gref_ids; }; #define GNTDEV_ALLOC_FLAG_WRITABLE 1 @@ -168,7 +168,7 @@ struct ioctl_gntdev_map_grant_ref { /* OUT parameters */ uint64_t index; /* Variable IN parameter */ - struct ioctl_gntdev_grant_ref refs[1]; + struct ioctl_gntdev_grant_ref *refs; }; #define IOCTL_GNTDEV_UNMAP_GRANT_REF \ From owner-svn-src-all@freebsd.org Wed May 2 10:20:56 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 80A6AFC8858; Wed, 2 May 2018 10:20:56 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 351456DEC5; Wed, 2 May 2018 10:20:56 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2D1E17A6C; Wed, 2 May 2018 10:20:56 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42AKu1c051961; Wed, 2 May 2018 10:20:56 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42AKusa051960; Wed, 2 May 2018 10:20:56 GMT (envelope-from royger@FreeBSD.org) Message-Id: <201805021020.w42AKusa051960@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Date: Wed, 2 May 2018 10:20:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333170 - head/sys/x86/xen X-SVN-Group: head X-SVN-Commit-Author: royger X-SVN-Commit-Paths: head/sys/x86/xen X-SVN-Commit-Revision: 333170 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 10:20:56 -0000 Author: royger Date: Wed May 2 10:20:55 2018 New Revision: 333170 URL: https://svnweb.freebsd.org/changeset/base/333170 Log: xen: fix formatting of xen_init_ops No functional change Sponsored by: Citrix Systems R&D Modified: head/sys/x86/xen/pv.c Modified: head/sys/x86/xen/pv.c ============================================================================== --- head/sys/x86/xen/pv.c Wed May 2 10:19:17 2018 (r333169) +++ head/sys/x86/xen/pv.c Wed May 2 10:20:55 2018 (r333170) @@ -119,7 +119,7 @@ struct init_ops xen_init_ops = { #ifdef SMP .start_all_aps = xen_pv_start_all_aps, #endif - .msi_init = xen_msi_init, + .msi_init = xen_msi_init, }; static struct bios_smap xen_smap[MAX_E820_ENTRIES]; From owner-svn-src-all@freebsd.org Wed May 2 14:39:26 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C86B2FABA23 for ; Wed, 2 May 2018 14:39:25 +0000 (UTC) (envelope-from donna.perez@protechnologyaccounts.net) Received: from mail-qt0-x245.google.com (mail-qt0-x245.google.com [IPv6:2607:f8b0:400d:c0d::245]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 653F087AD1 for ; Wed, 2 May 2018 14:39:25 +0000 (UTC) (envelope-from donna.perez@protechnologyaccounts.net) Received: by mail-qt0-x245.google.com with SMTP id b10-v6so11177977qto.5 for ; Wed, 02 May 2018 07:39:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protechnologyaccounts.net; s=google; h=mime-version:message-id:date:subject:from:to; bh=l4tj2uwgLvMcfH1WyGw+mu4TWEZLOwSb9iYWO3kZvBA=; b=UuZDzjVbaFpG+LzySWOatzE7SixKh6V0SEslUh0pwMuSZRO91dlv5N9IcMmARv3iw8 DpVnQ9f7qENATkfuKEqvaAZZh4+LU4wnjZJYB0oiWjdwwv9mZCGTAcokDwQPE6o48xod n2lIAOpW7IGk6bmFyiFzQfP9NnPUIWSmT4QSQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:message-id:date:subject:from:to; bh=l4tj2uwgLvMcfH1WyGw+mu4TWEZLOwSb9iYWO3kZvBA=; b=aCOOI/j46ZQzd3zG3N7G1PI0q8qtDODs6Dvx4cfLVnlfp+fJHN45G3vZiwWo/4r3+P OGStpUchhh6vtabcfxt1xFIWf7Mb5Tbbb+AX0oEE8yTrAhmGg73/e+bJmOT3a4lB+8mL /WdLTbw7jNPinFQgZH61o4zAQ3VIu337gRMbRYfG/wfP3zcH13vz+gM+qGpElrArMtp1 Sk5Ixsm6rYA/H3O5Iz62cn2KoR1bolhbQ0R7lxcVuxgRxyrG4lnbATVmR48TweUp1Tj0 p6NT9p7iysCZEFm84I0CmBcvRl205zV2VqUNaH8KJV2E9pzTVzPHMO9TLcZwL+VPYBUF 0j1Q== X-Gm-Message-State: ALQs6tDzRi7D36ZcN1LJyo/MracpcKli602BiHeA14Hmnyfv658PMwsX 86Q3b3VNK1MM/f9Pbz6BD7lv1o3miKKc X-Google-Smtp-Source: AB8JxZpORVHIJgvBx8uAl08xbz9KFENA/HEN05RQ43NSHv6iDAI28Rs1rDI0hwY/YMgMeiiK1mMUGYqnJg== MIME-Version: 1.0 X-Received: by 2002:a0c:c310:: with SMTP id f16-v6mr9172811qvi.10.1525271964720; Wed, 02 May 2018 07:39:24 -0700 (PDT) Message-ID: <000000000000a4a6ab056b3a0d2e@google.com> Date: Wed, 02 May 2018 14:39:24 +0000 Subject: Real Estate Industry Email List From: donna.perez@protechnologyaccounts.net To: svn-src-all@freebsd.org Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 14:39:26 -0000 PGRpdiBkaXI9Imx0ciI+PHAgY2xhc3M9Ik1zb05vcm1hbCIgIA0Kc3R5bGU9Im1hcmdpbi1ib3R0 b206MC4wMDAxcHQ7bGluZS1oZWlnaHQ6bm9ybWFsIj48c3BhbiAgDQpzdHlsZT0iY29sb3I6cmdi KDM2LDY0LDk3KSI+SGksPGJyPg0KPGJyPg0KPC9zcGFuPjxzcGFuPjwvc3Bhbj48L3A+DQoNCjxw IGNsYXNzPSJNc29Ob3JtYWwiICANCnN0eWxlPSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUt aGVpZ2h0Om5vcm1hbCI+PHNwYW4gIA0Kc3R5bGU9ImNvbG9yOnJnYigzNiw2NCw5NykiPkhvcGUg eW91IGFyZSBkb2luZyB3ZWxsITxicj4NCjxicj4NCkFyZSB5b3UgbG9va2luZyBmb3LCoDxiPlJl YWwgRXN0YXRlIEluZHVzdHJ5IEV4ZWN1dGl2ZXM8L2I+wqBsaXN0IGZvcg0KeW91ciBtYXJrZXRp bmcgY2FtcGFpZ24/wqBXZSBhcmUgYSBnbG9iYWwgdGVjaG5vbG9neSB1c2VycyBsaXN0IHByb3Zp ZGUNCndpdGggMjUwbWlsKyBkYXRhLjxicj4NCjxicj4NCkZldyBvZiB0aGUgdGl0bGVzIG9mIHlv dXIgaW50ZXJlc3Q6PGJyPg0KPGJyPg0KPGI+U2FsZXMgRXhlY3V0aXZlcyBmb3IgSW5zdXJhbmNl ICZhbXA7IFJlYWwgRXN0YXRlPGJyPg0KQ1JNIE1hbmFnZXIgLVJlYWwgZXN0YXRlPGJyPg0KTWFu YWdlciAtUmVhbCBFc3RhdGU8YnI+DQpTci4gTWFuYWdlciAtIE1hcmtldGluZyAmYW1wOyBTYWxl czxicj4NCkNGTy9DRU8vQ09PPGJyPg0KRGlyZWN0b3JzPGJyPg0KVmljZSBwcmVzaWRlbnQgLSBS ZWFsIEVzdGF0ZTxicj4NCk90aGVyIERlY2lzaW9uIE1ha2VyczwvYj7CoGFuZCBtYW55IG1vcmUu Ljxicj4NCjxicj4NCjwvc3Bhbj48c3Bhbj48L3NwYW4+PC9wPg0KDQo8Yj48c3BhbiAgDQpzdHls ZT0iZm9udC1zaXplOjExcHQ7bGluZS1oZWlnaHQ6MTE1JTtmb250LWZhbWlseTpDYWxpYnJpLHNh bnMtc2VyaWY7Y29sb3I6cmdiKDM2LDY0LDk3KSI+SW5kdXN0cmllczrCoDwvc3Bhbj48L2I+PHNw YW4gIA0Kc3R5bGU9ImZvbnQtc2l6ZToxMXB0O2xpbmUtaGVpZ2h0OjExNSU7Zm9udC1mYW1pbHk6 Q2FsaWJyaSxzYW5zLXNlcmlmO2NvbG9yOnJnYigzNiw2NCw5NykiPklUDQpEaXN0cmlidXRpb24s IEZpbmFuY2UgJmFtcDsgQmFua2luZywgSGVhbHRoY2FyZSwgT2lsICZhbXA7IEdhcyAgDQpUcmFu c3BvcnRhdGlvbiwNCkhhcmR3YXJlL3NvZnR3YXJlLCBJbnN1cmFuY2UsIE1hbnVmYWN0dXJlcnMg JmFtcDsgU3VwcGxpZXJzLjxicj4NCjxicj4NClBsZWFzZSByZXZpZXcgYW5kIGxldCBtZSBrbm93 IGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgYWJvdmUgb3Igb3RoZXINCmluZHVzdHJ5IGxp c3QuPGJyPg0KPGJyPg0KQXBwcmVjaWF0ZSB5b3VyIHRpbWUgYW5kIGxvb2sgZm9yd2FyZCB0byBo ZWFyIGZyb20geW91Ljxicj4NCjxicj4NClJlZ2FyZHMswqA8YnI+DQpEb25uYSBQZXJlejxicj4N CkRhdGEgU3BlY2lhbGlzdDxicj4NCjxicj4NCnRvIG9wdC1vdXQgcmVzcG9uc2UgUkVNT1ZFPC9z cGFuPjxicj48L2Rpdj4NCjxwPiZuYnNwOzwvcD48YSBzdHlsZT0nZGlzcGxheTogYmxvY2s7IG1h cmdpbjogMzJweCAwIDQwcHggMDsgcGFkZGluZzogIA0KMTBweDsgZm9udC1zaXplOiAxZW07IHRl eHQtYWxpZ246IGNlbnRlcjsgYm9yZGVyOiAwOyBib3JkZXItdG9wOiAxcHggc29saWQgIA0KZ3Jh eTsgJyBocmVmPSdodHRwczovL2dvby5nbC8ya3NkUnYnPnBvd2VyZWQgYnkgR1NNLiBGcmVlIG1h aWwgbWVyZ2UgYW5kICANCmVtYWlsIG1hcmtldGluZyBzb2Z0d2FyZSBmb3IgR21haWwuPC9hPg0K From owner-svn-src-all@freebsd.org Wed May 2 14:59:27 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C5DA6FAC108; Wed, 2 May 2018 14:59:27 +0000 (UTC) (envelope-from hiren@strugglingcoder.info) Received: from mail.strugglingcoder.info (strugglingcoder.info [104.236.146.68]) by mx1.freebsd.org (Postfix) with ESMTP id 6C9546C2ED; Wed, 2 May 2018 14:59:27 +0000 (UTC) (envelope-from hiren@strugglingcoder.info) Received: from localhost (unknown [10.1.1.3]) (Authenticated sender: hiren@strugglingcoder.info) by mail.strugglingcoder.info (Postfix) with ESMTPA id 7CEC2178C5; Wed, 2 May 2018 07:59:21 -0700 (PDT) Date: Wed, 2 May 2018 07:59:21 -0700 From: hiren panchasara To: Warner Losh Cc: Jonathan Looney , Randall Stewart , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r332770 - in head/sys: conf netinet netinet/tcp_stacks sys Message-ID: <20180502145921.GA34324@strugglingcoder.info> References: <201804191338.w3JDc0to002106@repo.freebsd.org> <20180430071646.GE3653@strugglingcoder.info> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="Dxnq1zWXvFF0Q93v" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 14:59:27 -0000 --Dxnq1zWXvFF0Q93v Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 05/01/18 at 05:11P, Warner Losh wrote: > On Tue, May 1, 2018 at 5:00 PM, Jonathan Looney wro= te: >=20 > > On Mon, Apr 30, 2018 at 3:16 AM, hiren panchasara < > > hiren@strugglingcoder.info> wrote: > > > > > > In my understanding, default stack currently cannot use this mechanis= m. > > When do > > > you think that'll be possible? > > > > > > I think I can speak to Randall's plans for this. Thank you! > > > > Randall chose not to include in this commit the hooks for the default > > stack to use the high-precision timers. I believe his immediate priorit= ies > > are upstreaming RACK and BBR. After that, if there is demand, he may > > upstream the (relatively untested) code that allows the default stack to > > use the high-precision timers (protected by a non-default kernel option= ) so > > others can choose to experiment with it. I believe it'd be useful to be able to pace packets with the traditional stack. > > > > (By the way, we're hoping to change the terminology away from describing > > the traditional FreeBSD stack as the "default" stack. In theory, someone > > can make any stack be their local default. We'll need to figure out wha= t to > > actually call it at some point. My suggestion was the "FreeBSD" stack, > > although that is lacking in some imagination. In any case, we should ha= ve > > that discussion at some point in the future. > > >=20 > Only slightly less poor would be "traditional" stack :) See, I've already started using this name. :-) Cheers, Hiren --Dxnq1zWXvFF0Q93v Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQF8BAABCgBmBQJa6dJDXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRBNEUyMEZBMUQ4Nzg4RjNGMTdFNjZGMDI4 QjkyNTBFMTU2M0VERkU1AAoJEIuSUOFWPt/lTw4H/ijeuuQjOst10aXhXbH/INFS n/h7XZDJCiJRY+YQ55XfBZ7hB+b1zbytwnknjwCTMwVvTX5aacXC3lrjjSVVzyhq fCOvgFpGrzQpt+uraGZyczREVGLnuYnw7rCKCUn9bKc6TkG4ghDbog8UwIaq9MNc uCVZTzsvr8M+ufrQwA+12HvoeHeC1dd90PNXA63vQJDZ8gSvjRidqJwJMPINTu8D jkhY/8/461F0DuPux1ASLvd3vZQk+XSwgd7mNTFjkUaAhDFBvW3UCLWbXp8ZiRqW SWIwjNY+gzIQapTUpsy80dvipSpKrnIBUYnK5NC0OuEbxn4WTspDCeCW9xcuqLo= =RMvI -----END PGP SIGNATURE----- --Dxnq1zWXvFF0Q93v-- From owner-svn-src-all@freebsd.org Wed May 2 15:21:52 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C63C9FAC834; Wed, 2 May 2018 15:21:52 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7AD72729AA; Wed, 2 May 2018 15:21:52 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 75DB412B94; Wed, 2 May 2018 15:21:52 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42FLqUr010903; Wed, 2 May 2018 15:21:52 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42FLqpM010901; Wed, 2 May 2018 15:21:52 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805021521.w42FLqpM010901@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Wed, 2 May 2018 15:21:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333171 - in stable/11: share/man/man4 sys/dev/ixgb X-SVN-Group: stable-11 X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: in stable/11: share/man/man4 sys/dev/ixgb X-SVN-Commit-Revision: 333171 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 15:21:52 -0000 Author: sbruno Date: Wed May 2 15:21:51 2018 New Revision: 333171 URL: https://svnweb.freebsd.org/changeset/base/333171 Log: MFC r333137: ixgb(4): Add deprecation notice for this old and busted 10GE adapter. This is a prequisite before we remove the driver from -current. Modified: stable/11/share/man/man4/ixgb.4 stable/11/sys/dev/ixgb/if_ixgb.c Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man4/ixgb.4 ============================================================================== --- stable/11/share/man/man4/ixgb.4 Wed May 2 10:20:55 2018 (r333170) +++ stable/11/share/man/man4/ixgb.4 Wed May 2 15:21:51 2018 (r333171) @@ -31,7 +31,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 18, 2006 +.Dd April 30, 2018 .Dt IXGB 4 .Os .Sh NAME @@ -51,6 +51,12 @@ module at boot time, place the following line in .Bd -literal -offset indent if_ixgb_load="YES" .Ed +.Sh DEPRECATION NOTICE +The +.Nm +driver is not present in +.Fx 12.0 +and later. .Sh DESCRIPTION The .Nm Modified: stable/11/sys/dev/ixgb/if_ixgb.c ============================================================================== --- stable/11/sys/dev/ixgb/if_ixgb.c Wed May 2 10:20:55 2018 (r333170) +++ stable/11/sys/dev/ixgb/if_ixgb.c Wed May 2 15:21:51 2018 (r333171) @@ -349,6 +349,7 @@ ixgb_attach(device_t dev) ixgb_clear_hw_cntrs(&adapter->hw); ixgb_update_stats_counters(adapter); + gone_in_dev(dev, 12, "ixgb(4) driver"); INIT_DEBUGOUT("ixgb_attach: end"); return (0); From owner-svn-src-all@freebsd.org Wed May 2 15:45:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4254FFAD0FB; Wed, 2 May 2018 15:45:32 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E98F2794C1; Wed, 2 May 2018 15:45:31 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E071A12F05; Wed, 2 May 2018 15:45:31 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42FjVSB021872; Wed, 2 May 2018 15:45:31 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42FjVEa021871; Wed, 2 May 2018 15:45:31 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805021545.w42FjVEa021871@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Wed, 2 May 2018 15:45:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333172 - head/usr.bin/grep X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/usr.bin/grep X-SVN-Commit-Revision: 333172 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 15:45:32 -0000 Author: kevans Date: Wed May 2 15:45:31 2018 New Revision: 333172 URL: https://svnweb.freebsd.org/changeset/base/333172 Log: bsdgrep: Adjust a missed NLS reference that was invalidated by recent work Submitted by: Dan McGregor Modified: head/usr.bin/grep/util.c Modified: head/usr.bin/grep/util.c ============================================================================== --- head/usr.bin/grep/util.c Wed May 2 15:21:51 2018 (r333171) +++ head/usr.bin/grep/util.c Wed May 2 15:45:31 2018 (r333172) @@ -389,7 +389,7 @@ procfile(const char *fn) printf("%s%c", fn, nullflag ? 0 : '\n'); if (c && !cflag && !lflag && !Lflag && binbehave == BINFILE_BIN && f->binary && !qflag) - printf(getstr(8), fn); + printf(getstr(7), fn); free(pc.ln.file); free(f); From owner-svn-src-all@freebsd.org Wed May 2 15:59:17 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 90228FAD983; Wed, 2 May 2018 15:59:17 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4057B7C61D; Wed, 2 May 2018 15:59:17 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3ABCE130B8; Wed, 2 May 2018 15:59:17 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42FxHhH027293; Wed, 2 May 2018 15:59:17 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42FxFQ6027275; Wed, 2 May 2018 15:59:15 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805021559.w42FxFQ6027275@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Wed, 2 May 2018 15:59:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333173 - in head: . share/man/man4 sys/conf sys/dev/ixgb sys/i386/conf sys/modules sys/modules/ixgb sys/netpfil/pf sys/sparc64/conf tools/kerneldoc/subsys tools/tools/tinybsd/conf/brid... X-SVN-Group: head X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: in head: . share/man/man4 sys/conf sys/dev/ixgb sys/i386/conf sys/modules sys/modules/ixgb sys/netpfil/pf sys/sparc64/conf tools/kerneldoc/subsys tools/tools/tinybsd/conf/bridge tools/tools/tinybsd/co... X-SVN-Commit-Revision: 333173 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 15:59:17 -0000 Author: sbruno Date: Wed May 2 15:59:15 2018 New Revision: 333173 URL: https://svnweb.freebsd.org/changeset/base/333173 Log: Retire ixgb(4) This driver was for an early and uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel quickly shifted to the long lived ixgbe family. Submitted by: kbowling Reviewed by: brooks imp jeffrey.e.pieper@intel.com Relnotes: yes Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D15234 Deleted: head/share/man/man4/ixgb.4 head/sys/dev/ixgb/ head/sys/modules/ixgb/Makefile head/tools/kerneldoc/subsys/Doxyfile-dev_ixgb Modified: head/ObsoleteFiles.inc head/UPDATING head/share/man/man4/Makefile head/share/man/man4/polling.4 head/share/man/man4/vlan.4 head/sys/conf/NOTES head/sys/conf/files head/sys/i386/conf/GENERIC head/sys/modules/Makefile head/sys/netpfil/pf/pf.c head/sys/sparc64/conf/GENERIC head/tools/tools/tinybsd/conf/bridge/TINYBSD head/tools/tools/tinybsd/conf/default/TINYBSD head/tools/tools/tinybsd/conf/firewall/TINYBSD head/tools/tools/tinybsd/conf/vpn/TINYBSD head/tools/tools/tinybsd/conf/wireless/TINYBSD head/tools/tools/tinybsd/conf/wrap/TINYBSD head/usr.sbin/bsdconfig/share/device.subr Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Wed May 2 15:45:31 2018 (r333172) +++ head/ObsoleteFiles.inc Wed May 2 15:59:15 2018 (r333173) @@ -38,6 +38,8 @@ # xargs -n1 | sort | uniq -d; # done +# 20180502: retire ixgb +OLD_FILES+=usr/share/man/man4/ixgb.4.gz # 20180501: retire lmc OLD_FILES+=usr/include/dev/lmc/if_lmc.h OLD_DIRS+=usr/include/dev/lmc Modified: head/UPDATING ============================================================================== --- head/UPDATING Wed May 2 15:45:31 2018 (r333172) +++ head/UPDATING Wed May 2 15:59:15 2018 (r333173) @@ -51,6 +51,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20180502: + The ixgb(4) driver has been removed. This driver was for an early and + uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel + quickly shifted to the long lived ixgbe family. If you have device + ixgb in your kernel config file it must be removed. + 20180501: The lmc(4) driver has been removed. This was a WAN interface card that was already reportedly rare in 2003, and had an ambiguous Modified: head/share/man/man4/Makefile ============================================================================== --- head/share/man/man4/Makefile Wed May 2 15:45:31 2018 (r333172) +++ head/share/man/man4/Makefile Wed May 2 15:59:15 2018 (r333173) @@ -244,7 +244,6 @@ MAN= aac.4 \ iwmfw.4 \ iwn.4 \ iwnfw.4 \ - ixgb.4 \ ixgbe.4 \ ixl.4 \ ixlv.4 \ @@ -675,7 +674,6 @@ MLINKS+=ipw.4 if_ipw.4 MLINKS+=iwi.4 if_iwi.4 MLINKS+=iwm.4 if_iwm.4 MLINKS+=iwn.4 if_iwn.4 -MLINKS+=ixgb.4 if_ixgb.4 MLINKS+=ixgbe.4 ix.4 MLINKS+=ixgbe.4 if_ix.4 MLINKS+=ixgbe.4 if_ixgbe.4 Modified: head/share/man/man4/polling.4 ============================================================================== --- head/share/man/man4/polling.4 Wed May 2 15:45:31 2018 (r333172) +++ head/share/man/man4/polling.4 Wed May 2 15:59:15 2018 (r333173) @@ -185,7 +185,6 @@ As of this writing, the .Xr fwip 4 , .Xr fxp 4 , .Xr igb 4 , -.Xr ixgb 4 , .Xr nfe 4 , .Xr nge 4 , .Xr re 4 , Modified: head/share/man/man4/vlan.4 ============================================================================== --- head/share/man/man4/vlan.4 Wed May 2 15:45:31 2018 (r333172) +++ head/share/man/man4/vlan.4 Wed May 2 15:59:15 2018 (r333173) @@ -132,7 +132,6 @@ in hardware: .Xr cxgbe 4 , .Xr em 4 , .Xr igb 4 , -.Xr ixgb 4 , .Xr ixgbe 4 , .Xr jme 4 , .Xr liquidio 4 , Modified: head/sys/conf/NOTES ============================================================================== --- head/sys/conf/NOTES Wed May 2 15:45:31 2018 (r333172) +++ head/sys/conf/NOTES Wed May 2 15:59:15 2018 (r333173) @@ -2123,7 +2123,6 @@ device cxgbe # Chelsio T4-T6 1/10/25/40/100 Gigabit device cxgbev # Chelsio T4-T6 Virtual Functions device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel Pro/1000 Gigabit Ethernet -device ixgb # Intel Pro/10Gbe PCI-X Ethernet device ix # Intel Pro/10Gbe PCIE Ethernet device ixv # Intel Pro/10Gbe PCIE Ethernet VF device le # AMD Am7900 LANCE and Am79C9xx PCnet Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Wed May 2 15:45:31 2018 (r333172) +++ head/sys/conf/files Wed May 2 15:59:15 2018 (r333173) @@ -2264,9 +2264,6 @@ iwn6050.fw optional iwn6050fw | iwnfw \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn6050.fw" -dev/ixgb/if_ixgb.c optional ixgb -dev/ixgb/ixgb_ee.c optional ixgb -dev/ixgb/ixgb_hw.c optional ixgb dev/ixgbe/if_ix.c optional ix inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" dev/ixgbe/if_ixv.c optional ixv inet \ Modified: head/sys/i386/conf/GENERIC ============================================================================== --- head/sys/i386/conf/GENERIC Wed May 2 15:45:31 2018 (r333172) +++ head/sys/i386/conf/GENERIC Wed May 2 15:59:15 2018 (r333173) @@ -230,7 +230,6 @@ device puc # Multi I/O cards and multi-channel UART device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 Gigabit Ethernet Family -device ixgb # Intel PRO/10GbE Ethernet Card device le # AMD Am7900 LANCE and Am79C9xx PCnet device ti # Alteon Networks Tigon I/II gigabit Ethernet device txp # 3Com 3cR990 (``Typhoon'') Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Wed May 2 15:45:31 2018 (r333172) +++ head/sys/modules/Makefile Wed May 2 15:59:15 2018 (r333173) @@ -203,7 +203,6 @@ SUBDIR= \ ${_iwnfw} \ ${_ix} \ ${_ixv} \ - ${_ixgb} \ ${_ixl} \ ${_ixlv} \ jme \ @@ -666,7 +665,6 @@ _ipw= ipw _iwi= iwi _iwm= iwm _iwn= iwn -_ixgb= ixgb .if ${MK_SOURCELESS_UCODE} != "no" _ipwfw= ipwfw _iwifw= iwifw Modified: head/sys/netpfil/pf/pf.c ============================================================================== --- head/sys/netpfil/pf/pf.c Wed May 2 15:45:31 2018 (r333172) +++ head/sys/netpfil/pf/pf.c Wed May 2 15:59:15 2018 (r333173) @@ -5727,8 +5727,7 @@ bad: /* * FreeBSD supports cksum offloads for the following drivers. - * em(4), fxp(4), ixgb(4), lge(4), ndis(4), nge(4), re(4), - * ti(4), txp(4), xl(4) + * em(4), fxp(4), lge(4), ndis(4), nge(4), re(4), ti(4), txp(4), xl(4) * * CSUM_DATA_VALID | CSUM_PSEUDO_HDR : * network driver performed cksum including pseudo header, need to verify Modified: head/sys/sparc64/conf/GENERIC ============================================================================== --- head/sys/sparc64/conf/GENERIC Wed May 2 15:45:31 2018 (r333172) +++ head/sys/sparc64/conf/GENERIC Wed May 2 15:59:15 2018 (r333173) @@ -177,7 +177,6 @@ device uart # Multi-uart driver # PCI Ethernet NICs. #device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card -#device ixgb # Intel PRO/10GbE Ethernet Card device le # AMD Am7900 LANCE and Am79C9xx PCnet device ti # Alteon Networks Tigon I/II gigabit Ethernet device txp # 3Com 3cR990 (``Typhoon'') Modified: head/tools/tools/tinybsd/conf/bridge/TINYBSD ============================================================================== --- head/tools/tools/tinybsd/conf/bridge/TINYBSD Wed May 2 15:45:31 2018 (r333172) +++ head/tools/tools/tinybsd/conf/bridge/TINYBSD Wed May 2 15:59:15 2018 (r333173) @@ -80,7 +80,6 @@ device sio # 8250, 16[45]50 based serial ports # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card -device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') Modified: head/tools/tools/tinybsd/conf/default/TINYBSD ============================================================================== --- head/tools/tools/tinybsd/conf/default/TINYBSD Wed May 2 15:45:31 2018 (r333172) +++ head/tools/tools/tinybsd/conf/default/TINYBSD Wed May 2 15:59:15 2018 (r333173) @@ -90,7 +90,6 @@ device sio # 8250, 16[45]50 based serial ports # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card -device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') Modified: head/tools/tools/tinybsd/conf/firewall/TINYBSD ============================================================================== --- head/tools/tools/tinybsd/conf/firewall/TINYBSD Wed May 2 15:45:31 2018 (r333172) +++ head/tools/tools/tinybsd/conf/firewall/TINYBSD Wed May 2 15:59:15 2018 (r333173) @@ -79,7 +79,6 @@ device sio # 8250, 16[45]50 based serial ports # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card -device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') Modified: head/tools/tools/tinybsd/conf/vpn/TINYBSD ============================================================================== --- head/tools/tools/tinybsd/conf/vpn/TINYBSD Wed May 2 15:45:31 2018 (r333172) +++ head/tools/tools/tinybsd/conf/vpn/TINYBSD Wed May 2 15:59:15 2018 (r333173) @@ -80,7 +80,6 @@ device sio # 8250, 16[45]50 based serial ports # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card -device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') Modified: head/tools/tools/tinybsd/conf/wireless/TINYBSD ============================================================================== --- head/tools/tools/tinybsd/conf/wireless/TINYBSD Wed May 2 15:45:31 2018 (r333172) +++ head/tools/tools/tinybsd/conf/wireless/TINYBSD Wed May 2 15:59:15 2018 (r333173) @@ -80,7 +80,6 @@ device sio # 8250, 16[45]50 based serial ports # PCI Ethernet NICs. #device de # DEC/Intel DC21x4x (``Tulip'') #device em # Intel PRO/1000 adapter Gigabit Ethernet Card -#device ixgb # Intel PRO/10GbE Ethernet Card #device txp # 3Com 3cR990 (``Typhoon'') #device vx # 3Com 3c590, 3c595 (``Vortex'') Modified: head/tools/tools/tinybsd/conf/wrap/TINYBSD ============================================================================== --- head/tools/tools/tinybsd/conf/wrap/TINYBSD Wed May 2 15:45:31 2018 (r333172) +++ head/tools/tools/tinybsd/conf/wrap/TINYBSD Wed May 2 15:59:15 2018 (r333173) @@ -48,7 +48,6 @@ device sio # 8250, 16[45]50 based serial ports # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card -device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') Modified: head/usr.sbin/bsdconfig/share/device.subr ============================================================================== --- head/usr.sbin/bsdconfig/share/device.subr Wed May 2 15:45:31 2018 (r333172) +++ head/usr.sbin/bsdconfig/share/device.subr Wed May 2 15:59:15 2018 (r333173) @@ -1321,7 +1321,6 @@ f_network "ipw%d" "Intel PRO/Wireless 2100 IEEE 802. f_network "iwi%d" "Intel PRO/Wireless 2200BG/2225BG/2915ABG adapter" f_network "iwn%d" "Intel Wireless WiFi Link 4965AGN IEEE 802.11n adapter" f_network "ix%d" "Intel Etherexpress Ethernet card" -f_network "ixgb%d" "Intel(R) PRO/10Gb Ethernet card" f_network "ixgbe%d" "Intel(R) PRO/10Gb Ethernet card" f_network "jme%d" "JMicron JMC250 Gigabit/JMC260 Fast Ethernet" f_network "kue%d" "Kawasaki LSI USB Ethernet adapter" From owner-svn-src-all@freebsd.org Wed May 2 17:41:01 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BE63DFAFCF7; Wed, 2 May 2018 17:41:00 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6FB6973916; Wed, 2 May 2018 17:41:00 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6AA9F14272; Wed, 2 May 2018 17:41:00 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42Hf0pB078874; Wed, 2 May 2018 17:41:00 GMT (envelope-from grehan@FreeBSD.org) Received: (from grehan@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42Hf06u078873; Wed, 2 May 2018 17:41:00 GMT (envelope-from grehan@FreeBSD.org) Message-Id: <201805021741.w42Hf06u078873@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: grehan set sender to grehan@FreeBSD.org using -f From: Peter Grehan Date: Wed, 2 May 2018 17:41:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333174 - head/sys/amd64/vmm/io X-SVN-Group: head X-SVN-Commit-Author: grehan X-SVN-Commit-Paths: head/sys/amd64/vmm/io X-SVN-Commit-Revision: 333174 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 17:41:01 -0000 Author: grehan Date: Wed May 2 17:41:00 2018 New Revision: 333174 URL: https://svnweb.freebsd.org/changeset/base/333174 Log: Use PCI power-mgmt to reset a device if FLR fails. A large number of devices don't support PCIe FLR, in particular graphics adapters. Use PCI power management to perform the reset if FLR fails or isn't available, by cycling the device through the D3 state. This has been tested by a number of users with Nvidia and AMD GPUs. Submitted and tested by: Matt Macy Reviewed by: jhb, imp, rgrimes MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D15268 Modified: head/sys/amd64/vmm/io/ppt.c Modified: head/sys/amd64/vmm/io/ppt.c ============================================================================== --- head/sys/amd64/vmm/io/ppt.c Wed May 2 15:59:15 2018 (r333173) +++ head/sys/amd64/vmm/io/ppt.c Wed May 2 17:41:00 2018 (r333174) @@ -353,6 +353,30 @@ ppt_is_mmio(struct vm *vm, vm_paddr_t gpa) return (FALSE); } +static void +ppt_pci_reset(device_t dev) +{ + int ps; + + if (pcie_flr(dev, + max(pcie_get_max_completion_timeout(dev) / 1000, 10), + true)) + return; + + /* + * If FLR fails, attempt a power-management reset by cycling + * the device in/out of D3 state. + * PCI spec says we can only go into D3 state from D0 state. + * Transition from D[12] into D0 before going to D3 state. + */ + ps = pci_get_powerstate(dev); + if (ps != PCI_POWERSTATE_D0 && ps != PCI_POWERSTATE_D3) + pci_set_powerstate(dev, PCI_POWERSTATE_D0); + if (pci_get_powerstate(dev) != PCI_POWERSTATE_D3) + pci_set_powerstate(dev, PCI_POWERSTATE_D3); + pci_set_powerstate(dev, ps); +} + int ppt_assign_device(struct vm *vm, int bus, int slot, int func) { @@ -368,9 +392,7 @@ ppt_assign_device(struct vm *vm, int bus, int slot, in return (EBUSY); pci_save_state(ppt->dev); - pcie_flr(ppt->dev, - max(pcie_get_max_completion_timeout(ppt->dev) / 1000, 10), - true); + ppt_pci_reset(ppt->dev); pci_restore_state(ppt->dev); ppt->vm = vm; iommu_add_device(vm_iommu_domain(vm), pci_get_rid(ppt->dev)); @@ -393,9 +415,7 @@ ppt_unassign_device(struct vm *vm, int bus, int slot, return (EBUSY); pci_save_state(ppt->dev); - pcie_flr(ppt->dev, - max(pcie_get_max_completion_timeout(ppt->dev) / 1000, 10), - true); + ppt_pci_reset(ppt->dev); pci_restore_state(ppt->dev); ppt_unmap_mmio(vm, ppt); ppt_teardown_msi(ppt); From owner-svn-src-all@freebsd.org Wed May 2 18:19:11 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 854C4FB0C21; Wed, 2 May 2018 18:19:11 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EDC6D7BA6A; Wed, 2 May 2018 18:19:10 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w42IJ1vC032638; Wed, 2 May 2018 11:19:01 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w42IJ1uJ032637; Wed, 2 May 2018 11:19:01 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201805021819.w42IJ1uJ032637@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r333174 - head/sys/amd64/vmm/io In-Reply-To: <201805021741.w42Hf06u078873@repo.freebsd.org> To: Peter Grehan Date: Wed, 2 May 2018 11:19:01 -0700 (PDT) CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 18:19:11 -0000 [ Charset UTF-8 unsupported, converting... ] > Author: grehan > Date: Wed May 2 17:41:00 2018 > New Revision: 333174 > URL: https://svnweb.freebsd.org/changeset/base/333174 > > Log: > Use PCI power-mgmt to reset a device if FLR fails. > > A large number of devices don't support PCIe FLR, in particular > graphics adapters. Use PCI power management to perform the > reset if FLR fails or isn't available, by cycling the device > through the D3 state. > > This has been tested by a number of users with Nvidia and AMD GPUs. > > Submitted and tested by: Matt Macy > Reviewed by: jhb, imp, rgrimes > MFC after: 3 weeks That places the MFC right before the optional 11.2 Beta3, I would rather see this "low risk" change merged before May 11th, the code freeze date and Beta1, if it is desired in 11.2, for maximal test exposure. > Differential Revision: https://reviews.freebsd.org/D15268 > > Modified: > head/sys/amd64/vmm/io/ppt.c > > Modified: head/sys/amd64/vmm/io/ppt.c > ============================================================================== > --- head/sys/amd64/vmm/io/ppt.c Wed May 2 15:59:15 2018 (r333173) > +++ head/sys/amd64/vmm/io/ppt.c Wed May 2 17:41:00 2018 (r333174) > @@ -353,6 +353,30 @@ ppt_is_mmio(struct vm *vm, vm_paddr_t gpa) > return (FALSE); > } > > +static void > +ppt_pci_reset(device_t dev) > +{ > + int ps; > + > + if (pcie_flr(dev, > + max(pcie_get_max_completion_timeout(dev) / 1000, 10), > + true)) > + return; > + > + /* > + * If FLR fails, attempt a power-management reset by cycling > + * the device in/out of D3 state. > + * PCI spec says we can only go into D3 state from D0 state. > + * Transition from D[12] into D0 before going to D3 state. > + */ > + ps = pci_get_powerstate(dev); > + if (ps != PCI_POWERSTATE_D0 && ps != PCI_POWERSTATE_D3) > + pci_set_powerstate(dev, PCI_POWERSTATE_D0); > + if (pci_get_powerstate(dev) != PCI_POWERSTATE_D3) > + pci_set_powerstate(dev, PCI_POWERSTATE_D3); > + pci_set_powerstate(dev, ps); > +} > + > int > ppt_assign_device(struct vm *vm, int bus, int slot, int func) > { > @@ -368,9 +392,7 @@ ppt_assign_device(struct vm *vm, int bus, int slot, in > return (EBUSY); > > pci_save_state(ppt->dev); > - pcie_flr(ppt->dev, > - max(pcie_get_max_completion_timeout(ppt->dev) / 1000, 10), > - true); > + ppt_pci_reset(ppt->dev); > pci_restore_state(ppt->dev); > ppt->vm = vm; > iommu_add_device(vm_iommu_domain(vm), pci_get_rid(ppt->dev)); > @@ -393,9 +415,7 @@ ppt_unassign_device(struct vm *vm, int bus, int slot, > return (EBUSY); > > pci_save_state(ppt->dev); > - pcie_flr(ppt->dev, > - max(pcie_get_max_completion_timeout(ppt->dev) / 1000, 10), > - true); > + ppt_pci_reset(ppt->dev); > pci_restore_state(ppt->dev); > ppt_unmap_mmio(vm, ppt); > ppt_teardown_msi(ppt); > > -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Wed May 2 18:20:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6F7F2FB0CD5 for ; Wed, 2 May 2018 18:20:32 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from alto.onthenet.com.au (alto.OntheNet.com.au [203.13.68.12]) by mx1.freebsd.org (Postfix) with ESMTP id D431B7C519 for ; Wed, 2 May 2018 18:20:31 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from iredmail.onthenet.com.au (iredmail.onthenet.com.au [203.13.68.150]) by alto.onthenet.com.au (Postfix) with ESMTPS id 11CC020B4AB9 for ; Thu, 3 May 2018 04:20:28 +1000 (AEST) Received: from localhost (iredmail.onthenet.com.au [127.0.0.1]) by iredmail.onthenet.com.au (Postfix) with ESMTP id 098A12820AA for ; Thu, 3 May 2018 04:20:28 +1000 (AEST) X-Amavis-Modified: Mail body modified (using disclaimer) - iredmail.onthenet.com.au Received: from iredmail.onthenet.com.au ([127.0.0.1]) by localhost (iredmail.onthenet.com.au [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id yS8M9nYnJu_2 for ; Thu, 3 May 2018 04:20:27 +1000 (AEST) Received: from Peters-MacBook-Pro-2.local (c-67-180-92-13.hsd1.ca.comcast.net [67.180.92.13]) by iredmail.onthenet.com.au (Postfix) with ESMTPSA id E396728095D; Thu, 3 May 2018 04:20:25 +1000 (AEST) Subject: Re: svn commit: r333174 - head/sys/amd64/vmm/io To: rgrimes@freebsd.org Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <201805021819.w42IJ1uJ032637@pdx.rh.CN85.dnsmgr.net> From: Peter Grehan Message-ID: <5d7b4e28-8a4f-60b4-3c48-1dc001af0546@freebsd.org> Date: Wed, 2 May 2018 11:20:22 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <201805021819.w42IJ1uJ032637@pdx.rh.CN85.dnsmgr.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=dNCIZtRb c=1 sm=1 tr=0 a=A6CF0fG5TOl4vs6YHvqXgw==:117 a=5eVCmCvhg37cu/pjidAGzw==:17 a=IkcTkHD0fZMA:10 a=VUJBJC2UJ8kA:10 a=KWMsn1D1uy4xVnIIBOcA:9 a=QEXdDO2ut3YA:10 wl=host:3 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 18:20:32 -0000 > That places the MFC right before the optional 11.2 Beta3, I would rather > see this "low risk" change merged before May 11th, the code freeze > date and Beta1, if it is desired in 11.2, for maximal test exposure. Sure, that can be done. later, Peter. From owner-svn-src-all@freebsd.org Wed May 2 19:36:31 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 38F3BFB243F; Wed, 2 May 2018 19:36:31 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DEB806DB60; Wed, 2 May 2018 19:36:30 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D610D154BD; Wed, 2 May 2018 19:36:30 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42JaUWa039061; Wed, 2 May 2018 19:36:30 GMT (envelope-from shurd@FreeBSD.org) Received: (from shurd@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42JaTlq039053; Wed, 2 May 2018 19:36:29 GMT (envelope-from shurd@FreeBSD.org) Message-Id: <201805021936.w42JaTlq039053@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: shurd set sender to shurd@FreeBSD.org using -f From: Stephen Hurd Date: Wed, 2 May 2018 19:36:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333175 - in head/sys: kern net netinet netinet6 sys X-SVN-Group: head X-SVN-Commit-Author: shurd X-SVN-Commit-Paths: in head/sys: kern net netinet netinet6 sys X-SVN-Commit-Revision: 333175 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 19:36:31 -0000 Author: shurd Date: Wed May 2 19:36:29 2018 New Revision: 333175 URL: https://svnweb.freebsd.org/changeset/base/333175 Log: Separate list manipulation locking from state change in multicast Multicast incorrectly calls in to drivers with a mutex held causing drivers to have to go through all manner of contortions to use a non sleepable lock. Serialize multicast updates instead. Submitted by: mmacy Reviewed by: shurd, sbruno Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D14969 Modified: head/sys/kern/subr_gtaskqueue.c head/sys/kern/subr_witness.c head/sys/net/if.c head/sys/netinet/igmp.c head/sys/netinet/igmp_var.h head/sys/netinet/in.c head/sys/netinet/in_mcast.c head/sys/netinet/in_pcb.c head/sys/netinet/in_var.h head/sys/netinet/ip_carp.c head/sys/netinet6/in6.c head/sys/netinet6/in6_ifattach.c head/sys/netinet6/in6_mcast.c head/sys/netinet6/in6_pcb.c head/sys/netinet6/in6_var.h head/sys/netinet6/mld6.c head/sys/netinet6/mld6_var.h head/sys/sys/gtaskqueue.h Modified: head/sys/kern/subr_gtaskqueue.c ============================================================================== --- head/sys/kern/subr_gtaskqueue.c Wed May 2 17:41:00 2018 (r333174) +++ head/sys/kern/subr_gtaskqueue.c Wed May 2 19:36:29 2018 (r333175) @@ -53,6 +53,7 @@ static void gtaskqueue_thread_enqueue(void *); static void gtaskqueue_thread_loop(void *arg); TASKQGROUP_DEFINE(softirq, mp_ncpus, 1); +TASKQGROUP_DEFINE(config, 1, 1); struct gtaskqueue_busy { struct gtask *tb_running; @@ -662,7 +663,7 @@ SYSINIT(tqg_record_smp_started, SI_SUB_SMP, SI_ORDER_F void taskqgroup_attach(struct taskqgroup *qgroup, struct grouptask *gtask, - void *uniq, int irq, char *name) + void *uniq, int irq, const char *name) { cpuset_t mask; int qid, error; @@ -976,4 +977,13 @@ void taskqgroup_destroy(struct taskqgroup *qgroup) { +} + +void +taskqgroup_config_gtask_init(void *ctx, struct grouptask *gtask, gtask_fn_t *fn, + const char *name) +{ + + GROUPTASK_INIT(gtask, 0, fn, ctx); + taskqgroup_attach(qgroup_config, gtask, gtask, -1, name); } Modified: head/sys/kern/subr_witness.c ============================================================================== --- head/sys/kern/subr_witness.c Wed May 2 17:41:00 2018 (r333174) +++ head/sys/kern/subr_witness.c Wed May 2 19:36:29 2018 (r333175) @@ -532,18 +532,22 @@ static struct witness_order_list_entry order_lists[] = * IPv4 multicast: * protocol locks before interface locks, after UDP locks. */ + { "in_multi_sx", &lock_class_sx }, { "udpinp", &lock_class_rw }, - { "in_multi_mtx", &lock_class_mtx_sleep }, + { "in_multi_list_mtx", &lock_class_mtx_sleep }, { "igmp_mtx", &lock_class_mtx_sleep }, + { "ifnet_rw", &lock_class_rw }, { "if_addr_lock", &lock_class_rw }, { NULL, NULL }, /* * IPv6 multicast: * protocol locks before interface locks, after UDP locks. */ + { "in6_multi_sx", &lock_class_sx }, { "udpinp", &lock_class_rw }, - { "in6_multi_mtx", &lock_class_mtx_sleep }, + { "in6_multi_list_mtx", &lock_class_mtx_sleep }, { "mld_mtx", &lock_class_mtx_sleep }, + { "ifnet_rw", &lock_class_rw }, { "if_addr_lock", &lock_class_rw }, { NULL, NULL }, /* Modified: head/sys/net/if.c ============================================================================== --- head/sys/net/if.c Wed May 2 17:41:00 2018 (r333174) +++ head/sys/net/if.c Wed May 2 19:36:29 2018 (r333175) @@ -985,11 +985,13 @@ static void if_purgemaddrs(struct ifnet *ifp) { struct ifmultiaddr *ifma; - struct ifmultiaddr *next; IF_ADDR_WLOCK(ifp); - TAILQ_FOREACH_SAFE(ifma, &ifp->if_multiaddrs, ifma_link, next) + while (!TAILQ_EMPTY(&ifp->if_multiaddrs)) { + ifma = TAILQ_FIRST(&ifp->if_multiaddrs); + TAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifma_link); if_delmulti_locked(ifp, ifma, 1); + } IF_ADDR_WUNLOCK(ifp); } @@ -3429,6 +3431,12 @@ if_addmulti(struct ifnet *ifp, struct sockaddr *sa, struct sockaddr_dl sdl; int error; +#ifdef INET + IN_MULTI_LIST_UNLOCK_ASSERT(); +#endif +#ifdef INET6 + IN6_MULTI_LIST_UNLOCK_ASSERT(); +#endif /* * If the address is already present, return a new reference to it; * otherwise, allocate storage and set up a new address. @@ -3610,6 +3618,9 @@ if_delmulti_ifma(struct ifmultiaddr *ifma) struct ifnet *ifp; int lastref; +#ifdef INET + IN_MULTI_LIST_UNLOCK_ASSERT(); +#endif ifp = ifma->ifma_ifp; #ifdef DIAGNOSTIC if (ifp == NULL) { @@ -3711,8 +3722,7 @@ if_delmulti_locked(struct ifnet *ifp, struct ifmultiad if_freemulti(ll_ifma); } } - - if (ifp != NULL) + if (ifp != NULL && detaching == 0) TAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifma_link); if_freemulti(ifma); Modified: head/sys/netinet/igmp.c ============================================================================== --- head/sys/netinet/igmp.c Wed May 2 17:41:00 2018 (r333174) +++ head/sys/netinet/igmp.c Wed May 2 19:36:29 2018 (r333175) @@ -136,7 +136,7 @@ static int igmp_v3_enqueue_group_record(struct mbufq * struct in_multi *, const int, const int, const int); static int igmp_v3_enqueue_filter_change(struct mbufq *, struct in_multi *); -static void igmp_v3_process_group_timers(struct igmp_ifsoftc *, +static void igmp_v3_process_group_timers(struct in_multi_head *, struct mbufq *, struct mbufq *, struct in_multi *, const int); static int igmp_v3_merge_state_changes(struct in_multi *, @@ -162,12 +162,12 @@ static const struct netisr_handler igmp_nh = { * themselves are not virtualized. * * Locking: - * * The permitted lock order is: IN_MULTI_LOCK, IGMP_LOCK, IF_ADDR_LOCK. + * * The permitted lock order is: IN_MULTI_LIST_LOCK, IGMP_LOCK, IF_ADDR_LOCK. * Any may be taken independently; if any are held at the same * time, the above lock order must be followed. * * All output is delegated to the netisr. * Now that Giant has been eliminated, the netisr may be inlined. - * * IN_MULTI_LOCK covers in_multi. + * * IN_MULTI_LIST_LOCK covers in_multi. * * IGMP_LOCK covers igmp_ifsoftc and any global variables in this file, * including the output queue. * * IF_ADDR_LOCK covers if_multiaddrs, which is used for a variety of @@ -441,7 +441,7 @@ sysctl_igmp_ifinfo(SYSCTL_HANDLER_ARGS) if (error) return (error); - IN_MULTI_LOCK(); + IN_MULTI_LIST_LOCK(); IGMP_LOCK(); if (name[0] <= 0 || name[0] > V_if_index) { @@ -475,7 +475,7 @@ sysctl_igmp_ifinfo(SYSCTL_HANDLER_ARGS) out_locked: IGMP_UNLOCK(); - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); return (error); } @@ -586,7 +586,6 @@ igi_alloc_locked(/*const*/ struct ifnet *ifp) igi->igi_qi = IGMP_QI_INIT; igi->igi_qri = IGMP_QRI_INIT; igi->igi_uri = IGMP_URI_INIT; - SLIST_INIT(&igi->igi_relinmhead); mbufq_init(&igi->igi_gq, IGMP_MAX_RESPONSE_PACKETS); LIST_INSERT_HEAD(&V_igi_head, igi, igi_link); @@ -612,11 +611,12 @@ igmp_ifdetach(struct ifnet *ifp) { struct igmp_ifsoftc *igi; struct ifmultiaddr *ifma; - struct in_multi *inm, *tinm; - + struct in_multi *inm; + struct in_multi_head inm_free_tmp; CTR3(KTR_IGMPV3, "%s: called for ifp %p(%s)", __func__, ifp, ifp->if_xname); + SLIST_INIT(&inm_free_tmp); IGMP_LOCK(); igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; @@ -631,24 +631,15 @@ igmp_ifdetach(struct ifnet *ifp) ("%s: ifma_protospec is NULL", __func__)); #endif inm = (struct in_multi *)ifma->ifma_protospec; - if (inm->inm_state == IGMP_LEAVING_MEMBER) { - SLIST_INSERT_HEAD(&igi->igi_relinmhead, - inm, inm_nrele); - } + if (inm->inm_state == IGMP_LEAVING_MEMBER) + inm_rele_locked(&inm_free_tmp, inm); inm_clear_recorded(inm); } IF_ADDR_RUNLOCK(ifp); - /* - * Free the in_multi reference(s) for this IGMP lifecycle. - */ - SLIST_FOREACH_SAFE(inm, &igi->igi_relinmhead, inm_nrele, - tinm) { - SLIST_REMOVE_HEAD(&igi->igi_relinmhead, inm_nrele); - inm_release_locked(inm); - } + inm_release_list_deferred(&inm_free_tmp); } - IGMP_UNLOCK(); + } /* @@ -684,11 +675,6 @@ igi_delete_locked(const struct ifnet *ifp) mbufq_drain(&igi->igi_gq); LIST_REMOVE(igi, igi_link); - - KASSERT(SLIST_EMPTY(&igi->igi_relinmhead), - ("%s: there are dangling in_multi references", - __func__)); - free(igi, M_IGMP); return; } @@ -722,7 +708,7 @@ igmp_input_v1_query(struct ifnet *ifp, const struct ip } IGMPSTAT_INC(igps_rcv_gen_queries); - IN_MULTI_LOCK(); + IN_MULTI_LIST_LOCK(); IGMP_LOCK(); igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; @@ -778,7 +764,7 @@ igmp_input_v1_query(struct ifnet *ifp, const struct ip out_locked: IGMP_UNLOCK(); - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); return (0); } @@ -816,7 +802,7 @@ igmp_input_v2_query(struct ifnet *ifp, const struct ip IGMPSTAT_INC(igps_rcv_group_queries); } - IN_MULTI_LOCK(); + IN_MULTI_LIST_LOCK(); IGMP_LOCK(); igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; @@ -872,7 +858,7 @@ igmp_input_v2_query(struct ifnet *ifp, const struct ip out_locked: IGMP_UNLOCK(); - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); return (0); } @@ -899,7 +885,7 @@ igmp_v2_update_group(struct in_multi *inm, const int t CTR4(KTR_IGMPV3, "0x%08x: %s/%s timer=%d", __func__, ntohl(inm->inm_addr.s_addr), inm->inm_ifp->if_xname, timer); - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); switch (inm->inm_state) { case IGMP_NOT_MEMBER: @@ -1011,7 +997,7 @@ igmp_input_v3_query(struct ifnet *ifp, const struct ip IGMPSTAT_INC(igps_rcv_gsr_queries); } - IN_MULTI_LOCK(); + IN_MULTI_LIST_LOCK(); IGMP_LOCK(); igi = ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; @@ -1092,7 +1078,7 @@ igmp_input_v3_query(struct ifnet *ifp, const struct ip out_locked: IGMP_UNLOCK(); - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); return (0); } @@ -1109,7 +1095,7 @@ igmp_input_v3_group_query(struct in_multi *inm, struct int retval; uint16_t nsrc; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); retval = 0; @@ -1246,7 +1232,7 @@ igmp_input_v1_report(struct ifnet *ifp, /*const*/ stru * If we are a member of this group, and our membership should be * reported, stop our group timer and transition to the 'lazy' state. */ - IN_MULTI_LOCK(); + IN_MULTI_LIST_LOCK(); inm = inm_lookup(ifp, igmp->igmp_group); if (inm != NULL) { struct igmp_ifsoftc *igi; @@ -1305,7 +1291,7 @@ igmp_input_v1_report(struct ifnet *ifp, /*const*/ stru } out_locked: - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); return (0); } @@ -1373,7 +1359,7 @@ igmp_input_v2_report(struct ifnet *ifp, /*const*/ stru * reported, and our group timer is pending or about to be reset, * stop our group timer by transitioning to the 'lazy' state. */ - IN_MULTI_LOCK(); + IN_MULTI_LIST_LOCK(); inm = inm_lookup(ifp, igmp->igmp_group); if (inm != NULL) { struct igmp_ifsoftc *igi; @@ -1418,7 +1404,7 @@ igmp_input_v2_report(struct ifnet *ifp, /*const*/ stru } out_locked: - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); return (0); } @@ -1647,6 +1633,7 @@ igmp_fasttimo_vnet(void) struct igmp_ifsoftc *igi; struct ifmultiaddr *ifma; struct in_multi *inm; + struct in_multi_head inm_free_tmp; int loop, uri_fasthz; loop = 0; @@ -1662,7 +1649,8 @@ igmp_fasttimo_vnet(void) !V_state_change_timers_running) return; - IN_MULTI_LOCK(); + SLIST_INIT(&inm_free_tmp); + IN_MULTI_LIST_LOCK(); IGMP_LOCK(); /* @@ -1720,7 +1708,7 @@ igmp_fasttimo_vnet(void) igi->igi_version); break; case IGMP_VERSION_3: - igmp_v3_process_group_timers(igi, &qrq, + igmp_v3_process_group_timers(&inm_free_tmp, &qrq, &scq, inm, uri_fasthz); break; } @@ -1728,8 +1716,6 @@ igmp_fasttimo_vnet(void) IF_ADDR_RUNLOCK(ifp); if (igi->igi_version == IGMP_VERSION_3) { - struct in_multi *tinm; - igmp_dispatch_queue(&qrq, 0, loop); igmp_dispatch_queue(&scq, 0, loop); @@ -1737,18 +1723,13 @@ igmp_fasttimo_vnet(void) * Free the in_multi reference(s) for this * IGMP lifecycle. */ - SLIST_FOREACH_SAFE(inm, &igi->igi_relinmhead, - inm_nrele, tinm) { - SLIST_REMOVE_HEAD(&igi->igi_relinmhead, - inm_nrele); - inm_release_locked(inm); - } + inm_release_list_deferred(&inm_free_tmp); } } out_locked: IGMP_UNLOCK(); - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); } /* @@ -1760,7 +1741,7 @@ igmp_v1v2_process_group_timer(struct in_multi *inm, co { int report_timer_expired; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); if (inm->inm_timer == 0) { @@ -1802,14 +1783,14 @@ igmp_v1v2_process_group_timer(struct in_multi *inm, co * Note: Unlocked read from igi. */ static void -igmp_v3_process_group_timers(struct igmp_ifsoftc *igi, +igmp_v3_process_group_timers(struct in_multi_head *inmh, struct mbufq *qrq, struct mbufq *scq, struct in_multi *inm, const int uri_fasthz) { int query_response_timer_expired; int state_change_retransmit_timer_expired; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); query_response_timer_expired = 0; @@ -1907,8 +1888,7 @@ igmp_v3_process_group_timers(struct igmp_ifsoftc *igi, if (inm->inm_state == IGMP_LEAVING_MEMBER && inm->inm_scrv == 0) { inm->inm_state = IGMP_NOT_MEMBER; - SLIST_INSERT_HEAD(&igi->igi_relinmhead, - inm, inm_nrele); + inm_rele_locked(inmh, inm); } } break; @@ -1929,7 +1909,7 @@ static void igmp_v3_suppress_group_record(struct in_multi *inm) { - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); KASSERT(inm->inm_igi->igi_version == IGMP_VERSION_3, ("%s: not IGMPv3 mode on link", __func__)); @@ -2003,13 +1983,15 @@ igmp_v3_cancel_link_timers(struct igmp_ifsoftc *igi) { struct ifmultiaddr *ifma; struct ifnet *ifp; - struct in_multi *inm, *tinm; + struct in_multi *inm; + struct in_multi_head inm_free_tmp; CTR3(KTR_IGMPV3, "%s: cancel v3 timers on ifp %p(%s)", __func__, igi->igi_ifp, igi->igi_ifp->if_xname); - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); + SLIST_INIT(&inm_free_tmp); /* * Stop the v3 General Query Response on this link stone dead. @@ -2050,7 +2032,7 @@ igmp_v3_cancel_link_timers(struct igmp_ifsoftc *igi) * message is sent upstream to the old querier -- * transition to NOT would lose the leave and race. */ - SLIST_INSERT_HEAD(&igi->igi_relinmhead, inm, inm_nrele); + inm_rele_locked(&inm_free_tmp, inm); /* FALLTHROUGH */ case IGMP_G_QUERY_PENDING_MEMBER: case IGMP_SG_QUERY_PENDING_MEMBER: @@ -2069,10 +2051,8 @@ igmp_v3_cancel_link_timers(struct igmp_ifsoftc *igi) mbufq_drain(&inm->inm_scq); } IF_ADDR_RUNLOCK(ifp); - SLIST_FOREACH_SAFE(inm, &igi->igi_relinmhead, inm_nrele, tinm) { - SLIST_REMOVE_HEAD(&igi->igi_relinmhead, inm_nrele); - inm_release_locked(inm); - } + + inm_release_list_deferred(&inm_free_tmp); } /* @@ -2199,7 +2179,7 @@ igmp_v1v2_queue_report(struct in_multi *inm, const int struct ip *ip; struct mbuf *m; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); ifp = inm->inm_ifp; @@ -2276,10 +2256,8 @@ igmp_change_state(struct in_multi *inm) struct ifnet *ifp; int error; - IN_MULTI_LOCK_ASSERT(); - error = 0; - + IN_MULTI_LOCK_ASSERT(); /* * Try to detect if the upper layer just asked us to change state * for an interface which has now gone away. @@ -2379,9 +2357,10 @@ igmp_initial_join(struct in_multi *inm, struct igmp_if * group around for the final INCLUDE {} enqueue. */ if (igi->igi_version == IGMP_VERSION_3 && - inm->inm_state == IGMP_LEAVING_MEMBER) - inm_release_locked(inm); - + inm->inm_state == IGMP_LEAVING_MEMBER) { + MPASS(inm->inm_refcount > 1); + inm_rele_locked(NULL, inm); + } inm->inm_state = IGMP_REPORTING_MEMBER; switch (igi->igi_version) { @@ -2473,7 +2452,7 @@ igmp_handle_state_change(struct in_multi *inm, struct ifp = inm->inm_ifp; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); KASSERT(igi && igi->igi_ifp == ifp, ("%s: inconsistent ifp", __func__)); @@ -2531,7 +2510,7 @@ igmp_final_leave(struct in_multi *inm, struct igmp_ifs __func__, ntohl(inm->inm_addr.s_addr), inm->inm_ifp, inm->inm_ifp->if_xname); - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); switch (inm->inm_state) { @@ -2658,7 +2637,7 @@ igmp_v3_enqueue_group_record(struct mbufq *mq, struct in_addr_t naddr; uint8_t mode; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); error = 0; ifp = inm->inm_ifp; @@ -3018,7 +2997,7 @@ igmp_v3_enqueue_filter_change(struct mbufq *mq, struct uint8_t mode, now, then; rectype_t crt, drt, nrt; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); if (inm->inm_nsrc == 0 || (inm->inm_st[0].iss_asm > 0 && inm->inm_st[1].iss_asm > 0)) @@ -3221,7 +3200,7 @@ igmp_v3_merge_state_changes(struct in_multi *inm, stru domerge = 0; recslen = 0; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); /* @@ -3320,7 +3299,7 @@ igmp_v3_dispatch_general_query(struct igmp_ifsoftc *ig struct in_multi *inm; int retval, loop; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IGMP_LOCK_ASSERT(); KASSERT(igi->igi_version == IGMP_VERSION_3, @@ -3632,7 +3611,6 @@ DB_SHOW_COMMAND(igi_list, db_show_igi_list) db_printf(" qi %u\n", igi->igi_qi); db_printf(" qri %u\n", igi->igi_qri); db_printf(" uri %u\n", igi->igi_uri); - /* SLIST_HEAD(,in_multi) igi_relinmhead */ /* struct mbufq igi_gq; */ db_printf("\n"); } Modified: head/sys/netinet/igmp_var.h ============================================================================== --- head/sys/netinet/igmp_var.h Wed May 2 17:41:00 2018 (r333174) +++ head/sys/netinet/igmp_var.h Wed May 2 19:36:29 2018 (r333175) @@ -214,7 +214,6 @@ struct igmp_ifsoftc { uint32_t igi_qi; /* IGMPv3 Query Interval (s) */ uint32_t igi_qri; /* IGMPv3 Query Response Interval (s) */ uint32_t igi_uri; /* IGMPv3 Unsolicited Report Interval (s) */ - SLIST_HEAD(,in_multi) igi_relinmhead; /* released groups */ struct mbufq igi_gq; /* general query responses queue */ }; Modified: head/sys/netinet/in.c ============================================================================== --- head/sys/netinet/in.c Wed May 2 17:41:00 2018 (r333174) +++ head/sys/netinet/in.c Wed May 2 19:36:29 2018 (r333175) @@ -632,12 +632,10 @@ in_difaddr_ioctl(u_long cmd, caddr_t data, struct ifne struct in_ifinfo *ii; ii = ((struct in_ifinfo *)ifp->if_afdata[AF_INET]); - IN_MULTI_LOCK(); if (ii->ii_allhosts) { - (void)in_leavegroup_locked(ii->ii_allhosts, NULL); + (void)in_leavegroup(ii->ii_allhosts, NULL); ii->ii_allhosts = NULL; } - IN_MULTI_UNLOCK(); } IF_ADDR_WLOCK(ifp); @@ -994,11 +992,12 @@ in_broadcast(struct in_addr in, struct ifnet *ifp) void in_ifdetach(struct ifnet *ifp) { - + IN_MULTI_LOCK(); in_pcbpurgeif0(&V_ripcbinfo, ifp); in_pcbpurgeif0(&V_udbinfo, ifp); in_pcbpurgeif0(&V_ulitecbinfo, ifp); in_purgemaddrs(ifp); + IN_MULTI_UNLOCK(); } /* @@ -1011,12 +1010,12 @@ in_ifdetach(struct ifnet *ifp) static void in_purgemaddrs(struct ifnet *ifp) { - LIST_HEAD(,in_multi) purgeinms; - struct in_multi *inm, *tinm; + struct in_multi_head purgeinms; + struct in_multi *inm; struct ifmultiaddr *ifma; - LIST_INIT(&purgeinms); - IN_MULTI_LOCK(); + SLIST_INIT(&purgeinms); + IN_MULTI_LIST_LOCK(); /* * Extract list of in_multi associated with the detaching ifp @@ -1034,17 +1033,13 @@ in_purgemaddrs(struct ifnet *ifp) ("%s: ifma_protospec is NULL", __func__)); #endif inm = (struct in_multi *)ifma->ifma_protospec; - LIST_INSERT_HEAD(&purgeinms, inm, inm_link); + inm_rele_locked(&purgeinms, inm); } IF_ADDR_RUNLOCK(ifp); - LIST_FOREACH_SAFE(inm, &purgeinms, inm_link, tinm) { - LIST_REMOVE(inm, inm_link); - inm_release_locked(inm); - } + inm_release_list_deferred(&purgeinms); igmp_ifdetach(ifp); - - IN_MULTI_UNLOCK(); + IN_MULTI_LIST_UNLOCK(); } struct in_llentry { Modified: head/sys/netinet/in_mcast.c ============================================================================== --- head/sys/netinet/in_mcast.c Wed May 2 17:41:00 2018 (r333174) +++ head/sys/netinet/in_mcast.c Wed May 2 19:36:29 2018 (r333175) @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -59,6 +60,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include + #include #include #include @@ -91,18 +94,24 @@ static MALLOC_DEFINE(M_IPMSOURCE, "ip_msource", /* * Locking: - * - Lock order is: Giant, INP_WLOCK, IN_MULTI_LOCK, IGMP_LOCK, IF_ADDR_LOCK. + * - Lock order is: Giant, INP_WLOCK, IN_MULTI_LIST_LOCK, IGMP_LOCK, IF_ADDR_LOCK. * - The IF_ADDR_LOCK is implicitly taken by inm_lookup() earlier, however * it can be taken by code in net/if.c also. * - ip_moptions and in_mfilter are covered by the INP_WLOCK. * - * struct in_multi is covered by IN_MULTI_LOCK. There isn't strictly + * struct in_multi is covered by IN_MULTI_LIST_LOCK. There isn't strictly * any need for in_multi itself to be virtualized -- it is bound to an ifp * anyway no matter what happens. */ -struct mtx in_multi_mtx; -MTX_SYSINIT(in_multi_mtx, &in_multi_mtx, "in_multi_mtx", MTX_DEF); +struct mtx in_multi_list_mtx; +MTX_SYSINIT(in_multi_mtx, &in_multi_list_mtx, "in_multi_list_mtx", MTX_DEF); +struct mtx in_multi_free_mtx; +MTX_SYSINIT(in_multi_free_mtx, &in_multi_free_mtx, "in_multi_free_mtx", MTX_DEF); + +struct sx in_multi_sx; +SX_SYSINIT(in_multi_sx, &in_multi_sx, "in_multi_sx"); + /* * Functions with non-static linkage defined in this file should be * declared in in_var.h: @@ -151,6 +160,7 @@ static int inm_is_ifp_detached(const struct in_multi * static int inm_merge(struct in_multi *, /*const*/ struct in_mfilter *); static void inm_purge(struct in_multi *); static void inm_reap(struct in_multi *); +static void inm_release(struct in_multi *); static struct ip_moptions * inp_findmoptions(struct inpcb *); static void inp_freemoptions_internal(struct ip_moptions *); @@ -216,6 +226,65 @@ inm_is_ifp_detached(const struct in_multi *inm) } #endif +static struct grouptask free_gtask; +static struct in_multi_head inm_free_list; +static void inm_release_task(void *arg __unused); +static void inm_init(void) +{ + SLIST_INIT(&inm_free_list); + taskqgroup_config_gtask_init(NULL, &free_gtask, inm_release_task, "inm release task"); +} + +SYSINIT(inm_init, SI_SUB_SMP + 1, SI_ORDER_FIRST, + inm_init, NULL); + + +void +inm_release_list_deferred(struct in_multi_head *inmh) +{ + + if (SLIST_EMPTY(inmh)) + return; + mtx_lock(&in_multi_free_mtx); + SLIST_CONCAT(&inm_free_list, inmh, in_multi, inm_nrele); + mtx_unlock(&in_multi_free_mtx); + GROUPTASK_ENQUEUE(&free_gtask); +} + +void +inm_release_deferred(struct in_multi *inm) +{ + struct in_multi_head tmp; + + IN_MULTI_LIST_LOCK_ASSERT(); + MPASS(inm->inm_refcount > 0); + if (--inm->inm_refcount == 0) { + SLIST_INIT(&tmp); + inm->inm_ifma->ifma_protospec = NULL; + SLIST_INSERT_HEAD(&tmp, inm, inm_nrele); + inm_release_list_deferred(&tmp); + } +} + +static void +inm_release_task(void *arg __unused) +{ + struct in_multi_head inm_free_tmp; + struct in_multi *inm, *tinm; + + SLIST_INIT(&inm_free_tmp); + mtx_lock(&in_multi_free_mtx); + SLIST_CONCAT(&inm_free_tmp, &inm_free_list, in_multi, inm_nrele); + mtx_unlock(&in_multi_free_mtx); + IN_MULTI_LOCK(); + SLIST_FOREACH_SAFE(inm, &inm_free_tmp, inm_nrele, tinm) { + SLIST_REMOVE_HEAD(&inm_free_tmp, inm_nrele); + MPASS(inm); + inm_release(inm); + } + IN_MULTI_UNLOCK(); +} + /* * Initialize an in_mfilter structure to a known state at t0, t1 * with an empty source filter list. @@ -232,7 +301,7 @@ imf_init(struct in_mfilter *imf, const int st0, const /* * Function for looking up an in_multi record for an IPv4 multicast address * on a given interface. ifp must be valid. If no record found, return NULL. - * The IN_MULTI_LOCK and IF_ADDR_LOCK on ifp must be held. + * The IN_MULTI_LIST_LOCK and IF_ADDR_LOCK on ifp must be held. */ struct in_multi * inm_lookup_locked(struct ifnet *ifp, const struct in_addr ina) @@ -240,7 +309,7 @@ inm_lookup_locked(struct ifnet *ifp, const struct in_a struct ifmultiaddr *ifma; struct in_multi *inm; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IF_ADDR_LOCK_ASSERT(ifp); inm = NULL; @@ -264,7 +333,7 @@ inm_lookup(struct ifnet *ifp, const struct in_addr ina { struct in_multi *inm; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); IF_ADDR_RLOCK(ifp); inm = inm_lookup_locked(ifp, ina); IF_ADDR_RUNLOCK(ifp); @@ -451,7 +520,7 @@ in_getmulti(struct ifnet *ifp, const struct in_addr *g IN_MULTI_LOCK_ASSERT(); ii = (struct in_ifinfo *)ifp->if_afdata[AF_INET]; - + IN_MULTI_LIST_LOCK(); inm = inm_lookup(ifp, *group); if (inm != NULL) { /* @@ -460,11 +529,13 @@ in_getmulti(struct ifnet *ifp, const struct in_addr *g */ KASSERT(inm->inm_refcount >= 1, ("%s: bad refcount %d", __func__, inm->inm_refcount)); - ++inm->inm_refcount; + inm_acquire_locked(inm); *pinm = inm; - return (0); } - + IN_MULTI_LIST_UNLOCK(); + if (inm != NULL) + return (0); + memset(&gsin, 0, sizeof(gsin)); gsin.sin_family = AF_INET; gsin.sin_len = sizeof(struct sockaddr_in); @@ -479,6 +550,7 @@ in_getmulti(struct ifnet *ifp, const struct in_addr *g return (error); /* XXX ifma_protospec must be covered by IF_ADDR_LOCK */ + IN_MULTI_LIST_LOCK(); IF_ADDR_WLOCK(ifp); /* @@ -504,10 +576,9 @@ in_getmulti(struct ifnet *ifp, const struct in_addr *g __func__, ifma, inm, inet_ntoa_r(*group, addrbuf)); } #endif - ++inm->inm_refcount; + inm_acquire_locked(inm); *pinm = inm; - IF_ADDR_WUNLOCK(ifp); - return (0); + goto out_locked; } IF_ADDR_WLOCK_ASSERT(ifp); @@ -522,6 +593,7 @@ in_getmulti(struct ifnet *ifp, const struct in_addr *g inm = malloc(sizeof(*inm), M_IPMADDR, M_NOWAIT | M_ZERO); if (inm == NULL) { IF_ADDR_WUNLOCK(ifp); + IN_MULTI_LIST_UNLOCK(); if_delmulti_ifma(ifma); return (ENOMEM); } @@ -539,8 +611,9 @@ in_getmulti(struct ifnet *ifp, const struct in_addr *g ifma->ifma_protospec = inm; *pinm = inm; - + out_locked: IF_ADDR_WUNLOCK(ifp); + IN_MULTI_LIST_UNLOCK(); return (0); } @@ -550,36 +623,29 @@ in_getmulti(struct ifnet *ifp, const struct in_addr *g * If the refcount drops to 0, free the in_multi record and * delete the underlying link-layer membership. */ -void -inm_release_locked(struct in_multi *inm) +static void +inm_release(struct in_multi *inm) { struct ifmultiaddr *ifma; + struct ifnet *ifp; - IN_MULTI_LOCK_ASSERT(); - CTR2(KTR_IGMPV3, "%s: refcount is %d", __func__, inm->inm_refcount); - - if (--inm->inm_refcount > 0) { - CTR2(KTR_IGMPV3, "%s: refcount is now %d", __func__, - inm->inm_refcount); - return; - } - + MPASS(inm->inm_refcount == 0); CTR2(KTR_IGMPV3, "%s: freeing inm %p", __func__, inm); ifma = inm->inm_ifma; + ifp = inm->inm_ifp; /* XXX this access is not covered by IF_ADDR_LOCK */ CTR2(KTR_IGMPV3, "%s: purging ifma %p", __func__, ifma); - KASSERT(ifma->ifma_protospec == inm, - ("%s: ifma_protospec != inm", __func__)); - ifma->ifma_protospec = NULL; - + if (ifp) + CURVNET_SET(ifp->if_vnet); inm_purge(inm); - free(inm, M_IPMADDR); if_delmulti_ifma(ifma); + if (ifp) + CURVNET_RESTORE(); } /* @@ -592,7 +658,7 @@ inm_clear_recorded(struct in_multi *inm) { struct ip_msource *ims; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { if (ims->ims_stp) { @@ -632,7 +698,7 @@ inm_record_source(struct in_multi *inm, const in_addr_ struct ip_msource find; struct ip_msource *ims, *nims; - IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_LOCK_ASSERT(); find.ims_haddr = ntohl(naddr); ims = RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); @@ -959,6 +1025,7 @@ inm_merge(struct in_multi *inm, /*const*/ struct in_mf schanged = 0; error = 0; nsrc1 = nsrc0 = 0; + IN_MULTI_LIST_LOCK_ASSERT(); /* * Update the source filters first, as this may fail. @@ -1165,6 +1232,7 @@ in_joingroup_locked(struct ifnet *ifp, const struct in int error; IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_UNLOCK_ASSERT(); CTR4(KTR_IGMPV3, "%s: join 0x%08x on %p(%s))", __func__, ntohl(gina->s_addr), ifp, ifp->if_xname); @@ -1186,7 +1254,7 @@ in_joingroup_locked(struct ifnet *ifp, const struct in CTR1(KTR_IGMPV3, "%s: in_getmulti() failure", __func__); return (error); } - + IN_MULTI_LIST_LOCK(); CTR1(KTR_IGMPV3, "%s: merge inm state", __func__); error = inm_merge(inm, imf); if (error) { @@ -1201,10 +1269,12 @@ in_joingroup_locked(struct ifnet *ifp, const struct in goto out_inm_release; } -out_inm_release: + out_inm_release: + IN_MULTI_LIST_UNLOCK(); if (error) { + CTR2(KTR_IGMPV3, "%s: dropping ref on %p", __func__, inm); - inm_release_locked(inm); + inm_release_deferred(inm); } else { *pinm = inm; } @@ -1249,6 +1319,7 @@ in_leavegroup_locked(struct in_multi *inm, /*const*/ s error = 0; IN_MULTI_LOCK_ASSERT(); + IN_MULTI_LIST_UNLOCK_ASSERT(); CTR5(KTR_IGMPV3, "%s: leave inm %p, 0x%08x/%s, imf %p", __func__, inm, ntohl(inm->inm_addr.s_addr), @@ -1272,18 +1343,20 @@ in_leavegroup_locked(struct in_multi *inm, /*const*/ s * the transaction, it MUST NOT fail. */ CTR1(KTR_IGMPV3, "%s: merge inm state", __func__); + IN_MULTI_LIST_LOCK(); error = inm_merge(inm, imf); KASSERT(error == 0, ("%s: failed to merge inm state", __func__)); CTR1(KTR_IGMPV3, "%s: doing igmp downcall", __func__); CURVNET_SET(inm->inm_ifp->if_vnet); error = igmp_change_state(inm); + inm_release_deferred(inm); + IN_MULTI_LIST_UNLOCK(); CURVNET_RESTORE(); if (error) CTR1(KTR_IGMPV3, "%s: failed igmp downcall", __func__); CTR2(KTR_IGMPV3, "%s: dropping ref on %p", __func__, inm); - inm_release_locked(inm); return (error); } @@ -1315,18 +1388,6 @@ in_addmulti(struct in_addr *ap, struct ifnet *ifp) } /* - * Leave an IPv4 multicast group, assumed to be in exclusive (*,G) mode. - * This KPI is for legacy kernel consumers only. - */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Wed May 2 19:36:47 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2E3DBFB2473; Wed, 2 May 2018 19:36:47 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CC07F6DE2F; Wed, 2 May 2018 19:36:46 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C701F154BE; Wed, 2 May 2018 19:36:46 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42JakND039114; Wed, 2 May 2018 19:36:46 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42JakfN039113; Wed, 2 May 2018 19:36:46 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201805021936.w42JakfN039113@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Wed, 2 May 2018 19:36:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333176 - head/usr.sbin/traceroute6 X-SVN-Group: head X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: head/usr.sbin/traceroute6 X-SVN-Commit-Revision: 333176 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 19:36:47 -0000 Author: tuexen Date: Wed May 2 19:36:46 2018 New Revision: 333176 URL: https://svnweb.freebsd.org/changeset/base/333176 Log: Fix in the documentation that the default hop limit is not 30, but the value of the sysctl variable net.inet6.ip6.hlim. This is true since https://svnweb.freebsd.org/base?view=revision&revision=122574 The default of 30 (which was correct up to r122574) was incorrectly documented in https://svnweb.freebsd.org/base?view=revision&revision=130268 Thanks to Timo Voelker for makeing me aware of the inconsistency between to code and the documentation. MFC after: 3 days Modified: head/usr.sbin/traceroute6/traceroute6.8 Modified: head/usr.sbin/traceroute6/traceroute6.8 ============================================================================== --- head/usr.sbin/traceroute6/traceroute6.8 Wed May 2 19:36:29 2018 (r333175) +++ head/usr.sbin/traceroute6/traceroute6.8 Wed May 2 19:36:46 2018 (r333176) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 27, 2018 +.Dd May 2, 2018 .Dt TRACEROUTE6 8 .Os .\" @@ -112,7 +112,10 @@ is not specified, and only numeric addresses if is specified. .It Fl m Ar hoplimit Specify maximum hoplimit, up to 255. -The default is 30 hops. +The default is the value of the +.Va net.inet6.ip6.hlim +.Xr sysctl 8 +(the same default used for TCP connections). .It Fl n Do not resolve numeric address to hostname. .It Fl N From owner-svn-src-all@freebsd.org Wed May 2 20:04:26 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 11D0CFB2E63; Wed, 2 May 2018 20:04:26 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id BB8C975224; Wed, 2 May 2018 20:04:25 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B4EE315982; Wed, 2 May 2018 20:04:25 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42K4PPI053664; Wed, 2 May 2018 20:04:25 GMT (envelope-from gonzo@FreeBSD.org) Received: (from gonzo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42K4PMf053662; Wed, 2 May 2018 20:04:25 GMT (envelope-from gonzo@FreeBSD.org) Message-Id: <201805022004.w42K4PMf053662@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gonzo set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko Date: Wed, 2 May 2018 20:04:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333177 - head/sys/arm/broadcom/bcm2835 X-SVN-Group: head X-SVN-Commit-Author: gonzo X-SVN-Commit-Paths: head/sys/arm/broadcom/bcm2835 X-SVN-Commit-Revision: 333177 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 20:04:26 -0000 Author: gonzo Date: Wed May 2 20:04:25 2018 New Revision: 333177 URL: https://svnweb.freebsd.org/changeset/base/333177 Log: Unbreak RaspberryPi 2 boot after r332839 r332839 changed number of cells per interrupt for local_intc from 1 to 2 to pass type of IRQ. Driver expected only 1 cell so after r332839 all interrupt children of local_intc failed to allocate IRQ resource. Fix this regression by relaxing check for number of cells in interrupt property to be either 1 or 2. PR: 227904 Modified: head/sys/arm/broadcom/bcm2835/bcm2836.c Modified: head/sys/arm/broadcom/bcm2835/bcm2836.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2836.c Wed May 2 19:36:46 2018 (r333176) +++ head/sys/arm/broadcom/bcm2835/bcm2836.c Wed May 2 20:04:25 2018 (r333177) @@ -454,8 +454,10 @@ bcm_lintc_map_intr(device_t dev, struct intr_map_data return (ENOTSUP); daf = (struct intr_map_data_fdt *)data; - if (daf->ncells != 1 || daf->cells[0] >= BCM_LINTC_NIRQS) + if (daf->ncells > 2 || daf->cells[0] >= BCM_LINTC_NIRQS) return (EINVAL); + + /* TODO: handle IRQ type here */ sc = device_get_softc(dev); *isrcp = &sc->bls_isrcs[daf->cells[0]].bli_isrc; From owner-svn-src-all@freebsd.org Wed May 2 20:04:36 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 35BB8FB2E94; Wed, 2 May 2018 20:04:36 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 375F9753DB; Wed, 2 May 2018 20:04:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 99A0A15984; Wed, 2 May 2018 20:04:32 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42K4WHP053728; Wed, 2 May 2018 20:04:32 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42K4WGL053727; Wed, 2 May 2018 20:04:32 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201805022004.w42K4WGL053727@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Wed, 2 May 2018 20:04:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333178 - head/sys/netinet X-SVN-Group: head X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: head/sys/netinet X-SVN-Commit-Revision: 333178 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 20:04:36 -0000 Author: tuexen Date: Wed May 2 20:04:31 2018 New Revision: 333178 URL: https://svnweb.freebsd.org/changeset/base/333178 Log: SImplify the call to tcp_drop(), since the handling of soft error is also done in tcp_drop(). No functional change. Sponsored by: Netflix, Inc. Modified: head/sys/netinet/tcp_timer.c Modified: head/sys/netinet/tcp_timer.c ============================================================================== --- head/sys/netinet/tcp_timer.c Wed May 2 20:04:25 2018 (r333177) +++ head/sys/netinet/tcp_timer.c Wed May 2 20:04:31 2018 (r333178) @@ -662,8 +662,7 @@ tcp_timer_rexmt(void * xtp) tcp_inpinfo_lock_del(inp, tp); goto out; } - tp = tcp_drop(tp, tp->t_softerror ? - tp->t_softerror : ETIMEDOUT); + tp = tcp_drop(tp, ETIMEDOUT); tcp_inpinfo_lock_del(inp, tp); goto out; } From owner-svn-src-all@freebsd.org Wed May 2 20:13:04 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EE76BFB32AA; Wed, 2 May 2018 20:13:03 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 99A6B7636E; Wed, 2 May 2018 20:13:03 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 91A5A15B40; Wed, 2 May 2018 20:13:03 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42KD3YO058819; Wed, 2 May 2018 20:13:03 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42KD3s2058818; Wed, 2 May 2018 20:13:03 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201805022013.w42KD3s2058818@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Wed, 2 May 2018 20:13:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333180 - head/sys/dev/nvme X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/dev/nvme X-SVN-Commit-Revision: 333180 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 20:13:04 -0000 Author: mav Date: Wed May 2 20:13:03 2018 New Revision: 333180 URL: https://svnweb.freebsd.org/changeset/base/333180 Log: Fix LOR between controller and queue locks. Admin pass-through requests took controller lock before the queue lock, but in case of request submission to a failed controller controller lock was taken after the queue lock. Fix that by reducing the lock scopes and switching to mtx_pool locks to track pass-through request completion. Sponsored by: iXsystems, Inc. Modified: head/sys/dev/nvme/nvme_ctrlr.c Modified: head/sys/dev/nvme/nvme_ctrlr.c ============================================================================== --- head/sys/dev/nvme/nvme_ctrlr.c Wed May 2 20:10:27 2018 (r333179) +++ head/sys/dev/nvme/nvme_ctrlr.c Wed May 2 20:13:03 2018 (r333180) @@ -233,11 +233,12 @@ nvme_ctrlr_fail_req_task(void *arg, int pending) struct nvme_request *req; mtx_lock(&ctrlr->lock); - while (!STAILQ_EMPTY(&ctrlr->fail_req)) { - req = STAILQ_FIRST(&ctrlr->fail_req); + while ((req = STAILQ_FIRST(&ctrlr->fail_req)) != NULL) { STAILQ_REMOVE_HEAD(&ctrlr->fail_req, stailq); + mtx_unlock(&ctrlr->lock); nvme_qpair_manual_complete_request(req->qpair, req, NVME_SCT_GENERIC, NVME_SC_ABORTED_BY_REQUEST, TRUE); + mtx_lock(&ctrlr->lock); } mtx_unlock(&ctrlr->lock); } @@ -978,6 +979,7 @@ static void nvme_pt_done(void *arg, const struct nvme_completion *cpl) { struct nvme_pt_command *pt = arg; + struct mtx *mtx = pt->driver_lock; uint16_t status; bzero(&pt->cpl, sizeof(pt->cpl)); @@ -987,9 +989,10 @@ nvme_pt_done(void *arg, const struct nvme_completion * status &= ~NVME_STATUS_P_MASK; pt->cpl.status = status; - mtx_lock(pt->driver_lock); + mtx_lock(mtx); + pt->driver_lock = NULL; wakeup(pt); - mtx_unlock(pt->driver_lock); + mtx_unlock(mtx); } int @@ -1058,15 +1061,7 @@ nvme_ctrlr_passthrough_cmd(struct nvme_controller *ctr req->cmd.nsid = htole32(nsid); - if (is_admin_cmd) - mtx = &ctrlr->lock; - else { - KASSERT((nsid-1) >= 0 && (nsid-1) < NVME_MAX_NAMESPACES, - ("%s: invalid namespace ID %d\n", __func__, nsid)); - mtx = &ctrlr->ns[nsid-1].lock; - } - - mtx_lock(mtx); + mtx = mtx_pool_find(mtxpool_sleep, pt); pt->driver_lock = mtx; if (is_admin_cmd) @@ -1074,10 +1069,10 @@ nvme_ctrlr_passthrough_cmd(struct nvme_controller *ctr else nvme_ctrlr_submit_io_request(ctrlr, req); - mtx_sleep(pt, mtx, PRIBIO, "nvme_pt", 0); + mtx_lock(mtx); + while (pt->driver_lock != NULL) + mtx_sleep(pt, mtx, PRIBIO, "nvme_pt", 0); mtx_unlock(mtx); - - pt->driver_lock = NULL; err: if (buf != NULL) { From owner-svn-src-all@freebsd.org Wed May 2 20:15:03 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 073F9FB3344; Wed, 2 May 2018 20:15:03 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AA601764DE; Wed, 2 May 2018 20:15:02 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9DAF215B41; Wed, 2 May 2018 20:15:02 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42KF2ak058934; Wed, 2 May 2018 20:15:02 GMT (envelope-from kp@FreeBSD.org) Received: (from kp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42KF2qk058933; Wed, 2 May 2018 20:15:02 GMT (envelope-from kp@FreeBSD.org) Message-Id: <201805022015.w42KF2qk058933@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kp set sender to kp@FreeBSD.org using -f From: Kristof Provost Date: Wed, 2 May 2018 20:15:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333181 - stable/11/sbin/pfctl X-SVN-Group: stable-11 X-SVN-Commit-Author: kp X-SVN-Commit-Paths: stable/11/sbin/pfctl X-SVN-Commit-Revision: 333181 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 20:15:03 -0000 Author: kp Date: Wed May 2 20:15:02 2018 New Revision: 333181 URL: https://svnweb.freebsd.org/changeset/base/333181 Log: MFC r333084: pfctl: Don't break connections on skipped interfaces on reload On reload we used to first flush everything, including the list of skipped interfaces. This can lead to termination of these connections if they send packets before the new configuration is applied. Note that this doesn't currently happen on 12 or 11, because of special EACCES handling introduced in r315514. This special behaviour in tcp_output() may change, hence the fix in pfctl. PR: 214613 Submitted by: Andreas Longwitz Modified: stable/11/sbin/pfctl/pfctl.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/pfctl/pfctl.c ============================================================================== --- stable/11/sbin/pfctl/pfctl.c Wed May 2 20:13:03 2018 (r333180) +++ stable/11/sbin/pfctl/pfctl.c Wed May 2 20:15:02 2018 (r333181) @@ -67,6 +67,9 @@ void usage(void); int pfctl_enable(int, int); int pfctl_disable(int, int); int pfctl_clear_stats(int, int); +int pfctl_get_skip_ifaces(void); +int pfctl_check_skip_ifaces(char *); +int pfctl_clear_skip_ifaces(struct pfctl *); int pfctl_clear_interface_flags(int, int); int pfctl_clear_rules(int, int, char *); int pfctl_clear_nat(int, int, char *); @@ -106,6 +109,7 @@ const char *pfctl_lookup_option(char *, const char **) struct pf_anchor_global pf_anchors; struct pf_anchor pf_main_anchor; +static struct pfr_buffer skip_b; const char *clearopt; char *rulesopt; @@ -295,6 +299,44 @@ pfctl_clear_stats(int dev, int opts) } int +pfctl_get_skip_ifaces(void) +{ + bzero(&skip_b, sizeof(skip_b)); + skip_b.pfrb_type = PFRB_IFACES; + for (;;) { + pfr_buf_grow(&skip_b, skip_b.pfrb_size); + skip_b.pfrb_size = skip_b.pfrb_msize; + if (pfi_get_ifaces(NULL, skip_b.pfrb_caddr, &skip_b.pfrb_size)) + err(1, "pfi_get_ifaces"); + if (skip_b.pfrb_size <= skip_b.pfrb_msize) + break; + } + return (0); +} + +int +pfctl_check_skip_ifaces(char *ifname) +{ + struct pfi_kif *p; + + PFRB_FOREACH(p, &skip_b) + if ((p->pfik_flags & PFI_IFLAG_SKIP) && !strcmp(ifname, p->pfik_name)) + p->pfik_flags &= ~PFI_IFLAG_SKIP; + return (0); +} + +int +pfctl_clear_skip_ifaces(struct pfctl *pf) +{ + struct pfi_kif *p; + + PFRB_FOREACH(p, &skip_b) + if (p->pfik_flags & PFI_IFLAG_SKIP) + pfctl_set_interface_flags(pf, p->pfik_name, PFI_IFLAG_SKIP, 0); + return (0); +} + +int pfctl_clear_interface_flags(int dev, int opts) { struct pfioc_iface pi; @@ -1479,6 +1521,8 @@ pfctl_rules(int dev, char *filename, int opts, int opt else goto _error; } + if (loadopt & PFCTL_FLAG_OPTION) + pfctl_clear_skip_ifaces(&pf); if ((pf.loadopt & PFCTL_FLAG_FILTER && (pfctl_load_ruleset(&pf, path, rs, PF_RULESET_SCRUB, 0))) || @@ -1887,6 +1931,7 @@ pfctl_set_interface_flags(struct pfctl *pf, char *ifna } else { if (ioctl(pf->dev, DIOCSETIFFLAG, &pi)) err(1, "DIOCSETIFFLAG"); + pfctl_check_skip_ifaces(ifname); } } return (0); @@ -2345,7 +2390,7 @@ main(int argc, char *argv[]) if ((rulesopt != NULL) && (loadopt & PFCTL_FLAG_OPTION) && !anchorname[0]) - if (pfctl_clear_interface_flags(dev, opts | PF_OPT_QUIET)) + if (pfctl_get_skip_ifaces()) error = 1; if (rulesopt != NULL && !(opts & (PF_OPT_MERGE|PF_OPT_NOACTION)) && From owner-svn-src-all@freebsd.org Wed May 2 20:22:04 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 95874FB3619; Wed, 2 May 2018 20:22:04 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4B7A779056; Wed, 2 May 2018 20:22:04 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 465B715CB1; Wed, 2 May 2018 20:22:04 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42KM4rH063639; Wed, 2 May 2018 20:22:04 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42KM4UQ063638; Wed, 2 May 2018 20:22:04 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805022022.w42KM4UQ063638@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 2 May 2018 20:22:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333182 - head/sys/dev/mlx5/mlx5_en X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: head/sys/dev/mlx5/mlx5_en X-SVN-Commit-Revision: 333182 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 20:22:04 -0000 Author: kib Date: Wed May 2 20:22:03 2018 New Revision: 333182 URL: https://svnweb.freebsd.org/changeset/base/333182 Log: mlx5en: Always allow VLAN id 0. According to the 802.1Q-2014 9.6 VLAN Tag Control Information, VID value 0 means that there is no VLAN tag assigned to the packet, and only PCP and DEI values from the tag are meaningful. Current flow table programming filter out such packets. When programming VLAN filter for flow table, unconditionally add rule which accept packets with VLAN id 0. The packets are already handled correctly by the network stack. Reviewed by: hselasky, slavash Sponsored by: Mellanox Technologies MFC after: 1 week Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c ============================================================================== --- head/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c Wed May 2 20:15:02 2018 (r333181) +++ head/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c Wed May 2 20:22:03 2018 (r333182) @@ -696,6 +696,7 @@ mlx5e_add_all_vlan_rules(struct mlx5e_priv *priv) int err; int i; + set_bit(0, priv->vlan.active_vlans); for_each_set_bit(i, priv->vlan.active_vlans, VLAN_N_VID) { err = mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_VID, i); @@ -727,6 +728,7 @@ mlx5e_del_all_vlan_rules(struct mlx5e_priv *priv) for_each_set_bit(i, priv->vlan.active_vlans, VLAN_N_VID) mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_VID, i); + clear_bit(0, priv->vlan.active_vlans); } #define mlx5e_for_each_hash_node(hn, tmp, hash, i) \ From owner-svn-src-all@freebsd.org Wed May 2 20:36:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CA411FB3D1A; Wed, 2 May 2018 20:36:12 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2E8097BB40; Wed, 2 May 2018 20:36:12 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2543C15E7E; Wed, 2 May 2018 20:36:12 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42KaBC6070045; Wed, 2 May 2018 20:36:11 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42KaBw8070044; Wed, 2 May 2018 20:36:11 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805022036.w42KaBw8070044@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 2 May 2018 20:36:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333183 - head/sys/fs/nfsserver X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: head/sys/fs/nfsserver X-SVN-Commit-Revision: 333183 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 20:36:13 -0000 Author: rmacklem Date: Wed May 2 20:36:11 2018 New Revision: 333183 URL: https://svnweb.freebsd.org/changeset/base/333183 Log: Add two missing LIST_INIT()s. This patch adds two missing LIST_INIT()s. Found by inspection. In practice, these are currently no-ops, since the structure they are in is malloc'd with M_ZERO and all LIST_INIT does is set the pointer in the list head to NULL. (In other words, the M_ZERO has already correctly initialized it.) MFC after: 2 months Modified: head/sys/fs/nfsserver/nfs_nfsdstate.c Modified: head/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 2 20:22:03 2018 (r333182) +++ head/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 2 20:36:11 2018 (r333183) @@ -387,6 +387,7 @@ nfsrv_setclient(struct nfsrv_descript *nd, struct nfsc LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) tstp->ls_clp = new_clp; } + LIST_INIT(&new_clp->lc_session); LIST_INSERT_HEAD(NFSCLIENTHASH(new_clp->lc_clientid), new_clp, lc_hash); nfsstatsv1.srvclients++; @@ -451,6 +452,7 @@ nfsrv_setclient(struct nfsrv_descript *nd, struct nfsc LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) tstp->ls_clp = new_clp; } + LIST_INIT(&new_clp->lc_session); LIST_INSERT_HEAD(NFSCLIENTHASH(new_clp->lc_clientid), new_clp, lc_hash); nfsstatsv1.srvclients++; From owner-svn-src-all@freebsd.org Wed May 2 21:29:43 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 490E9FB4EB9; Wed, 2 May 2018 21:29:43 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DE1166A04C; Wed, 2 May 2018 21:29:42 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CAF61166B7; Wed, 2 May 2018 21:29:42 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42LTgbx096040; Wed, 2 May 2018 21:29:42 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42LTgEn096039; Wed, 2 May 2018 21:29:42 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201805022129.w42LTgEn096039@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 2 May 2018 21:29:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333184 - head/sys/fs/nfsserver X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: head/sys/fs/nfsserver X-SVN-Commit-Revision: 333184 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 21:29:43 -0000 Author: rmacklem Date: Wed May 2 21:29:42 2018 New Revision: 333184 URL: https://svnweb.freebsd.org/changeset/base/333184 Log: Revert r333183, since I am not sure that just initializing the list is the correct thing to do and that is already done without this commit. Modified: head/sys/fs/nfsserver/nfs_nfsdstate.c Modified: head/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 2 20:36:11 2018 (r333183) +++ head/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 2 21:29:42 2018 (r333184) @@ -387,7 +387,6 @@ nfsrv_setclient(struct nfsrv_descript *nd, struct nfsc LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) tstp->ls_clp = new_clp; } - LIST_INIT(&new_clp->lc_session); LIST_INSERT_HEAD(NFSCLIENTHASH(new_clp->lc_clientid), new_clp, lc_hash); nfsstatsv1.srvclients++; @@ -452,7 +451,6 @@ nfsrv_setclient(struct nfsrv_descript *nd, struct nfsc LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) tstp->ls_clp = new_clp; } - LIST_INIT(&new_clp->lc_session); LIST_INSERT_HEAD(NFSCLIENTHASH(new_clp->lc_clientid), new_clp, lc_hash); nfsstatsv1.srvclients++; From owner-svn-src-all@freebsd.org Wed May 2 21:32:20 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A5F4BFB50BF; Wed, 2 May 2018 21:32:20 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 53B196A3FF; Wed, 2 May 2018 21:32:20 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4EB9116835; Wed, 2 May 2018 21:32:20 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42LWKgO098587; Wed, 2 May 2018 21:32:20 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42LWKCJ098586; Wed, 2 May 2018 21:32:20 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805022132.w42LWKCJ098586@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Wed, 2 May 2018 21:32:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333185 - in head: . sys/modules/ixgb X-SVN-Group: head X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: in head: . sys/modules/ixgb X-SVN-Commit-Revision: 333185 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 21:32:20 -0000 Author: sbruno Date: Wed May 2 21:32:20 2018 New Revision: 333185 URL: https://svnweb.freebsd.org/changeset/base/333185 Log: Follow up to r333173, Retire ixgb(4) Remove sys/modules/ixgb and add the linked man page for if_ixgb via ObsoleteFiles. Submitted by: kbowling Relnotes: yes Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D15273 Deleted: head/sys/modules/ixgb/ Modified: head/ObsoleteFiles.inc Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Wed May 2 21:29:42 2018 (r333184) +++ head/ObsoleteFiles.inc Wed May 2 21:32:20 2018 (r333185) @@ -39,6 +39,7 @@ # done # 20180502: retire ixgb +OLD_FILES+=usr/share/man/man4/if_ixgb.4.gz OLD_FILES+=usr/share/man/man4/ixgb.4.gz # 20180501: retire lmc OLD_FILES+=usr/include/dev/lmc/if_lmc.h From owner-svn-src-all@freebsd.org Wed May 2 22:11:17 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8D679FB5D73; Wed, 2 May 2018 22:11:17 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3AE7A71D21; Wed, 2 May 2018 22:11:17 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3241616D50; Wed, 2 May 2018 22:11:17 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42MBHvh017057; Wed, 2 May 2018 22:11:17 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42MBHnO017056; Wed, 2 May 2018 22:11:17 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201805022211.w42MBHnO017056@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Wed, 2 May 2018 22:11:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333186 - head/sys/netinet6 X-SVN-Group: head X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: head/sys/netinet6 X-SVN-Commit-Revision: 333186 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 22:11:17 -0000 Author: tuexen Date: Wed May 2 22:11:16 2018 New Revision: 333186 URL: https://svnweb.freebsd.org/changeset/base/333186 Log: Send an ICMPv6 PacketTooBig message in case of forwading a packet which is too big for the outgoing interface and no firewall is involed. This problem was introduced in https://svnweb.freebsd.org/changeset/base/324996 Thanks to Irene Ruengeler for finding the bug and testing the fix. Reviewed by: kp@ MFC after: 3 days Modified: head/sys/netinet6/ip6_fastfwd.c Modified: head/sys/netinet6/ip6_fastfwd.c ============================================================================== --- head/sys/netinet6/ip6_fastfwd.c Wed May 2 21:32:20 2018 (r333185) +++ head/sys/netinet6/ip6_fastfwd.c Wed May 2 22:11:16 2018 (r333186) @@ -195,12 +195,19 @@ passin: in6_ifstat_inc(rcvif, ifs6_in_noroute); goto dropin; } + if (!PFIL_HOOKED(&V_inet6_pfil_hook)) { + if (m->m_pkthdr.len > nh.nh_mtu) { + in6_ifstat_inc(nh.nh_ifp, ifs6_in_toobig); + icmp6_error(m, ICMP6_PACKET_TOO_BIG, 0, nh.nh_mtu); + m = NULL; + goto dropout; + } + goto passout; + } /* * Outgoing packet firewall processing. */ - if (!PFIL_HOOKED(&V_inet6_pfil_hook)) - goto passout; if (pfil_run_hooks(&V_inet6_pfil_hook, &m, nh.nh_ifp, PFIL_OUT, PFIL_FWD, NULL) != 0 || m == NULL) goto dropout; From owner-svn-src-all@freebsd.org Wed May 2 22:36:12 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E2F13FB63D4; Wed, 2 May 2018 22:36:11 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7F66979C66; Wed, 2 May 2018 22:36:11 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6FDDA171D5; Wed, 2 May 2018 22:36:11 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42MaBJ2031086; Wed, 2 May 2018 22:36:11 GMT (envelope-from kp@FreeBSD.org) Received: (from kp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42MaBiw031085; Wed, 2 May 2018 22:36:11 GMT (envelope-from kp@FreeBSD.org) Message-Id: <201805022236.w42MaBiw031085@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kp set sender to kp@FreeBSD.org using -f From: Kristof Provost Date: Wed, 2 May 2018 22:36:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333187 - stable/10/sbin/pfctl X-SVN-Group: stable-10 X-SVN-Commit-Author: kp X-SVN-Commit-Paths: stable/10/sbin/pfctl X-SVN-Commit-Revision: 333187 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 22:36:12 -0000 Author: kp Date: Wed May 2 22:36:10 2018 New Revision: 333187 URL: https://svnweb.freebsd.org/changeset/base/333187 Log: MFC r333084: pfctl: Don't break connections on skipped interfaces on reload On reload we used to first flush everything, including the list of skipped interfaces. This can lead to termination of these connections if they send packets before the new configuration is applied. Note that this doesn't currently happen on 12 or 11, because of special EACCES handling introduced in r315514. This special behaviour in tcp_output() may change, hence the fix in pfctl. PR: 214613 Submitted by: Andreas Longwitz Modified: stable/10/sbin/pfctl/pfctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sbin/pfctl/pfctl.c ============================================================================== --- stable/10/sbin/pfctl/pfctl.c Wed May 2 22:11:16 2018 (r333186) +++ stable/10/sbin/pfctl/pfctl.c Wed May 2 22:36:10 2018 (r333187) @@ -68,6 +68,9 @@ void usage(void); int pfctl_enable(int, int); int pfctl_disable(int, int); int pfctl_clear_stats(int, int); +int pfctl_get_skip_ifaces(void); +int pfctl_check_skip_ifaces(char *); +int pfctl_clear_skip_ifaces(struct pfctl *); int pfctl_clear_interface_flags(int, int); int pfctl_clear_rules(int, int, char *); int pfctl_clear_nat(int, int, char *); @@ -107,6 +110,7 @@ const char *pfctl_lookup_option(char *, const char **) struct pf_anchor_global pf_anchors; struct pf_anchor pf_main_anchor; +static struct pfr_buffer skip_b; const char *clearopt; char *rulesopt; @@ -298,6 +302,44 @@ pfctl_clear_stats(int dev, int opts) } int +pfctl_get_skip_ifaces(void) +{ + bzero(&skip_b, sizeof(skip_b)); + skip_b.pfrb_type = PFRB_IFACES; + for (;;) { + pfr_buf_grow(&skip_b, skip_b.pfrb_size); + skip_b.pfrb_size = skip_b.pfrb_msize; + if (pfi_get_ifaces(NULL, skip_b.pfrb_caddr, &skip_b.pfrb_size)) + err(1, "pfi_get_ifaces"); + if (skip_b.pfrb_size <= skip_b.pfrb_msize) + break; + } + return (0); +} + +int +pfctl_check_skip_ifaces(char *ifname) +{ + struct pfi_kif *p; + + PFRB_FOREACH(p, &skip_b) + if ((p->pfik_flags & PFI_IFLAG_SKIP) && !strcmp(ifname, p->pfik_name)) + p->pfik_flags &= ~PFI_IFLAG_SKIP; + return (0); +} + +int +pfctl_clear_skip_ifaces(struct pfctl *pf) +{ + struct pfi_kif *p; + + PFRB_FOREACH(p, &skip_b) + if (p->pfik_flags & PFI_IFLAG_SKIP) + pfctl_set_interface_flags(pf, p->pfik_name, PFI_IFLAG_SKIP, 0); + return (0); +} + +int pfctl_clear_interface_flags(int dev, int opts) { struct pfioc_iface pi; @@ -1482,6 +1524,8 @@ pfctl_rules(int dev, char *filename, int opts, int opt else goto _error; } + if (loadopt & PFCTL_FLAG_OPTION) + pfctl_clear_skip_ifaces(&pf); if ((pf.loadopt & PFCTL_FLAG_FILTER && (pfctl_load_ruleset(&pf, path, rs, PF_RULESET_SCRUB, 0))) || @@ -1890,6 +1934,7 @@ pfctl_set_interface_flags(struct pfctl *pf, char *ifna } else { if (ioctl(pf->dev, DIOCSETIFFLAG, &pi)) err(1, "DIOCSETIFFLAG"); + pfctl_check_skip_ifaces(ifname); } } return (0); @@ -2348,7 +2393,7 @@ main(int argc, char *argv[]) if ((rulesopt != NULL) && (loadopt & PFCTL_FLAG_OPTION) && !anchorname[0]) - if (pfctl_clear_interface_flags(dev, opts | PF_OPT_QUIET)) + if (pfctl_get_skip_ifaces()) error = 1; if (rulesopt != NULL && !(opts & (PF_OPT_MERGE|PF_OPT_NOACTION)) && From owner-svn-src-all@freebsd.org Wed May 2 23:43:34 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5A126FB7AA0; Wed, 2 May 2018 23:43:34 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0C1CE859E8; Wed, 2 May 2018 23:43:34 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 071E017CF9; Wed, 2 May 2018 23:43:34 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w42NhXXg066355; Wed, 2 May 2018 23:43:33 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w42NhXow066354; Wed, 2 May 2018 23:43:33 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805022343.w42NhXow066354@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Wed, 2 May 2018 23:43:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333188 - head/share/mk X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/share/mk X-SVN-Commit-Revision: 333188 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 May 2018 23:43:34 -0000 Author: emaste Date: Wed May 2 23:43:33 2018 New Revision: 333188 URL: https://svnweb.freebsd.org/changeset/base/333188 Log: Build lld as long as we have a C++11 host compiler As with Clang, build our toolchain components by default when the host compiler is capable of doing so, to make them available for testing and experimentation. Sponsored by: The FreeBSD Foundation Modified: head/share/mk/src.opts.mk Modified: head/share/mk/src.opts.mk ============================================================================== --- head/share/mk/src.opts.mk Wed May 2 22:36:10 2018 (r333187) +++ head/share/mk/src.opts.mk Wed May 2 23:43:33 2018 (r333188) @@ -242,8 +242,8 @@ __DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX GPL_DTC # If an external compiler that supports C++11 is used as ${CC} and Clang # supports the target, then Clang is enabled but GCC is installed as the # default /usr/bin/cc. -__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX GPL_DTC -__DEFAULT_NO_OPTIONS+=CLANG_BOOTSTRAP CLANG_IS_CC LLD +__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX GPL_DTC LLD +__DEFAULT_NO_OPTIONS+=CLANG_BOOTSTRAP CLANG_IS_CC .else # Everything else disables Clang, and uses GCC instead. __DEFAULT_YES_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX GPL_DTC From owner-svn-src-all@freebsd.org Thu May 3 00:57:20 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 45203FB91C6; Thu, 3 May 2018 00:57:20 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E606274B90; Thu, 3 May 2018 00:57:19 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DEAAB18834; Thu, 3 May 2018 00:57:19 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w430vJid001835; Thu, 3 May 2018 00:57:19 GMT (envelope-from eadler@FreeBSD.org) Received: (from eadler@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w430vJmk001834; Thu, 3 May 2018 00:57:19 GMT (envelope-from eadler@FreeBSD.org) Message-Id: <201805030057.w430vJmk001834@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: eadler set sender to eadler@FreeBSD.org using -f From: Eitan Adler Date: Thu, 3 May 2018 00:57:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333189 - head/etc X-SVN-Group: head X-SVN-Commit-Author: eadler X-SVN-Commit-Paths: head/etc X-SVN-Commit-Revision: 333189 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 00:57:20 -0000 Author: eadler Date: Thu May 3 00:57:19 2018 New Revision: 333189 URL: https://svnweb.freebsd.org/changeset/base/333189 Log: [etc] Update newsyslog.conf default comment Remove line about allowed flags. It was missing 'pRTY' and is duplicative of the man page. It didn't describe the flags in any detail to help remind users of how to configure newsylog. Modified: head/etc/newsyslog.conf Modified: head/etc/newsyslog.conf ============================================================================== --- head/etc/newsyslog.conf Wed May 2 23:43:33 2018 (r333188) +++ head/etc/newsyslog.conf Thu May 3 00:57:19 2018 (r333189) @@ -8,8 +8,6 @@ # is no process which needs to be signalled when a given log file is # rotated, then the entry for that file should include the 'N' flag. # -# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'. -# # Note: some sites will want to select more restrictive protections than the # defaults. In particular, it may be desirable to switch many of the 644 # entries to 640 or 600. For example, some sites will consider the From owner-svn-src-all@freebsd.org Thu May 3 01:10:42 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2B645FB95EA; Thu, 3 May 2018 01:10:42 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CE30176D0E; Thu, 3 May 2018 01:10:41 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C9038189FE; Thu, 3 May 2018 01:10:41 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w431AfnK007904; Thu, 3 May 2018 01:10:41 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w431AfkW007903; Thu, 3 May 2018 01:10:41 GMT (envelope-from mw@FreeBSD.org) Message-Id: <201805030110.w431AfkW007903@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Thu, 3 May 2018 01:10:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333190 - head/sys/arm/mv X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/arm/mv X-SVN-Commit-Revision: 333190 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 01:10:42 -0000 Author: mw Date: Thu May 3 01:10:41 2018 New Revision: 333190 URL: https://svnweb.freebsd.org/changeset/base/333190 Log: Fix SoC identification issue on Marvell platforms Marvell SoC identification function was called by SYSINIT on all armv7 platforms, which brakes platforms other than Marvell built with GENERIC config. Fix this by shifting SoC identifying to Marvell platform initialization. Submitted by: Patryk Duda Reviewed by: manu Tested by: manu Obtained from: Semihalf Sponsored by: Stormshield Modified: head/sys/arm/mv/mv_common.c Modified: head/sys/arm/mv/mv_common.c ============================================================================== --- head/sys/arm/mv/mv_common.c Thu May 3 00:57:19 2018 (r333189) +++ head/sys/arm/mv/mv_common.c Thu May 3 01:10:41 2018 (r333190) @@ -180,6 +180,8 @@ static int fdt_win_setup(void); static int fdt_win_process_child(phandle_t, struct soc_node_spec *, const char*); +static void soc_identify(uint32_t, uint32_t); + static uint32_t dev_mask = 0; static int cpu_wins_no = 0; static int eth_port = 0; @@ -441,13 +443,13 @@ mv_check_soc_family() case MV_DEV_MV78460: soc_decode_win_spec = &decode_win_specs[MV_SOC_ARMADA_XP]; soc_family = MV_SOC_ARMADA_XP; - return (MV_SOC_ARMADA_XP); + break; case MV_DEV_88F6828: case MV_DEV_88F6820: case MV_DEV_88F6810: soc_decode_win_spec = &decode_win_specs[MV_SOC_ARMADA_38X]; soc_family = MV_SOC_ARMADA_38X; - return (MV_SOC_ARMADA_38X); + break; case MV_DEV_88F5181: case MV_DEV_88F5182: case MV_DEV_88F5281: @@ -462,11 +464,15 @@ mv_check_soc_family() case MV_DEV_MV78160: soc_decode_win_spec = &decode_win_specs[MV_SOC_ARMV5]; soc_family = MV_SOC_ARMV5; - return (MV_SOC_ARMV5); + break; default: soc_family = MV_SOC_UNSUPPORTED; return (MV_SOC_UNSUPPORTED); } + + soc_identify(dev, rev); + + return (soc_family); } static __inline void @@ -702,14 +708,12 @@ soc_id(uint32_t *dev, uint32_t *rev) } static void -soc_identify(void) +soc_identify(uint32_t d, uint32_t r) { - uint32_t d, r, size, mode, freq; + uint32_t size, mode, freq; const char *dev; const char *rev; - soc_id(&d, &r); - printf("SOC: "); if (bootverbose) printf("(0x%4x:0x%02x) ", d, r); @@ -827,20 +831,6 @@ soc_identify(void) break; } } - -static void -platform_identify(void *dummy) -{ - - soc_identify(); - - /* - * XXX Board identification e.g. read out from FPGA or similar should - * go here - */ -} -SYSINIT(platform_identify, SI_SUB_CPU, SI_ORDER_SECOND, platform_identify, - NULL); #ifdef KDB static void From owner-svn-src-all@freebsd.org Thu May 3 01:23:43 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1E69EFBA6C3; Thu, 3 May 2018 01:23:43 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C50927A02C; Thu, 3 May 2018 01:23:42 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A63BC18D5B; Thu, 3 May 2018 01:23:42 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w431Ng4e016878; Thu, 3 May 2018 01:23:42 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w431Ngm8016877; Thu, 3 May 2018 01:23:42 GMT (envelope-from mw@FreeBSD.org) Message-Id: <201805030123.w431Ngm8016877@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Thu, 3 May 2018 01:23:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333191 - head/sys/arm/conf X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/arm/conf X-SVN-Commit-Revision: 333191 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 01:23:43 -0000 Author: mw Date: Thu May 3 01:23:42 2018 New Revision: 333191 URL: https://svnweb.freebsd.org/changeset/base/333191 Log: Add Marvell ArmadaXP and Armada38X to GENERIC config Include source files and drivers for Marvell ArmadaXP and Armada38X in GENERIC kernel config. Submitted by: Michal Mazur Rafal Kozik Reviewed by: manu Tested by: manu Obtained from: Semihalf Sponsored by: Stormshield Modified: head/sys/arm/conf/GENERIC Modified: head/sys/arm/conf/GENERIC ============================================================================== --- head/sys/arm/conf/GENERIC Thu May 3 01:10:41 2018 (r333190) +++ head/sys/arm/conf/GENERIC Thu May 3 01:23:42 2018 (r333191) @@ -21,6 +21,7 @@ ident GENERIC cpu CPU_CORTEXA +cpu CPU_MV_PJ4B options SMP_ON_UP machine arm armv7 makeoptions CONF_CFLAGS="-march=armv7a" @@ -38,6 +39,7 @@ files "../allwinner/h3/files.h3" files "../broadcom/bcm2835/files.bcm2836" files "../broadcom/bcm2835/files.bcm283x" files "../freescale/imx/files.imx6" +files "../mv/files.arm7" files "../nvidia/tegra124/files.tegra124" files "../qemu/files.qemu" files "../ti/files.ti" @@ -55,6 +57,8 @@ options SOC_ALLWINNER_A83T options SOC_ALLWINNER_H2PLUS options SOC_ALLWINNER_H3 options SOC_BCM2836 +options SOC_MV_ARMADA38X +options SOC_MV_ARMADAXP options SOC_TI_AM335X options SOC_OMAP4 @@ -185,9 +189,10 @@ device pass # Passthrough device (direct ATA/SCSI a # USB support options USB_HOST_ALIGN=64 # Align usb buffers to cache line size. device usb -#device uhci +device uhci device ohci device ehci +device xhci device dwcotg # DWC OTG controller device musb @@ -196,6 +201,8 @@ device umass # Disks/Mass storage - Requires scbus device uhid # "Human Interface Devices" device ukbd # Allow keyboard like HIDs to control console +device firmware + # Device mode support device usb_template # Control of the gadget @@ -204,6 +211,10 @@ device loop device ether device vlan # 802.1Q VLAN support device bpf +device mii +device mdio +device etherswitch +device e6000sw # Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! @@ -215,6 +226,7 @@ device cgem # Zynq-7000 gig ethernet device device dwc # 10/100/1000 integrated GMAC controller device emac # 10/100 integrated EMAC controller device ffec # Freescale Fast Ethernet Controller +device neta # Marvell 10/100/1000 Network controller device smsc # SMSC LAN91C111 # Sound support @@ -243,6 +255,11 @@ device ti_sdma # Extensible Firmware Interface options EFI + +# Marvell Cryptographic Engine and Security Accelerator +device cesa +device crypto +device cryptodev # Flattened Device Tree options FDT # Configure using FDT/DTB data From owner-svn-src-all@freebsd.org Thu May 3 02:42:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CAA49FBE27F; Thu, 3 May 2018 02:42:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 781CF6F271; Thu, 3 May 2018 02:42:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7304419A30; Thu, 3 May 2018 02:42:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w432gD7r057033; Thu, 3 May 2018 02:42:13 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w432gDU1057032; Thu, 3 May 2018 02:42:13 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805030242.w432gDU1057032@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Thu, 3 May 2018 02:42:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333192 - head/lib/libc/sys X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/lib/libc/sys X-SVN-Commit-Revision: 333192 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 02:42:14 -0000 Author: kevans Date: Thu May 3 02:42:13 2018 New Revision: 333192 URL: https://svnweb.freebsd.org/changeset/base/333192 Log: fcntl(2): Vaguely document that ENOTTY is possible, with light examples Reported by: vs (2006, FreeBSD 6.1-BETA3) Reported by: me (2018, angry debugging session) MFC after: 1 month Modified: head/lib/libc/sys/fcntl.2 Modified: head/lib/libc/sys/fcntl.2 ============================================================================== --- head/lib/libc/sys/fcntl.2 Thu May 3 01:23:42 2018 (r333191) +++ head/lib/libc/sys/fcntl.2 Thu May 3 02:42:13 2018 (r333192) @@ -28,7 +28,7 @@ .\" @(#)fcntl.2 8.2 (Berkeley) 1/12/94 .\" $FreeBSD$ .\" -.Dd July 7, 2016 +.Dd May 2, 2018 .Dt FCNTL 2 .Os .Sh NAME @@ -572,6 +572,14 @@ process are already in use, or no file descriptors greater than or equal to .Fa arg are available. +.It Bq Er ENOTTY +The +.Fa fd +argument is not a valid file descriptor for the requested operation. +This may be the case if +.Fa fd +is a device node, or a descriptor returned by +.Xr kqueue 2 . .It Bq Er ENOLCK The argument .Fa cmd From owner-svn-src-all@freebsd.org Thu May 3 02:47:57 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0B6CCFBE6A7; Thu, 3 May 2018 02:47:57 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AE79470948; Thu, 3 May 2018 02:47:56 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-lf0-f52.google.com (mail-lf0-f52.google.com [209.85.215.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) (Authenticated sender: kevans) by smtp.freebsd.org (Postfix) with ESMTPSA id 64250FD12; Thu, 3 May 2018 02:47:56 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-lf0-f52.google.com with SMTP id y14-v6so23373930lfy.12; Wed, 02 May 2018 19:47:56 -0700 (PDT) X-Gm-Message-State: ALQs6tCj/9bSprErwXq4JxvgkvqxmjkU2malB0Jyfwl9lwmQf5Xthzns Df96DqD+oBZYNqmqp8ffPiUT5DwFum3St9kLOXI= X-Google-Smtp-Source: AB8JxZoOhVQPwD0eapr4VHlnsf3q8UjZgNkLRkMpuCVIfrTiHzrbvfAKAKWnXyLMmevGb16weeCcN2bVidPpvnW7GR4= X-Received: by 2002:a19:95c2:: with SMTP id x185-v6mr12904937lfd.74.1525315674958; Wed, 02 May 2018 19:47:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.46.49.18 with HTTP; Wed, 2 May 2018 19:47:34 -0700 (PDT) In-Reply-To: <201805030242.w432gDU1057032@repo.freebsd.org> References: <201805030242.w432gDU1057032@repo.freebsd.org> From: Kyle Evans Date: Wed, 2 May 2018 21:47:34 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r333192 - head/lib/libc/sys To: Kyle Evans Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 02:47:57 -0000 On Wed, May 2, 2018 at 9:42 PM, Kyle Evans wrote: > Author: kevans > Date: Thu May 3 02:42:13 2018 > New Revision: 333192 > URL: https://svnweb.freebsd.org/changeset/base/333192 > > Log: > fcntl(2): Vaguely document that ENOTTY is possible, with light examples > > Reported by: vs (2006, FreeBSD 6.1-BETA3) > Reported by: me (2018, angry debugging session) I guess I should be more specific here- this specific angry debugging session was in net/freerdp's usage of devel/libepoll-shim. An apparently common pattern is: timer = timerfd_create(...); ... fcntl(timer->fd, F_SETFL, O_NONBLOCK); This fcntl(2) call will fail and result in an ENOTTY, because libepoll-shim's implementation of timerfd_create is a wrapper around kqueue and this isn't an OK thing to do. This was the inspiration of one of the specifically mentioned examples. epoll API provides a way to set NONBLOCK in the creation process, the use of which in lieu of the timerfd_create ... fcntl pattern ended up being the proper fix. From owner-svn-src-all@freebsd.org Thu May 3 02:56:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BE265FBED75; Thu, 3 May 2018 02:56:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6C3337271B; Thu, 3 May 2018 02:56:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 64F2019D11; Thu, 3 May 2018 02:56:13 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w432uDxb062377; Thu, 3 May 2018 02:56:13 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w432uDrS062376; Thu, 3 May 2018 02:56:13 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805030256.w432uDrS062376@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Thu, 3 May 2018 02:56:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333193 - head/usr.bin/grep X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/usr.bin/grep X-SVN-Commit-Revision: 333193 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 02:56:13 -0000 Author: kevans Date: Thu May 3 02:56:13 2018 New Revision: 333193 URL: https://svnweb.freebsd.org/changeset/base/333193 Log: zgrep(1): Note that -r/-R are not currently supported. This is better behavior than just silently doing the wrong thing. We do not currently have plans to support -r/-R with the compression-enabled greps. Reported by: jilles Modified: head/usr.bin/grep/zgrep.sh Modified: head/usr.bin/grep/zgrep.sh ============================================================================== --- head/usr.bin/grep/zgrep.sh Thu May 3 02:42:13 2018 (r333192) +++ head/usr.bin/grep/zgrep.sh Thu May 3 02:56:13 2018 (r333193) @@ -106,6 +106,10 @@ do silent=1 shift ;; + -r|-R) + echo "${prg}: the ${1} flag is not currently supported" >&2 + exit 1 + ;; -V|--version) exec ${grep} -V ;; From owner-svn-src-all@freebsd.org Thu May 3 06:34:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B8C3DFC5F6C; Thu, 3 May 2018 06:34:08 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6638A7FD26; Thu, 3 May 2018 06:34:08 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5FDA91C289; Thu, 3 May 2018 06:34:08 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w436Y8Wc072252; Thu, 3 May 2018 06:34:08 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w436Y74Z072244; Thu, 3 May 2018 06:34:07 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030634.w436Y74Z072244@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 06:34:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333194 - in stable/11: cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/common/zfs sys/cddl/contrib/opensolaris/uts/common/fs/... X-SVN-Group: stable-11 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: in stable/11: cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/common/zfs sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/cddl/contrib/open... X-SVN-Commit-Revision: 333194 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 06:34:09 -0000 Author: avg Date: Thu May 3 06:34:07 2018 New Revision: 333194 URL: https://svnweb.freebsd.org/changeset/base/333194 Log: MFC r332426: allow ZFS pool to have temporary name for duration of current import The change adds -t option to zpool create and -t option to zpool import in its form with an old name and a new name. This allows to import (or create) a pool under a name that's different from its real, permanent name without affecting that name. This is useful when working with VM images or images of other physical systems if they happen to have a ZFS pool with the same name as the host system. Sponsored by: Panzura (porting) Modified: stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool.8 stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c stable/11/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c stable/11/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Directory Properties: stable/11/ (props changed) Modified: stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool.8 ============================================================================== --- stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Thu May 3 02:56:13 2018 (r333193) +++ stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Thu May 3 06:34:07 2018 (r333194) @@ -62,6 +62,7 @@ .Ar ... .Op Fl m Ar mountpoint .Op Fl R Ar root +.Op Fl t Ar tempname .Ar pool vdev ... .Nm .Cm destroy @@ -115,6 +116,7 @@ .Op Fl m .Op Fl N .Op Fl R Ar root +.Op Fl t .Op Fl F Op Fl n .Ar pool | id .Op Ar newpool @@ -966,6 +968,7 @@ do not actually discard any transactions. .Ar ... .Op Fl m Ar mountpoint .Op Fl R Ar root +.Op Fl t Ar tempname .Ar pool vdev ... .Xc .Pp @@ -1067,6 +1070,18 @@ or .Qq Cm none . For more information on dataset mount points, see .Xr zfs 8 . +.It Fl t Ar tempname +Sets the in-core pool name to +.Pa tempname +while the on-disk name will be the name specified as the pool name +.Pa pool . +This will set the default +.Sy cachefile +property to +.Sy none . +This is intended to handle name space collisions when creating pools +for other systems, such as virtual machines or physical machines +whose pools live on network block devices. .El .It Xo .Nm @@ -1321,6 +1336,7 @@ Searches for and imports all pools found. .Op Fl m .Op Fl N .Op Fl R Ar root +.Op Fl t .Op Fl F Op Fl n .Ar pool | id .Op Ar newpool @@ -1380,6 +1396,20 @@ Import the pool without mounting any file systems. .It Fl R Ar root Equivalent to .Qq Fl o Cm cachefile=none,altroot= Ns Pa root +.It Fl t +Used with +.Ar newpool . +Specifies that +.Ar newpool +is temporary. +Temporary pool names last until export. +Ensures that the original pool name will be used in all label updates and +therefore is retained upon export. +Will also set +.Sy cachefile +property to +.Sy none +when not explicitly specified. .It Fl F Recovery mode for a non-importable pool. Attempt to return the pool to an importable state by discarding the last few transactions. Not all damaged pools Modified: stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Thu May 3 02:56:13 2018 (r333193) +++ stable/11/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Thu May 3 06:34:07 2018 (r333194) @@ -220,8 +220,9 @@ get_usage(zpool_help_t idx) case HELP_CREATE: return (gettext("\tcreate [-fnd] [-B] " "[-o property=value] ... \n" - "\t [-O file-system-property=value] ... \n" - "\t [-m mountpoint] [-R root] ...\n")); + "\t [-O file-system-property=value] ...\n" + "\t [-m mountpoint] [-R root] [-t tempname] " + " ...\n")); case HELP_CHECKPOINT: return (gettext("\tcheckpoint [--discard] ...\n")); case HELP_DESTROY: @@ -239,7 +240,7 @@ get_usage(zpool_help_t idx) "[-R root] [-F [-n]] -a\n" "\timport [-o mntopts] [-o property=value] ... \n" "\t [-d dir | -c cachefile] [-D] [-f] [-m] [-N] " - "[-R root] [-F [-n]]\n" + "[-R root] [-F [-n]] [-t]\n" "\t [--rewind-to-checkpoint] [newpool]\n")); case HELP_IOSTAT: return (gettext("\tiostat [-v] [-T d|u] [pool] ... [interval " @@ -489,6 +490,21 @@ add_prop_list(const char *propname, char *propval, nvl } /* + * Set a default property pair (name, string-value) in a property nvlist + */ +static int +add_prop_list_default(const char *propname, char *propval, nvlist_t **props, + boolean_t poolprop) +{ + char *pval; + + if (nvlist_lookup_string(*props, propname, &pval) == 0) + return (0); + + return (add_prop_list(propname, propval, props, poolprop)); +} + +/* * zpool add [-fn] ... * * -f Force addition of devices, even if they appear in use @@ -850,15 +866,16 @@ errout: /* * zpool create [-fnd] [-B] [-o property=value] ... * [-O file-system-property=value] ... - * [-R root] [-m mountpoint] ... + * [-R root] [-m mountpoint] [-t tempname] ... * * -B Create boot partition. * -f Force creation, even if devices appear in use * -n Do not create the pool, but display the resulting layout if it * were to be created. - * -R Create a pool under an alternate root - * -m Set default mountpoint for the root dataset. By default it's + * -R Create a pool under an alternate root + * -m Set default mountpoint for the root dataset. By default it's * '/' + * -t Use the temporary name until the pool is exported. * -o Set property=value. * -d Don't automatically enable all supported pool features * (individual features can be enabled with -o). @@ -882,6 +899,7 @@ zpool_do_create(int argc, char **argv) int c; nvlist_t *nvroot = NULL; char *poolname; + char *tname = NULL; int ret = 1; char *altroot = NULL; char *mountpoint = NULL; @@ -890,7 +908,7 @@ zpool_do_create(int argc, char **argv) char *propval; /* check options */ - while ((c = getopt(argc, argv, ":fndBR:m:o:O:")) != -1) { + while ((c = getopt(argc, argv, ":fndBR:m:o:O:t:")) != -1) { switch (c) { case 'f': force = B_TRUE; @@ -922,11 +940,7 @@ zpool_do_create(int argc, char **argv) if (add_prop_list(zpool_prop_to_name( ZPOOL_PROP_ALTROOT), optarg, &props, B_TRUE)) goto errout; - if (nvlist_lookup_string(props, - zpool_prop_to_name(ZPOOL_PROP_CACHEFILE), - &propval) == 0) - break; - if (add_prop_list(zpool_prop_to_name( + if (add_prop_list_default(zpool_prop_to_name( ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) goto errout; break; @@ -999,6 +1013,27 @@ zpool_do_create(int argc, char **argv) goto errout; } break; + case 't': + /* + * Sanity check temporary pool name. + */ + if (strchr(optarg, '/') != NULL) { + (void) fprintf(stderr, gettext("cannot create " + "'%s': invalid character '/' in temporary " + "name\n"), optarg); + (void) fprintf(stderr, gettext("use 'zfs " + "create' to create a dataset\n")); + goto errout; + } + + if (add_prop_list(zpool_prop_to_name( + ZPOOL_PROP_TNAME), optarg, &props, B_TRUE)) + goto errout; + if (add_prop_list_default(zpool_prop_to_name( + ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) + goto errout; + tname = optarg; + break; case ':': (void) fprintf(stderr, gettext("missing argument for " "'%c' option\n"), optopt); @@ -1205,8 +1240,8 @@ zpool_do_create(int argc, char **argv) ret = 1; if (zpool_create(g_zfs, poolname, nvroot, props, fsprops) == 0) { - zfs_handle_t *pool = zfs_open(g_zfs, poolname, - ZFS_TYPE_FILESYSTEM); + zfs_handle_t *pool = zfs_open(g_zfs, + tname ? tname : poolname, ZFS_TYPE_FILESYSTEM); if (pool != NULL) { if (zfs_mount(pool, NULL, 0) == 0) ret = zfs_shareall(pool); @@ -2162,7 +2197,8 @@ zpool_do_checkpoint(int argc, char **argv) * import [-o mntopts] [-o prop=value] ... [-R root] [-D] * [-d dir | -c cachefile] [-f] -a * import [-o mntopts] [-o prop=value] ... [-R root] [-D] - * [-d dir | -c cachefile] [-f] [-n] [-F] [newpool] + * [-d dir | -c cachefile] [-f] [-n] [-F] [-t] + * [newpool] * * -c Read pool information from a cachefile instead of searching * devices. @@ -2191,6 +2227,9 @@ zpool_do_checkpoint(int argc, char **argv) * * -N Import the pool but don't mount datasets. * + * -t Use newpool as a temporary pool name instead of renaming + * the pool. + * * -T Specify a starting txg to use for import. This option is * intentionally undocumented option for testing purposes. * @@ -2241,7 +2280,7 @@ zpool_do_import(int argc, char **argv) }; /* check options */ - while ((c = getopt_long(argc, argv, ":aCc:d:DEfFmnNo:rR:T:VX", + while ((c = getopt_long(argc, argv, ":aCc:d:DEfFmnNo:rR:tT:VX", long_options, NULL)) != -1) { switch (c) { case 'a': @@ -2296,14 +2335,16 @@ zpool_do_import(int argc, char **argv) if (add_prop_list(zpool_prop_to_name( ZPOOL_PROP_ALTROOT), optarg, &props, B_TRUE)) goto error; - if (nvlist_lookup_string(props, - zpool_prop_to_name(ZPOOL_PROP_CACHEFILE), - &propval) == 0) - break; - if (add_prop_list(zpool_prop_to_name( + if (add_prop_list_default(zpool_prop_to_name( ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) goto error; break; + case 't': + flags |= ZFS_IMPORT_TEMP_NAME; + if (add_prop_list_default(zpool_prop_to_name( + ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) + goto error; + break; case 'T': errno = 0; txg = strtoull(optarg, &endptr, 0); @@ -2439,9 +2480,9 @@ zpool_do_import(int argc, char **argv) (void) fprintf(stderr, gettext("cannot import '%s': " "a pool with that name already exists\n"), argv[0]); - (void) fprintf(stderr, gettext("use the form '%s " - " ' to give it a new name\n"), - "zpool import"); + (void) fprintf(stderr, gettext("use the form 'zpool import " + "[-t] ' to give it a new temporary " + "or permanent name\n")); err = 1; } else if (pools == NULL && idata.exists) { (void) fprintf(stderr, gettext("cannot import '%s': " Modified: stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c ============================================================================== --- stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Thu May 3 02:56:13 2018 (r333193) +++ stable/11/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Thu May 3 06:34:07 2018 (r333194) @@ -644,11 +644,22 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char goto error; } break; + case ZPOOL_PROP_READONLY: if (!flags.import) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' can only be set at " "import time"), propname); + (void) zfs_error(hdl, EZFS_BADPROP, errbuf); + goto error; + } + break; + + case ZPOOL_PROP_TNAME: + if (!flags.create) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "property '%s' can only be set at " + "creation time"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } Modified: stable/11/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c ============================================================================== --- stable/11/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c Thu May 3 02:56:13 2018 (r333193) +++ stable/11/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c Thu May 3 06:34:07 2018 (r333194) @@ -136,6 +136,8 @@ zpool_prop_init(void) PROP_READONLY, ZFS_TYPE_POOL, "NAME"); zprop_register_hidden(ZPOOL_PROP_MAXBLOCKSIZE, "maxblocksize", PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_POOL, "MAXBLOCKSIZE"); + zprop_register_hidden(ZPOOL_PROP_TNAME, "tname", PROP_TYPE_STRING, + PROP_ONETIME, ZFS_TYPE_POOL, "TNAME"); } /* Modified: stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu May 3 02:56:13 2018 (r333193) +++ stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu May 3 06:34:07 2018 (r333194) @@ -4666,12 +4666,18 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_ uint_t nspares, nl2cache; uint64_t version, obj; boolean_t has_features; + char *poolname; + nvlist_t *nvl; + if (nvlist_lookup_string(props, + zpool_prop_to_name(ZPOOL_PROP_TNAME), &poolname) != 0) + poolname = (char *)pool; + /* * If this pool already exists, return failure. */ mutex_enter(&spa_namespace_lock); - if (spa_lookup(pool) != NULL) { + if (spa_lookup(poolname) != NULL) { mutex_exit(&spa_namespace_lock); return (SET_ERROR(EEXIST)); } @@ -4679,9 +4685,12 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_ /* * Allocate a new spa_t structure. */ + nvl = fnvlist_alloc(); + fnvlist_add_string(nvl, ZPOOL_CONFIG_POOL_NAME, pool); (void) nvlist_lookup_string(props, zpool_prop_to_name(ZPOOL_PROP_ALTROOT), &altroot); - spa = spa_add(pool, NULL, altroot); + spa = spa_add(poolname, nvl, altroot); + fnvlist_free(nvl); spa_activate(spa, spa_mode_global); if (props && (error = spa_prop_validate(spa, props))) { @@ -4690,6 +4699,12 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_ mutex_exit(&spa_namespace_lock); return (error); } + + /* + * Temporary pool names should never be written to disk. + */ + if (poolname != pool) + spa->spa_import_flags |= ZFS_IMPORT_TEMP_NAME; has_features = B_FALSE; for (nvpair_t *elem = nvlist_next_nvpair(props, NULL); Modified: stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c ============================================================================== --- stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c Thu May 3 02:56:13 2018 (r333193) +++ stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c Thu May 3 06:34:07 2018 (r333194) @@ -226,6 +226,7 @@ spa_write_cachefile(spa_t *target, boolean_t removing, nvlist_t *nvl; boolean_t ccw_failure; int error; + char *pool_name; ASSERT(MUTEX_HELD(&spa_namespace_lock)); @@ -274,11 +275,18 @@ spa_write_cachefile(spa_t *target, boolean_t removing, if (nvl == NULL) nvl = fnvlist_alloc(); - fnvlist_add_nvlist(nvl, spa->spa_name, + if (spa->spa_import_flags & ZFS_IMPORT_TEMP_NAME) { + pool_name = fnvlist_lookup_string(spa->spa_config, + ZPOOL_CONFIG_POOL_NAME); + } else { + pool_name = spa_name(spa); + } + + fnvlist_add_nvlist(nvl, pool_name, spa->spa_config); mutex_exit(&spa->spa_props_lock); - if (nvlist_lookup_nvlist(nvl, spa->spa_name, &nvroot) == 0) + if (nvlist_lookup_nvlist(nvl, pool_name, &nvroot) == 0) spa_config_clean(nvroot); } @@ -382,6 +390,7 @@ spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t t unsigned long hostid = 0; boolean_t locked = B_FALSE; uint64_t split_guid; + char *pool_name; if (vd == NULL) { vd = rvd; @@ -398,10 +407,27 @@ spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t t if (txg == -1ULL) txg = spa->spa_config_txg; + /* + * Originally, users had to handle spa namespace collisions by either + * exporting the already imported pool or by specifying a new name for + * the pool with a conflicting name. In the case of root pools from + * virtual guests, neither approach to collision resolution is + * reasonable. This is addressed by extending the new name syntax with + * an option to specify that the new name is temporary. When specified, + * ZFS_IMPORT_TEMP_NAME will be set in spa->spa_import_flags to tell us + * to use the previous name, which we do below. + */ + if (spa->spa_import_flags & ZFS_IMPORT_TEMP_NAME) { + pool_name = fnvlist_lookup_string(spa->spa_config, + ZPOOL_CONFIG_POOL_NAME); + } else { + pool_name = spa_name(spa); + } + config = fnvlist_alloc(); fnvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, spa_version(spa)); - fnvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, spa_name(spa)); + fnvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, pool_name); fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, spa_state(spa)); fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_TXG, txg); fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_GUID, spa_guid(spa)); Modified: stable/11/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h ============================================================================== --- stable/11/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Thu May 3 02:56:13 2018 (r333193) +++ stable/11/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Thu May 3 06:34:07 2018 (r333194) @@ -214,6 +214,7 @@ typedef enum { ZPOOL_PROP_MAXBLOCKSIZE, ZPOOL_PROP_BOOTSIZE, ZPOOL_PROP_CHECKPOINT, + ZPOOL_PROP_TNAME, ZPOOL_NUM_PROPS } zpool_prop_t; @@ -1047,6 +1048,7 @@ typedef enum { #define ZFS_IMPORT_MISSING_LOG 0x4 #define ZFS_IMPORT_ONLY 0x8 #define ZFS_IMPORT_CHECKPOINT 0x10 +#define ZFS_IMPORT_TEMP_NAME 0x20 /* * Channel program argument/return nvlist keys and defaults. From owner-svn-src-all@freebsd.org Thu May 3 06:52:49 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E53A6FC68DF; Thu, 3 May 2018 06:52:48 +0000 (UTC) (envelope-from rcyu@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 90575856F3; Thu, 3 May 2018 06:52:48 +0000 (UTC) (envelope-from rcyu@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8B3BB1C5CE; Thu, 3 May 2018 06:52:48 +0000 (UTC) (envelope-from rcyu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w436qmeW081971; Thu, 3 May 2018 06:52:48 GMT (envelope-from rcyu@FreeBSD.org) Received: (from rcyu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w436qmoq081968; Thu, 3 May 2018 06:52:48 GMT (envelope-from rcyu@FreeBSD.org) Message-Id: <201805030652.w436qmoq081968@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rcyu set sender to rcyu@FreeBSD.org using -f From: Ruey-Cherng Yu Date: Thu, 3 May 2018 06:52:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333195 - head/share/syscons/keymaps X-SVN-Group: head X-SVN-Commit-Author: rcyu X-SVN-Commit-Paths: head/share/syscons/keymaps X-SVN-Commit-Revision: 333195 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 06:52:49 -0000 Author: rcyu (doc committer) Date: Thu May 3 06:52:47 2018 New Revision: 333195 URL: https://svnweb.freebsd.org/changeset/base/333195 Log: - Add us.iso Macbook/Macbook Pro keyboard support Approved by: delphij Differential Revision: https://reviews.freebsd.org/D14504 Added: head/share/syscons/keymaps/us.iso.macbook.kbd (contents, props changed) Modified: head/share/syscons/keymaps/INDEX.keymaps head/share/syscons/keymaps/Makefile Modified: head/share/syscons/keymaps/INDEX.keymaps ============================================================================== --- head/share/syscons/keymaps/INDEX.keymaps Thu May 3 06:34:07 2018 (r333194) +++ head/share/syscons/keymaps/INDEX.keymaps Thu May 3 06:52:47 2018 (r333195) @@ -527,6 +527,12 @@ us.iso.acc.kbd:fr:États Unis d'Amérique ISO-8859-1 (av us.iso.acc.kbd:pt:Estados Unidos da América ISO-8859-1 (com acentos) us.iso.acc.kbd:es:Estadounidense ISO-8859-1 (con acentos) +us.iso.macbook.kbd:en:United States of America Macbook/Macbook Pro ISO-8859-1 +us.iso.macbook.kbd:de:US-amerikanisch Macbook/Macbook Pro ISO-8859-1 +us.iso.macbook.kbd:fr:ノtats Unis d'Am駻ique Macbook/Macbook Pro ISO-8859-1 +us.iso.macbook.kbd:pt:Estados Unidos da Am駻ica Macbook/Macbook Pro ISO-8859-1 +us.iso.macbook.kbd:es:Estadounidense Macbook/Macbook Pro ISO-8859-1 + us.dvorak.kbd:en:United States of America dvorak us.dvorak.kbd:de:US-amerikanisch dvorak us.dvorak.kbd:fr:États Unis d'Amérique dvorak Modified: head/share/syscons/keymaps/Makefile ============================================================================== --- head/share/syscons/keymaps/Makefile Thu May 3 06:34:07 2018 (r333194) +++ head/share/syscons/keymaps/Makefile Thu May 3 06:52:47 2018 (r333195) @@ -48,7 +48,8 @@ FILES= INDEX.keymaps \ uk.iso.kbd uk.iso-ctrl.kbd uk.cp850.kbd uk.cp850-ctrl.kbd \ uk.dvorak.kbd \ us.iso.kbd us.dvorak.kbd us.dvorakl.kbd us.dvorakr.kbd us.dvorakp.kbd \ - us.dvorakx.kbd us.emacs.kbd us.pc-ctrl.kbd us.unix.kbd us.iso.acc.kbd + us.dvorakx.kbd us.emacs.kbd us.pc-ctrl.kbd us.unix.kbd us.iso.acc.kbd \ + us.iso.macbook.kbd FILESDIR= ${SHAREDIR}/syscons/keymaps Added: head/share/syscons/keymaps/us.iso.macbook.kbd ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/syscons/keymaps/us.iso.macbook.kbd Thu May 3 06:52:47 2018 (r333195) @@ -0,0 +1,116 @@ +# $FreeBSD$ +# by Willian Theesfeld Jr +# alt +# scan cntrl alt alt cntrl lock +# code base shift cntrl shift alt shift cntrl shift state +# ------------------------------------------------------------------ + 000 nop nop nop nop nop nop nop nop O + 001 esc esc esc esc esc esc debug esc O + 002 '1' '!' nop nop '1' '!' nop nop O + 003 '2' '@' nul nul '2' '@' nul nul O + 004 '3' '#' nop nop '3' '#' nop nop O + 005 '4' '$' nop nop '4' '$' nop nop O + 006 '5' '%' nop nop '5' '%' nop nop O + 007 '6' '^' rs rs '6' '^' rs rs O + 008 '7' '&' nop nop '7' '&' nop nop O + 009 '8' '*' nop nop '8' '*' nop nop O + 010 '9' '(' nop nop '9' '(' nop nop O + 011 '0' ')' nop nop '0' ')' nop nop O + 012 '-' '_' us us '-' '_' us us O + 013 '=' '+' nop nop '=' '+' nop nop O + 014 bs bs del del bs bs del del O + 015 ht btab nop nop ht btab nop nop O + 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C + 017 'w' 'W' etb etb 'w' 'W' etb etb C + 018 'e' 'E' enq enq 'e' 'E' enq enq C + 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C + 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C + 021 'y' 'Y' em em 'y' 'Y' em em C + 022 'u' 'U' nak nak 'u' 'U' nak nak C + 023 'i' 'I' ht ht 'i' 'I' ht ht C + 024 'o' 'O' si si 'o' 'O' si si C + 025 'p' 'P' dle dle 'p' 'P' dle dle C + 026 '[' '{' esc esc '[' '{' esc esc O + 027 ']' '}' gs gs ']' '}' gs gs O + 028 cr cr nl nl cr cr nl nl O + 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O + 030 'a' 'A' soh soh 'a' 'A' soh soh C + 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C + 032 'd' 'D' eot eot 'd' 'D' eot eot C + 033 'f' 'F' ack ack 'f' 'F' ack ack C + 034 'g' 'G' bel bel 'g' 'G' bel bel C + 035 'h' 'H' bs bs 'h' 'H' bs bs C + 036 'j' 'J' nl nl 'j' 'J' nl nl C + 037 'k' 'K' vt vt 'k' 'K' vt vt C + 038 'l' 'L' ff ff 'l' 'L' ff ff C + 039 ';' ':' nop nop ';' ':' nop nop O + 040 ''' '"' nop nop ''' '"' nop nop O + 041 '`' '~' nop nop '`' '~' nop nop O + 042 lshift lshift lshift lshift lshift lshift lshift lshift O + 043 '\' '|' fs fs '\' '|' fs fs O + 044 'z' 'Z' sub sub 'z' 'Z' sub sub C + 045 'x' 'X' can can 'x' 'X' can can C + 046 'c' 'C' etx etx 'c' 'C' etx etx C + 047 'v' 'V' syn syn 'v' 'V' syn syn C + 048 'b' 'B' stx stx 'b' 'B' stx stx C + 049 'n' 'N' so so 'n' 'N' so so C + 050 'm' 'M' cr cr 'm' 'M' cr cr C + 051 ',' '<' nop nop ',' '<' nop nop O + 052 '.' '>' nop nop '.' '>' nop nop O + 053 '/' '?' nop nop '/' '?' nop nop O + 054 rshift rshift rshift rshift rshift rshift rshift rshift O + 055 '*' '*' '*' '*' '*' '*' '*' '*' O + 056 lalt lalt lalt lalt lalt lalt lalt lalt O + 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O + 058 clock clock clock clock clock clock clock clock O + 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O + 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O + 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O + 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O + 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O + 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O + 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O + 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O + 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O + 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O + 069 nlock nlock nlock nlock nlock nlock nlock nlock O + 070 slock slock slock slock slock slock slock slock O + 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N + 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N + 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N + 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N + 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N + 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N + 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N + 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N + 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N + 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N + 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N + 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N + 083 del '.' '.' '.' '.' '.' boot boot N + 084 nop nop nop nop nop nop nop nop O + 085 nop nop nop nop nop nop nop nop O + 086 '`' '~' nop nop '`' '~' nop nop O + 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O + 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O + 089 cr cr nl nl cr cr nl nl O + 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O + 091 '/' '/' '/' '/' '/' '/' '/' '/' N + 092 nscr pscr debug debug nop nop nop nop O + 093 ralt ralt ralt ralt ralt ralt ralt ralt O + 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O + 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O + 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O + 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O + 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O + 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O + 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O + 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O + 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O + 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O + 104 slock saver slock saver susp nop susp nop O + 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O + 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O + 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O + 108 nop nop nop nop nop nop nop nop O + From owner-svn-src-all@freebsd.org Thu May 3 07:22:26 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0F11FFC7253; Thu, 3 May 2018 07:22:26 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B350D6B16A; Thu, 3 May 2018 07:22:25 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AE1351CABB; Thu, 3 May 2018 07:22:25 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437MP41096893; Thu, 3 May 2018 07:22:25 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437MPPJ096886; Thu, 3 May 2018 07:22:25 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030722.w437MPPJ096886@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:22:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333196 - in stable/10: cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/common/zfs sys/cddl/contrib/opensolaris/uts/common/fs/... X-SVN-Group: stable-10 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: in stable/10: cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/common/zfs sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/cddl/contrib/open... X-SVN-Commit-Revision: 333196 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:22:26 -0000 Author: avg Date: Thu May 3 07:22:24 2018 New Revision: 333196 URL: https://svnweb.freebsd.org/changeset/base/333196 Log: MFC r332426: allow ZFS pool to have temporary name for duration of current import The change adds -t option to zpool create and -t option to zpool import in its form with an old name and a new name. This allows to import (or create) a pool under a name that's different from its real, permanent name without affecting that name. This is useful when working with VM images or images of other physical systems if they happen to have a ZFS pool with the same name as the host system. Sponsored by: Panzura (porting) Modified: stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool.8 stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c stable/10/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Directory Properties: stable/10/ (props changed) Modified: stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool.8 ============================================================================== --- stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Thu May 3 06:52:47 2018 (r333195) +++ stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Thu May 3 07:22:24 2018 (r333196) @@ -57,6 +57,7 @@ .Ar ... .Op Fl m Ar mountpoint .Op Fl R Ar root +.Op Fl t Ar tempname .Ar pool vdev ... .Nm .Cm destroy @@ -108,6 +109,7 @@ .Op Fl m .Op Fl N .Op Fl R Ar root +.Op Fl t .Op Fl F Op Fl n .Ar pool | id .Op Ar newpool @@ -868,6 +870,7 @@ do not actually discard any transactions. .Ar ... .Op Fl m Ar mountpoint .Op Fl R Ar root +.Op Fl t Ar tempname .Ar pool vdev ... .Xc .Pp @@ -969,6 +972,18 @@ or .Qq Cm none . For more information on dataset mount points, see .Xr zfs 8 . +.It Fl t Ar tempname +Sets the in-core pool name to +.Pa tempname +while the on-disk name will be the name specified as the pool name +.Pa pool . +This will set the default +.Sy cachefile +property to +.Sy none . +This is intended to handle name space collisions when creating pools +for other systems, such as virtual machines or physical machines +whose pools live on network block devices. .El .It Xo .Nm @@ -1223,6 +1238,7 @@ Searches for and imports all pools found. .Op Fl m .Op Fl N .Op Fl R Ar root +.Op Fl t .Op Fl F Op Fl n .Ar pool | id .Op Ar newpool @@ -1282,6 +1298,20 @@ Import the pool without mounting any file systems. .It Fl R Ar root Equivalent to .Qq Fl o Cm cachefile=none,altroot= Ns Pa root +.It Fl t +Used with +.Ar newpool . +Specifies that +.Ar newpool +is temporary. +Temporary pool names last until export. +Ensures that the original pool name will be used in all label updates and +therefore is retained upon export. +Will also set +.Sy cachefile +property to +.Sy none +when not explicitly specified. .It Fl F Recovery mode for a non-importable pool. Attempt to return the pool to an importable state by discarding the last few transactions. Not all damaged pools Modified: stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Thu May 3 06:52:47 2018 (r333195) +++ stable/10/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Thu May 3 07:22:24 2018 (r333196) @@ -212,8 +212,9 @@ get_usage(zpool_help_t idx) return (gettext("\tclear [-nF] [device]\n")); case HELP_CREATE: return (gettext("\tcreate [-fnd] [-o property=value] ... \n" - "\t [-O file-system-property=value] ... \n" - "\t [-m mountpoint] [-R root] ...\n")); + "\t [-O file-system-property=value] ...\n" + "\t [-m mountpoint] [-R root] [-t tempname] " + " ...\n")); case HELP_DESTROY: return (gettext("\tdestroy [-f] \n")); case HELP_DETACH: @@ -230,7 +231,7 @@ get_usage(zpool_help_t idx) "[-R root] [-F [-n]] -a\n" "\timport [-o mntopts] [-o property=value] ... \n" "\t [-d dir | -c cachefile] [-D] [-f] [-m] [-N] " - "[-R root] [-F [-n]]\n" + "[-R root] [-F [-n]] [-t]\n" "\t [newpool]\n")); case HELP_IOSTAT: return (gettext("\tiostat [-v] [-T d|u] [pool] ... [interval " @@ -480,6 +481,21 @@ add_prop_list(const char *propname, char *propval, nvl } /* + * Set a default property pair (name, string-value) in a property nvlist + */ +static int +add_prop_list_default(const char *propname, char *propval, nvlist_t **props, + boolean_t poolprop) +{ + char *pval; + + if (nvlist_lookup_string(*props, propname, &pval) == 0) + return (0); + + return (add_prop_list(propname, propval, props, poolprop)); +} + +/* * zpool add [-fn] ... * * -f Force addition of devices, even if they appear in use @@ -775,14 +791,15 @@ errout: /* * zpool create [-fnd] [-o property=value] ... * [-O file-system-property=value] ... - * [-R root] [-m mountpoint] ... + * [-R root] [-m mountpoint] [-t tempname] ... * * -f Force creation, even if devices appear in use * -n Do not create the pool, but display the resulting layout if it * were to be created. - * -R Create a pool under an alternate root - * -m Set default mountpoint for the root dataset. By default it's + * -R Create a pool under an alternate root + * -m Set default mountpoint for the root dataset. By default it's * '/' + * -t Use the temporary name until the pool is exported. * -o Set property=value. * -d Don't automatically enable all supported pool features * (individual features can be enabled with -o). @@ -802,6 +819,7 @@ zpool_do_create(int argc, char **argv) int c; nvlist_t *nvroot = NULL; char *poolname; + char *tname = NULL; int ret = 1; char *altroot = NULL; char *mountpoint = NULL; @@ -810,7 +828,7 @@ zpool_do_create(int argc, char **argv) char *propval; /* check options */ - while ((c = getopt(argc, argv, ":fndR:m:o:O:")) != -1) { + while ((c = getopt(argc, argv, ":fndR:m:o:O:t:")) != -1) { switch (c) { case 'f': force = B_TRUE; @@ -826,11 +844,7 @@ zpool_do_create(int argc, char **argv) if (add_prop_list(zpool_prop_to_name( ZPOOL_PROP_ALTROOT), optarg, &props, B_TRUE)) goto errout; - if (nvlist_lookup_string(props, - zpool_prop_to_name(ZPOOL_PROP_CACHEFILE), - &propval) == 0) - break; - if (add_prop_list(zpool_prop_to_name( + if (add_prop_list_default(zpool_prop_to_name( ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) goto errout; break; @@ -889,6 +903,27 @@ zpool_do_create(int argc, char **argv) goto errout; } break; + case 't': + /* + * Sanity check temporary pool name. + */ + if (strchr(optarg, '/') != NULL) { + (void) fprintf(stderr, gettext("cannot create " + "'%s': invalid character '/' in temporary " + "name\n"), optarg); + (void) fprintf(stderr, gettext("use 'zfs " + "create' to create a dataset\n")); + goto errout; + } + + if (add_prop_list(zpool_prop_to_name( + ZPOOL_PROP_TNAME), optarg, &props, B_TRUE)) + goto errout; + if (add_prop_list_default(zpool_prop_to_name( + ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) + goto errout; + tname = optarg; + break; case ':': (void) fprintf(stderr, gettext("missing argument for " "'%c' option\n"), optopt); @@ -1061,8 +1096,8 @@ zpool_do_create(int argc, char **argv) ret = 1; if (zpool_create(g_zfs, poolname, nvroot, props, fsprops) == 0) { - zfs_handle_t *pool = zfs_open(g_zfs, poolname, - ZFS_TYPE_FILESYSTEM); + zfs_handle_t *pool = zfs_open(g_zfs, + tname ? tname : poolname, ZFS_TYPE_FILESYSTEM); if (pool != NULL) { if (zfs_mount(pool, NULL, 0) == 0) ret = zfs_shareall(pool); @@ -1931,7 +1966,8 @@ do_import(nvlist_t *config, const char *newname, const * import [-o mntopts] [-o prop=value] ... [-R root] [-D] * [-d dir | -c cachefile] [-f] -a * import [-o mntopts] [-o prop=value] ... [-R root] [-D] - * [-d dir | -c cachefile] [-f] [-n] [-F] [newpool] + * [-d dir | -c cachefile] [-f] [-n] [-F] [-t] + * [newpool] * * -c Read pool information from a cachefile instead of searching * devices. @@ -1960,6 +1996,9 @@ do_import(nvlist_t *config, const char *newname, const * * -N Import the pool but don't mount datasets. * + * -t Use newpool as a temporary pool name instead of renaming + * the pool. + * * -T Specify a starting txg to use for import. This option is * intentionally undocumented option for testing purposes. * @@ -2001,7 +2040,7 @@ zpool_do_import(int argc, char **argv) char *endptr; /* check options */ - while ((c = getopt(argc, argv, ":aCc:d:DEfFmnNo:R:T:VX")) != -1) { + while ((c = getopt(argc, argv, ":aCc:d:DEfFmnNo:R:tT:VX")) != -1) { switch (c) { case 'a': do_all = B_TRUE; @@ -2055,14 +2094,16 @@ zpool_do_import(int argc, char **argv) if (add_prop_list(zpool_prop_to_name( ZPOOL_PROP_ALTROOT), optarg, &props, B_TRUE)) goto error; - if (nvlist_lookup_string(props, - zpool_prop_to_name(ZPOOL_PROP_CACHEFILE), - &propval) == 0) - break; - if (add_prop_list(zpool_prop_to_name( + if (add_prop_list_default(zpool_prop_to_name( ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) goto error; break; + case 't': + flags |= ZFS_IMPORT_TEMP_NAME; + if (add_prop_list_default(zpool_prop_to_name( + ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE)) + goto error; + break; case 'T': errno = 0; txg = strtoull(optarg, &endptr, 0); @@ -2193,9 +2234,9 @@ zpool_do_import(int argc, char **argv) (void) fprintf(stderr, gettext("cannot import '%s': " "a pool with that name already exists\n"), argv[0]); - (void) fprintf(stderr, gettext("use the form '%s " - " ' to give it a new name\n"), - "zpool import"); + (void) fprintf(stderr, gettext("use the form 'zpool import " + "[-t] ' to give it a new temporary " + "or permanent name\n")); err = 1; } else if (pools == NULL && idata.exists) { (void) fprintf(stderr, gettext("cannot import '%s': " Modified: stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Thu May 3 06:52:47 2018 (r333195) +++ stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Thu May 3 07:22:24 2018 (r333196) @@ -630,11 +630,22 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char goto error; } break; + case ZPOOL_PROP_READONLY: if (!flags.import) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' can only be set at " "import time"), propname); + (void) zfs_error(hdl, EZFS_BADPROP, errbuf); + goto error; + } + break; + + case ZPOOL_PROP_TNAME: + if (!flags.create) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "property '%s' can only be set at " + "creation time"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } Modified: stable/10/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c Thu May 3 06:52:47 2018 (r333195) +++ stable/10/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c Thu May 3 07:22:24 2018 (r333196) @@ -130,6 +130,8 @@ zpool_prop_init(void) PROP_READONLY, ZFS_TYPE_POOL, "NAME"); zprop_register_hidden(ZPOOL_PROP_MAXBLOCKSIZE, "maxblocksize", PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_POOL, "MAXBLOCKSIZE"); + zprop_register_hidden(ZPOOL_PROP_TNAME, "tname", PROP_TYPE_STRING, + PROP_ONETIME, ZFS_TYPE_POOL, "TNAME"); } /* Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu May 3 06:52:47 2018 (r333195) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Thu May 3 07:22:24 2018 (r333196) @@ -3599,12 +3599,18 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_ uint_t nspares, nl2cache; uint64_t version, obj; boolean_t has_features; + char *poolname; + nvlist_t *nvl; + if (nvlist_lookup_string(props, + zpool_prop_to_name(ZPOOL_PROP_TNAME), &poolname) != 0) + poolname = (char *)pool; + /* * If this pool already exists, return failure. */ mutex_enter(&spa_namespace_lock); - if (spa_lookup(pool) != NULL) { + if (spa_lookup(poolname) != NULL) { mutex_exit(&spa_namespace_lock); return (SET_ERROR(EEXIST)); } @@ -3612,9 +3618,12 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_ /* * Allocate a new spa_t structure. */ + nvl = fnvlist_alloc(); + fnvlist_add_string(nvl, ZPOOL_CONFIG_POOL_NAME, pool); (void) nvlist_lookup_string(props, zpool_prop_to_name(ZPOOL_PROP_ALTROOT), &altroot); - spa = spa_add(pool, NULL, altroot); + spa = spa_add(poolname, nvl, altroot); + fnvlist_free(nvl); spa_activate(spa, spa_mode_global); if (props && (error = spa_prop_validate(spa, props))) { @@ -3623,6 +3632,12 @@ spa_create(const char *pool, nvlist_t *nvroot, nvlist_ mutex_exit(&spa_namespace_lock); return (error); } + + /* + * Temporary pool names should never be written to disk. + */ + if (poolname != pool) + spa->spa_import_flags |= ZFS_IMPORT_TEMP_NAME; has_features = B_FALSE; for (nvpair_t *elem = nvlist_next_nvpair(props, NULL); Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c Thu May 3 06:52:47 2018 (r333195) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c Thu May 3 07:22:24 2018 (r333196) @@ -230,6 +230,7 @@ spa_config_sync(spa_t *target, boolean_t removing, boo nvlist_t *nvl; boolean_t ccw_failure; int error; + char *pool_name; ASSERT(MUTEX_HELD(&spa_namespace_lock)); @@ -279,11 +280,18 @@ spa_config_sync(spa_t *target, boolean_t removing, boo VERIFY(nvlist_alloc(&nvl, NV_UNIQUE_NAME, KM_SLEEP) == 0); - VERIFY(nvlist_add_nvlist(nvl, spa->spa_name, - spa->spa_config) == 0); + if (spa->spa_import_flags & ZFS_IMPORT_TEMP_NAME) { + pool_name = fnvlist_lookup_string(spa->spa_config, + ZPOOL_CONFIG_POOL_NAME); + } else { + pool_name = spa_name(spa); + } + + fnvlist_add_nvlist(nvl, pool_name, + spa->spa_config); mutex_exit(&spa->spa_props_lock); - if (nvlist_lookup_nvlist(nvl, spa->spa_name, &nvroot) == 0) + if (nvlist_lookup_nvlist(nvl, pool_name, &nvroot) == 0) spa_config_clean(nvroot); } @@ -386,6 +394,7 @@ spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t t unsigned long hostid = 0; boolean_t locked = B_FALSE; uint64_t split_guid; + char *pool_name; if (vd == NULL) { vd = rvd; @@ -402,20 +411,34 @@ spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t t if (txg == -1ULL) txg = spa->spa_config_txg; - VERIFY(nvlist_alloc(&config, NV_UNIQUE_NAME, KM_SLEEP) == 0); + /* + * Originally, users had to handle spa namespace collisions by either + * exporting the already imported pool or by specifying a new name for + * the pool with a conflicting name. In the case of root pools from + * virtual guests, neither approach to collision resolution is + * reasonable. This is addressed by extending the new name syntax with + * an option to specify that the new name is temporary. When specified, + * ZFS_IMPORT_TEMP_NAME will be set in spa->spa_import_flags to tell us + * to use the previous name, which we do below. + */ + if (spa->spa_import_flags & ZFS_IMPORT_TEMP_NAME) { + pool_name = fnvlist_lookup_string(spa->spa_config, + ZPOOL_CONFIG_POOL_NAME); + } else { + pool_name = spa_name(spa); + } - VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, - spa_version(spa)) == 0); - VERIFY(nvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, - spa_name(spa)) == 0); - VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, - spa_state(spa)) == 0); - VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_TXG, - txg) == 0); - VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_GUID, - spa_guid(spa)) == 0); - VERIFY(spa->spa_comment == NULL || nvlist_add_string(config, - ZPOOL_CONFIG_COMMENT, spa->spa_comment) == 0); + config = fnvlist_alloc(); + + fnvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, spa_version(spa)); + fnvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, pool_name); + fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, spa_state(spa)); + fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_TXG, txg); + fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_GUID, spa_guid(spa)); + if (spa->spa_comment != NULL) { + fnvlist_add_string(config, ZPOOL_CONFIG_COMMENT, + spa->spa_comment); + } #ifdef _KERNEL Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Thu May 3 06:52:47 2018 (r333195) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Thu May 3 07:22:24 2018 (r333196) @@ -207,6 +207,7 @@ typedef enum { ZPOOL_PROP_FRAGMENTATION, ZPOOL_PROP_LEAKED, ZPOOL_PROP_MAXBLOCKSIZE, + ZPOOL_PROP_TNAME, ZPOOL_NUM_PROPS } zpool_prop_t; @@ -951,6 +952,7 @@ typedef enum { #define ZFS_IMPORT_ANY_HOST 0x2 #define ZFS_IMPORT_MISSING_LOG 0x4 #define ZFS_IMPORT_ONLY 0x8 +#define ZFS_IMPORT_TEMP_NAME 0x20 /* * Sysevent payload members. ZFS will generate the following sysevents with the From owner-svn-src-all@freebsd.org Thu May 3 07:28:05 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 44695FC74F7; Thu, 3 May 2018 07:28:05 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E68556B4C2; Thu, 3 May 2018 07:28:04 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DCC321CAF1; Thu, 3 May 2018 07:28:04 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437S4ne097148; Thu, 3 May 2018 07:28:04 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437S4GQ097147; Thu, 3 May 2018 07:28:04 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030728.w437S4GQ097147@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:28:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333197 - stable/11/usr.sbin/mountd X-SVN-Group: stable-11 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: stable/11/usr.sbin/mountd X-SVN-Commit-Revision: 333197 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:28:05 -0000 Author: avg Date: Thu May 3 07:28:04 2018 New Revision: 333197 URL: https://svnweb.freebsd.org/changeset/base/333197 Log: MFC r332559: mountd: fix a crash when getgrouplist reports too many groups Sponsored by: Panzura Modified: stable/11/usr.sbin/mountd/mountd.c Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.sbin/mountd/mountd.c ============================================================================== --- stable/11/usr.sbin/mountd/mountd.c Thu May 3 07:22:24 2018 (r333196) +++ stable/11/usr.sbin/mountd/mountd.c Thu May 3 07:28:04 2018 (r333197) @@ -2913,8 +2913,11 @@ parsecred(char *namelist, struct xucred *cr) } cr->cr_uid = pw->pw_uid; ngroups = XU_NGROUPS + 1; - if (getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups)) + if (getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups)) { syslog(LOG_ERR, "too many groups"); + ngroups = XU_NGROUPS + 1; + } + /* * Compress out duplicate. */ From owner-svn-src-all@freebsd.org Thu May 3 07:28:50 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 497F2FC7567; Thu, 3 May 2018 07:28:50 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id ED1D96B5ED; Thu, 3 May 2018 07:28:49 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E80911CAF3; Thu, 3 May 2018 07:28:49 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437Snes097248; Thu, 3 May 2018 07:28:49 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437SnA1097247; Thu, 3 May 2018 07:28:49 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030728.w437SnA1097247@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:28:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333198 - stable/10/usr.sbin/mountd X-SVN-Group: stable-10 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: stable/10/usr.sbin/mountd X-SVN-Commit-Revision: 333198 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:28:50 -0000 Author: avg Date: Thu May 3 07:28:49 2018 New Revision: 333198 URL: https://svnweb.freebsd.org/changeset/base/333198 Log: MFC r332559: mountd: fix a crash when getgrouplist reports too many groups Sponsored by: Panzura Modified: stable/10/usr.sbin/mountd/mountd.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/mountd/mountd.c ============================================================================== --- stable/10/usr.sbin/mountd/mountd.c Thu May 3 07:28:04 2018 (r333197) +++ stable/10/usr.sbin/mountd/mountd.c Thu May 3 07:28:49 2018 (r333198) @@ -2955,8 +2955,11 @@ parsecred(char *namelist, struct xucred *cr) } cr->cr_uid = pw->pw_uid; ngroups = XU_NGROUPS + 1; - if (getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups)) + if (getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups)) { syslog(LOG_ERR, "too many groups"); + ngroups = XU_NGROUPS + 1; + } + /* * Compress out duplicate. */ From owner-svn-src-all@freebsd.org Thu May 3 07:29:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 15031FC75B3; Thu, 3 May 2018 07:29:09 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B4B6B6B70A; Thu, 3 May 2018 07:29:08 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AF7B01CAF4; Thu, 3 May 2018 07:29:08 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437T897097316; Thu, 3 May 2018 07:29:08 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437T8lB097313; Thu, 3 May 2018 07:29:08 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201805030729.w437T8lB097313@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Thu, 3 May 2018 07:29:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333199 - stable/11/sys/dev/usb/controller X-SVN-Group: stable-11 X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: stable/11/sys/dev/usb/controller X-SVN-Commit-Revision: 333199 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:29:09 -0000 Author: hselasky Date: Thu May 3 07:29:08 2018 New Revision: 333199 URL: https://svnweb.freebsd.org/changeset/base/333199 Log: MFC r333100: Improve fix in r304629 by allowing configuration of the behaviour through a SYSCTL instead of a compile time define. Add quirk by default for all LynxPoint XHCI controllers. PR: 227602 Sponsored by: Mellanox Technologies Modified: stable/11/sys/dev/usb/controller/xhci.c stable/11/sys/dev/usb/controller/xhci.h stable/11/sys/dev/usb/controller/xhci_pci.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/11/sys/dev/usb/controller/xhci.c Thu May 3 07:28:49 2018 (r333198) +++ stable/11/sys/dev/usb/controller/xhci.c Thu May 3 07:29:08 2018 (r333199) @@ -98,6 +98,7 @@ static int xhcidebug; static int xhciroute; static int xhcipolling; static int xhcidma32; +static int xhcictlstep; SYSCTL_INT(_hw_usb_xhci, OID_AUTO, debug, CTLFLAG_RWTUN, &xhcidebug, 0, "Debug level"); @@ -107,9 +108,12 @@ SYSCTL_INT(_hw_usb_xhci, OID_AUTO, use_polling, CTLFLA &xhcipolling, 0, "Set to enable software interrupt polling for the XHCI controller"); SYSCTL_INT(_hw_usb_xhci, OID_AUTO, dma32, CTLFLAG_RWTUN, &xhcidma32, 0, "Set to only use 32-bit DMA for the XHCI controller"); +SYSCTL_INT(_hw_usb_xhci, OID_AUTO, ctlstep, CTLFLAG_RWTUN, + &xhcictlstep, 0, "Set to enable control endpoint status stage stepping"); #else #define xhciroute 0 #define xhcidma32 0 +#define xhcictlstep 0 #endif #define XHCI_INTR_ENDPT 1 @@ -2238,11 +2242,17 @@ xhci_setup_generic_chain(struct usb_xfer *xfer) * Send a DATA1 message and invert the current * endpoint direction. */ -#ifdef XHCI_STEP_STATUS_STAGE - temp.step_td = (xfer->nframes != 0); -#else - temp.step_td = 0; -#endif + if (xhcictlstep || temp.sc->sc_ctlstep) { + /* + * Some XHCI controllers will not delay the + * status stage until the next SOF. Force this + * behaviour to avoid failed control + * transfers. + */ + temp.step_td = (xfer->nframes != 0); + } else { + temp.step_td = 0; + } temp.direction = UE_GET_DIR(xfer->endpointno) ^ UE_DIR_IN; temp.len = 0; temp.pc = NULL; Modified: stable/11/sys/dev/usb/controller/xhci.h ============================================================================== --- stable/11/sys/dev/usb/controller/xhci.h Thu May 3 07:28:49 2018 (r333198) +++ stable/11/sys/dev/usb/controller/xhci.h Thu May 3 07:29:08 2018 (r333199) @@ -507,6 +507,8 @@ struct xhci_softc { uint8_t sc_noport; /* root HUB device configuration */ uint8_t sc_conf; + /* step status stage of all control transfers */ + uint8_t sc_ctlstep; /* root HUB port event bitmap, max 256 ports */ uint8_t sc_hub_idata[32]; Modified: stable/11/sys/dev/usb/controller/xhci_pci.c ============================================================================== --- stable/11/sys/dev/usb/controller/xhci_pci.c Thu May 3 07:28:49 2018 (r333198) +++ stable/11/sys/dev/usb/controller/xhci_pci.c Thu May 3 07:29:08 2018 (r333199) @@ -252,6 +252,7 @@ xhci_pci_attach(device_t self) */ sc->sc_port_route = &xhci_pci_port_route; sc->sc_imod_default = XHCI_IMOD_DEFAULT_LP; + sc->sc_ctlstep = 1; break; } From owner-svn-src-all@freebsd.org Thu May 3 07:31:10 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AE4BDFC7781; Thu, 3 May 2018 07:31:10 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6402F6BD1B; Thu, 3 May 2018 07:31:10 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 44EFE1CC27; Thu, 3 May 2018 07:31:10 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437VAB9001346; Thu, 3 May 2018 07:31:10 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437V9Q4001343; Thu, 3 May 2018 07:31:09 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030731.w437V9Q4001343@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:31:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333200 - in stable/11/sys: amd64/amd64 i386/i386 powerpc/powerpc X-SVN-Group: stable-11 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: in stable/11/sys: amd64/amd64 i386/i386 powerpc/powerpc X-SVN-Commit-Revision: 333200 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:31:10 -0000 Author: avg Date: Thu May 3 07:31:09 2018 New Revision: 333200 URL: https://svnweb.freebsd.org/changeset/base/333200 Log: MFC r332730: don't check for kdb reentry in trap_fatal(), it's impossible Sponsored by: Panzura Modified: stable/11/sys/amd64/amd64/trap.c stable/11/sys/i386/i386/trap.c stable/11/sys/powerpc/powerpc/trap.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/amd64/amd64/trap.c ============================================================================== --- stable/11/sys/amd64/amd64/trap.c Thu May 3 07:29:08 2018 (r333199) +++ stable/11/sys/amd64/amd64/trap.c Thu May 3 07:31:09 2018 (r333200) @@ -808,7 +808,7 @@ trap_fatal(frame, eva) curproc->p_pid, curthread->td_name); #ifdef KDB - if (debugger_on_panic || kdb_active) + if (debugger_on_panic) if (kdb_trap(type, 0, frame)) return; #endif Modified: stable/11/sys/i386/i386/trap.c ============================================================================== --- stable/11/sys/i386/i386/trap.c Thu May 3 07:29:08 2018 (r333199) +++ stable/11/sys/i386/i386/trap.c Thu May 3 07:31:09 2018 (r333200) @@ -944,7 +944,7 @@ trap_fatal(frame, eva) curproc->p_pid, curthread->td_name); #ifdef KDB - if (debugger_on_panic || kdb_active) { + if (debugger_on_panic) { frame->tf_err = eva; /* smuggle fault address to ddb */ if (kdb_trap(type, 0, frame)) { frame->tf_err = code; /* restore error code */ Modified: stable/11/sys/powerpc/powerpc/trap.c ============================================================================== --- stable/11/sys/powerpc/powerpc/trap.c Thu May 3 07:29:08 2018 (r333199) +++ stable/11/sys/powerpc/powerpc/trap.c Thu May 3 07:31:09 2018 (r333200) @@ -392,8 +392,7 @@ trap_fatal(struct trapframe *frame) printtrap(frame->exc, frame, 1, (frame->srr1 & PSL_PR)); #ifdef KDB - if ((debugger_on_panic || kdb_active) && - kdb_trap(frame->exc, 0, frame)) + if (debugger_on_panic && kdb_trap(frame->exc, 0, frame)) return; #endif panic("%s trap", trapname(frame->exc)); From owner-svn-src-all@freebsd.org Thu May 3 07:34:11 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C277CFC79B2; Thu, 3 May 2018 07:34:11 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6596C6DA90; Thu, 3 May 2018 07:34:11 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5EBBE1CC88; Thu, 3 May 2018 07:34:11 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437YBk0002221; Thu, 3 May 2018 07:34:11 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437YBah002218; Thu, 3 May 2018 07:34:11 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030734.w437YBah002218@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:34:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333201 - in stable/10/sys: amd64/amd64 i386/i386 X-SVN-Group: stable-10 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: in stable/10/sys: amd64/amd64 i386/i386 X-SVN-Commit-Revision: 333201 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:34:11 -0000 Author: avg Date: Thu May 3 07:34:10 2018 New Revision: 333201 URL: https://svnweb.freebsd.org/changeset/base/333201 Log: MFC r332730: don't check for kdb reentry in trap_fatal(), it's impossible Sponsored by: Panzura Modified: stable/10/sys/amd64/amd64/trap.c stable/10/sys/i386/i386/trap.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/amd64/amd64/trap.c ============================================================================== --- stable/10/sys/amd64/amd64/trap.c Thu May 3 07:31:09 2018 (r333200) +++ stable/10/sys/amd64/amd64/trap.c Thu May 3 07:34:10 2018 (r333201) @@ -849,7 +849,7 @@ trap_fatal(frame, eva) curproc->p_pid, curthread->td_name); #ifdef KDB - if (debugger_on_panic || kdb_active) + if (debugger_on_panic) if (kdb_trap(type, 0, frame)) return; #endif Modified: stable/10/sys/i386/i386/trap.c ============================================================================== --- stable/10/sys/i386/i386/trap.c Thu May 3 07:31:09 2018 (r333200) +++ stable/10/sys/i386/i386/trap.c Thu May 3 07:34:10 2018 (r333201) @@ -1018,7 +1018,7 @@ trap_fatal(frame, eva) curproc->p_pid, curthread->td_name); #ifdef KDB - if (debugger_on_panic || kdb_active) { + if (debugger_on_panic) { frame->tf_err = eva; /* smuggle fault address to ddb */ if (kdb_trap(type, 0, frame)) { frame->tf_err = code; /* restore error code */ From owner-svn-src-all@freebsd.org Thu May 3 07:37:50 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2EDD5FC7AE0; Thu, 3 May 2018 07:37:50 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CE87F6E5C4; Thu, 3 May 2018 07:37:49 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C834F1CC8E; Thu, 3 May 2018 07:37:49 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437bnNT002394; Thu, 3 May 2018 07:37:49 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437bnM6002392; Thu, 3 May 2018 07:37:49 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030737.w437bnM6002392@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:37:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333202 - in stable/10/sys/powerpc: aim booke X-SVN-Group: stable-10 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: in stable/10/sys/powerpc: aim booke X-SVN-Commit-Revision: 333202 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:37:50 -0000 Author: avg Date: Thu May 3 07:37:49 2018 New Revision: 333202 URL: https://svnweb.freebsd.org/changeset/base/333202 Log: follow-up to r333201 for powerpc, no kdb_active check in trap_fatal This is a direct commit as there are two copies of trap_fatal for powerpc in this branch. Sponsored by: Panzura Modified: stable/10/sys/powerpc/aim/trap.c stable/10/sys/powerpc/booke/trap.c Modified: stable/10/sys/powerpc/aim/trap.c ============================================================================== --- stable/10/sys/powerpc/aim/trap.c Thu May 3 07:34:10 2018 (r333201) +++ stable/10/sys/powerpc/aim/trap.c Thu May 3 07:37:49 2018 (r333202) @@ -360,8 +360,7 @@ trap_fatal(struct trapframe *frame) printtrap(frame->exc, frame, 1, (frame->srr1 & PSL_PR)); #ifdef KDB - if ((debugger_on_panic || kdb_active) && - kdb_trap(frame->exc, 0, frame)) + if (debugger_on_panic && kdb_trap(frame->exc, 0, frame)) return; #endif panic("%s trap", trapname(frame->exc)); Modified: stable/10/sys/powerpc/booke/trap.c ============================================================================== --- stable/10/sys/powerpc/booke/trap.c Thu May 3 07:34:10 2018 (r333201) +++ stable/10/sys/powerpc/booke/trap.c Thu May 3 07:37:49 2018 (r333202) @@ -242,8 +242,7 @@ trap_fatal(struct trapframe *frame) printtrap(frame->exc, frame, 1, (frame->srr1 & PSL_PR)); #ifdef KDB - if ((debugger_on_panic || kdb_active) && - kdb_trap(frame->exc, 0, frame)) + if (debugger_on_panic && kdb_trap(frame->exc, 0, frame)) return; #endif panic("%s trap", trapname(frame->exc)); From owner-svn-src-all@freebsd.org Thu May 3 07:38:47 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D568FFC7B4C; Thu, 3 May 2018 07:38:46 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 85F7E6E706; Thu, 3 May 2018 07:38:46 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 80C7E1CC90; Thu, 3 May 2018 07:38:46 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437ckeY002474; Thu, 3 May 2018 07:38:46 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437ckEj002471; Thu, 3 May 2018 07:38:46 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201805030738.w437ckEj002471@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Thu, 3 May 2018 07:38:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333203 - stable/10/sys/dev/usb/controller X-SVN-Group: stable-10 X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: stable/10/sys/dev/usb/controller X-SVN-Commit-Revision: 333203 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:38:47 -0000 Author: hselasky Date: Thu May 3 07:38:45 2018 New Revision: 333203 URL: https://svnweb.freebsd.org/changeset/base/333203 Log: MFC r333100: Improve fix in r304629 by allowing configuration of the behaviour through a SYSCTL instead of a compile time define. Add quirk by default for all LynxPoint XHCI controllers. PR: 227602 Sponsored by: Mellanox Technologies Modified: stable/10/sys/dev/usb/controller/xhci.c stable/10/sys/dev/usb/controller/xhci.h stable/10/sys/dev/usb/controller/xhci_pci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/10/sys/dev/usb/controller/xhci.c Thu May 3 07:37:49 2018 (r333202) +++ stable/10/sys/dev/usb/controller/xhci.c Thu May 3 07:38:45 2018 (r333203) @@ -99,6 +99,7 @@ static int xhcidebug; static int xhciroute; static int xhcipolling; static int xhcidma32; +static int xhcictlstep; SYSCTL_INT(_hw_usb_xhci, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN, &xhcidebug, 0, "Debug level"); @@ -112,9 +113,13 @@ TUNABLE_INT("hw.usb.xhci.use_polling", &xhcipolling); SYSCTL_INT(_hw_usb_xhci, OID_AUTO, dma32, CTLFLAG_RWTUN, &xhcidma32, 0, "Set to only use 32-bit DMA for the XHCI controller"); TUNABLE_INT("hw.usb.xhci.dma32", &xhcidma32); +SYSCTL_INT(_hw_usb_xhci, OID_AUTO, ctlstep, CTLFLAG_RWTUN, + &xhcictlstep, 0, "Set to enable control endpoint status stage stepping"); +TUNABLE_INT("hw.usb.xhci.ctlstep", &xhcictlstep); #else #define xhciroute 0 #define xhcidma32 0 +#define xhcictlstep 0 #endif #define XHCI_INTR_ENDPT 1 @@ -2244,11 +2249,17 @@ xhci_setup_generic_chain(struct usb_xfer *xfer) * Send a DATA1 message and invert the current * endpoint direction. */ -#ifdef XHCI_STEP_STATUS_STAGE - temp.step_td = (xfer->nframes != 0); -#else - temp.step_td = 0; -#endif + if (xhcictlstep || temp.sc->sc_ctlstep) { + /* + * Some XHCI controllers will not delay the + * status stage until the next SOF. Force this + * behaviour to avoid failed control + * transfers. + */ + temp.step_td = (xfer->nframes != 0); + } else { + temp.step_td = 0; + } temp.direction = UE_GET_DIR(xfer->endpointno) ^ UE_DIR_IN; temp.len = 0; temp.pc = NULL; Modified: stable/10/sys/dev/usb/controller/xhci.h ============================================================================== --- stable/10/sys/dev/usb/controller/xhci.h Thu May 3 07:37:49 2018 (r333202) +++ stable/10/sys/dev/usb/controller/xhci.h Thu May 3 07:38:45 2018 (r333203) @@ -506,6 +506,8 @@ struct xhci_softc { uint8_t sc_noport; /* root HUB device configuration */ uint8_t sc_conf; + /* step status stage of all control transfers */ + uint8_t sc_ctlstep; /* root HUB port event bitmap, max 256 ports */ uint8_t sc_hub_idata[32]; Modified: stable/10/sys/dev/usb/controller/xhci_pci.c ============================================================================== --- stable/10/sys/dev/usb/controller/xhci_pci.c Thu May 3 07:37:49 2018 (r333202) +++ stable/10/sys/dev/usb/controller/xhci_pci.c Thu May 3 07:38:45 2018 (r333203) @@ -240,6 +240,7 @@ xhci_pci_attach(device_t self) */ sc->sc_port_route = &xhci_pci_port_route; sc->sc_imod_default = XHCI_IMOD_DEFAULT_LP; + sc->sc_ctlstep = 1; break; } From owner-svn-src-all@freebsd.org Thu May 3 07:47:04 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7E578FC80D2; Thu, 3 May 2018 07:47:04 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3051C6F63E; Thu, 3 May 2018 07:47:04 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2B4DE1CE26; Thu, 3 May 2018 07:47:04 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437l4xs007752; Thu, 3 May 2018 07:47:04 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437l3LQ007748; Thu, 3 May 2018 07:47:03 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030747.w437l3LQ007748@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:47:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333204 - in stable/11/sys: amd64/amd64 i386/i386 powerpc/powerpc sys X-SVN-Group: stable-11 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: in stable/11/sys: amd64/amd64 i386/i386 powerpc/powerpc sys X-SVN-Commit-Revision: 333204 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:47:04 -0000 Author: avg Date: Thu May 3 07:47:03 2018 New Revision: 333204 URL: https://svnweb.freebsd.org/changeset/base/333204 Log: MFC r332752: set kdb_why to "trap" when calling kdb_trap from trap_fatal This will allow to hook a ddb script to "kdb.enter.trap" event. Previously there was no specific name for this event, so it could only be handled by either "kdb.enter.unknown" or "kdb.enter.default" hooks. Both are very unspecific. Having a specific event is useful because the fatal trap condition is very similar to panic but it has an additional property that the current stack frame is the frame where the trap occurred. So, both a register dump and a stack bottom dump have additional information that can help analyze the problem. I have added the event only on architectures that have trap_fatal() function defined. I haven't looked at other architectures. Their maintainers can add support for the event later. Sample script: kdb.enter.trap=bt; show reg; x/aS $rsp,20; x/agx $rsp,20 Sponsored by: Panzura Modified: stable/11/sys/amd64/amd64/trap.c stable/11/sys/i386/i386/trap.c stable/11/sys/powerpc/powerpc/trap.c stable/11/sys/sys/kdb.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/amd64/amd64/trap.c ============================================================================== --- stable/11/sys/amd64/amd64/trap.c Thu May 3 07:38:45 2018 (r333203) +++ stable/11/sys/amd64/amd64/trap.c Thu May 3 07:47:03 2018 (r333204) @@ -758,6 +758,9 @@ trap_fatal(frame, eva) u_int type; struct soft_segment_descriptor softseg; char *msg; +#ifdef KDB + bool handled; +#endif code = frame->tf_err; type = frame->tf_trapno; @@ -808,9 +811,13 @@ trap_fatal(frame, eva) curproc->p_pid, curthread->td_name); #ifdef KDB - if (debugger_on_panic) - if (kdb_trap(type, 0, frame)) + if (debugger_on_panic) { + kdb_why = KDB_WHY_TRAP; + handled = kdb_trap(type, 0, frame); + kdb_why = KDB_WHY_UNSET; + if (handled) return; + } #endif printf("trap number = %d\n", type); if (type <= MAX_TRAP_MSG) Modified: stable/11/sys/i386/i386/trap.c ============================================================================== --- stable/11/sys/i386/i386/trap.c Thu May 3 07:38:45 2018 (r333203) +++ stable/11/sys/i386/i386/trap.c Thu May 3 07:47:03 2018 (r333204) @@ -880,6 +880,9 @@ trap_fatal(frame, eva) u_int type; struct soft_segment_descriptor softseg; char *msg; +#ifdef KDB + bool handled; +#endif code = frame->tf_err; type = frame->tf_trapno; @@ -945,12 +948,13 @@ trap_fatal(frame, eva) #ifdef KDB if (debugger_on_panic) { + kdb_why = KDB_WHY_TRAP; frame->tf_err = eva; /* smuggle fault address to ddb */ - if (kdb_trap(type, 0, frame)) { - frame->tf_err = code; /* restore error code */ + handled = kdb_trap(type, 0, frame); + frame->tf_err = code; /* restore error code */ + kdb_why = KDB_WHY_UNSET; + if (handled) return; - } - frame->tf_err = code; /* restore error code */ } #endif printf("trap number = %d\n", type); Modified: stable/11/sys/powerpc/powerpc/trap.c ============================================================================== --- stable/11/sys/powerpc/powerpc/trap.c Thu May 3 07:38:45 2018 (r333203) +++ stable/11/sys/powerpc/powerpc/trap.c Thu May 3 07:47:03 2018 (r333204) @@ -389,11 +389,19 @@ trap(struct trapframe *frame) static void trap_fatal(struct trapframe *frame) { +#ifdef KDB + bool handled; +#endif printtrap(frame->exc, frame, 1, (frame->srr1 & PSL_PR)); #ifdef KDB - if (debugger_on_panic && kdb_trap(frame->exc, 0, frame)) - return; + if (debugger_on_panic) { + kdb_why = KDB_WHY_TRAP; + handled = kdb_trap(frame->exc, 0, frame); + kdb_why = KDB_WHY_UNSET; + if (handled) + return; + } #endif panic("%s trap", trapname(frame->exc)); } Modified: stable/11/sys/sys/kdb.h ============================================================================== --- stable/11/sys/sys/kdb.h Thu May 3 07:38:45 2018 (r333203) +++ stable/11/sys/sys/kdb.h Thu May 3 07:47:03 2018 (r333204) @@ -98,6 +98,7 @@ extern const char * volatile kdb_why; #define KDB_WHY_UNSET NULL /* No reason set. */ #define KDB_WHY_PANIC "panic" /* panic() was called. */ #define KDB_WHY_KASSERT "kassert" /* kassert failed. */ +#define KDB_WHY_TRAP "trap" /* Fatal trap. */ #define KDB_WHY_SYSCTL "sysctl" /* Sysctl entered debugger. */ #define KDB_WHY_BOOTFLAGS "bootflags" /* Boot flags were set. */ #define KDB_WHY_WITNESS "witness" /* Witness entered debugger. */ From owner-svn-src-all@freebsd.org Thu May 3 07:57:09 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8E947FC8492; Thu, 3 May 2018 07:57:09 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2E4D972215; Thu, 3 May 2018 07:57:09 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 23B861CFFE; Thu, 3 May 2018 07:57:09 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w437v9UD012796; Thu, 3 May 2018 07:57:09 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w437v8iG012791; Thu, 3 May 2018 07:57:08 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805030757.w437v8iG012791@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 07:57:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333205 - in stable/10/sys: amd64/amd64 i386/i386 powerpc/aim powerpc/booke sys X-SVN-Group: stable-10 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: in stable/10/sys: amd64/amd64 i386/i386 powerpc/aim powerpc/booke sys X-SVN-Commit-Revision: 333205 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 07:57:09 -0000 Author: avg Date: Thu May 3 07:57:08 2018 New Revision: 333205 URL: https://svnweb.freebsd.org/changeset/base/333205 Log: MFC r332752: set kdb_why to "trap" when calling kdb_trap from trap_fatal This will allow to hook a ddb script to "kdb.enter.trap" event. Previously there was no specific name for this event, so it could only be handled by either "kdb.enter.unknown" or "kdb.enter.default" hooks. Both are very unspecific. Having a specific event is useful because the fatal trap condition is very similar to panic but it has an additional property that the current stack frame is the frame where the trap occurred. So, both a register dump and a stack bottom dump have additional information that can help analyze the problem. I have added the event only on architectures that have trap_fatal() function defined. I haven't looked at other architectures. Their maintainers can add support for the event later. Sample script: kdb.enter.trap=bt; show reg; x/aS $rsp,20; x/agx $rsp,20 Note: changes to powerpc/aim/trap.c and powerpc/booke/trap.c are direct changes. Sponsored by: Panzura Modified: stable/10/sys/amd64/amd64/trap.c stable/10/sys/i386/i386/trap.c stable/10/sys/powerpc/aim/trap.c stable/10/sys/powerpc/booke/trap.c stable/10/sys/sys/kdb.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/amd64/amd64/trap.c ============================================================================== --- stable/10/sys/amd64/amd64/trap.c Thu May 3 07:47:03 2018 (r333204) +++ stable/10/sys/amd64/amd64/trap.c Thu May 3 07:57:08 2018 (r333205) @@ -793,6 +793,9 @@ trap_fatal(frame, eva) long esp; struct soft_segment_descriptor softseg; char *msg; +#ifdef KDB + bool handled; +#endif code = frame->tf_err; type = frame->tf_trapno; @@ -849,9 +852,13 @@ trap_fatal(frame, eva) curproc->p_pid, curthread->td_name); #ifdef KDB - if (debugger_on_panic) - if (kdb_trap(type, 0, frame)) + if (debugger_on_panic) { + kdb_why = KDB_WHY_TRAP; + handled = kdb_trap(type, 0, frame); + kdb_why = KDB_WHY_UNSET; + if (handled) return; + } #endif printf("trap number = %d\n", type); if (type <= MAX_TRAP_MSG) Modified: stable/10/sys/i386/i386/trap.c ============================================================================== --- stable/10/sys/i386/i386/trap.c Thu May 3 07:47:03 2018 (r333204) +++ stable/10/sys/i386/i386/trap.c Thu May 3 07:57:08 2018 (r333205) @@ -956,6 +956,9 @@ trap_fatal(frame, eva) u_int type; struct soft_segment_descriptor softseg; char *msg; +#ifdef KDB + bool handled; +#endif code = frame->tf_err; type = frame->tf_trapno; @@ -1019,12 +1022,13 @@ trap_fatal(frame, eva) #ifdef KDB if (debugger_on_panic) { + kdb_why = KDB_WHY_TRAP; frame->tf_err = eva; /* smuggle fault address to ddb */ - if (kdb_trap(type, 0, frame)) { - frame->tf_err = code; /* restore error code */ + handled = kdb_trap(type, 0, frame); + frame->tf_err = code; /* restore error code */ + kdb_why = KDB_WHY_UNSET; + if (handled) return; - } - frame->tf_err = code; /* restore error code */ } #endif printf("trap number = %d\n", type); Modified: stable/10/sys/powerpc/aim/trap.c ============================================================================== --- stable/10/sys/powerpc/aim/trap.c Thu May 3 07:47:03 2018 (r333204) +++ stable/10/sys/powerpc/aim/trap.c Thu May 3 07:57:08 2018 (r333205) @@ -357,11 +357,19 @@ trap(struct trapframe *frame) static void trap_fatal(struct trapframe *frame) { +#ifdef KDB + bool handled; +#endif printtrap(frame->exc, frame, 1, (frame->srr1 & PSL_PR)); #ifdef KDB - if (debugger_on_panic && kdb_trap(frame->exc, 0, frame)) - return; + if (debugger_on_panic) { + kdb_why = KDB_WHY_TRAP; + handled = kdb_trap(frame->exc, 0, frame); + kdb_why = KDB_WHY_UNSET; + if (handled) + return; + } #endif panic("%s trap", trapname(frame->exc)); } Modified: stable/10/sys/powerpc/booke/trap.c ============================================================================== --- stable/10/sys/powerpc/booke/trap.c Thu May 3 07:47:03 2018 (r333204) +++ stable/10/sys/powerpc/booke/trap.c Thu May 3 07:57:08 2018 (r333205) @@ -239,11 +239,19 @@ trap(struct trapframe *frame) static void trap_fatal(struct trapframe *frame) { +#ifdef KDB + bool handled; +#endif printtrap(frame->exc, frame, 1, (frame->srr1 & PSL_PR)); #ifdef KDB - if (debugger_on_panic && kdb_trap(frame->exc, 0, frame)) - return; + if (debugger_on_panic) { + kdb_why = KDB_WHY_TRAP; + handled = kdb_trap(frame->exc, 0, frame); + kdb_why = KDB_WHY_UNSET; + if (handled) + return; + } #endif panic("%s trap", trapname(frame->exc)); } Modified: stable/10/sys/sys/kdb.h ============================================================================== --- stable/10/sys/sys/kdb.h Thu May 3 07:47:03 2018 (r333204) +++ stable/10/sys/sys/kdb.h Thu May 3 07:57:08 2018 (r333205) @@ -98,6 +98,7 @@ extern const char * volatile kdb_why; #define KDB_WHY_UNSET NULL /* No reason set. */ #define KDB_WHY_PANIC "panic" /* panic() was called. */ #define KDB_WHY_KASSERT "kassert" /* kassert failed. */ +#define KDB_WHY_TRAP "trap" /* Fatal trap. */ #define KDB_WHY_SYSCTL "sysctl" /* Sysctl entered debugger. */ #define KDB_WHY_BOOTFLAGS "bootflags" /* Boot flags were set. */ #define KDB_WHY_WITNESS "witness" /* Witness entered debugger. */ From owner-svn-src-all@freebsd.org Thu May 3 08:15:33 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1DFAAFC904E; Thu, 3 May 2018 08:15:33 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id BD70B77E12; Thu, 3 May 2018 08:15:32 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B868E1D366; Thu, 3 May 2018 08:15:32 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w438FWqw022474; Thu, 3 May 2018 08:15:32 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w438FWT9022473; Thu, 3 May 2018 08:15:32 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201805030815.w438FWT9022473@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Thu, 3 May 2018 08:15:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333206 - stable/11/sys/netinet6 X-SVN-Group: stable-11 X-SVN-Commit-Author: ae X-SVN-Commit-Paths: stable/11/sys/netinet6 X-SVN-Commit-Revision: 333206 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 08:15:33 -0000 Author: ae Date: Thu May 3 08:15:32 2018 New Revision: 333206 URL: https://svnweb.freebsd.org/changeset/base/333206 Log: MFC r332886: icmp6_reflect() sends ICMPv6 message with new IPv6 header. So, it is considered as originated by our host packet. And thus rcvif should be NULL, since it is used by ipfw(4) to determine that packet was originated from this host. Some of icmp6_reflect() consumers reuse mbuf and m_pkthdr without resetting rcvif pointer. To avoid this always reset m_pkthdr.rcvif pointer to NULL in icmp6_reflect(). Also remove such line and comment describing this from icmp6_error(), since it does not longer matters. PR: 227674 Modified: stable/11/sys/netinet6/icmp6.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet6/icmp6.c ============================================================================== --- stable/11/sys/netinet6/icmp6.c Thu May 3 07:57:08 2018 (r333205) +++ stable/11/sys/netinet6/icmp6.c Thu May 3 08:15:32 2018 (r333206) @@ -381,15 +381,6 @@ icmp6_error(struct mbuf *m, int type, int code, int pa icmp6->icmp6_code = code; icmp6->icmp6_pptr = htonl((u_int32_t)param); - /* - * icmp6_reflect() is designed to be in the input path. - * icmp6_error() can be called from both input and output path, - * and if we are in output path rcvif could contain bogus value. - * clear m->m_pkthdr.rcvif for safety, we should have enough scope - * information in ip header (nip6). - */ - m->m_pkthdr.rcvif = NULL; - ICMP6STAT_INC(icp6s_outhist[type]); icmp6_reflect(m, sizeof(struct ip6_hdr)); /* header order: IPv6 - ICMPv6 */ @@ -2181,7 +2172,7 @@ icmp6_reflect(struct mbuf *m, size_t off) */ m->m_flags &= ~(M_BCAST|M_MCAST); - + m->m_pkthdr.rcvif = NULL; ip6_output(m, NULL, NULL, 0, NULL, &outif, NULL); if (outif) icmp6_ifoutstat_inc(outif, type, code); From owner-svn-src-all@freebsd.org Thu May 3 08:17:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 51915FC9128; Thu, 3 May 2018 08:17:13 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 032C977F92; Thu, 3 May 2018 08:17:13 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D42BF1D368; Thu, 3 May 2018 08:17:12 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w438HCqI022594; Thu, 3 May 2018 08:17:12 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w438HCq8022593; Thu, 3 May 2018 08:17:12 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201805030817.w438HCq8022593@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Thu, 3 May 2018 08:17:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333207 - stable/11/sys/netipsec X-SVN-Group: stable-11 X-SVN-Commit-Author: ae X-SVN-Commit-Paths: stable/11/sys/netipsec X-SVN-Commit-Revision: 333207 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 08:17:13 -0000 Author: ae Date: Thu May 3 08:17:12 2018 New Revision: 333207 URL: https://svnweb.freebsd.org/changeset/base/333207 Log: MFC r333016: Merge r1.22-1.23 from NetBSD: Don't assume M_PKTHDR is set only on the first mbuf of the chain. The check is replaced by (m1 != m), which is equivalent to the previous code: we want to modify m->m_pkthdr.len only when 'm' was not passed in m_adj(). Fix a pretty bad mistake, that has always been there: m_adj(m1, -(m1->m_len - roff)); if (m1 != m) m->m_pkthdr.len -= (m1->m_len - roff); This is wrong: m_adj() will modify m1->m_len, so we're using a wrong value when manually adjusting m->m_pkthdr.len. Reported by: Maxime Villard Obtained from: NetBSD Modified: stable/11/sys/netipsec/ipsec_mbuf.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netipsec/ipsec_mbuf.c ============================================================================== --- stable/11/sys/netipsec/ipsec_mbuf.c Thu May 3 08:15:32 2018 (r333206) +++ stable/11/sys/netipsec/ipsec_mbuf.c Thu May 3 08:17:12 2018 (r333207) @@ -253,10 +253,11 @@ m_striphdr(struct mbuf *m, int skip, int hlen) /* The header was at the beginning of the mbuf */ IPSECSTAT_INC(ips_input_front); m_adj(m1, hlen); - if ((m1->m_flags & M_PKTHDR) == 0) + if (m1 != m) m->m_pkthdr.len -= hlen; } else if (roff + hlen >= m1->m_len) { struct mbuf *mo; + int adjlen; /* * Part or all of the header is at the end of this mbuf, @@ -265,11 +266,13 @@ m_striphdr(struct mbuf *m, int skip, int hlen) */ IPSECSTAT_INC(ips_input_end); if (roff + hlen > m1->m_len) { + adjlen = roff + hlen - m1->m_len; + /* Adjust the next mbuf by the remainder */ - m_adj(m1->m_next, roff + hlen - m1->m_len); + m_adj(m1->m_next, adjlen); /* The second mbuf is guaranteed not to have a pkthdr... */ - m->m_pkthdr.len -= (roff + hlen - m1->m_len); + m->m_pkthdr.len -= adjlen; } /* Now, let's unlink the mbuf chain for a second...*/ @@ -277,9 +280,10 @@ m_striphdr(struct mbuf *m, int skip, int hlen) m1->m_next = NULL; /* ...and trim the end of the first part of the chain...sick */ - m_adj(m1, -(m1->m_len - roff)); - if ((m1->m_flags & M_PKTHDR) == 0) - m->m_pkthdr.len -= (m1->m_len - roff); + adjlen = m1->m_len - roff; + m_adj(m1, -adjlen); + if (m1 != m) + m->m_pkthdr.len -= adjlen; /* Finally, let's relink */ m1->m_next = mo; From owner-svn-src-all@freebsd.org Thu May 3 10:17:37 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BA8A4FCC60C; Thu, 3 May 2018 10:17:37 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 65C69720FC; Thu, 3 May 2018 10:17:37 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5C1771E731; Thu, 3 May 2018 10:17:37 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43AHbVr082425; Thu, 3 May 2018 10:17:37 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43AHbNM082424; Thu, 3 May 2018 10:17:37 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805031017.w43AHbNM082424@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Thu, 3 May 2018 10:17:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333208 - head/sys/amd64/amd64 X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: head/sys/amd64/amd64 X-SVN-Commit-Revision: 333208 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 10:17:37 -0000 Author: kib Date: Thu May 3 10:17:37 2018 New Revision: 333208 URL: https://svnweb.freebsd.org/changeset/base/333208 Log: Style. Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential revision: https://reviews.freebsd.org/D13838 Modified: head/sys/amd64/amd64/elf_machdep.c Modified: head/sys/amd64/amd64/elf_machdep.c ============================================================================== --- head/sys/amd64/amd64/elf_machdep.c Thu May 3 08:17:12 2018 (r333207) +++ head/sys/amd64/amd64/elf_machdep.c Thu May 3 10:17:37 2018 (r333208) @@ -219,7 +219,6 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas } switch (rtype) { - case R_X86_64_NONE: /* none */ break; @@ -260,7 +259,7 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas * objects. */ printf("kldload: unexpected R_COPY relocation\n"); - return -1; + return (-1); break; case R_X86_64_GLOB_DAT: /* S */ @@ -282,9 +281,9 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas default: printf("kldload: unexpected relocation type %ld\n", rtype); - return -1; + return (-1); } - return(0); + return (0); } int From owner-svn-src-all@freebsd.org Thu May 3 13:14:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 298DAFAAD84; Thu, 3 May 2018 13:14:32 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CB5FB7BF2F; Thu, 3 May 2018 13:14:31 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C65902044A; Thu, 3 May 2018 13:14:31 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43DEVFR071826; Thu, 3 May 2018 13:14:31 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43DEVdH071825; Thu, 3 May 2018 13:14:31 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805031314.w43DEVdH071825@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 13:14:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333209 - head/sys/dev/acpica X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/sys/dev/acpica X-SVN-Commit-Revision: 333209 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 13:14:32 -0000 Author: avg Date: Thu May 3 13:14:31 2018 New Revision: 333209 URL: https://svnweb.freebsd.org/changeset/base/333209 Log: hpet: use macros instead of magic values for the timer mode MFC after: 1 week Modified: head/sys/dev/acpica/acpi_hpet.c Modified: head/sys/dev/acpica/acpi_hpet.c ============================================================================== --- head/sys/dev/acpica/acpi_hpet.c Thu May 3 10:17:37 2018 (r333208) +++ head/sys/dev/acpica/acpi_hpet.c Thu May 3 13:14:31 2018 (r333209) @@ -96,6 +96,9 @@ struct hpet_softc { struct hpet_softc *sc; int num; int mode; +#define TIMER_STOPPED 0 +#define TIMER_PERIODIC 1 +#define TIMER_ONESHOT 2 int intr_rid; int irq; int pcpu_cpu; @@ -206,10 +209,10 @@ hpet_start(struct eventtimer *et, sbintime_t first, sb t = (mt->pcpu_master < 0) ? mt : &sc->t[mt->pcpu_slaves[curcpu]]; if (period != 0) { - t->mode = 1; + t->mode = TIMER_PERIODIC; t->div = (sc->freq * period) >> 32; } else { - t->mode = 2; + t->mode = TIMER_ONESHOT; t->div = 0; } if (first != 0) @@ -222,7 +225,7 @@ hpet_start(struct eventtimer *et, sbintime_t first, sb now = bus_read_4(sc->mem_res, HPET_MAIN_COUNTER); restart: t->next = now + fdiv; - if (t->mode == 1 && (t->caps & HPET_TCAP_PER_INT)) { + if (t->mode == TIMER_PERIODIC && (t->caps & HPET_TCAP_PER_INT)) { t->caps |= HPET_TCNF_TYPE; bus_write_4(sc->mem_res, HPET_TIMER_CAP_CNF(t->num), t->caps | HPET_TCNF_VAL_SET); @@ -253,7 +256,7 @@ hpet_stop(struct eventtimer *et) struct hpet_softc *sc = mt->sc; t = (mt->pcpu_master < 0) ? mt : &sc->t[mt->pcpu_slaves[curcpu]]; - t->mode = 0; + t->mode = TIMER_STOPPED; t->caps &= ~(HPET_TCNF_INT_ENB | HPET_TCNF_TYPE); bus_write_4(sc->mem_res, HPET_TIMER_CAP_CNF(t->num), t->caps); return (0); @@ -267,7 +270,7 @@ hpet_intr_single(void *arg) struct hpet_softc *sc = t->sc; uint32_t now; - if (t->mode == 0) + if (t->mode == TIMER_STOPPED) return (FILTER_STRAY); /* Check that per-CPU timer interrupt reached right CPU. */ if (t->pcpu_cpu >= 0 && t->pcpu_cpu != curcpu) { @@ -281,8 +284,9 @@ hpet_intr_single(void *arg) * Reload timer, hoping that next time may be more lucky * (system will manage proper interrupt binding). */ - if ((t->mode == 1 && (t->caps & HPET_TCAP_PER_INT) == 0) || - t->mode == 2) { + if ((t->mode == TIMER_PERIODIC && + (t->caps & HPET_TCAP_PER_INT) == 0) || + t->mode == TIMER_ONESHOT) { t->next = bus_read_4(sc->mem_res, HPET_MAIN_COUNTER) + sc->freq / 8; bus_write_4(sc->mem_res, HPET_TIMER_COMPARATOR(t->num), @@ -290,7 +294,7 @@ hpet_intr_single(void *arg) } return (FILTER_HANDLED); } - if (t->mode == 1 && + if (t->mode == TIMER_PERIODIC && (t->caps & HPET_TCAP_PER_INT) == 0) { t->next += t->div; now = bus_read_4(sc->mem_res, HPET_MAIN_COUNTER); @@ -298,8 +302,8 @@ hpet_intr_single(void *arg) t->next = now + t->div / 2; bus_write_4(sc->mem_res, HPET_TIMER_COMPARATOR(t->num), t->next); - } else if (t->mode == 2) - t->mode = 0; + } else if (t->mode == TIMER_ONESHOT) + t->mode = TIMER_STOPPED; mt = (t->pcpu_master < 0) ? t : &sc->t[t->pcpu_master]; if (mt->et.et_active) mt->et.et_event_cb(&mt->et, mt->et.et_arg); @@ -528,7 +532,7 @@ hpet_attach(device_t dev) t = &sc->t[i]; t->sc = sc; t->num = i; - t->mode = 0; + t->mode = TIMER_STOPPED; t->intr_rid = -1; t->irq = -1; t->pcpu_cpu = -1; @@ -878,10 +882,11 @@ hpet_resume(device_t dev) } } #endif - if (t->mode == 0) + if (t->mode == TIMER_STOPPED) continue; t->next = bus_read_4(sc->mem_res, HPET_MAIN_COUNTER); - if (t->mode == 1 && (t->caps & HPET_TCAP_PER_INT)) { + if (t->mode == TIMER_PERIODIC && + (t->caps & HPET_TCAP_PER_INT) != 0) { t->caps |= HPET_TCNF_TYPE; t->next += t->div; bus_write_4(sc->mem_res, HPET_TIMER_CAP_CNF(t->num), From owner-svn-src-all@freebsd.org Thu May 3 14:48:43 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 868F4FAD903; Thu, 3 May 2018 14:48:43 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 359F17192C; Thu, 3 May 2018 14:48:43 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 30ABF21339; Thu, 3 May 2018 14:48:43 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Emh1r018216; Thu, 3 May 2018 14:48:43 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43Emg8P018214; Thu, 3 May 2018 14:48:42 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805031448.w43Emg8P018214@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Thu, 3 May 2018 14:48:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333210 - in head: share/man/man4 sys/dev/nxge X-SVN-Group: head X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: in head: share/man/man4 sys/dev/nxge X-SVN-Commit-Revision: 333210 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 14:48:43 -0000 Author: sbruno Date: Thu May 3 14:48:42 2018 New Revision: 333210 URL: https://svnweb.freebsd.org/changeset/base/333210 Log: nxge(4) deprecation notice Submitted by: kbowling Reviewed by: brooks Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D15277 Modified: head/share/man/man4/nxge.4 head/sys/dev/nxge/if_nxge.c Modified: head/share/man/man4/nxge.4 ============================================================================== --- head/share/man/man4/nxge.4 Thu May 3 13:14:31 2018 (r333209) +++ head/share/man/man4/nxge.4 Thu May 3 14:48:42 2018 (r333210) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 16, 2007 +.Dd May 3, 2018 .Dt NXGE 4 .Os .Sh NAME @@ -44,6 +44,12 @@ module at boot time, place the following line in .Bd -literal -offset indent if_nxge_load="YES" .Ed +.Sh DEPRECATION NOTICE +The +.Nm +driver is not present in +.Fx 12.0 +and later. .Sh DESCRIPTION The .Nm Modified: head/sys/dev/nxge/if_nxge.c ============================================================================== --- head/sys/dev/nxge/if_nxge.c Thu May 3 13:14:31 2018 (r333209) +++ head/sys/dev/nxge/if_nxge.c Thu May 3 14:48:42 2018 (r333210) @@ -1006,6 +1006,7 @@ xge_attach(device_t dev) attach_out: xge_os_free(NULL, device_config, sizeof(xge_hal_device_config_t)); attach_out_config: + gone_in_dev(dev, 12, "nxge(4) driver"); return status; } From owner-svn-src-all@freebsd.org Thu May 3 15:01:27 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A6AB3FADD83; Thu, 3 May 2018 15:01:27 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 54A39757A1; Thu, 3 May 2018 15:01:27 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4F92D21627; Thu, 3 May 2018 15:01:27 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43F1RBr024235; Thu, 3 May 2018 15:01:27 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43F1Reo024234; Thu, 3 May 2018 15:01:27 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805031501.w43F1Reo024234@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Thu, 3 May 2018 15:01:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333211 - head/sys/netinet/cc X-SVN-Group: head X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: head/sys/netinet/cc X-SVN-Commit-Revision: 333211 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 15:01:27 -0000 Author: sbruno Date: Thu May 3 15:01:27 2018 New Revision: 333211 URL: https://svnweb.freebsd.org/changeset/base/333211 Log: cc_cubic: - Update cubic parameters to draft-ietf-tcpm-cubic-04 Submitted by: Matt Macy Reviewed by: lstewart Differential Revision: https://reviews.freebsd.org/D10556 Modified: head/sys/netinet/cc/cc_cubic.h Modified: head/sys/netinet/cc/cc_cubic.h ============================================================================== --- head/sys/netinet/cc/cc_cubic.h Thu May 3 14:48:42 2018 (r333210) +++ head/sys/netinet/cc/cc_cubic.h Thu May 3 15:01:27 2018 (r333211) @@ -51,23 +51,23 @@ /* 0.5 << CUBIC_SHIFT. */ #define RENO_BETA 128 -/* ~0.8 << CUBIC_SHIFT. */ -#define CUBIC_BETA 204 +/* ~0.7 << CUBIC_SHIFT. */ +#define CUBIC_BETA 179 -/* ~0.2 << CUBIC_SHIFT. */ -#define ONE_SUB_CUBIC_BETA 51 +/* ~0.3 << CUBIC_SHIFT. */ +#define ONE_SUB_CUBIC_BETA 77 /* 3 * ONE_SUB_CUBIC_BETA. */ -#define THREE_X_PT2 153 +#define THREE_X_PT3 231 /* (2 << CUBIC_SHIFT) - ONE_SUB_CUBIC_BETA. */ -#define TWO_SUB_PT2 461 +#define TWO_SUB_PT3 435 /* ~0.4 << CUBIC_SHIFT. */ #define CUBIC_C_FACTOR 102 -/* CUBIC fast convergence factor: ~0.9 << CUBIC_SHIFT. */ -#define CUBIC_FC_FACTOR 230 +/* CUBIC fast convergence factor: (1+beta_cubic)/2. */ +#define CUBIC_FC_FACTOR 217 /* Don't trust s_rtt until this many rtt samples have been taken. */ #define CUBIC_MIN_RTT_SAMPLES 8 @@ -79,9 +79,8 @@ extern int hz; /* * Implementation based on the formulae found in the CUBIC Internet Draft - * "draft-rhee-tcpm-cubic-02". + * "draft-ietf-tcpm-cubic-04". * - * Note BETA used in cc_cubic is equal to (1-beta) in the I-D */ static __inline float @@ -91,7 +90,7 @@ theoretical_cubic_k(double wmax_pkts) C = 0.4; - return (pow((wmax_pkts * 0.2) / C, (1.0 / 3.0)) * pow(2, CUBIC_SHIFT)); + return (pow((wmax_pkts * 0.3) / C, (1.0 / 3.0)) * pow(2, CUBIC_SHIFT)); } static __inline unsigned long @@ -120,7 +119,7 @@ theoretical_tf_cwnd(int ticks_since_cong, int rtt_tick uint32_t smss) { - return ((wmax * 0.8) + ((3 * 0.2) / (2 - 0.2) * + return ((wmax * 0.7) + ((3 * 0.3) / (2 - 0.3) * (ticks_since_cong / (float)rtt_ticks) * smss)); } @@ -232,7 +231,7 @@ reno_cwnd(int ticks_since_cong, int rtt_ticks, unsigne /* * Compute an approximation of the "TCP friendly" cwnd some number of ticks * after a congestion event that is designed to yield the same average cwnd as - * NewReno while using CUBIC's beta of 0.8. RTT should be the average RTT + * NewReno while using CUBIC's beta of 0.7. RTT should be the average RTT * estimate for the path measured over the previous congestion epoch and wmax is * the value of cwnd at the last congestion event. */ @@ -242,8 +241,8 @@ tf_cwnd(int ticks_since_cong, int rtt_ticks, unsigned { /* Equation 4 of I-D. */ - return (((wmax * CUBIC_BETA) + (((THREE_X_PT2 * ticks_since_cong * - smss) << CUBIC_SHIFT) / TWO_SUB_PT2 / rtt_ticks)) >> CUBIC_SHIFT); + return (((wmax * CUBIC_BETA) + (((THREE_X_PT3 * ticks_since_cong * + smss) << CUBIC_SHIFT) / TWO_SUB_PT3 / rtt_ticks)) >> CUBIC_SHIFT); } #endif /* _NETINET_CC_CUBIC_H_ */ From owner-svn-src-all@freebsd.org Thu May 3 15:33:19 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 017E1FAE9E0; Thu, 3 May 2018 15:33:19 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A71AF7DC8A; Thu, 3 May 2018 15:33:18 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A1F8B21B63; Thu, 3 May 2018 15:33:18 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43FXIxl043510; Thu, 3 May 2018 15:33:18 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43FXIUr043509; Thu, 3 May 2018 15:33:18 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805031533.w43FXIUr043509@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Thu, 3 May 2018 15:33:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333212 - head/sys/dev/amdsbwd X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/sys/dev/amdsbwd X-SVN-Commit-Revision: 333212 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 15:33:19 -0000 Author: avg Date: Thu May 3 15:33:18 2018 New Revision: 333212 URL: https://svnweb.freebsd.org/changeset/base/333212 Log: amdsbwd: add suspend and resume methods Without the suspend method the watchdog may fire in S1 state. Without the resume method the watchdog is not re-enabled after returning from S3 state. I observe this on one of my systems. Not sure if watchdog(4) should participate in the suspend actions. Right now everything is up to individual drivers. MFC after: 2 weeks Modified: head/sys/dev/amdsbwd/amdsbwd.c Modified: head/sys/dev/amdsbwd/amdsbwd.c ============================================================================== --- head/sys/dev/amdsbwd/amdsbwd.c Thu May 3 15:01:27 2018 (r333211) +++ head/sys/dev/amdsbwd/amdsbwd.c Thu May 3 15:33:18 2018 (r333212) @@ -104,12 +104,16 @@ static void amdsbwd_identify(driver_t *driver, device_ static int amdsbwd_probe(device_t dev); static int amdsbwd_attach(device_t dev); static int amdsbwd_detach(device_t dev); +static int amdsbwd_suspend(device_t dev); +static int amdsbwd_resume(device_t dev); static device_method_t amdsbwd_methods[] = { DEVMETHOD(device_identify, amdsbwd_identify), DEVMETHOD(device_probe, amdsbwd_probe), DEVMETHOD(device_attach, amdsbwd_attach), DEVMETHOD(device_detach, amdsbwd_detach), + DEVMETHOD(device_suspend, amdsbwd_suspend), + DEVMETHOD(device_resume, amdsbwd_resume), #if 0 DEVMETHOD(device_shutdown, amdsbwd_detach), #endif @@ -553,3 +557,30 @@ amdsbwd_detach(device_t dev) return (0); } +static int +amdsbwd_suspend(device_t dev) +{ + struct amdsbwd_softc *sc; + uint32_t val; + + sc = device_get_softc(dev); + val = wdctrl_read(sc); + val &= ~AMDSB_WD_RUN; + wdctrl_write(sc, val); + return (0); +} + +static int +amdsbwd_resume(device_t dev) +{ + struct amdsbwd_softc *sc; + + sc = device_get_softc(dev); + wdctrl_write(sc, AMDSB_WD_FIRED); + if (sc->active) { + amdsbwd_tmr_set(sc, sc->timeout); + amdsbwd_tmr_enable(sc); + amdsbwd_tmr_reload(sc); + } + return (0); +} From owner-svn-src-all@freebsd.org Thu May 3 15:40:58 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 349A9FAEF15; Thu, 3 May 2018 15:40:58 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C4F517E487; Thu, 3 May 2018 15:40:57 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B895621BA3; Thu, 3 May 2018 15:40:57 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Fev76043840; Thu, 3 May 2018 15:40:57 GMT (envelope-from marius@FreeBSD.org) Received: (from marius@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43Feu9x043832; Thu, 3 May 2018 15:40:56 GMT (envelope-from marius@FreeBSD.org) Message-Id: <201805031540.w43Feu9x043832@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: marius set sender to marius@FreeBSD.org using -f From: Marius Strobl Date: Thu, 3 May 2018 15:40:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333213 - stable/11/sys/dev/e1000 X-SVN-Group: stable-11 X-SVN-Commit-Author: marius X-SVN-Commit-Paths: stable/11/sys/dev/e1000 X-SVN-Commit-Revision: 333213 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 15:40:58 -0000 Author: marius Date: Thu May 3 15:40:56 2018 New Revision: 333213 URL: https://svnweb.freebsd.org/changeset/base/333213 Log: MFC: r327312, r327842, r327865 - Add initial support for Intel Ice Lake and Cannon Lake Ethernet MACs. - Add workaround for Intel Sky Lake and Kabby Lake Ethernet MAC erratum 1.5.4.5. - Fix uses of 1 << 31. Modified: stable/11/sys/dev/e1000/e1000_82575.h stable/11/sys/dev/e1000/e1000_api.c stable/11/sys/dev/e1000/e1000_hw.h stable/11/sys/dev/e1000/e1000_ich8lan.c stable/11/sys/dev/e1000/e1000_ich8lan.h stable/11/sys/dev/e1000/e1000_regs.h stable/11/sys/dev/e1000/if_em.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/e1000/e1000_82575.h ============================================================================== --- stable/11/sys/dev/e1000/e1000_82575.h Thu May 3 15:33:18 2018 (r333212) +++ stable/11/sys/dev/e1000/e1000_82575.h Thu May 3 15:40:56 2018 (r333213) @@ -384,7 +384,7 @@ struct e1000_adv_tx_context_desc { #define E1000_ETQF_FILTER_ENABLE (1 << 26) #define E1000_ETQF_IMM_INT (1 << 29) #define E1000_ETQF_1588 (1 << 30) -#define E1000_ETQF_QUEUE_ENABLE (1 << 31) +#define E1000_ETQF_QUEUE_ENABLE (1U << 31) /* * ETQF filter list: one static filter per filter consumer. This is * to avoid filter collisions later. Add new filters @@ -411,7 +411,7 @@ struct e1000_adv_tx_context_desc { #define E1000_DTXSWC_LLE_MASK 0x00FF0000 /* Per VF Local LB enables */ #define E1000_DTXSWC_VLAN_SPOOF_SHIFT 8 #define E1000_DTXSWC_LLE_SHIFT 16 -#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1 << 31) /* global VF LB enable */ +#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1U << 31) /* global VF LB enable */ /* Easy defines for setting default pool, would normally be left a zero */ #define E1000_VT_CTL_DEFAULT_POOL_SHIFT 7 Modified: stable/11/sys/dev/e1000/e1000_api.c ============================================================================== --- stable/11/sys/dev/e1000/e1000_api.c Thu May 3 15:33:18 2018 (r333212) +++ stable/11/sys/dev/e1000/e1000_api.c Thu May 3 15:40:56 2018 (r333213) @@ -310,6 +310,16 @@ s32 e1000_set_mac_type(struct e1000_hw *hw) case E1000_DEV_ID_PCH_SPT_I219_V5: mac->type = e1000_pch_spt; break; + case E1000_DEV_ID_PCH_CNP_I219_LM6: + case E1000_DEV_ID_PCH_CNP_I219_V6: + case E1000_DEV_ID_PCH_CNP_I219_LM7: + case E1000_DEV_ID_PCH_CNP_I219_V7: + case E1000_DEV_ID_PCH_ICP_I219_LM8: + case E1000_DEV_ID_PCH_ICP_I219_V8: + case E1000_DEV_ID_PCH_ICP_I219_LM9: + case E1000_DEV_ID_PCH_ICP_I219_V9: + mac->type = e1000_pch_cnp; + break; case E1000_DEV_ID_82575EB_COPPER: case E1000_DEV_ID_82575EB_FIBER_SERDES: case E1000_DEV_ID_82575GB_QUAD_COPPER: @@ -461,6 +471,7 @@ s32 e1000_setup_init_funcs(struct e1000_hw *hw, bool i case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: e1000_init_function_pointers_ich8lan(hw); break; case e1000_82575: Modified: stable/11/sys/dev/e1000/e1000_hw.h ============================================================================== --- stable/11/sys/dev/e1000/e1000_hw.h Thu May 3 15:33:18 2018 (r333212) +++ stable/11/sys/dev/e1000/e1000_hw.h Thu May 3 15:40:56 2018 (r333213) @@ -146,6 +146,14 @@ struct e1000_hw; #define E1000_DEV_ID_PCH_SPT_I219_V4 0x15D8 #define E1000_DEV_ID_PCH_SPT_I219_LM5 0x15E3 #define E1000_DEV_ID_PCH_SPT_I219_V5 0x15D6 +#define E1000_DEV_ID_PCH_CNP_I219_LM6 0x15BD +#define E1000_DEV_ID_PCH_CNP_I219_V6 0x15BE +#define E1000_DEV_ID_PCH_CNP_I219_LM7 0x15BB +#define E1000_DEV_ID_PCH_CNP_I219_V7 0x15BC +#define E1000_DEV_ID_PCH_ICP_I219_LM8 0x15DF +#define E1000_DEV_ID_PCH_ICP_I219_V8 0x15E0 +#define E1000_DEV_ID_PCH_ICP_I219_LM9 0x15E1 +#define E1000_DEV_ID_PCH_ICP_I219_V9 0x15E2 #define E1000_DEV_ID_82576 0x10C9 #define E1000_DEV_ID_82576_FIBER 0x10E6 #define E1000_DEV_ID_82576_SERDES 0x10E7 @@ -232,6 +240,7 @@ enum e1000_mac_type { e1000_pch2lan, e1000_pch_lpt, e1000_pch_spt, + e1000_pch_cnp, e1000_82575, e1000_82576, e1000_82580, Modified: stable/11/sys/dev/e1000/e1000_ich8lan.c ============================================================================== --- stable/11/sys/dev/e1000/e1000_ich8lan.c Thu May 3 15:33:18 2018 (r333212) +++ stable/11/sys/dev/e1000/e1000_ich8lan.c Thu May 3 15:40:56 2018 (r333213) @@ -344,6 +344,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1 switch (hw->mac.type) { case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: if (e1000_phy_is_accessible_pchlan(hw)) break; @@ -492,6 +493,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_h case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: /* In case the PHY needs to be in mdio slow mode, * set slow mode and try to get the PHY id again. */ @@ -793,6 +795,7 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_ /* fall-through */ case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: /* multicast address update for pch2 */ mac->ops.update_mc_addr_list = e1000_update_mc_addr_list_pch2lan; @@ -1830,6 +1833,7 @@ void e1000_init_function_pointers_ich8lan(struct e1000 case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: hw->phy.ops.init_params = e1000_init_phy_params_pchlan; break; default: @@ -2294,6 +2298,7 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG_ICH8M; break; default: @@ -2654,6 +2659,8 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e10 e1000_phy_sw_reset_generic(hw); ret_val = hw->phy.ops.write_reg(hw, PHY_CONTROL, 0x3140); + if (ret_val) + return ret_val; } } @@ -3411,6 +3418,7 @@ static s32 e1000_valid_nvm_bank_detect_ich8lan(struct switch (hw->mac.type) { case e1000_pch_spt: + case e1000_pch_cnp: bank1_offset = nvm->flash_bank_size; act_offset = E1000_ICH_NVM_SIG_WORD; @@ -4386,6 +4394,7 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct switch (hw->mac.type) { case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: word = NVM_COMPAT; valid_csum_mask = NVM_COMPAT_VALID_CSUM; break; @@ -5192,7 +5201,7 @@ static void e1000_initialize_hw_bits_ich8lan(struct e1 /* Device Status */ if (hw->mac.type == e1000_ich8lan) { reg = E1000_READ_REG(hw, E1000_STATUS); - reg &= ~(1 << 31); + reg &= ~(1U << 31); E1000_WRITE_REG(hw, E1000_STATUS, reg); } Modified: stable/11/sys/dev/e1000/e1000_ich8lan.h ============================================================================== --- stable/11/sys/dev/e1000/e1000_ich8lan.h Thu May 3 15:33:18 2018 (r333212) +++ stable/11/sys/dev/e1000/e1000_ich8lan.h Thu May 3 15:40:56 2018 (r333213) @@ -123,7 +123,8 @@ #define NVM_SIZE_MULTIPLIER 4096 /*multiplier for NVMS field*/ #define E1000_FLASH_BASE_ADDR 0xE000 /*offset of NVM access regs*/ #define E1000_CTRL_EXT_NVMVS 0x3 /*NVM valid sector */ -#define E1000_TARC0_CB_MULTIQ_3_REQ (1 << 28 | 1 << 29) +#define E1000_TARC0_CB_MULTIQ_3_REQ 0x30000000 +#define E1000_TARC0_CB_MULTIQ_2_REQ 0x20000000 #define PCIE_ICH8_SNOOP_ALL PCIE_NO_SNOOP_ALL #define E1000_ICH_RAR_ENTRIES 7 Modified: stable/11/sys/dev/e1000/e1000_regs.h ============================================================================== --- stable/11/sys/dev/e1000/e1000_regs.h Thu May 3 15:33:18 2018 (r333212) +++ stable/11/sys/dev/e1000/e1000_regs.h Thu May 3 15:40:56 2018 (r333213) @@ -214,7 +214,7 @@ /* QAV Tx mode control register bitfields masks */ #define E1000_TQAVCC_IDLE_SLOPE 0xFFFF /* Idle slope */ #define E1000_TQAVCC_KEEP_CREDITS (1 << 30) /* Keep credits opt enable */ -#define E1000_TQAVCC_QUEUE_MODE (1 << 31) /* SP vs. SR Tx mode */ +#define E1000_TQAVCC_QUEUE_MODE (1U << 31) /* SP vs. SR Tx mode */ /* Good transmitted packets counter registers */ #define E1000_PQGPTC(_n) (0x010014 + (0x100 * (_n))) Modified: stable/11/sys/dev/e1000/if_em.c ============================================================================== --- stable/11/sys/dev/e1000/if_em.c Thu May 3 15:33:18 2018 (r333212) +++ stable/11/sys/dev/e1000/if_em.c Thu May 3 15:40:56 2018 (r333213) @@ -205,6 +205,18 @@ static em_vendor_info_t em_vendor_info_array[] = { 0x8086, E1000_DEV_ID_PCH_SPT_I219_LM5, PCI_ANY_ID, PCI_ANY_ID, 0}, { 0x8086, E1000_DEV_ID_PCH_SPT_I219_V5, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_LM6, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_V6, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_LM7, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_V7, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_LM8, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_V8, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_LM9, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_V9, PCI_ANY_ID, PCI_ANY_ID, 0}, /* required last entry */ { 0, 0, 0, 0, 0} }; @@ -593,7 +605,7 @@ em_attach(device_t dev) ** so use the same tag and an offset handle for the ** FLASH read/write macros in the shared code. */ - else if (hw->mac.type == e1000_pch_spt) { + else if (hw->mac.type >= e1000_pch_spt) { adapter->osdep.flash_bus_space_tag = adapter->osdep.mem_bus_space_tag; adapter->osdep.flash_bus_space_handle = @@ -1196,6 +1208,7 @@ em_ioctl(if_t ifp, u_long command, caddr_t data) case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: case e1000_82574: case e1000_82583: case e1000_80003es2lan: /* 9K Jumbo Frame size */ @@ -3079,6 +3092,7 @@ em_reset(struct adapter *adapter) case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: pba = E1000_PBA_26K; break; default: @@ -3138,6 +3152,7 @@ em_reset(struct adapter *adapter) case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: hw->fc.high_water = 0x5C20; hw->fc.low_water = 0x5048; hw->fc.pause_time = 0x0650; @@ -3779,13 +3794,16 @@ em_initialize_transmit_unit(struct adapter *adapter) /* This write will effectively turn on the transmit unit. */ E1000_WRITE_REG(&adapter->hw, E1000_TCTL, tctl); + /* SPT and KBL errata workarounds */ if (hw->mac.type == e1000_pch_spt) { u32 reg; reg = E1000_READ_REG(hw, E1000_IOSFPC); reg |= E1000_RCTL_RDMTS_HEX; E1000_WRITE_REG(hw, E1000_IOSFPC, reg); + /* i218-i219 Specification Update 1.5.4.5 */ reg = E1000_READ_REG(hw, E1000_TARC(0)); - reg |= E1000_TARC0_CB_MULTIQ_3_REQ; + reg &= ~E1000_TARC0_CB_MULTIQ_3_REQ; + reg |= E1000_TARC0_CB_MULTIQ_2_REQ; E1000_WRITE_REG(hw, E1000_TARC(0), reg); } } @@ -5297,6 +5315,7 @@ em_get_wakeup(device_t dev) case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: apme_mask = E1000_WUC_APME; adapter->has_amt = TRUE; eeprom_data = E1000_READ_REG(&adapter->hw, E1000_WUC); From owner-svn-src-all@freebsd.org Thu May 3 15:41:07 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 354CBFAEF85; Thu, 3 May 2018 15:41:07 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 153207E630; Thu, 3 May 2018 15:41:05 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2DE4321BAE; Thu, 3 May 2018 15:41:05 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Ff4ng043899; Thu, 3 May 2018 15:41:04 GMT (envelope-from marius@FreeBSD.org) Received: (from marius@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43Ff4p7043892; Thu, 3 May 2018 15:41:04 GMT (envelope-from marius@FreeBSD.org) Message-Id: <201805031541.w43Ff4p7043892@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: marius set sender to marius@FreeBSD.org using -f From: Marius Strobl Date: Thu, 3 May 2018 15:41:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333214 - stable/10/sys/dev/e1000 X-SVN-Group: stable-10 X-SVN-Commit-Author: marius X-SVN-Commit-Paths: stable/10/sys/dev/e1000 X-SVN-Commit-Revision: 333214 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 15:41:07 -0000 Author: marius Date: Thu May 3 15:41:04 2018 New Revision: 333214 URL: https://svnweb.freebsd.org/changeset/base/333214 Log: MFC: r327312, r327842, r327865 - Add initial support for Intel Ice Lake and Cannon Lake Ethernet MACs. - Add workaround for Intel Sky Lake and Kabby Lake Ethernet MAC erratum 1.5.4.5. - Fix uses of 1 << 31. Modified: stable/10/sys/dev/e1000/e1000_82575.h stable/10/sys/dev/e1000/e1000_api.c stable/10/sys/dev/e1000/e1000_hw.h stable/10/sys/dev/e1000/e1000_ich8lan.c stable/10/sys/dev/e1000/e1000_ich8lan.h stable/10/sys/dev/e1000/e1000_regs.h stable/10/sys/dev/e1000/if_em.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/e1000/e1000_82575.h ============================================================================== --- stable/10/sys/dev/e1000/e1000_82575.h Thu May 3 15:40:56 2018 (r333213) +++ stable/10/sys/dev/e1000/e1000_82575.h Thu May 3 15:41:04 2018 (r333214) @@ -384,7 +384,7 @@ struct e1000_adv_tx_context_desc { #define E1000_ETQF_FILTER_ENABLE (1 << 26) #define E1000_ETQF_IMM_INT (1 << 29) #define E1000_ETQF_1588 (1 << 30) -#define E1000_ETQF_QUEUE_ENABLE (1 << 31) +#define E1000_ETQF_QUEUE_ENABLE (1U << 31) /* * ETQF filter list: one static filter per filter consumer. This is * to avoid filter collisions later. Add new filters @@ -411,7 +411,7 @@ struct e1000_adv_tx_context_desc { #define E1000_DTXSWC_LLE_MASK 0x00FF0000 /* Per VF Local LB enables */ #define E1000_DTXSWC_VLAN_SPOOF_SHIFT 8 #define E1000_DTXSWC_LLE_SHIFT 16 -#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1 << 31) /* global VF LB enable */ +#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1U << 31) /* global VF LB enable */ /* Easy defines for setting default pool, would normally be left a zero */ #define E1000_VT_CTL_DEFAULT_POOL_SHIFT 7 Modified: stable/10/sys/dev/e1000/e1000_api.c ============================================================================== --- stable/10/sys/dev/e1000/e1000_api.c Thu May 3 15:40:56 2018 (r333213) +++ stable/10/sys/dev/e1000/e1000_api.c Thu May 3 15:41:04 2018 (r333214) @@ -310,6 +310,16 @@ s32 e1000_set_mac_type(struct e1000_hw *hw) case E1000_DEV_ID_PCH_SPT_I219_V5: mac->type = e1000_pch_spt; break; + case E1000_DEV_ID_PCH_CNP_I219_LM6: + case E1000_DEV_ID_PCH_CNP_I219_V6: + case E1000_DEV_ID_PCH_CNP_I219_LM7: + case E1000_DEV_ID_PCH_CNP_I219_V7: + case E1000_DEV_ID_PCH_ICP_I219_LM8: + case E1000_DEV_ID_PCH_ICP_I219_V8: + case E1000_DEV_ID_PCH_ICP_I219_LM9: + case E1000_DEV_ID_PCH_ICP_I219_V9: + mac->type = e1000_pch_cnp; + break; case E1000_DEV_ID_82575EB_COPPER: case E1000_DEV_ID_82575EB_FIBER_SERDES: case E1000_DEV_ID_82575GB_QUAD_COPPER: @@ -461,6 +471,7 @@ s32 e1000_setup_init_funcs(struct e1000_hw *hw, bool i case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: e1000_init_function_pointers_ich8lan(hw); break; case e1000_82575: Modified: stable/10/sys/dev/e1000/e1000_hw.h ============================================================================== --- stable/10/sys/dev/e1000/e1000_hw.h Thu May 3 15:40:56 2018 (r333213) +++ stable/10/sys/dev/e1000/e1000_hw.h Thu May 3 15:41:04 2018 (r333214) @@ -146,6 +146,14 @@ struct e1000_hw; #define E1000_DEV_ID_PCH_SPT_I219_V4 0x15D8 #define E1000_DEV_ID_PCH_SPT_I219_LM5 0x15E3 #define E1000_DEV_ID_PCH_SPT_I219_V5 0x15D6 +#define E1000_DEV_ID_PCH_CNP_I219_LM6 0x15BD +#define E1000_DEV_ID_PCH_CNP_I219_V6 0x15BE +#define E1000_DEV_ID_PCH_CNP_I219_LM7 0x15BB +#define E1000_DEV_ID_PCH_CNP_I219_V7 0x15BC +#define E1000_DEV_ID_PCH_ICP_I219_LM8 0x15DF +#define E1000_DEV_ID_PCH_ICP_I219_V8 0x15E0 +#define E1000_DEV_ID_PCH_ICP_I219_LM9 0x15E1 +#define E1000_DEV_ID_PCH_ICP_I219_V9 0x15E2 #define E1000_DEV_ID_82576 0x10C9 #define E1000_DEV_ID_82576_FIBER 0x10E6 #define E1000_DEV_ID_82576_SERDES 0x10E7 @@ -232,6 +240,7 @@ enum e1000_mac_type { e1000_pch2lan, e1000_pch_lpt, e1000_pch_spt, + e1000_pch_cnp, e1000_82575, e1000_82576, e1000_82580, Modified: stable/10/sys/dev/e1000/e1000_ich8lan.c ============================================================================== --- stable/10/sys/dev/e1000/e1000_ich8lan.c Thu May 3 15:40:56 2018 (r333213) +++ stable/10/sys/dev/e1000/e1000_ich8lan.c Thu May 3 15:41:04 2018 (r333214) @@ -344,6 +344,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1 switch (hw->mac.type) { case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: if (e1000_phy_is_accessible_pchlan(hw)) break; @@ -492,6 +493,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_h case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: /* In case the PHY needs to be in mdio slow mode, * set slow mode and try to get the PHY id again. */ @@ -793,6 +795,7 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_ /* fall-through */ case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: /* multicast address update for pch2 */ mac->ops.update_mc_addr_list = e1000_update_mc_addr_list_pch2lan; @@ -1830,6 +1833,7 @@ void e1000_init_function_pointers_ich8lan(struct e1000 case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: hw->phy.ops.init_params = e1000_init_phy_params_pchlan; break; default: @@ -2294,6 +2298,7 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: sw_cfg_mask = E1000_FEXTNVM_SW_CONFIG_ICH8M; break; default: @@ -2654,6 +2659,8 @@ static s32 e1000_hv_phy_workarounds_ich8lan(struct e10 e1000_phy_sw_reset_generic(hw); ret_val = hw->phy.ops.write_reg(hw, PHY_CONTROL, 0x3140); + if (ret_val) + return ret_val; } } @@ -3411,6 +3418,7 @@ static s32 e1000_valid_nvm_bank_detect_ich8lan(struct switch (hw->mac.type) { case e1000_pch_spt: + case e1000_pch_cnp: bank1_offset = nvm->flash_bank_size; act_offset = E1000_ICH_NVM_SIG_WORD; @@ -4386,6 +4394,7 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct switch (hw->mac.type) { case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: word = NVM_COMPAT; valid_csum_mask = NVM_COMPAT_VALID_CSUM; break; @@ -5192,7 +5201,7 @@ static void e1000_initialize_hw_bits_ich8lan(struct e1 /* Device Status */ if (hw->mac.type == e1000_ich8lan) { reg = E1000_READ_REG(hw, E1000_STATUS); - reg &= ~(1 << 31); + reg &= ~(1U << 31); E1000_WRITE_REG(hw, E1000_STATUS, reg); } Modified: stable/10/sys/dev/e1000/e1000_ich8lan.h ============================================================================== --- stable/10/sys/dev/e1000/e1000_ich8lan.h Thu May 3 15:40:56 2018 (r333213) +++ stable/10/sys/dev/e1000/e1000_ich8lan.h Thu May 3 15:41:04 2018 (r333214) @@ -123,7 +123,8 @@ #define NVM_SIZE_MULTIPLIER 4096 /*multiplier for NVMS field*/ #define E1000_FLASH_BASE_ADDR 0xE000 /*offset of NVM access regs*/ #define E1000_CTRL_EXT_NVMVS 0x3 /*NVM valid sector */ -#define E1000_TARC0_CB_MULTIQ_3_REQ (1 << 28 | 1 << 29) +#define E1000_TARC0_CB_MULTIQ_3_REQ 0x30000000 +#define E1000_TARC0_CB_MULTIQ_2_REQ 0x20000000 #define PCIE_ICH8_SNOOP_ALL PCIE_NO_SNOOP_ALL #define E1000_ICH_RAR_ENTRIES 7 Modified: stable/10/sys/dev/e1000/e1000_regs.h ============================================================================== --- stable/10/sys/dev/e1000/e1000_regs.h Thu May 3 15:40:56 2018 (r333213) +++ stable/10/sys/dev/e1000/e1000_regs.h Thu May 3 15:41:04 2018 (r333214) @@ -214,7 +214,7 @@ /* QAV Tx mode control register bitfields masks */ #define E1000_TQAVCC_IDLE_SLOPE 0xFFFF /* Idle slope */ #define E1000_TQAVCC_KEEP_CREDITS (1 << 30) /* Keep credits opt enable */ -#define E1000_TQAVCC_QUEUE_MODE (1 << 31) /* SP vs. SR Tx mode */ +#define E1000_TQAVCC_QUEUE_MODE (1U << 31) /* SP vs. SR Tx mode */ /* Good transmitted packets counter registers */ #define E1000_PQGPTC(_n) (0x010014 + (0x100 * (_n))) Modified: stable/10/sys/dev/e1000/if_em.c ============================================================================== --- stable/10/sys/dev/e1000/if_em.c Thu May 3 15:40:56 2018 (r333213) +++ stable/10/sys/dev/e1000/if_em.c Thu May 3 15:41:04 2018 (r333214) @@ -204,6 +204,18 @@ static em_vendor_info_t em_vendor_info_array[] = { 0x8086, E1000_DEV_ID_PCH_SPT_I219_LM5, PCI_ANY_ID, PCI_ANY_ID, 0}, { 0x8086, E1000_DEV_ID_PCH_SPT_I219_V5, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_LM6, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_V6, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_LM7, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_CNP_I219_V7, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_LM8, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_V8, PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_LM9, + PCI_ANY_ID, PCI_ANY_ID, 0}, + { 0x8086, E1000_DEV_ID_PCH_ICP_I219_V9, PCI_ANY_ID, PCI_ANY_ID, 0}, /* required last entry */ { 0, 0, 0, 0, 0} }; @@ -600,7 +612,7 @@ em_attach(device_t dev) ** so use the same tag and an offset handle for the ** FLASH read/write macros in the shared code. */ - else if (hw->mac.type == e1000_pch_spt) { + else if (hw->mac.type >= e1000_pch_spt) { adapter->osdep.flash_bus_space_tag = adapter->osdep.mem_bus_space_tag; adapter->osdep.flash_bus_space_handle = @@ -1202,6 +1214,7 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t da case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: case e1000_82574: case e1000_82583: case e1000_80003es2lan: /* 9K Jumbo Frame size */ @@ -3125,6 +3138,7 @@ em_reset(struct adapter *adapter) case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: pba = E1000_PBA_26K; break; default: @@ -3184,6 +3198,7 @@ em_reset(struct adapter *adapter) case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: hw->fc.high_water = 0x5C20; hw->fc.low_water = 0x5048; hw->fc.pause_time = 0x0650; @@ -3826,13 +3841,16 @@ em_initialize_transmit_unit(struct adapter *adapter) /* This write will effectively turn on the transmit unit. */ E1000_WRITE_REG(&adapter->hw, E1000_TCTL, tctl); + /* SPT and KBL errata workarounds */ if (hw->mac.type == e1000_pch_spt) { u32 reg; reg = E1000_READ_REG(hw, E1000_IOSFPC); reg |= E1000_RCTL_RDMTS_HEX; E1000_WRITE_REG(hw, E1000_IOSFPC, reg); + /* i218-i219 Specification Update 1.5.4.5 */ reg = E1000_READ_REG(hw, E1000_TARC(0)); - reg |= E1000_TARC0_CB_MULTIQ_3_REQ; + reg &= ~E1000_TARC0_CB_MULTIQ_3_REQ; + reg |= E1000_TARC0_CB_MULTIQ_2_REQ; E1000_WRITE_REG(hw, E1000_TARC(0), reg); } } @@ -5342,6 +5360,7 @@ em_get_wakeup(device_t dev) case e1000_pch2lan: case e1000_pch_lpt: case e1000_pch_spt: + case e1000_pch_cnp: apme_mask = E1000_WUC_APME; adapter->has_amt = TRUE; eeprom_data = E1000_READ_REG(&adapter->hw, E1000_WUC); From owner-svn-src-all@freebsd.org Thu May 3 15:47:43 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BC855FAF42F; Thu, 3 May 2018 15:47:43 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6B5D280FA7; Thu, 3 May 2018 15:47:43 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4D49C21D3E; Thu, 3 May 2018 15:47:43 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Flh20048671; Thu, 3 May 2018 15:47:43 GMT (envelope-from marius@FreeBSD.org) Received: (from marius@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43Flg10048667; Thu, 3 May 2018 15:47:42 GMT (envelope-from marius@FreeBSD.org) Message-Id: <201805031547.w43Flg10048667@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: marius set sender to marius@FreeBSD.org using -f From: Marius Strobl Date: Thu, 3 May 2018 15:47:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333215 - stable/11/sys/dev/e1000 X-SVN-Group: stable-11 X-SVN-Commit-Author: marius X-SVN-Commit-Paths: stable/11/sys/dev/e1000 X-SVN-Commit-Revision: 333215 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 15:47:44 -0000 Author: marius Date: Thu May 3 15:47:42 2018 New Revision: 333215 URL: https://svnweb.freebsd.org/changeset/base/333215 Log: MFC: r330803 Use FALLTHROUGH. Modified: stable/11/sys/dev/e1000/e1000_82575.c stable/11/sys/dev/e1000/e1000_mbx.c stable/11/sys/dev/e1000/e1000_phy.c stable/11/sys/dev/e1000/e1000_vf.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/e1000/e1000_82575.c ============================================================================== --- stable/11/sys/dev/e1000/e1000_82575.c Thu May 3 15:41:04 2018 (r333214) +++ stable/11/sys/dev/e1000/e1000_82575.c Thu May 3 15:47:42 2018 (r333215) @@ -1678,7 +1678,7 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_ case E1000_CTRL_EXT_LINK_MODE_1000BASE_KX: /* disable PCS autoneg and support parallel detect only */ pcs_autoneg = FALSE; - /* fall through to default case */ + /* FALLTHROUGH */ default: if (hw->mac.type == e1000_82575 || hw->mac.type == e1000_82576) { @@ -1805,6 +1805,7 @@ static s32 e1000_get_media_type_82575(struct e1000_hw break; } /* fall through for I2C based SGMII */ + /* FALLTHROUGH */ case E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES: /* read media type from SFP EEPROM */ ret_val = e1000_set_sfp_media_type_82575(hw); Modified: stable/11/sys/dev/e1000/e1000_mbx.c ============================================================================== --- stable/11/sys/dev/e1000/e1000_mbx.c Thu May 3 15:41:04 2018 (r333214) +++ stable/11/sys/dev/e1000/e1000_mbx.c Thu May 3 15:47:42 2018 (r333215) @@ -778,6 +778,7 @@ s32 e1000_init_mbx_params_pf(struct e1000_hw *hw) mbx->stats.reqs = 0; mbx->stats.acks = 0; mbx->stats.rsts = 0; + /* FALLTHROUGH */ default: return E1000_SUCCESS; } Modified: stable/11/sys/dev/e1000/e1000_phy.c ============================================================================== --- stable/11/sys/dev/e1000/e1000_phy.c Thu May 3 15:41:04 2018 (r333214) +++ stable/11/sys/dev/e1000/e1000_phy.c Thu May 3 15:47:42 2018 (r333215) @@ -1297,6 +1297,7 @@ s32 e1000_copper_link_setup_m88_gen2(struct e1000_hw * phy_data |= M88E1000_PSCR_AUTO_X_1000T; break; } + /* FALLTHROUGH */ case 0: default: phy_data |= M88E1000_PSCR_AUTO_X_MODE; Modified: stable/11/sys/dev/e1000/e1000_vf.c ============================================================================== --- stable/11/sys/dev/e1000/e1000_vf.c Thu May 3 15:41:04 2018 (r333214) +++ stable/11/sys/dev/e1000/e1000_vf.c Thu May 3 15:47:42 2018 (r333215) @@ -487,8 +487,10 @@ s32 e1000_promisc_set_vf(struct e1000_hw *hw, enum e10 break; case e1000_promisc_enabled: msgbuf |= E1000_VF_SET_PROMISC_MULTICAST; + /* FALLTHROUGH */ case e1000_promisc_unicast: msgbuf |= E1000_VF_SET_PROMISC_UNICAST; + /* FALLTHROUGH */ case e1000_promisc_disabled: break; default: From owner-svn-src-all@freebsd.org Thu May 3 15:47:51 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ED2E7FAF460; Thu, 3 May 2018 15:47:50 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 924238107B; Thu, 3 May 2018 15:47:50 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2C08321D3F; Thu, 3 May 2018 15:47:50 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Flotu048724; Thu, 3 May 2018 15:47:50 GMT (envelope-from marius@FreeBSD.org) Received: (from marius@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43FlnYI048720; Thu, 3 May 2018 15:47:49 GMT (envelope-from marius@FreeBSD.org) Message-Id: <201805031547.w43FlnYI048720@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: marius set sender to marius@FreeBSD.org using -f From: Marius Strobl Date: Thu, 3 May 2018 15:47:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333216 - stable/10/sys/dev/e1000 X-SVN-Group: stable-10 X-SVN-Commit-Author: marius X-SVN-Commit-Paths: stable/10/sys/dev/e1000 X-SVN-Commit-Revision: 333216 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 15:47:51 -0000 Author: marius Date: Thu May 3 15:47:49 2018 New Revision: 333216 URL: https://svnweb.freebsd.org/changeset/base/333216 Log: MFC: r330803 Use FALLTHROUGH. Modified: stable/10/sys/dev/e1000/e1000_82575.c stable/10/sys/dev/e1000/e1000_mbx.c stable/10/sys/dev/e1000/e1000_phy.c stable/10/sys/dev/e1000/e1000_vf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/e1000/e1000_82575.c ============================================================================== --- stable/10/sys/dev/e1000/e1000_82575.c Thu May 3 15:47:42 2018 (r333215) +++ stable/10/sys/dev/e1000/e1000_82575.c Thu May 3 15:47:49 2018 (r333216) @@ -1678,7 +1678,7 @@ static s32 e1000_setup_serdes_link_82575(struct e1000_ case E1000_CTRL_EXT_LINK_MODE_1000BASE_KX: /* disable PCS autoneg and support parallel detect only */ pcs_autoneg = FALSE; - /* fall through to default case */ + /* FALLTHROUGH */ default: if (hw->mac.type == e1000_82575 || hw->mac.type == e1000_82576) { @@ -1805,6 +1805,7 @@ static s32 e1000_get_media_type_82575(struct e1000_hw break; } /* fall through for I2C based SGMII */ + /* FALLTHROUGH */ case E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES: /* read media type from SFP EEPROM */ ret_val = e1000_set_sfp_media_type_82575(hw); Modified: stable/10/sys/dev/e1000/e1000_mbx.c ============================================================================== --- stable/10/sys/dev/e1000/e1000_mbx.c Thu May 3 15:47:42 2018 (r333215) +++ stable/10/sys/dev/e1000/e1000_mbx.c Thu May 3 15:47:49 2018 (r333216) @@ -778,6 +778,7 @@ s32 e1000_init_mbx_params_pf(struct e1000_hw *hw) mbx->stats.reqs = 0; mbx->stats.acks = 0; mbx->stats.rsts = 0; + /* FALLTHROUGH */ default: return E1000_SUCCESS; } Modified: stable/10/sys/dev/e1000/e1000_phy.c ============================================================================== --- stable/10/sys/dev/e1000/e1000_phy.c Thu May 3 15:47:42 2018 (r333215) +++ stable/10/sys/dev/e1000/e1000_phy.c Thu May 3 15:47:49 2018 (r333216) @@ -1297,6 +1297,7 @@ s32 e1000_copper_link_setup_m88_gen2(struct e1000_hw * phy_data |= M88E1000_PSCR_AUTO_X_1000T; break; } + /* FALLTHROUGH */ case 0: default: phy_data |= M88E1000_PSCR_AUTO_X_MODE; Modified: stable/10/sys/dev/e1000/e1000_vf.c ============================================================================== --- stable/10/sys/dev/e1000/e1000_vf.c Thu May 3 15:47:42 2018 (r333215) +++ stable/10/sys/dev/e1000/e1000_vf.c Thu May 3 15:47:49 2018 (r333216) @@ -487,8 +487,10 @@ s32 e1000_promisc_set_vf(struct e1000_hw *hw, enum e10 break; case e1000_promisc_enabled: msgbuf |= E1000_VF_SET_PROMISC_MULTICAST; + /* FALLTHROUGH */ case e1000_promisc_unicast: msgbuf |= E1000_VF_SET_PROMISC_UNICAST; + /* FALLTHROUGH */ case e1000_promisc_disabled: break; default: From owner-svn-src-all@freebsd.org Thu May 3 16:19:47 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C1642FB0812; Thu, 3 May 2018 16:19:47 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7650C87568; Thu, 3 May 2018 16:19:47 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 713AA22252; Thu, 3 May 2018 16:19:47 +0000 (UTC) (envelope-from slavash@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43GJl4D064143; Thu, 3 May 2018 16:19:47 GMT (envelope-from slavash@FreeBSD.org) Received: (from slavash@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43GJlPU064142; Thu, 3 May 2018 16:19:47 GMT (envelope-from slavash@FreeBSD.org) Message-Id: <201805031619.w43GJlPU064142@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: slavash set sender to slavash@FreeBSD.org using -f From: Slava Shwartsman Date: Thu, 3 May 2018 16:19:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333217 - stable/11/contrib/ofed/libibumad X-SVN-Group: stable-11 X-SVN-Commit-Author: slavash X-SVN-Commit-Paths: stable/11/contrib/ofed/libibumad X-SVN-Commit-Revision: 333217 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 16:19:47 -0000 Author: slavash Date: Thu May 3 16:19:47 2018 New Revision: 333217 URL: https://svnweb.freebsd.org/changeset/base/333217 Log: MFC r333115: libibumad/umad.c: In get_port, ignore sysctl get rate errors This can cause ibpanic in ibstat when width is not set properly as can occur when Ethernet port is connected to InfiniBand fabric. ibpanic: [8167] main: stat of IB device 'mlx5_0' failed: m With this change, Rate is displayed as 0 with ibstat for this scenario. Approved by: hselasky (mentor), kib (mentor) Sponsored by: Mellanox Technologies Modified: stable/11/contrib/ofed/libibumad/umad.c Directory Properties: stable/11/ (props changed) Modified: stable/11/contrib/ofed/libibumad/umad.c ============================================================================== --- stable/11/contrib/ofed/libibumad/umad.c Thu May 3 15:47:49 2018 (r333216) +++ stable/11/contrib/ofed/libibumad/umad.c Thu May 3 16:19:47 2018 (r333217) @@ -138,6 +138,7 @@ static int get_port(const char *ca_name, const char *d strncpy(port->ca_name, ca_name, sizeof port->ca_name - 1); port->portnum = portnum; port->pkeys = NULL; + port->rate = 0; len = snprintf(port_dir, sizeof(port_dir), "%s/%d", dir, portnum); if (len < 0 || len > sizeof(port_dir)) @@ -155,8 +156,12 @@ static int get_port(const char *ca_name, const char *d goto clean; if (sys_read_uint(port_dir, SYS_PORT_PHY_STATE, &port->phys_state) < 0) goto clean; - if (sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate) < 0) - goto clean; + /* + * If width was not set properly this read may fail. + * Instead of failing everything, we will just skip the check + * and it will be set to 0. + */ + sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate); if (sys_read_uint(port_dir, SYS_PORT_CAPMASK, &capmask) < 0) goto clean; From owner-svn-src-all@freebsd.org Thu May 3 17:02:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A7474FB20A8; Thu, 3 May 2018 17:02:32 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2D0B57249C; Thu, 3 May 2018 17:02:32 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 27FD022A5A; Thu, 3 May 2018 17:02:32 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43H2WV9090783; Thu, 3 May 2018 17:02:32 GMT (envelope-from shurd@FreeBSD.org) Received: (from shurd@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43H2VkE090781; Thu, 3 May 2018 17:02:31 GMT (envelope-from shurd@FreeBSD.org) Message-Id: <201805031702.w43H2VkE090781@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: shurd set sender to shurd@FreeBSD.org using -f From: Stephen Hurd Date: Thu, 3 May 2018 17:02:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333218 - head/sys/net X-SVN-Group: head X-SVN-Commit-Author: shurd X-SVN-Commit-Paths: head/sys/net X-SVN-Commit-Revision: 333218 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 17:02:33 -0000 Author: shurd Date: Thu May 3 17:02:31 2018 New Revision: 333218 URL: https://svnweb.freebsd.org/changeset/base/333218 Log: Allow iflib NIC drivers to sleep rather than busy wait Since the move to SMP NIC driver locking has had to go through serious contortions using mtx around long running hardware operations. This moves iflib past that. Individual drivers may now sleep when appropriate. Submitted by: Matthew Macy Reviewed by: shurd Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D14983 Modified: head/sys/net/iflib.c head/sys/net/iflib.h Modified: head/sys/net/iflib.c ============================================================================== --- head/sys/net/iflib.c Thu May 3 16:19:47 2018 (r333217) +++ head/sys/net/iflib.c Thu May 3 17:02:31 2018 (r333218) @@ -163,7 +163,7 @@ struct iflib_ctx { if_shared_ctx_t ifc_sctx; struct if_softc_ctx ifc_softc_ctx; - struct mtx ifc_ctx_mtx; + struct sx ifc_ctx_sx; struct mtx ifc_state_mtx; uint16_t ifc_nhwtxqs; @@ -537,10 +537,10 @@ rxd_info_zero(if_rxd_info_t ri) #define CTX_ACTIVE(ctx) ((if_getdrvflags((ctx)->ifc_ifp) & IFF_DRV_RUNNING)) -#define CTX_LOCK_INIT(_sc, _name) mtx_init(&(_sc)->ifc_ctx_mtx, _name, "iflib ctx lock", MTX_DEF) -#define CTX_LOCK(ctx) mtx_lock(&(ctx)->ifc_ctx_mtx) -#define CTX_UNLOCK(ctx) mtx_unlock(&(ctx)->ifc_ctx_mtx) -#define CTX_LOCK_DESTROY(ctx) mtx_destroy(&(ctx)->ifc_ctx_mtx) +#define CTX_LOCK_INIT(_sc) sx_init(&(_sc)->ifc_ctx_sx, "iflib ctx lock") +#define CTX_LOCK(ctx) sx_xlock(&(ctx)->ifc_ctx_sx) +#define CTX_UNLOCK(ctx) sx_xunlock(&(ctx)->ifc_ctx_sx) +#define CTX_LOCK_DESTROY(ctx) sx_destroy(&(ctx)->ifc_ctx_sx) #define STATE_LOCK_INIT(_sc, _name) mtx_init(&(_sc)->ifc_state_mtx, _name, "iflib state lock", MTX_DEF) @@ -4277,7 +4277,9 @@ iflib_device_register(device_t dev, void *sc, if_share } } + CTX_LOCK(ctx); if ((err = IFDI_ATTACH_PRE(ctx)) != 0) { + CTX_UNLOCK(ctx); device_printf(dev, "IFDI_ATTACH_PRE failed %d\n", err); return (err); } @@ -4435,6 +4437,7 @@ iflib_device_register(device_t dev, void *sc, if_share if_setgetcounterfn(ctx->ifc_ifp, iflib_if_get_counter); iflib_add_device_sysctl_post(ctx); ctx->ifc_flags |= IFC_INIT_DONE; + CTX_UNLOCK(ctx); return (0); fail_detach: ether_ifdetach(ctx->ifc_ifp); @@ -4445,6 +4448,7 @@ fail_queues: /* XXX free queues */ fail: IFDI_DETACH(ctx); + CTX_UNLOCK(ctx); return (err); } @@ -4711,8 +4715,7 @@ iflib_register(if_ctx_t ctx) _iflib_assert(sctx); - CTX_LOCK_INIT(ctx, device_get_nameunit(ctx->ifc_dev)); - + CTX_LOCK_INIT(ctx); STATE_LOCK_INIT(ctx, device_get_nameunit(ctx->ifc_dev)); ifp = ctx->ifc_ifp = if_gethandle(IFT_ETHER); if (ifp == NULL) { @@ -5457,8 +5460,8 @@ iflib_io_tqg_attach(struct grouptask *gt, void *uniq, } void -iflib_config_gtask_init(if_ctx_t ctx, struct grouptask *gtask, gtask_fn_t *fn, - char *name) +iflib_config_gtask_init(void *ctx, struct grouptask *gtask, gtask_fn_t *fn, + const char *name) { GROUPTASK_INIT(gtask, 0, fn, ctx); @@ -5538,11 +5541,11 @@ iflib_add_int_delay_sysctl(if_ctx_t ctx, const char *n info, 0, iflib_sysctl_int_delay, "I", description); } -struct mtx * +struct sx * iflib_ctx_lock_get(if_ctx_t ctx) { - return (&ctx->ifc_ctx_mtx); + return (&ctx->ifc_ctx_sx); } static int Modified: head/sys/net/iflib.h ============================================================================== --- head/sys/net/iflib.h Thu May 3 16:19:47 2018 (r333217) +++ head/sys/net/iflib.h Thu May 3 17:02:31 2018 (r333218) @@ -373,8 +373,8 @@ void iflib_irq_free(if_ctx_t ctx, if_irq_t irq); void iflib_io_tqg_attach(struct grouptask *gt, void *uniq, int cpu, char *name); -void iflib_config_gtask_init(if_ctx_t ctx, struct grouptask *gtask, - gtask_fn_t *fn, char *name); +void iflib_config_gtask_init(void *ctx, struct grouptask *gtask, + gtask_fn_t *fn, const char *name); void iflib_config_gtask_deinit(struct grouptask *gtask); @@ -396,7 +396,7 @@ int iflib_dma_alloc_multi(if_ctx_t ctx, int *sizes, if void iflib_dma_free_multi(iflib_dma_info_t *dmalist, int count); -struct mtx *iflib_ctx_lock_get(if_ctx_t); +struct sx *iflib_ctx_lock_get(if_ctx_t); struct mtx *iflib_qset_lock_get(if_ctx_t, uint16_t); void iflib_led_create(if_ctx_t ctx); From owner-svn-src-all@freebsd.org Thu May 3 17:49:27 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 78EDCFB3929; Thu, 3 May 2018 17:49:27 +0000 (UTC) (envelope-from benno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2A6687CCAA; Thu, 3 May 2018 17:49:27 +0000 (UTC) (envelope-from benno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1EA8B23116; Thu, 3 May 2018 17:49:27 +0000 (UTC) (envelope-from benno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43HnQRd011613; Thu, 3 May 2018 17:49:26 GMT (envelope-from benno@FreeBSD.org) Received: (from benno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43HnQo5011612; Thu, 3 May 2018 17:49:26 GMT (envelope-from benno@FreeBSD.org) Message-Id: <201805031749.w43HnQo5011612@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: benno set sender to benno@FreeBSD.org using -f From: Benno Rice Date: Thu, 3 May 2018 17:49:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333219 - head/share/man/man9 X-SVN-Group: head X-SVN-Commit-Author: benno X-SVN-Commit-Paths: head/share/man/man9 X-SVN-Commit-Revision: 333219 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 17:49:27 -0000 Author: benno Date: Thu May 3 17:49:26 2018 New Revision: 333219 URL: https://svnweb.freebsd.org/changeset/base/333219 Log: Document ifdi_tx_queues_alloc and ifdi_rx_queues_alloc. Prior to this change the manual page documented ifdi_queues_alloc which has been replaced by separate methods for tx and rx queues. Reviewed by: kmacy, shurd Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D15218 Modified: head/share/man/man9/iflibdd.9 Modified: head/share/man/man9/iflibdd.9 ============================================================================== --- head/share/man/man9/iflibdd.9 Thu May 3 17:02:31 2018 (r333218) +++ head/share/man/man9/iflibdd.9 Thu May 3 17:49:26 2018 (r333219) @@ -1,5 +1,5 @@ .\" $FreeBSD$ -.Dd March 23, 2017 +.Dd May 3, 2018 .Dt IFLIBDD 9 .Os .Sh NAME @@ -10,13 +10,22 @@ .Ss "Soft Queue Setup and Teardown Functions" .Ss "Mandatory Functions" .Ft int -.Fo ifdi_queues_alloc +.Fo ifdi_tx_queues_alloc .Fa "if_ctx_t ctx" .Fa "caddr_t *vaddrs" .Fa "uint64_t *paddrs" -.Fa "int nqs" +.Fa "int ntxqs" +.Fa "int ntxqsets" .Fc .Ft int +.Fo ifdi_rx_queues_alloc +.Fa "if_ctx_t ctx" +.Fa "caddr_t *vaddrs" +.Fa "uint64_t *paddrs" +.Fa "int nrxqs" +.Fa "int nrxqsets" +.Fc +.Ft int .Fo ifdi_queues_free .Fa "if_ctx_t ctx" .Fc @@ -185,14 +194,20 @@ registers. .Ss Device Dependent Functions .Ss Soft Queue Setup and Teardown .Bl -ohang -offset indent -.It Fn ifdi_queues_alloc -Mandatory queues allocation function that is called during iflib_attach. +.It Fn ifdi_tx_queues_alloc +Mandatory function that is called during iflib_attach to allocate transmit +queues. vaddrs and paddrs are arrays of virtual and physical addresses respectively of -the hardware transmit and receive queues, and if relevany, any command -completion queues. -nqs is the number of queues per qset. -For example, a driver with a single receive and transmit queue would have a nqs -equal to 2. +the hardware transmit queues. +ntxqs is the number of queues per qset. +ntxqsets is the number of qsets. +.It Fn ifdi_rx_queues_alloc +Mandatory function that is called during iflib_attach to allocate receive +queues. +vaddrs and paddrs are arrays of virtual and physical addresses respectively of +the hardware receive queues. +nrxqs is the number of queues per qset. +nrxqsets is the number of qsets. .It Fn ifdi_queues_free Mandatory function that frees the allocated queues and associated transmit buffers. From owner-svn-src-all@freebsd.org Thu May 3 17:52:41 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 008EDFB3C88; Thu, 3 May 2018 17:52:41 +0000 (UTC) (envelope-from benno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A57467D8D3; Thu, 3 May 2018 17:52:40 +0000 (UTC) (envelope-from benno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A029E232BC; Thu, 3 May 2018 17:52:40 +0000 (UTC) (envelope-from benno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43HqeGU016470; Thu, 3 May 2018 17:52:40 GMT (envelope-from benno@FreeBSD.org) Received: (from benno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43HqeBG016468; Thu, 3 May 2018 17:52:40 GMT (envelope-from benno@FreeBSD.org) Message-Id: <201805031752.w43HqeBG016468@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: benno set sender to benno@FreeBSD.org using -f From: Benno Rice Date: Thu, 3 May 2018 17:52:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333220 - head/share/man/man9 X-SVN-Group: head X-SVN-Commit-Author: benno X-SVN-Commit-Paths: head/share/man/man9 X-SVN-Commit-Revision: 333220 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 17:52:41 -0000 Author: benno Date: Thu May 3 17:52:40 2018 New Revision: 333220 URL: https://svnweb.freebsd.org/changeset/base/333220 Log: Add a stub manual page for iflib(9). Currently 'man -k iflib' would find you the right pages for iflib documentation, namely iflibdd(9) and iflibdi(9) but 'man iflib' would leave you in the dark. This allows both approaches to find the relevant documentation. Reviewed by: kmacy, shurd Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D15219 Added: head/share/man/man9/iflib.9 (contents, props changed) Modified: head/share/man/man9/Makefile Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Thu May 3 17:49:26 2018 (r333219) +++ head/share/man/man9/Makefile Thu May 3 17:52:40 2018 (r333220) @@ -163,6 +163,7 @@ MAN= accept_filter.9 \ ieee80211_regdomain.9 \ ieee80211_scan.9 \ ieee80211_vap.9 \ + iflib.9 \ iflibdd.9 \ iflibdi.9 \ iflibtxrx.9 \ Added: head/share/man/man9/iflib.9 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man9/iflib.9 Thu May 3 17:52:40 2018 (r333220) @@ -0,0 +1,41 @@ +.\" $FreeBSD$ +.Dd May 3, 2018 +.Dt IFLIB 9 +.Os +.Sh NAME +.Nm iflib +.Nd Network Interface Driver Framework +.Sh DESCRIPTION +.Nm +is a framework for writing network interface drivers for FreeBSD. +It is designed to remove a large amount of the boilerplate that is often +needed for modern network interface devices, allowing driver authors to +focus on the specific code needed for their hardware. +.Pp +There are three logical components to +.Nm +each of which is described in its own manual page. +These are: +.Bl -tag -width ".Xr iflibtxrx 9" +.It Xr iflibdi 9 +Device-independent functions, used to integrate +.Nm +into the rest of the +.Fx +networking stack. +.It Xr iflibdd 9 +Device-dependent functions, used when writing new +.Nm +based drivers. +.It Xr iflibtxrx 9 +Device-dependent transmit and receive functions, used when writing new +.Nm +based drivers. +.Sh SEE ALSO +.Xr iflibdd 9 , +.Xr iflibdi 9 , +.Xr iflibtxrx 9 , +.Xr ifnet 9 +.Sh AUTHORS +.An Benno Rice Aq Mt benno@FreeBSD.org + From owner-svn-src-all@freebsd.org Thu May 3 18:20:36 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4B8C2FB4BF0; Thu, 3 May 2018 18:20:36 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id ED018811C1; Thu, 3 May 2018 18:20:35 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CDDFE23638; Thu, 3 May 2018 18:20:35 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43IKZZM027729; Thu, 3 May 2018 18:20:35 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43IKZ2q027727; Thu, 3 May 2018 18:20:35 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805031820.w43IKZ2q027727@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Thu, 3 May 2018 18:20:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333221 - head/share/man/man4 X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/share/man/man4 X-SVN-Commit-Revision: 333221 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 18:20:36 -0000 Author: kevans Date: Thu May 3 18:20:35 2018 New Revision: 333221 URL: https://svnweb.freebsd.org/changeset/base/333221 Log: rsu(4) does not require legal.realtek.license_ack=1 The rsu firmware license check has been disabled since r292756. Changes rsu(4) since the license ack is no longer required. While here, add `device rsufw` hint to the kernel configuration lines and add/update paths to the installed license file in both rsu(4) and rsufw(4). Submitted by: Mateusz Piotrowski (0mp) Reviewed by: bcr (manpages) MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D14966 Modified: head/share/man/man4/rsu.4 head/share/man/man4/rsufw.4 Modified: head/share/man/man4/rsu.4 ============================================================================== --- head/share/man/man4/rsu.4 Thu May 3 17:52:40 2018 (r333220) +++ head/share/man/man4/rsu.4 Thu May 3 18:20:35 2018 (r333221) @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd December 10, 2016 +.Dd April 4, 2018 .Dt RSU 4 .Os .Sh NAME @@ -30,22 +30,15 @@ place the following lines in your kernel configuration .Cd "device ohci" .Cd "device usb" .Cd "device rsu" +.Cd "device rsufw" .Cd "device wlan" .Ed .Pp Alternatively, to load the driver as a module at boot time, -place the following line in +place the following lines in .Xr loader.conf 5 : .Bd -literal -offset indent if_rsu_load="YES" -.Ed -.Pp -After you have read the license in -.Pa /usr/share/doc/legal/realtek.LICENSE -you will want to add the following lines to -.Xr loader.conf 5 : -.Bd -literal -offset indent -legal.realtek.license_ack=1 rsu-rtl8712fw_load="YES" .Ed .Sh DESCRIPTION @@ -102,6 +95,12 @@ The driver can be configured at runtime with .Xr ifconfig 8 . .Sh FILES +.Bl -tag -width ".Pa /usr/share/doc/legal/realtek.LICENSE" -compact +.It Pa /usr/share/doc/legal/realtek.LICENSE +.Nm +firmware license +.El +.Pp The driver needs at least version 1.2 of the following firmware file, which is loaded when an interface is attached: .Pp Modified: head/share/man/man4/rsufw.4 ============================================================================== --- head/share/man/man4/rsufw.4 Thu May 3 17:52:40 2018 (r333220) +++ head/share/man/man4/rsufw.4 Thu May 3 18:20:35 2018 (r333221) @@ -13,7 +13,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd July 21, 2013 +.Dd April 4, 2018 .Dt RSUFW 4 .Os .Sh NAME @@ -40,7 +40,7 @@ rsu-rtl8712fw_load="YES" This module provides the firmware for the Realtek RTL8188SU and RTL8192SU chip based USB WiFi adapters. Please read Realtek's license, -.Pa /usr/share/license/realtek . +.Pa /usr/share/doc/legal/realtek.LICENSE . .Sh SEE ALSO .Xr rsu 4 , .Xr firmware 9 From owner-svn-src-all@freebsd.org Thu May 3 19:00:51 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8DE66FB6200; Thu, 3 May 2018 19:00:51 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 390688C25C; Thu, 3 May 2018 19:00:51 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3401C23D1D; Thu, 3 May 2018 19:00:51 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43J0pbm049694; Thu, 3 May 2018 19:00:51 GMT (envelope-from jkim@FreeBSD.org) Received: (from jkim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43J0olU049691; Thu, 3 May 2018 19:00:50 GMT (envelope-from jkim@FreeBSD.org) Message-Id: <201805031900.w43J0olU049691@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jkim set sender to jkim@FreeBSD.org using -f From: Jung-uk Kim Date: Thu, 3 May 2018 19:00:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333222 - in head/sys: dev/acpica dev/acpica/Osd x86/acpica X-SVN-Group: head X-SVN-Commit-Author: jkim X-SVN-Commit-Paths: in head/sys: dev/acpica dev/acpica/Osd x86/acpica X-SVN-Commit-Revision: 333222 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:00:51 -0000 Author: jkim Date: Thu May 3 19:00:50 2018 New Revision: 333222 URL: https://svnweb.freebsd.org/changeset/base/333222 Log: Redo r332918 with the ACPICA API and remove debug.acpi.suspend_deep_bounce. AcpiOsEnterSleep() was meant to implement this feature. Reviewed by: avg Modified: head/sys/dev/acpica/Osd/OsdHardware.c head/sys/dev/acpica/acpi.c head/sys/x86/acpica/acpi_wakeup.c Modified: head/sys/dev/acpica/Osd/OsdHardware.c ============================================================================== --- head/sys/dev/acpica/Osd/OsdHardware.c Thu May 3 18:20:35 2018 (r333221) +++ head/sys/dev/acpica/Osd/OsdHardware.c Thu May 3 19:00:50 2018 (r333222) @@ -37,9 +37,15 @@ __FBSDID("$FreeBSD$"); #include #include +extern int acpi_susp_bounce; + ACPI_STATUS AcpiOsEnterSleep(UINT8 SleepState, UINT32 RegaValue, UINT32 RegbValue) { + + /* If testing device suspend only, back out of everything here. */ + if (acpi_susp_bounce) + return (AE_CTRL_TERMINATE); return (AE_OK); } Modified: head/sys/dev/acpica/acpi.c ============================================================================== --- head/sys/dev/acpica/acpi.c Thu May 3 18:20:35 2018 (r333221) +++ head/sys/dev/acpica/acpi.c Thu May 3 19:00:50 2018 (r333222) @@ -287,15 +287,10 @@ SYSCTL_INT(_debug_acpi, OID_AUTO, default_register_wid /* Allow users to override quirks. */ TUNABLE_INT("debug.acpi.quirks", &acpi_quirks); -static int acpi_susp_bounce; +int acpi_susp_bounce; SYSCTL_INT(_debug_acpi, OID_AUTO, suspend_bounce, CTLFLAG_RW, &acpi_susp_bounce, 0, "Don't actually suspend, just test devices."); -int acpi_susp_deep_bounce; -SYSCTL_INT(_debug_acpi, OID_AUTO, suspend_deep_bounce, CTLFLAG_RW, - &acpi_susp_deep_bounce, 0, "Don't actually suspend, " - "bail out just before entering the sleep state."); - /* * ACPI can only be loaded as a module by the loader; activating it after * system bootstrap time is not useful, and can be fatal to the system. @@ -2951,10 +2946,6 @@ acpi_EnterSleepState(struct acpi_softc *sc, int state) goto backout; } slp_state = ACPI_SS_DEV_SUSPEND; - - /* If testing device suspend only, back out of everything here. */ - if (acpi_susp_bounce) - goto backout; status = AcpiEnterSleepStatePrep(state); if (ACPI_FAILURE(status)) { Modified: head/sys/x86/acpica/acpi_wakeup.c ============================================================================== --- head/sys/x86/acpica/acpi_wakeup.c Thu May 3 18:20:35 2018 (r333221) +++ head/sys/x86/acpica/acpi_wakeup.c Thu May 3 19:00:50 2018 (r333222) @@ -79,7 +79,7 @@ CTASSERT(sizeof(wakecode) < PAGE_SIZE - 1024); extern int acpi_resume_beep; extern int acpi_reset_video; -extern int acpi_susp_deep_bounce; +extern int acpi_susp_bounce; #ifdef SMP extern struct susppcb **susppcbs; @@ -277,9 +277,6 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state) PTD[KPTDI] = PTD[LOWPTDI]; #endif - if (acpi_susp_deep_bounce) - resumectx(pcb); - /* Call ACPICA to enter the desired sleep state */ if (state == ACPI_STATE_S4 && sc->acpi_s4bios) status = AcpiEnterSleepStateS4bios(); @@ -291,6 +288,9 @@ acpi_sleep_machdep(struct acpi_softc *sc, int state) AcpiFormatException(status)); return (0); /* couldn't sleep */ } + + if (acpi_susp_bounce) + resumectx(pcb); for (;;) ia32_pause(); From owner-svn-src-all@freebsd.org Thu May 3 19:37:31 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8923EFB783D; Thu, 3 May 2018 19:37:31 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass DE-2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E23D66DDC0; Thu, 3 May 2018 19:37:30 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from thor.intern.walstatt.dynvpn.de ([77.14.33.35]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Ltqmn-1eFaSO1fwz-011B1q; Thu, 03 May 2018 21:32:13 +0200 Date: Thu, 3 May 2018 21:31:39 +0200 From: "O. Hartmann" To: Stephen Hurd Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333175 - in head/sys: kern net netinet netinet6 sys Message-ID: <20180503213206.7fba052c@thor.intern.walstatt.dynvpn.de> In-Reply-To: <201805021936.w42JaTlq039053@repo.freebsd.org> References: <201805021936.w42JaTlq039053@repo.freebsd.org> Organization: WALSTATT User-Agent: OutScare 3.1415926 X-Operating-System: ImNotAnOperatingSystem 3.141592527 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:uvs0RfuGk0FZLYY3rJeqdpLa1GzehE1iC7yTxNUgGRa9cz7Yxxz 1zkRloA925AmatFg/lUuxqA2smLbfdAPgR80iJCvWK3StTPo+yYbUMQr+cpNV5qz+bcDKbV fCV9TlXIgAkEeBRx+Aujo2QQSTRHMb3adFZ+5RPzI6tyV90jHrHy9LI4PBbx3jv2pyYwCH8 MIa6wacpLZ4HP4LcxHI1A== X-UI-Out-Filterresults: notjunk:1;V01:K0:QIzzL5SJClE=:BA83T7xhvXwWcXDLqef41R b4Sw/BeJm5AXTI7b/IMCZNe0kf/ZcyA1Ev4e5Hb6xTjripqal2Ctf6aDDSSt2uKbgCS1HZLS8 8Yp26wELvnxS1tVSPpxNocD1b0lqYAZrYq0AwqDDzhQclo1omkpxdGhzqcYCaKZeZbX0thlJ5 KXW+VpebSfrkwtVQypRRE6Pqy3+0wl1aE13O7/dUNnZ5XVT4Ua5H1+Ed3taEmmO4a824u/IJ6 umiylkawPspsbK0AydtPuPfHE8XHz04yMljahqCrGG09tiREHSWi/UIx2KpbjHXxY16+JaqGR JGQPq57JjD3kBk1wE3wx1gPRvo1cbd8D7N73NN9cA88M1dyH6RbIWvfcUNq8p1gRlIjM8f4TC 7g5RxSGkIpm63h5k4ljY4ytxuPjHtUkS7rjpztjvZvpFbwn1mQJhgkpPLQiDtA8Gd4DBPVPmq MCzOBOpvIXw4huXG6TnYGpQATt6HHHv9B8vqANmzQg0IFaEBpTZQ8MFpH9owJLjvmv6XA3Zet fnqIwFsRvJM7kifpHrs0hAIKh3oKlfbLd+OPkzZUn1BgeA8hsHQFSJo92djZcmKjzv8Q2J8GT 0eo/7ByTAWJzrCCFr9oPhvZuMq/UGKYpHCvAU6c9WnLcFE9auhwKits5/EuNm5F5xehMgV6Tq awhjCk0/Zl1cB85e9G8AH9mVrzSHqTyqEQcXiWqGmkBffUunpUeaULz9LlykOhvzBeH0BaNc2 fseVYLdVa/0vGcaB+/D39NIQqCPV/E/L6HfiEQLslbB6X1jOWsHTvF1wcd4FzEuQ5bPquZG+F z86SLcD X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:37:32 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBNTEyDQoNCkFtIFdl ZCwgMiBNYXkgMjAxOCAxOTozNjoyOSArMDAwMCAoVVRDKQ0KU3RlcGhlbiBIdXJkIDxzaHVyZEBG cmVlQlNELm9yZz4gc2NocmllYjoNCg0KPiBBdXRob3I6IHNodXJkDQo+IERhdGU6IFdlZCBNYXkg IDIgMTk6MzY6MjkgMjAxOA0KPiBOZXcgUmV2aXNpb246IDMzMzE3NQ0KPiBVUkw6IGh0dHBzOi8v c3Zud2ViLmZyZWVic2Qub3JnL2NoYW5nZXNldC9iYXNlLzMzMzE3NQ0KPiANCj4gTG9nOg0KPiAg IFNlcGFyYXRlIGxpc3QgbWFuaXB1bGF0aW9uIGxvY2tpbmcgZnJvbSBzdGF0ZSBjaGFuZ2UgaW4g bXVsdGljYXN0DQo+ICAgDQo+ICAgTXVsdGljYXN0IGluY29ycmVjdGx5IGNhbGxzIGluIHRvIGRy aXZlcnMgd2l0aCBhIG11dGV4IGhlbGQgY2F1c2luZyBkcml2ZXJzDQo+ICAgdG8gaGF2ZSB0byBn byB0aHJvdWdoIGFsbCBtYW5uZXIgb2YgY29udG9ydGlvbnMgdG8gdXNlIGEgbm9uIHNsZWVwYWJs ZSBsb2NrLg0KPiAgIFNlcmlhbGl6ZSBtdWx0aWNhc3QgdXBkYXRlcyBpbnN0ZWFkLg0KPiAgIA0K PiAgIFN1Ym1pdHRlZCBieToJbW1hY3kgPG1tYWN5QG1hdHRtYWN5LmlvPg0KPiAgIFJldmlld2Vk IGJ5OglzaHVyZCwgc2JydW5vDQo+ICAgU3BvbnNvcmVkIGJ5OglMaW1lbGlnaHQgTmV0d29ya3MN Cj4gICBEaWZmZXJlbnRpYWwgUmV2aXNpb246CWh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9E MTQ5NjkNCj4gDQo+IE1vZGlmaWVkOg0KPiAgIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFza3F1ZXVl LmMNCj4gICBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ICAgaGVhZC9zeXMvbmV0L2lm LmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0L2lnbXAuYw0KPiAgIGhlYWQvc3lzL25ldGluZXQvaWdt cF92YXIuaA0KPiAgIGhlYWQvc3lzL25ldGluZXQvaW4uYw0KPiAgIGhlYWQvc3lzL25ldGluZXQv aW5fbWNhc3QuYw0KPiAgIGhlYWQvc3lzL25ldGluZXQvaW5fcGNiLmMNCj4gICBoZWFkL3N5cy9u ZXRpbmV0L2luX3Zhci5oDQo+ICAgaGVhZC9zeXMvbmV0aW5ldC9pcF9jYXJwLmMNCj4gICBoZWFk L3N5cy9uZXRpbmV0Ni9pbjYuYw0KPiAgIGhlYWQvc3lzL25ldGluZXQ2L2luNl9pZmF0dGFjaC5j DQo+ICAgaGVhZC9zeXMvbmV0aW5ldDYvaW42X21jYXN0LmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0 Ni9pbjZfcGNiLmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfdmFyLmgNCj4gICBoZWFkL3N5 cy9uZXRpbmV0Ni9tbGQ2LmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9tbGQ2X3Zhci5oDQo+ICAg aGVhZC9zeXMvc3lzL2d0YXNrcXVldWUuaA0KPiANCj4gTW9kaWZpZWQ6IGhlYWQvc3lzL2tlcm4v c3Vicl9ndGFza3F1ZXVlLmMNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IC0tLSBoZWFkL3N5 cy9rZXJuL3N1YnJfZ3Rhc2txdWV1ZS5jCVdlZCBNYXkgIDIgMTc6NDE6MDAgMjAxOAkocjMzMzE3 NCkNCj4gKysrIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFza3F1ZXVlLmMJV2VkIE1heSAgMiAxOToz NjoyOSAyMDE4CShyMzMzMTc1KQ0KPiBAQCAtNTMsNiArNTMsNyBAQCBzdGF0aWMgdm9pZAlndGFz a3F1ZXVlX3RocmVhZF9lbnF1ZXVlKHZvaWQgKik7DQo+ICBzdGF0aWMgdm9pZAlndGFza3F1ZXVl X3RocmVhZF9sb29wKHZvaWQgKmFyZyk7DQo+ICANCj4gIFRBU0tRR1JPVVBfREVGSU5FKHNvZnRp cnEsIG1wX25jcHVzLCAxKTsNCj4gK1RBU0tRR1JPVVBfREVGSU5FKGNvbmZpZywgMSwgMSk7DQo+ ICANCj4gIHN0cnVjdCBndGFza3F1ZXVlX2J1c3kgew0KPiAgCXN0cnVjdCBndGFzawkqdGJfcnVu bmluZzsNCj4gQEAgLTY2Miw3ICs2NjMsNyBAQCBTWVNJTklUKHRxZ19yZWNvcmRfc21wX3N0YXJ0 ZWQsIFNJX1NVQl9TTVAsIFNJX09SREVSX0YNCj4gIA0KPiAgdm9pZA0KPiAgdGFza3Fncm91cF9h dHRhY2goc3RydWN0IHRhc2txZ3JvdXAgKnFncm91cCwgc3RydWN0IGdyb3VwdGFzayAqZ3Rhc2ss DQo+IC0gICAgdm9pZCAqdW5pcSwgaW50IGlycSwgY2hhciAqbmFtZSkNCj4gKyAgICB2b2lkICp1 bmlxLCBpbnQgaXJxLCBjb25zdCBjaGFyICpuYW1lKQ0KPiAgew0KPiAgCWNwdXNldF90IG1hc2s7 DQo+ICAJaW50IHFpZCwgZXJyb3I7DQo+IEBAIC05NzYsNCArOTc3LDEzIEBAIHZvaWQNCj4gIHRh c2txZ3JvdXBfZGVzdHJveShzdHJ1Y3QgdGFza3Fncm91cCAqcWdyb3VwKQ0KPiAgew0KPiAgDQo+ ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK3Rhc2txZ3JvdXBfY29uZmlnX2d0YXNrX2luaXQodm9pZCAq Y3R4LCBzdHJ1Y3QgZ3JvdXB0YXNrICpndGFzaywgZ3Rhc2tfZm5fdCAqZm4sDQo+ICsJY29uc3Qg Y2hhciAqbmFtZSkNCj4gK3sNCj4gKw0KPiArCUdST1VQVEFTS19JTklUKGd0YXNrLCAwLCBmbiwg Y3R4KTsNCj4gKwl0YXNrcWdyb3VwX2F0dGFjaChxZ3JvdXBfY29uZmlnLCBndGFzaywgZ3Rhc2ss IC0xLCBuYW1lKTsNCj4gIH0NCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0 bmVzcy5jDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiAtLS0gaGVhZC9zeXMva2Vybi9zdWJy X3dpdG5lc3MuYwlXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTgJKHIzMzMxNzQpDQo+ICsrKyBoZWFk L3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jCVdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOAkocjMzMzE3 NSkNCj4gQEAgLTUzMiwxOCArNTMyLDIyIEBAIHN0YXRpYyBzdHJ1Y3Qgd2l0bmVzc19vcmRlcl9s aXN0X2VudHJ5IG9yZGVyX2xpc3RzW10gPQ0KPiAgCSAqIElQdjQgbXVsdGljYXN0Og0KPiAgCSAq IHByb3RvY29sIGxvY2tzIGJlZm9yZSBpbnRlcmZhY2UgbG9ja3MsIGFmdGVyIFVEUCBsb2Nrcy4N Cj4gIAkgKi8NCj4gKwl7ICJpbl9tdWx0aV9zeCIsICZsb2NrX2NsYXNzX3N4IH0sDQo+ICAJeyAi dWRwaW5wIiwgJmxvY2tfY2xhc3NfcncgfSwNCj4gLQl7ICJpbl9tdWx0aV9tdHgiLCAmbG9ja19j bGFzc19tdHhfc2xlZXAgfSwNCj4gKwl7ICJpbl9tdWx0aV9saXN0X210eCIsICZsb2NrX2NsYXNz X210eF9zbGVlcCB9LA0KPiAgCXsgImlnbXBfbXR4IiwgJmxvY2tfY2xhc3NfbXR4X3NsZWVwIH0s DQo+ICsJeyAiaWZuZXRfcnciLCAmbG9ja19jbGFzc19ydyB9LA0KPiAgCXsgImlmX2FkZHJfbG9j ayIsICZsb2NrX2NsYXNzX3J3IH0sDQo+ICAJeyBOVUxMLCBOVUxMIH0sDQo+ICAJLyoNCj4gIAkg KiBJUHY2IG11bHRpY2FzdDoNCj4gIAkgKiBwcm90b2NvbCBsb2NrcyBiZWZvcmUgaW50ZXJmYWNl IGxvY2tzLCBhZnRlciBVRFAgbG9ja3MuDQo+ICAJICovDQo+ICsJeyAiaW42X211bHRpX3N4Iiwg JmxvY2tfY2xhc3Nfc3ggfSwNCj4gIAl7ICJ1ZHBpbnAiLCAmbG9ja19jbGFzc19ydyB9LA0KPiAt CXsgImluNl9tdWx0aV9tdHgiLCAmbG9ja19jbGFzc19tdHhfc2xlZXAgfSwNCj4gKwl7ICJpbjZf bXVsdGlfbGlzdF9tdHgiLCAmbG9ja19jbGFzc19tdHhfc2xlZXAgfSwNCj4gIAl7ICJtbGRfbXR4 IiwgJmxvY2tfY2xhc3NfbXR4X3NsZWVwIH0sDQo+ICsJeyAiaWZuZXRfcnciLCAmbG9ja19jbGFz c19ydyB9LA0KPiAgCXsgImlmX2FkZHJfbG9jayIsICZsb2NrX2NsYXNzX3J3IH0sDQo+ICAJeyBO VUxMLCBOVUxMIH0sDQo+ICAJLyoNCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9uZXQvaWYuYw0K PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhlYWQvc3lzL25ldC9pZi5jCVdlZCBNYXkg IDIgMTc6NDE6MDAgMjAxOAkocjMzMzE3NCkNCj4gKysrIGhlYWQvc3lzL25ldC9pZi5jCVdlZCBN YXkgIDIgMTk6MzY6MjkgMjAxOAkocjMzMzE3NSkNCj4gQEAgLTk4NSwxMSArOTg1LDEzIEBAIHN0 YXRpYyB2b2lkDQo+ICBpZl9wdXJnZW1hZGRycyhzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHsNCj4g IAlzdHJ1Y3QgaWZtdWx0aWFkZHIgKmlmbWE7DQo+IC0Jc3RydWN0IGlmbXVsdGlhZGRyICpuZXh0 Ow0KPiAgDQo+ICAJSUZfQUREUl9XTE9DSyhpZnApOw0KPiAtCVRBSUxRX0ZPUkVBQ0hfU0FGRShp Zm1hLCAmaWZwLT5pZl9tdWx0aWFkZHJzLCBpZm1hX2xpbmssIG5leHQpDQo+ICsJd2hpbGUgKCFU QUlMUV9FTVBUWSgmaWZwLT5pZl9tdWx0aWFkZHJzKSkgew0KPiArCQlpZm1hID0gVEFJTFFfRklS U1QoJmlmcC0+aWZfbXVsdGlhZGRycyk7DQo+ICsJCVRBSUxRX1JFTU9WRSgmaWZwLT5pZl9tdWx0 aWFkZHJzLCBpZm1hLCBpZm1hX2xpbmspOw0KPiAgCQlpZl9kZWxtdWx0aV9sb2NrZWQoaWZwLCBp Zm1hLCAxKTsNCj4gKwl9DQo+ICAJSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ICB9DQo+ICANCj4g QEAgLTM0MjksNiArMzQzMSwxMiBAQCBpZl9hZGRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgc3Ry dWN0IHNvY2thZGRyICpzYSwNCj4gIAlzdHJ1Y3Qgc29ja2FkZHJfZGwgc2RsOw0KPiAgCWludCBl cnJvcjsNCj4gIA0KPiArI2lmZGVmIElORVQNCj4gKwlJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NF UlQoKTsNCj4gKyNlbmRpZg0KPiArI2lmZGVmIElORVQ2DQo+ICsJSU42X01VTFRJX0xJU1RfVU5M T0NLX0FTU0VSVCgpOw0KPiArI2VuZGlmDQo+ICAJLyoNCj4gIAkgKiBJZiB0aGUgYWRkcmVzcyBp cyBhbHJlYWR5IHByZXNlbnQsIHJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gaXQ7DQo+ICAJICog b3RoZXJ3aXNlLCBhbGxvY2F0ZSBzdG9yYWdlIGFuZCBzZXQgdXAgYSBuZXcgYWRkcmVzcy4NCj4g QEAgLTM2MTAsNiArMzYxOCw5IEBAIGlmX2RlbG11bHRpX2lmbWEoc3RydWN0IGlmbXVsdGlhZGRy ICppZm1hKQ0KPiAgCXN0cnVjdCBpZm5ldCAqaWZwOw0KPiAgCWludCBsYXN0cmVmOw0KPiAgDQo+ ICsjaWZkZWYgSU5FVA0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLX0FTU0VSVCgpOw0KPiArI2Vu ZGlmDQo+ICAJaWZwID0gaWZtYS0+aWZtYV9pZnA7DQo+ICAjaWZkZWYgRElBR05PU1RJQw0KPiAg CWlmIChpZnAgPT0gTlVMTCkgew0KPiBAQCAtMzcxMSw4ICszNzIyLDcgQEAgaWZfZGVsbXVsdGlf bG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZtdWx0aWFkDQo+ICAJCQlpZl9mcmVl bXVsdGkobGxfaWZtYSk7DQo+ICAJCX0NCj4gIAl9DQo+IC0NCj4gLQlpZiAoaWZwICE9IE5VTEwp DQo+ICsJaWYgKGlmcCAhPSBOVUxMICYmIGRldGFjaGluZyA9PSAwKQ0KPiAgCQlUQUlMUV9SRU1P VkUoJmlmcC0+aWZfbXVsdGlhZGRycywgaWZtYSwgaWZtYV9saW5rKTsNCj4gIA0KPiAgCWlmX2Zy ZWVtdWx0aShpZm1hKTsNCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9uZXRpbmV0L2lnbXAuYw0K PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhlYWQvc3lzL25ldGluZXQvaWdtcC5jCVdl ZCBNYXkgIDIgMTc6NDE6MDAgMjAxOAkocjMzMzE3NCkNCj4gKysrIGhlYWQvc3lzL25ldGluZXQv aWdtcC5jCVdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOAkocjMzMzE3NSkNCj4gQEAgLTEzNiw3ICsx MzYsNyBAQCBzdGF0aWMgaW50CWlnbXBfdjNfZW5xdWV1ZV9ncm91cF9yZWNvcmQoc3RydWN0IG1i dWZxICoNCj4gIAkJICAgIHN0cnVjdCBpbl9tdWx0aSAqLCBjb25zdCBpbnQsIGNvbnN0IGludCwg Y29uc3QgaW50KTsNCj4gIHN0YXRpYyBpbnQJaWdtcF92M19lbnF1ZXVlX2ZpbHRlcl9jaGFuZ2Uo c3RydWN0IG1idWZxICosDQo+ICAJCSAgICBzdHJ1Y3QgaW5fbXVsdGkgKik7DQo+IC1zdGF0aWMg dm9pZAlpZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKiwN Cj4gK3N0YXRpYyB2b2lkCWlnbXBfdjNfcHJvY2Vzc19ncm91cF90aW1lcnMoc3RydWN0IGluX211 bHRpX2hlYWQgKiwNCj4gIAkJICAgIHN0cnVjdCBtYnVmcSAqLCBzdHJ1Y3QgbWJ1ZnEgKiwgc3Ry dWN0IGluX211bHRpICosDQo+ICAJCSAgICBjb25zdCBpbnQpOw0KPiAgc3RhdGljIGludAlpZ21w X3YzX21lcmdlX3N0YXRlX2NoYW5nZXMoc3RydWN0IGluX211bHRpICosDQo+IEBAIC0xNjIsMTIg KzE2MiwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGlzcl9oYW5kbGVyIGlnbXBfbmggPSB7 DQo+ICAgKiB0aGVtc2VsdmVzIGFyZSBub3QgdmlydHVhbGl6ZWQuDQo+ICAgKg0KPiAgICogTG9j a2luZzoNCj4gLSAqICAqIFRoZSBwZXJtaXR0ZWQgbG9jayBvcmRlciBpczogSU5fTVVMVElfTE9D SywgSUdNUF9MT0NLLCBJRl9BRERSX0xPQ0suDQo+ICsgKiAgKiBUaGUgcGVybWl0dGVkIGxvY2sg b3JkZXIgaXM6IElOX01VTFRJX0xJU1RfTE9DSywgSUdNUF9MT0NLLCBJRl9BRERSX0xPQ0suDQo+ ICAgKiAgICBBbnkgbWF5IGJlIHRha2VuIGluZGVwZW5kZW50bHk7IGlmIGFueSBhcmUgaGVsZCBh dCB0aGUgc2FtZQ0KPiAgICogICAgdGltZSwgdGhlIGFib3ZlIGxvY2sgb3JkZXIgbXVzdCBiZSBm b2xsb3dlZC4NCj4gICAqICAqIEFsbCBvdXRwdXQgaXMgZGVsZWdhdGVkIHRvIHRoZSBuZXRpc3Iu DQo+ICAgKiAgICBOb3cgdGhhdCBHaWFudCBoYXMgYmVlbiBlbGltaW5hdGVkLCB0aGUgbmV0aXNy IG1heSBiZSBpbmxpbmVkLg0KPiAtICogICogSU5fTVVMVElfTE9DSyBjb3ZlcnMgaW5fbXVsdGku DQo+ICsgKiAgKiBJTl9NVUxUSV9MSVNUX0xPQ0sgY292ZXJzIGluX211bHRpLg0KPiAgICogICog SUdNUF9MT0NLIGNvdmVycyBpZ21wX2lmc29mdGMgYW5kIGFueSBnbG9iYWwgdmFyaWFibGVzIGlu IHRoaXMgZmlsZSwNCj4gICAqICAgIGluY2x1ZGluZyB0aGUgb3V0cHV0IHF1ZXVlLg0KPiAgICog ICogSUZfQUREUl9MT0NLIGNvdmVycyBpZl9tdWx0aWFkZHJzLCB3aGljaCBpcyB1c2VkIGZvciBh IHZhcmlldHkgb2YNCj4gQEAgLTQ0MSw3ICs0NDEsNyBAQCBzeXNjdGxfaWdtcF9pZmluZm8oU1lT Q1RMX0hBTkRMRVJfQVJHUykNCj4gIAlpZiAoZXJyb3IpDQo+ICAJCXJldHVybiAoZXJyb3IpOw0K PiAgDQo+IC0JSU5fTVVMVElfTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAg CUlHTVBfTE9DSygpOw0KPiAgDQo+ICAJaWYgKG5hbWVbMF0gPD0gMCB8fCBuYW1lWzBdID4gVl9p Zl9pbmRleCkgew0KPiBAQCAtNDc1LDcgKzQ3NSw3IEBAIHN5c2N0bF9pZ21wX2lmaW5mbyhTWVND VExfSEFORExFUl9BUkdTKQ0KPiAgDQo+ICBvdXRfbG9ja2VkOg0KPiAgCUlHTVBfVU5MT0NLKCk7 DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4g IAlyZXR1cm4gKGVycm9yKTsNCj4gIH0NCj4gIA0KPiBAQCAtNTg2LDcgKzU4Niw2IEBAIGlnaV9h bGxvY19sb2NrZWQoLypjb25zdCovIHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiAgCWlnaS0+aWdpX3Fp ID0gSUdNUF9RSV9JTklUOw0KPiAgCWlnaS0+aWdpX3FyaSA9IElHTVBfUVJJX0lOSVQ7DQo+ICAJ aWdpLT5pZ2lfdXJpID0gSUdNUF9VUklfSU5JVDsNCj4gLQlTTElTVF9JTklUKCZpZ2ktPmlnaV9y ZWxpbm1oZWFkKTsNCj4gIAltYnVmcV9pbml0KCZpZ2ktPmlnaV9ncSwgSUdNUF9NQVhfUkVTUE9O U0VfUEFDS0VUUyk7DQo+ICANCj4gIAlMSVNUX0lOU0VSVF9IRUFEKCZWX2lnaV9oZWFkLCBpZ2ks IGlnaV9saW5rKTsNCj4gQEAgLTYxMiwxMSArNjExLDEyIEBAIGlnbXBfaWZkZXRhY2goc3RydWN0 IGlmbmV0ICppZnApDQo+ICB7DQo+ICAJc3RydWN0IGlnbXBfaWZzb2Z0YwkqaWdpOw0KPiAgCXN0 cnVjdCBpZm11bHRpYWRkcgkqaWZtYTsNCj4gLQlzdHJ1Y3QgaW5fbXVsdGkJCSppbm0sICp0aW5t Ow0KPiAtDQo+ICsJc3RydWN0IGluX211bHRpCQkqaW5tOw0KPiArCXN0cnVjdCBpbl9tdWx0aV9o ZWFkIGlubV9mcmVlX3RtcDsNCj4gIAlDVFIzKEtUUl9JR01QVjMsICIlczogY2FsbGVkIGZvciBp ZnAgJXAoJXMpIiwgX19mdW5jX18sIGlmcCwNCj4gIAkgICAgaWZwLT5pZl94bmFtZSk7DQo+ICAN Cj4gKwlTTElTVF9JTklUKCZpbm1fZnJlZV90bXApOw0KPiAgCUlHTVBfTE9DSygpOw0KPiAgDQo+ ICAJaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5pZl9hZmRhdGFbQUZfSU5FVF0pLT5p aV9pZ21wOw0KPiBAQCAtNjMxLDI0ICs2MzEsMTUgQEAgaWdtcF9pZmRldGFjaChzdHJ1Y3QgaWZu ZXQgKmlmcCkNCj4gIAkJCSAgICAoIiVzOiBpZm1hX3Byb3Rvc3BlYyBpcyBOVUxMIiwgX19mdW5j X18pKTsNCj4gICNlbmRpZg0KPiAgCQkJaW5tID0gKHN0cnVjdCBpbl9tdWx0aSAqKWlmbWEtPmlm bWFfcHJvdG9zcGVjOw0KPiAtCQkJaWYgKGlubS0+aW5tX3N0YXRlID09IElHTVBfTEVBVklOR19N RU1CRVIpIHsNCj4gLQkJCQlTTElTVF9JTlNFUlRfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwN Cj4gLQkJCQkgICAgaW5tLCBpbm1fbnJlbGUpOw0KPiAtCQkJfQ0KPiArCQkJaWYgKGlubS0+aW5t X3N0YXRlID09IElHTVBfTEVBVklOR19NRU1CRVIpDQo+ICsJCQkJaW5tX3JlbGVfbG9ja2VkKCZp bm1fZnJlZV90bXAsIGlubSk7DQo+ICAJCQlpbm1fY2xlYXJfcmVjb3JkZWQoaW5tKTsNCj4gIAkJ fQ0KPiAgCQlJRl9BRERSX1JVTkxPQ0soaWZwKTsNCj4gLQkJLyoNCj4gLQkJICogRnJlZSB0aGUg aW5fbXVsdGkgcmVmZXJlbmNlKHMpIGZvciB0aGlzIElHTVAgbGlmZWN5Y2xlLg0KPiAtCQkgKi8N Cj4gLQkJU0xJU1RfRk9SRUFDSF9TQUZFKGlubSwgJmlnaS0+aWdpX3JlbGlubWhlYWQsIGlubV9u cmVsZSwNCj4gLQkJICAgIHRpbm0pIHsNCj4gLQkJCVNMSVNUX1JFTU9WRV9IRUFEKCZpZ2ktPmln aV9yZWxpbm1oZWFkLCBpbm1fbnJlbGUpOw0KPiAtCQkJaW5tX3JlbGVhc2VfbG9ja2VkKGlubSk7 DQo+IC0JCX0NCj4gKwkJaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZCgmaW5tX2ZyZWVfdG1wKTsN Cj4gIAl9DQo+IC0NCj4gIAlJR01QX1VOTE9DSygpOw0KPiArDQo+ICB9DQo+ICANCj4gIC8qDQo+ IEBAIC02ODQsMTEgKzY3NSw2IEBAIGlnaV9kZWxldGVfbG9ja2VkKGNvbnN0IHN0cnVjdCBpZm5l dCAqaWZwKQ0KPiAgCQkJbWJ1ZnFfZHJhaW4oJmlnaS0+aWdpX2dxKTsNCj4gIA0KPiAgCQkJTElT VF9SRU1PVkUoaWdpLCBpZ2lfbGluayk7DQo+IC0NCj4gLQkJCUtBU1NFUlQoU0xJU1RfRU1QVFko JmlnaS0+aWdpX3JlbGlubWhlYWQpLA0KPiAtCQkJICAgICgiJXM6IHRoZXJlIGFyZSBkYW5nbGlu ZyBpbl9tdWx0aSByZWZlcmVuY2VzIiwNCj4gLQkJCSAgICBfX2Z1bmNfXykpOw0KPiAtDQo+ICAJ CQlmcmVlKGlnaSwgTV9JR01QKTsNCj4gIAkJCXJldHVybjsNCj4gIAkJfQ0KPiBAQCAtNzIyLDcg KzcwOCw3IEBAIGlnbXBfaW5wdXRfdjFfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0 cnVjdCBpcA0KPiAgCX0NCj4gIAlJR01QU1RBVF9JTkMoaWdwc19yY3ZfZ2VuX3F1ZXJpZXMpOw0K PiAgDQo+IC0JSU5fTVVMVElfTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAg CUlHTVBfTE9DSygpOw0KPiAgDQo+ICAJaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5p Zl9hZmRhdGFbQUZfSU5FVF0pLT5paV9pZ21wOw0KPiBAQCAtNzc4LDcgKzc2NCw3IEBAIGlnbXBf aW5wdXRfdjFfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0KPiAgDQo+ ICBvdXRfbG9ja2VkOg0KPiAgCUlHTVBfVU5MT0NLKCk7DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7 DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4gIA0KPiAgCXJldHVybiAoMCk7DQo+ICB9 DQo+IEBAIC04MTYsNyArODAyLDcgQEAgaWdtcF9pbnB1dF92Ml9xdWVyeShzdHJ1Y3QgaWZuZXQg KmlmcCwgY29uc3Qgc3RydWN0IGlwDQo+ICAJCUlHTVBTVEFUX0lOQyhpZ3BzX3Jjdl9ncm91cF9x dWVyaWVzKTsNCj4gIAl9DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLKCk7DQo+ICsJSU5fTVVMVElf TElTVF9MT0NLKCk7DQo+ICAJSUdNUF9MT0NLKCk7DQo+ICANCj4gIAlpZ2kgPSAoKHN0cnVjdCBp bl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXSktPmlpX2lnbXA7DQo+IEBAIC04NzIs NyArODU4LDcgQEAgaWdtcF9pbnB1dF92Ml9xdWVyeShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qg c3RydWN0IGlwDQo+ICANCj4gIG91dF9sb2NrZWQ6DQo+ICAJSUdNUF9VTkxPQ0soKTsNCj4gLQlJ Tl9NVUxUSV9VTkxPQ0soKTsNCj4gKwlJTl9NVUxUSV9MSVNUX1VOTE9DSygpOw0KPiAgDQo+ICAJ cmV0dXJuICgwKTsNCj4gIH0NCj4gQEAgLTg5OSw3ICs4ODUsNyBAQCBpZ21wX3YyX3VwZGF0ZV9n cm91cChzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgY29uc3QgaW50IHQNCj4gIAlDVFI0KEtUUl9JR01Q VjMsICIweCUwOHg6ICVzLyVzIHRpbWVyPSVkIiwgX19mdW5jX18sDQo+ICAJICAgIG50b2hsKGlu bS0+aW5tX2FkZHIuc19hZGRyKSwgaW5tLT5pbm1faWZwLT5pZl94bmFtZSwgdGltZXIpOw0KPiAg DQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xPQ0tfQVNT RVJUKCk7DQo+ICANCj4gIAlzd2l0Y2ggKGlubS0+aW5tX3N0YXRlKSB7DQo+ICAJY2FzZSBJR01Q X05PVF9NRU1CRVI6DQo+IEBAIC0xMDExLDcgKzk5Nyw3IEBAIGlnbXBfaW5wdXRfdjNfcXVlcnko c3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0KPiAgCQkJSUdNUFNUQVRfSU5DKGln cHNfcmN2X2dzcl9xdWVyaWVzKTsNCj4gIAl9DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLKCk7DQo+ ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJSUdNUF9MT0NLKCk7DQo+ICANCj4gIAlpZ2kg PSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXSktPmlpX2lnbXA7 DQo+IEBAIC0xMDkyLDcgKzEwNzgsNyBAQCBpZ21wX2lucHV0X3YzX3F1ZXJ5KHN0cnVjdCBpZm5l dCAqaWZwLCBjb25zdCBzdHJ1Y3QgaXANCj4gIA0KPiAgb3V0X2xvY2tlZDoNCj4gIAlJR01QX1VO TE9DSygpOw0KPiAtCUlOX01VTFRJX1VOTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NL KCk7DQo+ICANCj4gIAlyZXR1cm4gKDApOw0KPiAgfQ0KPiBAQCAtMTEwOSw3ICsxMDk1LDcgQEAg aWdtcF9pbnB1dF92M19ncm91cF9xdWVyeShzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgc3RydWN0DQo+ ICAJaW50CQkJIHJldHZhbDsNCj4gIAl1aW50MTZfdAkJIG5zcmM7DQo+ICANCj4gLQlJTl9NVUxU SV9MT0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJ R01QX0xPQ0tfQVNTRVJUKCk7DQo+ICANCj4gIAlyZXR2YWwgPSAwOw0KPiBAQCAtMTI0Niw3ICsx MjMyLDcgQEAgaWdtcF9pbnB1dF92MV9yZXBvcnQoc3RydWN0IGlmbmV0ICppZnAsIC8qY29uc3Qq LyBzdHJ1DQo+ICAJICogSWYgd2UgYXJlIGEgbWVtYmVyIG9mIHRoaXMgZ3JvdXAsIGFuZCBvdXIg bWVtYmVyc2hpcCBzaG91bGQgYmUNCj4gIAkgKiByZXBvcnRlZCwgc3RvcCBvdXIgZ3JvdXAgdGlt ZXIgYW5kIHRyYW5zaXRpb24gdG8gdGhlICdsYXp5JyBzdGF0ZS4NCj4gIAkgKi8NCj4gLQlJTl9N VUxUSV9MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJaW5tID0gaW5tX2xv b2t1cChpZnAsIGlnbXAtPmlnbXBfZ3JvdXApOw0KPiAgCWlmIChpbm0gIT0gTlVMTCkgew0KPiAg CQlzdHJ1Y3QgaWdtcF9pZnNvZnRjICppZ2k7DQo+IEBAIC0xMzA1LDcgKzEyOTEsNyBAQCBpZ21w X2lucHV0X3YxX3JlcG9ydChzdHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gIAl9 DQo+ICANCj4gIG91dF9sb2NrZWQ6DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVM VElfTElTVF9VTkxPQ0soKTsNCj4gIA0KPiAgCXJldHVybiAoMCk7DQo+ICB9DQo+IEBAIC0xMzcz LDcgKzEzNTksNyBAQCBpZ21wX2lucHV0X3YyX3JlcG9ydChzdHJ1Y3QgaWZuZXQgKmlmcCwgLypj b25zdCovIHN0cnUNCj4gIAkgKiByZXBvcnRlZCwgYW5kIG91ciBncm91cCB0aW1lciBpcyBwZW5k aW5nIG9yIGFib3V0IHRvIGJlIHJlc2V0LA0KPiAgCSAqIHN0b3Agb3VyIGdyb3VwIHRpbWVyIGJ5 IHRyYW5zaXRpb25pbmcgdG8gdGhlICdsYXp5JyBzdGF0ZS4NCj4gIAkgKi8NCj4gLQlJTl9NVUxU SV9MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJaW5tID0gaW5tX2xvb2t1 cChpZnAsIGlnbXAtPmlnbXBfZ3JvdXApOw0KPiAgCWlmIChpbm0gIT0gTlVMTCkgew0KPiAgCQlz dHJ1Y3QgaWdtcF9pZnNvZnRjICppZ2k7DQo+IEBAIC0xNDE4LDcgKzE0MDQsNyBAQCBpZ21wX2lu cHV0X3YyX3JlcG9ydChzdHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gIAl9DQo+ ICANCj4gIG91dF9sb2NrZWQ6DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVMVElf TElTVF9VTkxPQ0soKTsNCj4gIA0KPiAgCXJldHVybiAoMCk7DQo+ICB9DQo+IEBAIC0xNjQ3LDYg KzE2MzMsNyBAQCBpZ21wX2Zhc3R0aW1vX3ZuZXQodm9pZCkNCj4gIAlzdHJ1Y3QgaWdtcF9pZnNv ZnRjCSppZ2k7DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyCSppZm1hOw0KPiAgCXN0cnVjdCBpbl9t dWx0aQkJKmlubTsNCj4gKwlzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBpbm1fZnJlZV90bXA7DQo+ICAJ aW50CQkJIGxvb3AsIHVyaV9mYXN0aHo7DQo+ICANCj4gIAlsb29wID0gMDsNCj4gQEAgLTE2NjIs NyArMTY0OSw4IEBAIGlnbXBfZmFzdHRpbW9fdm5ldCh2b2lkKQ0KPiAgCSAgICAhVl9zdGF0ZV9j aGFuZ2VfdGltZXJzX3J1bm5pbmcpDQo+ICAJCXJldHVybjsNCj4gIA0KPiAtCUlOX01VTFRJX0xP Q0soKTsNCj4gKwlTTElTVF9JTklUKCZpbm1fZnJlZV90bXApOw0KPiArCUlOX01VTFRJX0xJU1Rf TE9DSygpOw0KPiAgCUlHTVBfTE9DSygpOw0KPiAgDQo+ICAJLyoNCj4gQEAgLTE3MjAsNyArMTcw OCw3IEBAIGlnbXBfZmFzdHRpbW9fdm5ldCh2b2lkKQ0KPiAgCQkJCSAgICBpZ2ktPmlnaV92ZXJz aW9uKTsNCj4gIAkJCQlicmVhazsNCj4gIAkJCWNhc2UgSUdNUF9WRVJTSU9OXzM6DQo+IC0JCQkJ aWdtcF92M19wcm9jZXNzX2dyb3VwX3RpbWVycyhpZ2ksICZxcnEsDQo+ICsJCQkJaWdtcF92M19w cm9jZXNzX2dyb3VwX3RpbWVycygmaW5tX2ZyZWVfdG1wLCAmcXJxLA0KPiAgCQkJCSAgICAmc2Nx LCBpbm0sIHVyaV9mYXN0aHopOw0KPiAgCQkJCWJyZWFrOw0KPiAgCQkJfQ0KPiBAQCAtMTcyOCw4 ICsxNzE2LDYgQEAgaWdtcF9mYXN0dGltb192bmV0KHZvaWQpDQo+ICAJCUlGX0FERFJfUlVOTE9D SyhpZnApOw0KPiAgDQo+ICAJCWlmIChpZ2ktPmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8z KSB7DQo+IC0JCQlzdHJ1Y3QgaW5fbXVsdGkJCSp0aW5tOw0KPiAtDQo+ICAJCQlpZ21wX2Rpc3Bh dGNoX3F1ZXVlKCZxcnEsIDAsIGxvb3ApOw0KPiAgCQkJaWdtcF9kaXNwYXRjaF9xdWV1ZSgmc2Nx LCAwLCBsb29wKTsNCj4gIA0KPiBAQCAtMTczNywxOCArMTcyMywxMyBAQCBpZ21wX2Zhc3R0aW1v X3ZuZXQodm9pZCkNCj4gIAkJCSAqIEZyZWUgdGhlIGluX211bHRpIHJlZmVyZW5jZShzKSBmb3Ig dGhpcw0KPiAgCQkJICogSUdNUCBsaWZlY3ljbGUuDQo+ICAJCQkgKi8NCj4gLQkJCVNMSVNUX0ZP UkVBQ0hfU0FGRShpbm0sICZpZ2ktPmlnaV9yZWxpbm1oZWFkLA0KPiAtCQkJICAgIGlubV9ucmVs ZSwgdGlubSkgew0KPiAtCQkJCVNMSVNUX1JFTU9WRV9IRUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFk LA0KPiAtCQkJCSAgICBpbm1fbnJlbGUpOw0KPiAtCQkJCWlubV9yZWxlYXNlX2xvY2tlZChpbm0p Ow0KPiAtCQkJfQ0KPiArCQkJaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZCgmaW5tX2ZyZWVfdG1w KTsNCj4gIAkJfQ0KPiAgCX0NCj4gIA0KPiAgb3V0X2xvY2tlZDoNCj4gIAlJR01QX1VOTE9DSygp Ow0KPiAtCUlOX01VTFRJX1VOTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ ICB9DQo+ICANCj4gIC8qDQo+IEBAIC0xNzYwLDcgKzE3NDEsNyBAQCBpZ21wX3YxdjJfcHJvY2Vz c19ncm91cF90aW1lcihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgY28NCj4gIHsNCj4gIAlpbnQgcmVw b3J0X3RpbWVyX2V4cGlyZWQ7DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiAr CUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ ICANCj4gIAlpZiAoaW5tLT5pbm1fdGltZXIgPT0gMCkgew0KPiBAQCAtMTgwMiwxNCArMTc4Mywx NCBAQCBpZ21wX3YxdjJfcHJvY2Vzc19ncm91cF90aW1lcihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwg Y28NCj4gICAqIE5vdGU6IFVubG9ja2VkIHJlYWQgZnJvbSBpZ2kuDQo+ICAgKi8NCj4gIHN0YXRp YyB2b2lkDQo+IC1pZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29m dGMgKmlnaSwNCj4gK2lnbXBfdjNfcHJvY2Vzc19ncm91cF90aW1lcnMoc3RydWN0IGluX211bHRp X2hlYWQgKmlubWgsDQo+ICAgICAgc3RydWN0IG1idWZxICpxcnEsIHN0cnVjdCBtYnVmcSAqc2Nx LA0KPiAgICAgIHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbnQgdXJpX2Zhc3RoeikNCj4g IHsNCj4gIAlpbnQgcXVlcnlfcmVzcG9uc2VfdGltZXJfZXhwaXJlZDsNCj4gIAlpbnQgc3RhdGVf Y2hhbmdlX3JldHJhbnNtaXRfdGltZXJfZXhwaXJlZDsNCj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tf QVNTRVJUKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiAgCUlHTVBfTE9D S19BU1NFUlQoKTsNCj4gIA0KPiAgCXF1ZXJ5X3Jlc3BvbnNlX3RpbWVyX2V4cGlyZWQgPSAwOw0K PiBAQCAtMTkwNyw4ICsxODg4LDcgQEAgaWdtcF92M19wcm9jZXNzX2dyb3VwX3RpbWVycyhzdHJ1 Y3QgaWdtcF9pZnNvZnRjICppZ2ksDQo+ICAJCQlpZiAoaW5tLT5pbm1fc3RhdGUgPT0gSUdNUF9M RUFWSU5HX01FTUJFUiAmJg0KPiAgCQkJICAgIGlubS0+aW5tX3NjcnYgPT0gMCkgew0KPiAgCQkJ CWlubS0+aW5tX3N0YXRlID0gSUdNUF9OT1RfTUVNQkVSOw0KPiAtCQkJCVNMSVNUX0lOU0VSVF9I RUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFkLA0KPiAtCQkJCSAgICBpbm0sIGlubV9ucmVsZSk7DQo+ ICsJCQkJaW5tX3JlbGVfbG9ja2VkKGlubWgsIGlubSk7DQo+ICAJCQl9DQo+ICAJCX0NCj4gIAkJ YnJlYWs7DQo+IEBAIC0xOTI5LDcgKzE5MDksNyBAQCBzdGF0aWMgdm9pZA0KPiAgaWdtcF92M19z dXBwcmVzc19ncm91cF9yZWNvcmQoc3RydWN0IGluX211bHRpICppbm0pDQo+ICB7DQo+ICANCj4g LQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQo KTsNCj4gIA0KPiAgCUtBU1NFUlQoaW5tLT5pbm1faWdpLT5pZ2lfdmVyc2lvbiA9PSBJR01QX1ZF UlNJT05fMywNCj4gIAkJKCIlczogbm90IElHTVB2MyBtb2RlIG9uIGxpbmsiLCBfX2Z1bmNfXykp Ow0KPiBAQCAtMjAwMywxMyArMTk4MywxNSBAQCBpZ21wX3YzX2NhbmNlbF9saW5rX3RpbWVycyhz dHJ1Y3QgaWdtcF9pZnNvZnRjICppZ2kpDQo+ICB7DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyCSpp Zm1hOw0KPiAgCXN0cnVjdCBpZm5ldAkJKmlmcDsNCj4gLQlzdHJ1Y3QgaW5fbXVsdGkJCSppbm0s ICp0aW5tOw0KPiArCXN0cnVjdCBpbl9tdWx0aQkJKmlubTsNCj4gKwlzdHJ1Y3QgaW5fbXVsdGlf aGVhZCBpbm1fZnJlZV90bXA7DQo+ICANCj4gIAlDVFIzKEtUUl9JR01QVjMsICIlczogY2FuY2Vs IHYzIHRpbWVycyBvbiBpZnAgJXAoJXMpIiwgX19mdW5jX18sDQo+ICAJICAgIGlnaS0+aWdpX2lm cCwgaWdpLT5pZ2lfaWZwLT5pZl94bmFtZSk7DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VS VCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJR01QX0xPQ0tfQVNT RVJUKCk7DQo+ICsJU0xJU1RfSU5JVCgmaW5tX2ZyZWVfdG1wKTsNCj4gIA0KPiAgCS8qDQo+ICAJ ICogU3RvcCB0aGUgdjMgR2VuZXJhbCBRdWVyeSBSZXNwb25zZSBvbiB0aGlzIGxpbmsgc3RvbmUg ZGVhZC4NCj4gQEAgLTIwNTAsNyArMjAzMiw3IEBAIGlnbXBfdjNfY2FuY2VsX2xpbmtfdGltZXJz KHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSkNCj4gIAkJCSAqIG1lc3NhZ2UgaXMgc2VudCB1cHN0 cmVhbSB0byB0aGUgb2xkIHF1ZXJpZXIgLS0NCj4gIAkJCSAqIHRyYW5zaXRpb24gdG8gTk9UIHdv dWxkIGxvc2UgdGhlIGxlYXZlIGFuZCByYWNlLg0KPiAgCQkJICovDQo+IC0JCQlTTElTVF9JTlNF UlRfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwgaW5tLCBpbm1fbnJlbGUpOw0KPiArCQkJaW5t X3JlbGVfbG9ja2VkKCZpbm1fZnJlZV90bXAsIGlubSk7DQo+ICAJCQkvKiBGQUxMVEhST1VHSCAq Lw0KPiAgCQljYXNlIElHTVBfR19RVUVSWV9QRU5ESU5HX01FTUJFUjoNCj4gIAkJY2FzZSBJR01Q X1NHX1FVRVJZX1BFTkRJTkdfTUVNQkVSOg0KPiBAQCAtMjA2OSwxMCArMjA1MSw4IEBAIGlnbXBf djNfY2FuY2VsX2xpbmtfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSkNCj4gIAkJbWJ1 ZnFfZHJhaW4oJmlubS0+aW5tX3NjcSk7DQo+ICAJfQ0KPiAgCUlGX0FERFJfUlVOTE9DSyhpZnAp Ow0KPiAtCVNMSVNUX0ZPUkVBQ0hfU0FGRShpbm0sICZpZ2ktPmlnaV9yZWxpbm1oZWFkLCBpbm1f bnJlbGUsIHRpbm0pIHsNCj4gLQkJU0xJU1RfUkVNT1ZFX0hFQUQoJmlnaS0+aWdpX3JlbGlubWhl YWQsIGlubV9ucmVsZSk7DQo+IC0JCWlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiAtCX0NCj4g Kw0KPiArCWlubV9yZWxlYXNlX2xpc3RfZGVmZXJyZWQoJmlubV9mcmVlX3RtcCk7DQo+ICB9DQo+ ICANCj4gIC8qDQo+IEBAIC0yMTk5LDcgKzIxNzksNyBAQCBpZ21wX3YxdjJfcXVldWVfcmVwb3J0 KHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbnQNCj4gIAlzdHJ1Y3QgaXAJCSppcDsNCj4g IAlzdHJ1Y3QgbWJ1ZgkJKm07DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiAr CUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ ICANCj4gIAlpZnAgPSBpbm0tPmlubV9pZnA7DQo+IEBAIC0yMjc2LDEwICsyMjU2LDggQEAgaWdt cF9jaGFuZ2Vfc3RhdGUoc3RydWN0IGluX211bHRpICppbm0pDQo+ICAJc3RydWN0IGlmbmV0ICpp ZnA7DQo+ICAJaW50IGVycm9yOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4g LQ0KPiAgCWVycm9yID0gMDsNCj4gLQ0KPiArCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ICAJ LyoNCj4gIAkgKiBUcnkgdG8gZGV0ZWN0IGlmIHRoZSB1cHBlciBsYXllciBqdXN0IGFza2VkIHVz IHRvIGNoYW5nZSBzdGF0ZQ0KPiAgCSAqIGZvciBhbiBpbnRlcmZhY2Ugd2hpY2ggaGFzIG5vdyBn b25lIGF3YXkuDQo+IEBAIC0yMzc5LDkgKzIzNTcsMTAgQEAgaWdtcF9pbml0aWFsX2pvaW4oc3Ry dWN0IGluX211bHRpICppbm0sIHN0cnVjdCBpZ21wX2lmDQo+ICAJCSAqIGdyb3VwIGFyb3VuZCBm b3IgdGhlIGZpbmFsIElOQ0xVREUge30gZW5xdWV1ZS4NCj4gIAkJICovDQo+ICAJCWlmIChpZ2kt PmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8zICYmDQo+IC0JCSAgICBpbm0tPmlubV9zdGF0 ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSKQ0KPiAtCQkJaW5tX3JlbGVhc2VfbG9ja2VkKGlubSk7 DQo+IC0NCj4gKwkJICAgIGlubS0+aW5tX3N0YXRlID09IElHTVBfTEVBVklOR19NRU1CRVIpIHsN Cj4gKwkJCU1QQVNTKGlubS0+aW5tX3JlZmNvdW50ID4gMSk7DQo+ICsJCQlpbm1fcmVsZV9sb2Nr ZWQoTlVMTCwgaW5tKTsNCj4gKwkJfQ0KPiAgCQlpbm0tPmlubV9zdGF0ZSA9IElHTVBfUkVQT1JU SU5HX01FTUJFUjsNCj4gIA0KPiAgCQlzd2l0Y2ggKGlnaS0+aWdpX3ZlcnNpb24pIHsNCj4gQEAg LTI0NzMsNyArMjQ1Miw3IEBAIGlnbXBfaGFuZGxlX3N0YXRlX2NoYW5nZShzdHJ1Y3QgaW5fbXVs dGkgKmlubSwgc3RydWN0IA0KPiAgDQo+ICAJaWZwID0gaW5tLT5pbm1faWZwOw0KPiAgDQo+IC0J SU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7 DQo+ICAJSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ICAJS0FTU0VSVChpZ2kgJiYgaWdpLT5p Z2lfaWZwID09IGlmcCwgKCIlczogaW5jb25zaXN0ZW50IGlmcCIsIF9fZnVuY19fKSk7DQo+IEBA IC0yNTMxLDcgKzI1MTAsNyBAQCBpZ21wX2ZpbmFsX2xlYXZlKHN0cnVjdCBpbl9tdWx0aSAqaW5t LCBzdHJ1Y3QgaWdtcF9pZnMNCj4gIAkgICAgX19mdW5jX18sIG50b2hsKGlubS0+aW5tX2FkZHIu c19hZGRyKSwgaW5tLT5pbm1faWZwLA0KPiAgCSAgICBpbm0tPmlubV9pZnAtPmlmX3huYW1lKTsN Cj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NL X0FTU0VSVCgpOw0KPiAgCUlHTVBfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCXN3aXRjaCAoaW5t LT5pbm1fc3RhdGUpIHsNCj4gQEAgLTI2NTgsNyArMjYzNyw3IEBAIGlnbXBfdjNfZW5xdWV1ZV9n cm91cF9yZWNvcmQoc3RydWN0IG1idWZxICptcSwgc3RydWN0IA0KPiAgCWluX2FkZHJfdAkJIG5h ZGRyOw0KPiAgCXVpbnQ4X3QJCQkgbW9kZTsNCj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tfQVNTRVJU KCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ICAJZXJyb3IgPSAw Ow0KPiAgCWlmcCA9IGlubS0+aW5tX2lmcDsNCj4gQEAgLTMwMTgsNyArMjk5Nyw3IEBAIGlnbXBf djNfZW5xdWV1ZV9maWx0ZXJfY2hhbmdlKHN0cnVjdCBtYnVmcSAqbXEsIHN0cnVjdA0KPiAgCXVp bnQ4X3QJCQkgbW9kZSwgbm93LCB0aGVuOw0KPiAgCXJlY3R5cGVfdAkJIGNydCwgZHJ0LCBucnQ7 DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9D S19BU1NFUlQoKTsNCj4gIA0KPiAgCWlmIChpbm0tPmlubV9uc3JjID09IDAgfHwNCj4gIAkgICAg KGlubS0+aW5tX3N0WzBdLmlzc19hc20gPiAwICYmIGlubS0+aW5tX3N0WzFdLmlzc19hc20gPiAw KSkNCj4gQEAgLTMyMjEsNyArMzIwMCw3IEBAIGlnbXBfdjNfbWVyZ2Vfc3RhdGVfY2hhbmdlcyhz dHJ1Y3QgaW5fbXVsdGkgKmlubSwgc3RydQ0KPiAgCWRvbWVyZ2UgPSAwOw0KPiAgCXJlY3NsZW4g PSAwOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNU X0xPQ0tfQVNTRVJUKCk7DQo+ICAJSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ICAJLyoNCj4g QEAgLTMzMjAsNyArMzI5OSw3IEBAIGlnbXBfdjNfZGlzcGF0Y2hfZ2VuZXJhbF9xdWVyeShzdHJ1 Y3QgaWdtcF9pZnNvZnRjICppZw0KPiAgCXN0cnVjdCBpbl9tdWx0aQkJKmlubTsNCj4gIAlpbnQJ CQkgcmV0dmFsLCBsb29wOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJ Tl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ICAJSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiAg DQo+ICAJS0FTU0VSVChpZ2ktPmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8zLA0KPiBAQCAt MzYzMiw3ICszNjExLDYgQEAgREJfU0hPV19DT01NQU5EKGlnaV9saXN0LCBkYl9zaG93X2lnaV9s aXN0KQ0KPiAgCQlkYl9wcmludGYoIiAgICBxaSAldVxuIiwgaWdpLT5pZ2lfcWkpOw0KPiAgCQlk Yl9wcmludGYoIiAgICBxcmkgJXVcbiIsIGlnaS0+aWdpX3FyaSk7DQo+ICAJCWRiX3ByaW50Zigi ICAgIHVyaSAldVxuIiwgaWdpLT5pZ2lfdXJpKTsNCj4gLQkJLyogU0xJU1RfSEVBRCgsaW5fbXVs dGkpICAgaWdpX3JlbGlubWhlYWQgKi8NCj4gIAkJLyogc3RydWN0IG1idWZxICAgIGlnaV9ncTsg Ki8NCj4gIAkJZGJfcHJpbnRmKCJcbiIpOw0KPiAgCX0NCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5 cy9uZXRpbmV0L2lnbXBfdmFyLmgNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IC0tLSBoZWFk L3N5cy9uZXRpbmV0L2lnbXBfdmFyLmgJV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4CShyMzMzMTc0 KQ0KPiArKysgaGVhZC9zeXMvbmV0aW5ldC9pZ21wX3Zhci5oCVdlZCBNYXkgIDIgMTk6MzY6Mjkg MjAxOAkocjMzMzE3NSkNCj4gQEAgLTIxNCw3ICsyMTQsNiBAQCBzdHJ1Y3QgaWdtcF9pZnNvZnRj IHsNCj4gIAl1aW50MzJfdCBpZ2lfcWk7CS8qIElHTVB2MyBRdWVyeSBJbnRlcnZhbCAocykgKi8N Cj4gIAl1aW50MzJfdCBpZ2lfcXJpOwkvKiBJR01QdjMgUXVlcnkgUmVzcG9uc2UgSW50ZXJ2YWwg KHMpICovDQo+ICAJdWludDMyX3QgaWdpX3VyaTsJLyogSUdNUHYzIFVuc29saWNpdGVkIFJlcG9y dCBJbnRlcnZhbCAocykgKi8NCj4gLQlTTElTVF9IRUFEKCxpbl9tdWx0aSkJaWdpX3JlbGlubWhl YWQ7IC8qIHJlbGVhc2VkIGdyb3VwcyAqLw0KPiAgCXN0cnVjdCBtYnVmcQlpZ2lfZ3E7CQkvKiBn ZW5lcmFsIHF1ZXJ5IHJlc3BvbnNlcyBxdWV1ZSAqLw0KPiAgfTsNCj4gIA0KPiANCj4gTW9kaWZp ZWQ6IGhlYWQvc3lzL25ldGluZXQvaW4uYw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0t IGhlYWQvc3lzL25ldGluZXQvaW4uYwlXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTgJKHIzMzMxNzQp DQo+ICsrKyBoZWFkL3N5cy9uZXRpbmV0L2luLmMJV2VkIE1heSAgMiAxOTozNjoyOSAyMDE4CShy MzMzMTc1KQ0KPiBAQCAtNjMyLDEyICs2MzIsMTAgQEAgaW5fZGlmYWRkcl9pb2N0bCh1X2xvbmcg Y21kLCBjYWRkcl90IGRhdGEsIHN0cnVjdCBpZm5lDQo+ICAJCXN0cnVjdCBpbl9pZmluZm8gKmlp Ow0KPiAgDQo+ICAJCWlpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5pZl9hZmRhdGFbQUZf SU5FVF0pOw0KPiAtCQlJTl9NVUxUSV9MT0NLKCk7DQo+ICAJCWlmIChpaS0+aWlfYWxsaG9zdHMp IHsNCj4gLQkJCSh2b2lkKWluX2xlYXZlZ3JvdXBfbG9ja2VkKGlpLT5paV9hbGxob3N0cywgTlVM TCk7DQo+ICsJCQkodm9pZClpbl9sZWF2ZWdyb3VwKGlpLT5paV9hbGxob3N0cywgTlVMTCk7DQo+ ICAJCQlpaS0+aWlfYWxsaG9zdHMgPSBOVUxMOw0KPiAgCQl9DQo+IC0JCUlOX01VTFRJX1VOTE9D SygpOw0KPiAgCX0NCj4gIA0KPiAgCUlGX0FERFJfV0xPQ0soaWZwKTsNCj4gQEAgLTk5NCwxMSAr OTkyLDEyIEBAIGluX2Jyb2FkY2FzdChzdHJ1Y3QgaW5fYWRkciBpbiwgc3RydWN0IGlmbmV0ICpp ZnApDQo+ICB2b2lkDQo+ICBpbl9pZmRldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHsNCj4g LQ0KPiArCUlOX01VTFRJX0xPQ0soKTsNCj4gIAlpbl9wY2JwdXJnZWlmMCgmVl9yaXBjYmluZm8s IGlmcCk7DQo+ICAJaW5fcGNicHVyZ2VpZjAoJlZfdWRiaW5mbywgaWZwKTsNCj4gIAlpbl9wY2Jw dXJnZWlmMCgmVl91bGl0ZWNiaW5mbywgaWZwKTsNCj4gIAlpbl9wdXJnZW1hZGRycyhpZnApOw0K PiArCUlOX01VTFRJX1VOTE9DSygpOw0KPiAgfQ0KPiAgDQo+ICAvKg0KPiBAQCAtMTAxMSwxMiAr MTAxMCwxMiBAQCBpbl9pZmRldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHN0YXRpYyB2b2lk DQo+ICBpbl9wdXJnZW1hZGRycyhzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHsNCj4gLQlMSVNUX0hF QUQoLGluX211bHRpKSBwdXJnZWlubXM7DQo+IC0Jc3RydWN0IGluX211bHRpCQkqaW5tLCAqdGlu bTsNCj4gKwlzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBwdXJnZWlubXM7DQo+ICsJc3RydWN0IGluX211 bHRpCQkqaW5tOw0KPiAgCXN0cnVjdCBpZm11bHRpYWRkcgkqaWZtYTsNCj4gIA0KPiAtCUxJU1Rf SU5JVCgmcHVyZ2Vpbm1zKTsNCj4gLQlJTl9NVUxUSV9MT0NLKCk7DQo+ICsJU0xJU1RfSU5JVCgm cHVyZ2Vpbm1zKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xPQ0soKTsNCj4gIA0KPiAgCS8qDQo+ICAJ ICogRXh0cmFjdCBsaXN0IG9mIGluX211bHRpIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV0YWNoaW5n IGlmcA0KPiBAQCAtMTAzNCwxNyArMTAzMywxMyBAQCBpbl9wdXJnZW1hZGRycyhzdHJ1Y3QgaWZu ZXQgKmlmcCkNCj4gIAkJICAgICgiJXM6IGlmbWFfcHJvdG9zcGVjIGlzIE5VTEwiLCBfX2Z1bmNf XykpOw0KPiAgI2VuZGlmDQo+ICAJCWlubSA9IChzdHJ1Y3QgaW5fbXVsdGkgKilpZm1hLT5pZm1h X3Byb3Rvc3BlYzsNCj4gLQkJTElTVF9JTlNFUlRfSEVBRCgmcHVyZ2Vpbm1zLCBpbm0sIGlubV9s aW5rKTsNCj4gKwkJaW5tX3JlbGVfbG9ja2VkKCZwdXJnZWlubXMsIGlubSk7DQo+ICAJfQ0KPiAg CUlGX0FERFJfUlVOTE9DSyhpZnApOw0KPiAgDQo+IC0JTElTVF9GT1JFQUNIX1NBRkUoaW5tLCAm cHVyZ2Vpbm1zLCBpbm1fbGluaywgdGlubSkgew0KPiAtCQlMSVNUX1JFTU9WRShpbm0sIGlubV9s aW5rKTsNCj4gLQkJaW5tX3JlbGVhc2VfbG9ja2VkKGlubSk7DQo+IC0JfQ0KPiArCWlubV9yZWxl YXNlX2xpc3RfZGVmZXJyZWQoJnB1cmdlaW5tcyk7DQo+ICAJaWdtcF9pZmRldGFjaChpZnApOw0K PiAtDQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0soKTsN Cj4gIH0NCj4gIA0KPiAgc3RydWN0IGluX2xsZW50cnkgew0KPiANCj4gTW9kaWZpZWQ6IGhlYWQv c3lzL25ldGluZXQvaW5fbWNhc3QuYw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhl YWQvc3lzL25ldGluZXQvaW5fbWNhc3QuYwlXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTgJKHIzMzMx NzQpDQo+ICsrKyBoZWFkL3N5cy9uZXRpbmV0L2luX21jYXN0LmMJV2VkIE1heSAgMiAxOTozNjoy OSAyMDE4CShyMzMzMTc1KQ0KPiBAQCAtNTEsNiArNTEsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Qk Iik7DQo+ICAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPg0KPiAgI2luY2x1ZGUgPHN5cy9rdHIuaD4N Cj4gICNpbmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+DQo+ICsjaW5jbHVkZSA8c3lzL2d0YXNrcXVl dWUuaD4NCj4gICNpbmNsdWRlIDxzeXMvdHJlZS5oPg0KPiAgDQo+ICAjaW5jbHVkZSA8bmV0L2lm Lmg+DQo+IEBAIC01OSw2ICs2MCw4IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsNCj4gICNpbmNs dWRlIDxuZXQvcm91dGUuaD4NCj4gICNpbmNsdWRlIDxuZXQvdm5ldC5oPg0KPiAgDQo+ICsjaW5j bHVkZSA8bmV0L2V0aGVybmV0Lmg+DQo+ICsNCj4gICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+DQo+ ICAjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPg0KPiAgI2luY2x1ZGUgPG5ldGluZXQvaW5f ZmliLmg+DQo+IEBAIC05MSwxOCArOTQsMjQgQEAgc3RhdGljIE1BTExPQ19ERUZJTkUoTV9JUE1T T1VSQ0UsICJpcF9tc291cmNlIiwNCj4gIA0KPiAgLyoNCj4gICAqIExvY2tpbmc6DQo+IC0gKiAt IExvY2sgb3JkZXIgaXM6IEdpYW50LCBJTlBfV0xPQ0ssIElOX01VTFRJX0xPQ0ssIElHTVBfTE9D SywgSUZfQUREUl9MT0NLLg0KPiArICogLSBMb2NrIG9yZGVyIGlzOiBHaWFudCwgSU5QX1dMT0NL LCBJTl9NVUxUSV9MSVNUX0xPQ0ssIElHTVBfTE9DSywgSUZfQUREUl9MT0NLLg0KPiAgICogLSBU aGUgSUZfQUREUl9MT0NLIGlzIGltcGxpY2l0bHkgdGFrZW4gYnkgaW5tX2xvb2t1cCgpIGVhcmxp ZXIsIGhvd2V2ZXINCj4gICAqICAgaXQgY2FuIGJlIHRha2VuIGJ5IGNvZGUgaW4gbmV0L2lmLmMg YWxzby4NCj4gICAqIC0gaXBfbW9wdGlvbnMgYW5kIGluX21maWx0ZXIgYXJlIGNvdmVyZWQgYnkg dGhlIElOUF9XTE9DSy4NCj4gICAqDQo+IC0gKiBzdHJ1Y3QgaW5fbXVsdGkgaXMgY292ZXJlZCBi eSBJTl9NVUxUSV9MT0NLLiBUaGVyZSBpc24ndCBzdHJpY3RseQ0KPiArICogc3RydWN0IGluX211 bHRpIGlzIGNvdmVyZWQgYnkgSU5fTVVMVElfTElTVF9MT0NLLiBUaGVyZSBpc24ndCBzdHJpY3Rs eQ0KPiAgICogYW55IG5lZWQgZm9yIGluX211bHRpIGl0c2VsZiB0byBiZSB2aXJ0dWFsaXplZCAt LSBpdCBpcyBib3VuZCB0byBhbiBpZnANCj4gICAqIGFueXdheSBubyBtYXR0ZXIgd2hhdCBoYXBw ZW5zLg0KPiAgICovDQo+IC1zdHJ1Y3QgbXR4IGluX211bHRpX210eDsNCj4gLU1UWF9TWVNJTklU KGluX211bHRpX210eCwgJmluX211bHRpX210eCwgImluX211bHRpX210eCIsIE1UWF9ERUYpOw0K PiArc3RydWN0IG10eCBpbl9tdWx0aV9saXN0X210eDsNCj4gK01UWF9TWVNJTklUKGluX211bHRp X210eCwgJmluX211bHRpX2xpc3RfbXR4LCAiaW5fbXVsdGlfbGlzdF9tdHgiLCBNVFhfREVGKTsN Cj4gIA0KPiArc3RydWN0IG10eCBpbl9tdWx0aV9mcmVlX210eDsNCj4gK01UWF9TWVNJTklUKGlu X211bHRpX2ZyZWVfbXR4LCAmaW5fbXVsdGlfZnJlZV9tdHgsICJpbl9tdWx0aV9mcmVlX210eCIs IE1UWF9ERUYpOw0KPiArDQo+ICtzdHJ1Y3Qgc3ggaW5fbXVsdGlfc3g7DQo+ICtTWF9TWVNJTklU KGluX211bHRpX3N4LCAmaW5fbXVsdGlfc3gsICJpbl9tdWx0aV9zeCIpOw0KPiArDQo+ICAvKg0K PiAgICogRnVuY3Rpb25zIHdpdGggbm9uLXN0YXRpYyBsaW5rYWdlIGRlZmluZWQgaW4gdGhpcyBm aWxlIHNob3VsZCBiZQ0KPiAgICogZGVjbGFyZWQgaW4gaW5fdmFyLmg6DQo+IEBAIC0xNTEsNiAr MTYwLDcgQEAgc3RhdGljIGludAlpbm1faXNfaWZwX2RldGFjaGVkKGNvbnN0IHN0cnVjdCBpbl9t dWx0aSAqDQo+ICBzdGF0aWMgaW50CWlubV9tZXJnZShzdHJ1Y3QgaW5fbXVsdGkgKiwgLypjb25z dCovIHN0cnVjdCBpbl9tZmlsdGVyICopOw0KPiAgc3RhdGljIHZvaWQJaW5tX3B1cmdlKHN0cnVj dCBpbl9tdWx0aSAqKTsNCj4gIHN0YXRpYyB2b2lkCWlubV9yZWFwKHN0cnVjdCBpbl9tdWx0aSAq KTsNCj4gK3N0YXRpYyB2b2lkIGlubV9yZWxlYXNlKHN0cnVjdCBpbl9tdWx0aSAqKTsNCj4gIHN0 YXRpYyBzdHJ1Y3QgaXBfbW9wdGlvbnMgKg0KPiAgCQlpbnBfZmluZG1vcHRpb25zKHN0cnVjdCBp bnBjYiAqKTsNCj4gIHN0YXRpYyB2b2lkCWlucF9mcmVlbW9wdGlvbnNfaW50ZXJuYWwoc3RydWN0 IGlwX21vcHRpb25zICopOw0KPiBAQCAtMjE2LDYgKzIyNiw2NSBAQCBpbm1faXNfaWZwX2RldGFj aGVkKGNvbnN0IHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiAgfQ0KPiAgI2VuZGlmDQo+ICANCj4g K3N0YXRpYyBzdHJ1Y3QgZ3JvdXB0YXNrIGZyZWVfZ3Rhc2s7DQo+ICtzdGF0aWMgc3RydWN0IGlu X211bHRpX2hlYWQgaW5tX2ZyZWVfbGlzdDsNCj4gK3N0YXRpYyB2b2lkIGlubV9yZWxlYXNlX3Rh c2sodm9pZCAqYXJnIF9fdW51c2VkKTsNCj4gK3N0YXRpYyB2b2lkIGlubV9pbml0KHZvaWQpDQo+ ICt7DQo+ICsJU0xJU1RfSU5JVCgmaW5tX2ZyZWVfbGlzdCk7DQo+ICsJdGFza3Fncm91cF9jb25m aWdfZ3Rhc2tfaW5pdChOVUxMLCAmZnJlZV9ndGFzaywgaW5tX3JlbGVhc2VfdGFzaywgImlubSBy ZWxlYXNlDQo+IHRhc2siKTsgK30NCj4gKw0KPiArU1lTSU5JVChpbm1faW5pdCwgU0lfU1VCX1NN UCArIDEsIFNJX09SREVSX0ZJUlNULA0KPiArCWlubV9pbml0LCBOVUxMKTsNCj4gKw0KPiArDQo+ ICt2b2lkDQo+ICtpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKHN0cnVjdCBpbl9tdWx0aV9oZWFk ICppbm1oKQ0KPiArew0KPiArDQo+ICsJaWYgKFNMSVNUX0VNUFRZKGlubWgpKQ0KPiArCQlyZXR1 cm47DQo+ICsJbXR4X2xvY2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlTTElTVF9DT05DQVQo JmlubV9mcmVlX2xpc3QsIGlubWgsIGluX211bHRpLCBpbm1fbnJlbGUpOw0KPiArCW10eF91bmxv Y2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlHUk9VUFRBU0tfRU5RVUVVRSgmZnJlZV9ndGFz ayk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK2lubV9yZWxlYXNlX2RlZmVycmVkKHN0cnVjdCBp bl9tdWx0aSAqaW5tKQ0KPiArew0KPiArCXN0cnVjdCBpbl9tdWx0aV9oZWFkIHRtcDsNCj4gKw0K PiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gKwlNUEFTUyhpbm0tPmlubV9yZWZj b3VudCA+IDApOw0KPiArCWlmICgtLWlubS0+aW5tX3JlZmNvdW50ID09IDApIHsNCj4gKwkJU0xJ U1RfSU5JVCgmdG1wKTsNCj4gKwkJaW5tLT5pbm1faWZtYS0+aWZtYV9wcm90b3NwZWMgPSBOVUxM Ow0KPiArCQlTTElTVF9JTlNFUlRfSEVBRCgmdG1wLCBpbm0sIGlubV9ucmVsZSk7DQo+ICsJCWlu bV9yZWxlYXNlX2xpc3RfZGVmZXJyZWQoJnRtcCk7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdm9pZA0KPiAraW5tX3JlbGVhc2VfdGFzayh2b2lkICphcmcgX191bnVzZWQpDQo+ICt7DQo+ ICsJc3RydWN0IGluX211bHRpX2hlYWQgaW5tX2ZyZWVfdG1wOw0KPiArCXN0cnVjdCBpbl9tdWx0 aSAqaW5tLCAqdGlubTsNCj4gKw0KPiArCVNMSVNUX0lOSVQoJmlubV9mcmVlX3RtcCk7DQo+ICsJ bXR4X2xvY2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlTTElTVF9DT05DQVQoJmlubV9mcmVl X3RtcCwgJmlubV9mcmVlX2xpc3QsIGluX211bHRpLCBpbm1fbnJlbGUpOw0KPiArCW10eF91bmxv Y2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlJTl9NVUxUSV9MT0NLKCk7DQo+ICsJU0xJU1Rf Rk9SRUFDSF9TQUZFKGlubSwgJmlubV9mcmVlX3RtcCwgaW5tX25yZWxlLCB0aW5tKSB7DQo+ICsJ CVNMSVNUX1JFTU9WRV9IRUFEKCZpbm1fZnJlZV90bXAsIGlubV9ucmVsZSk7DQo+ICsJCU1QQVNT KGlubSk7DQo+ICsJCWlubV9yZWxlYXNlKGlubSk7DQo+ICsJfQ0KPiArCUlOX01VTFRJX1VOTE9D SygpOw0KPiArfQ0KPiArDQo+ICAvKg0KPiAgICogSW5pdGlhbGl6ZSBhbiBpbl9tZmlsdGVyIHN0 cnVjdHVyZSB0byBhIGtub3duIHN0YXRlIGF0IHQwLCB0MQ0KPiAgICogd2l0aCBhbiBlbXB0eSBz b3VyY2UgZmlsdGVyIGxpc3QuDQo+IEBAIC0yMzIsNyArMzAxLDcgQEAgaW1mX2luaXQoc3RydWN0 IGluX21maWx0ZXIgKmltZiwgY29uc3QgaW50IHN0MCwgY29uc3QgDQo+ICAvKg0KPiAgICogRnVu Y3Rpb24gZm9yIGxvb2tpbmcgdXAgYW4gaW5fbXVsdGkgcmVjb3JkIGZvciBhbiBJUHY0IG11bHRp Y2FzdCBhZGRyZXNzDQo+ICAgKiBvbiBhIGdpdmVuIGludGVyZmFjZS4gaWZwIG11c3QgYmUgdmFs aWQuIElmIG5vIHJlY29yZCBmb3VuZCwgcmV0dXJuIE5VTEwuDQo+IC0gKiBUaGUgSU5fTVVMVElf TE9DSyBhbmQgSUZfQUREUl9MT0NLIG9uIGlmcCBtdXN0IGJlIGhlbGQuDQo+ICsgKiBUaGUgSU5f TVVMVElfTElTVF9MT0NLIGFuZCBJRl9BRERSX0xPQ0sgb24gaWZwIG11c3QgYmUgaGVsZC4NCj4g ICAqLw0KPiAgc3RydWN0IGluX211bHRpICoNCj4gIGlubV9sb29rdXBfbG9ja2VkKHN0cnVjdCBp Zm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciBpbmEpDQo+IEBAIC0yNDAsNyArMzA5LDcg QEAgaW5tX2xvb2t1cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9h DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyICppZm1hOw0KPiAgCXN0cnVjdCBpbl9tdWx0aSAqaW5t Ow0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xP Q0tfQVNTRVJUKCk7DQo+ICAJSUZfQUREUl9MT0NLX0FTU0VSVChpZnApOw0KPiAgDQo+ICAJaW5t ID0gTlVMTDsNCj4gQEAgLTI2NCw3ICszMzMsNyBAQCBpbm1fbG9va3VwKHN0cnVjdCBpZm5ldCAq aWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciBpbmENCj4gIHsNCj4gIAlzdHJ1Y3QgaW5fbXVsdGkg KmlubTsNCj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ICsJSU5fTVVMVElfTElT VF9MT0NLX0FTU0VSVCgpOw0KPiAgCUlGX0FERFJfUkxPQ0soaWZwKTsNCj4gIAlpbm0gPSBpbm1f bG9va3VwX2xvY2tlZChpZnAsIGluYSk7DQo+ICAJSUZfQUREUl9SVU5MT0NLKGlmcCk7DQo+IEBA IC00NTEsNyArNTIwLDcgQEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0 cnVjdCBpbl9hZGRyICpnDQo+ICAJSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCWlp ID0gKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXTsNCj4gLQ0KPiAr CUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAgCWlubSA9IGlubV9sb29rdXAoaWZwLCAqZ3JvdXAp Ow0KPiAgCWlmIChpbm0gIT0gTlVMTCkgew0KPiAgCQkvKg0KPiBAQCAtNDYwLDExICs1MjksMTMg QEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpn DQo+ICAJCSAqLw0KPiAgCQlLQVNTRVJUKGlubS0+aW5tX3JlZmNvdW50ID49IDEsDQo+ICAJCSAg ICAoIiVzOiBiYWQgcmVmY291bnQgJWQiLCBfX2Z1bmNfXywgaW5tLT5pbm1fcmVmY291bnQpKTsN Cj4gLQkJKytpbm0tPmlubV9yZWZjb3VudDsNCj4gKwkJaW5tX2FjcXVpcmVfbG9ja2VkKGlubSk7 DQo+ICAJCSpwaW5tID0gaW5tOw0KPiAtCQlyZXR1cm4gKDApOw0KPiAgCX0NCj4gLQ0KPiArCUlO X01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ICsJaWYgKGlubSAhPSBOVUxMKQ0KPiArCQlyZXR1cm4g KDApOw0KPiArCQ0KPiAgCW1lbXNldCgmZ3NpbiwgMCwgc2l6ZW9mKGdzaW4pKTsNCj4gIAlnc2lu LnNpbl9mYW1pbHkgPSBBRl9JTkVUOw0KPiAgCWdzaW4uc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qg c29ja2FkZHJfaW4pOw0KPiBAQCAtNDc5LDYgKzU1MCw3IEBAIGluX2dldG11bHRpKHN0cnVjdCBp Zm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciAqZw0KPiAgCQlyZXR1cm4gKGVycm9yKTsN Cj4gIA0KPiAgCS8qIFhYWCBpZm1hX3Byb3Rvc3BlYyBtdXN0IGJlIGNvdmVyZWQgYnkgSUZfQURE Ul9MT0NLICovDQo+ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJSUZfQUREUl9XTE9DSyhp ZnApOw0KPiAgDQo+ICAJLyoNCj4gQEAgLTUwNCwxMCArNTc2LDkgQEAgaW5fZ2V0bXVsdGkoc3Ry dWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ICAJCQkgICAgX19mdW5j X18sIGlmbWEsIGlubSwgaW5ldF9udG9hX3IoKmdyb3VwLCBhZGRyYnVmKSk7DQo+ICAJCX0NCj4g ICNlbmRpZg0KPiAtCQkrK2lubS0+aW5tX3JlZmNvdW50Ow0KPiArCQlpbm1fYWNxdWlyZV9sb2Nr ZWQoaW5tKTsNCj4gIAkJKnBpbm0gPSBpbm07DQo+IC0JCUlGX0FERFJfV1VOTE9DSyhpZnApOw0K PiAtCQlyZXR1cm4gKDApOw0KPiArCQlnb3RvIG91dF9sb2NrZWQ7DQo+ICAJfQ0KPiAgDQo+ICAJ SUZfQUREUl9XTE9DS19BU1NFUlQoaWZwKTsNCj4gQEAgLTUyMiw2ICs1OTMsNyBAQCBpbl9nZXRt dWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gIAlpbm0g PSBtYWxsb2Moc2l6ZW9mKCppbm0pLCBNX0lQTUFERFIsIE1fTk9XQUlUIHwgTV9aRVJPKTsNCj4g IAlpZiAoaW5tID09IE5VTEwpIHsNCj4gIAkJSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ICsJCUlO X01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ICAJCWlmX2RlbG11bHRpX2lmbWEoaWZtYSk7DQo+ICAJ CXJldHVybiAoRU5PTUVNKTsNCj4gIAl9DQo+IEBAIC01MzksOCArNjExLDkgQEAgaW5fZ2V0bXVs dGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ICAJaWZtYS0+ aWZtYV9wcm90b3NwZWMgPSBpbm07DQo+ICANCj4gIAkqcGlubSA9IGlubTsNCj4gLQ0KPiArIG91 dF9sb2NrZWQ6DQo+ICAJSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ICsJSU5fTVVMVElfTElTVF9V TkxPQ0soKTsNCj4gIAlyZXR1cm4gKDApOw0KPiAgfQ0KPiAgDQo+IEBAIC01NTAsMzYgKzYyMywy OSBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIg KmcNCj4gICAqIElmIHRoZSByZWZjb3VudCBkcm9wcyB0byAwLCBmcmVlIHRoZSBpbl9tdWx0aSBy ZWNvcmQgYW5kDQo+ICAgKiBkZWxldGUgdGhlIHVuZGVybHlpbmcgbGluay1sYXllciBtZW1iZXJz aGlwLg0KPiAgICovDQo+IC12b2lkDQo+IC1pbm1fcmVsZWFzZV9sb2NrZWQoc3RydWN0IGluX211 bHRpICppbm0pDQo+ICtzdGF0aWMgdm9pZA0KPiAraW5tX3JlbGVhc2Uoc3RydWN0IGluX211bHRp ICppbm0pDQo+ICB7DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyICppZm1hOw0KPiArCXN0cnVjdCBp Zm5ldCAqaWZwOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gLQ0KPiAgCUNU UjIoS1RSX0lHTVBWMywgIiVzOiByZWZjb3VudCBpcyAlZCIsIF9fZnVuY19fLCBpbm0tPmlubV9y ZWZjb3VudCk7DQo+IC0NCj4gLQlpZiAoLS1pbm0tPmlubV9yZWZjb3VudCA+IDApIHsNCj4gLQkJ Q1RSMihLVFJfSUdNUFYzLCAiJXM6IHJlZmNvdW50IGlzIG5vdyAlZCIsIF9fZnVuY19fLA0KPiAt CQkgICAgaW5tLT5pbm1fcmVmY291bnQpOw0KPiAtCQlyZXR1cm47DQo+IC0JfQ0KPiAtDQo+ICsJ TVBBU1MoaW5tLT5pbm1fcmVmY291bnQgPT0gMCk7DQo+ICAJQ1RSMihLVFJfSUdNUFYzLCAiJXM6 IGZyZWVpbmcgaW5tICVwIiwgX19mdW5jX18sIGlubSk7DQo+ICANCj4gIAlpZm1hID0gaW5tLT5p bm1faWZtYTsNCj4gKwlpZnAgPSBpbm0tPmlubV9pZnA7DQo+ICANCj4gIAkvKiBYWFggdGhpcyBh Y2Nlc3MgaXMgbm90IGNvdmVyZWQgYnkgSUZfQUREUl9MT0NLICovDQo+ICAJQ1RSMihLVFJfSUdN UFYzLCAiJXM6IHB1cmdpbmcgaWZtYSAlcCIsIF9fZnVuY19fLCBpZm1hKTsNCj4gLQlLQVNTRVJU KGlmbWEtPmlmbWFfcHJvdG9zcGVjID09IGlubSwNCj4gLQkgICAgKCIlczogaWZtYV9wcm90b3Nw ZWMgIT0gaW5tIiwgX19mdW5jX18pKTsNCj4gLQlpZm1hLT5pZm1hX3Byb3Rvc3BlYyA9IE5VTEw7 DQo+IC0NCj4gKwlpZiAoaWZwKQ0KPiArCQlDVVJWTkVUX1NFVChpZnAtPmlmX3ZuZXQpOw0KPiAg CWlubV9wdXJnZShpbm0pOw0KPiAtDQo+ICAJZnJlZShpbm0sIE1fSVBNQUREUik7DQo+ICANCj4g IAlpZl9kZWxtdWx0aV9pZm1hKGlmbWEpOw0KPiArCWlmIChpZnApDQo+ICsJCUNVUlZORVRfUkVT VE9SRSgpOw0KPiAgfQ0KPiAgDQo+ICAvKg0KPiBAQCAtNTkyLDcgKzY1OCw3IEBAIGlubV9jbGVh cl9yZWNvcmRlZChzdHJ1Y3QgaW5fbXVsdGkgKmlubSkNCj4gIHsNCj4gIAlzdHJ1Y3QgaXBfbXNv dXJjZQkqaW1zOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxU SV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ICANCj4gIAlSQl9GT1JFQUNIKGltcywgaXBfbXNvdXJj ZV90cmVlLCAmaW5tLT5pbm1fc3Jjcykgew0KPiAgCQlpZiAoaW1zLT5pbXNfc3RwKSB7DQo+IEBA IC02MzIsNyArNjk4LDcgQEAgaW5tX3JlY29yZF9zb3VyY2Uoc3RydWN0IGluX211bHRpICppbm0s IGNvbnN0IGluX2FkZHJfDQo+ICAJc3RydWN0IGlwX21zb3VyY2UJIGZpbmQ7DQo+ICAJc3RydWN0 IGlwX21zb3VyY2UJKmltcywgKm5pbXM7DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgp Ow0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCWZpbmQuaW1zX2hh ZGRyID0gbnRvaGwobmFkZHIpOw0KPiAgCWltcyA9IFJCX0ZJTkQoaXBfbXNvdXJjZV90cmVlLCAm aW5tLT5pbm1fc3JjcywgJmZpbmQpOw0KPiBAQCAtOTU5LDYgKzEwMjUsNyBAQCBpbm1fbWVyZ2Uo c3RydWN0IGluX211bHRpICppbm0sIC8qY29uc3QqLyBzdHJ1Y3QgaW5fbWYNCj4gIAlzY2hhbmdl ZCA9IDA7DQo+ICAJZXJyb3IgPSAwOw0KPiAgCW5zcmMxID0gbnNyYzAgPSAwOw0KPiArCUlOX01V TFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCS8qDQo+ICAJICogVXBkYXRlIHRoZSBz b3VyY2UgZmlsdGVycyBmaXJzdCwgYXMgdGhpcyBtYXkgZmFpbC4NCj4gQEAgLTExNjUsNiArMTIz Miw3IEBAIGluX2pvaW5ncm91cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVj dCBpbg0KPiAgCWludAkJCSBlcnJvcjsNCj4gIA0KPiAgCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7 DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0tfQVNTRVJUKCk7DQo+ICANCj4gIAlDVFI0KEtUUl9J R01QVjMsICIlczogam9pbiAweCUwOHggb24gJXAoJXMpKSIsIF9fZnVuY19fLA0KPiAgCSAgICBu dG9obChnaW5hLT5zX2FkZHIpLCBpZnAsIGlmcC0+aWZfeG5hbWUpOw0KPiBAQCAtMTE4Niw3ICsx MjU0LDcgQEAgaW5fam9pbmdyb3VwX2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3Ry dWN0IGluDQo+ICAJCUNUUjEoS1RSX0lHTVBWMywgIiVzOiBpbl9nZXRtdWx0aSgpIGZhaWx1cmUi LCBfX2Z1bmNfXyk7DQo+ICAJCXJldHVybiAoZXJyb3IpOw0KPiAgCX0NCj4gLQ0KPiArCUlOX01V TFRJX0xJU1RfTE9DSygpOw0KPiAgCUNUUjEoS1RSX0lHTVBWMywgIiVzOiBtZXJnZSBpbm0gc3Rh dGUiLCBfX2Z1bmNfXyk7DQo+ICAJZXJyb3IgPSBpbm1fbWVyZ2UoaW5tLCBpbWYpOw0KPiAgCWlm IChlcnJvcikgew0KPiBAQCAtMTIwMSwxMCArMTI2OSwxMiBAQCBpbl9qb2luZ3JvdXBfbG9ja2Vk KHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4gIAkJZ290byBvdXRfaW5tX3Jl bGVhc2U7DQo+ICAJfQ0KPiAgDQo+IC1vdXRfaW5tX3JlbGVhc2U6DQo+ICsgb3V0X2lubV9yZWxl YXNlOg0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ICAJaWYgKGVycm9yKSB7DQo+ICsN Cj4gIAkJQ1RSMihLVFJfSUdNUFYzLCAiJXM6IGRyb3BwaW5nIHJlZiBvbiAlcCIsIF9fZnVuY19f LCBpbm0pOw0KPiAtCQlpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gKwkJaW5tX3JlbGVhc2Vf ZGVmZXJyZWQoaW5tKTsNCj4gIAl9IGVsc2Ugew0KPiAgCQkqcGlubSA9IGlubTsNCj4gIAl9DQo+ IEBAIC0xMjQ5LDYgKzEzMTksNyBAQCBpbl9sZWF2ZWdyb3VwX2xvY2tlZChzdHJ1Y3QgaW5fbXVs dGkgKmlubSwgLypjb25zdCovIHMNCj4gIAllcnJvciA9IDA7DQo+ICANCj4gIAlJTl9NVUxUSV9M T0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ ICAJQ1RSNShLVFJfSUdNUFYzLCAiJXM6IGxlYXZlIGlubSAlcCwgMHglMDh4LyVzLCBpbWYgJXAi LCBfX2Z1bmNfXywNCj4gIAkgICAgaW5tLCBudG9obChpbm0tPmlubV9hZGRyLnNfYWRkciksDQo+ IEBAIC0xMjcyLDE4ICsxMzQzLDIwIEBAIGluX2xlYXZlZ3JvdXBfbG9ja2VkKHN0cnVjdCBpbl9t dWx0aSAqaW5tLCAvKmNvbnN0Ki8gcw0KPiAgCSAqIHRoZSB0cmFuc2FjdGlvbiwgaXQgTVVTVCBO T1QgZmFpbC4NCj4gIAkgKi8NCj4gIAlDVFIxKEtUUl9JR01QVjMsICIlczogbWVyZ2UgaW5tIHN0 YXRlIiwgX19mdW5jX18pOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAgCWVycm9yID0g aW5tX21lcmdlKGlubSwgaW1mKTsNCj4gIAlLQVNTRVJUKGVycm9yID09IDAsICgiJXM6IGZhaWxl ZCB0byBtZXJnZSBpbm0gc3RhdGUiLCBfX2Z1bmNfXykpOw0KPiAgDQo+ICAJQ1RSMShLVFJfSUdN UFYzLCAiJXM6IGRvaW5nIGlnbXAgZG93bmNhbGwiLCBfX2Z1bmNfXyk7DQo+ICAJQ1VSVk5FVF9T RVQoaW5tLT5pbm1faWZwLT5pZl92bmV0KTsNCj4gIAllcnJvciA9IGlnbXBfY2hhbmdlX3N0YXRl KGlubSk7DQo+ICsJaW5tX3JlbGVhc2VfZGVmZXJyZWQoaW5tKTsNCj4gKwlJTl9NVUxUSV9MSVNU X1VOTE9DSygpOw0KPiAgCUNVUlZORVRfUkVTVE9SRSgpOw0KPiAgCWlmIChlcnJvcikNCj4gIAkJ Q1RSMShLVFJfSUdNUFYzLCAiJXM6IGZhaWxlZCBpZ21wIGRvd25jYWxsIiwgX19mdW5jX18pOw0K PiAgDQo+ICAJQ1RSMihLVFJfSUdNUFYzLCAiJXM6IGRyb3BwaW5nIHJlZiBvbiAlcCIsIF9fZnVu Y19fLCBpbm0pOw0KPiAtCWlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiAgDQo+ICAJcmV0dXJu IChlcnJvcik7DQo+ICB9DQo+IEBAIC0xMzE1LDE4ICsxMzg4LDYgQEAgaW5fYWRkbXVsdGkoc3Ry dWN0IGluX2FkZHIgKmFwLCBzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIH0NCj4gIA0KPiAgLyoNCj4g LSAqIExlYXZlIGFuIElQdjQgbXVsdGljYXN0IGdyb3VwLCBhc3N1bWVkIHRvIGJlIGluIGV4Y2x1 c2l2ZSAoKixHKSBtb2RlLg0KPiAtICogVGhpcyBLUEkgaXMgZm9yIGxlZ2FjeSBrZXJuZWwgY29u c3VtZXJzIG9ubHkuDQo+IC0gKi8NCj4gDQo+ICoqKiBESUZGIE9VVFBVVCBUUlVOQ0FURUQgQVQg MTAwMCBMSU5FUyAqKioNCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18NCj4gc3ZuLXNyYy1oZWFkQGZyZWVic2Qub3JnIG1haWxpbmcgbGlzdA0KPiBodHRw czovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8vc3ZuLXNyYy1oZWFkDQo+IFRv IHVuc3Vic2NyaWJlLCBzZW5kIGFueSBtYWlsIHRvICJzdm4tc3JjLWhlYWQtdW5zdWJzY3JpYmVA ZnJlZWJzZC5vcmciDQoNCg0KQWZ0ZXIgKGFyb3VuZCEpIHRoaXMgdXBkYXRlLCBzb21lIGJveGVz IHdpdGggaTM1MCBkdWFsIHBvcnQgTklDcyBpbW1lZGlhdGVseSBjcmFzaCB3aXRoDQpGYXRhbCB0 cmFwIDEyOiBwYWdlIGZhdWx0IGFuZCBzb21ldGhpbmcgd2l0aCANCg0KY3VycmVudCBwcm9jZXNz OiAoaXNjLXdvcmtlcjAwMDYpDQoNCi4uLi4NCg0KVGhvc2UgYm94ZXMgZG8gbm90IGhhdmUgZGVi dWdnaW5nIGtlcm5lbC4gVGhlIHN5bXB0b21icyBhcmUgdGhlIHNhbWUuIFNpbmdsZSB1c2VyIGtl cm5lbA0Kd29ya3MsIGJ1dCB0aGUgbW9tZW50IEkgcGVyZm9ybSAvZXRjL25ldHN0YXJ0IGFuZCBh bnkga2luZCBvZiBuZXQgdHJhZmZpYyBlc3RhYmxpc2hlcywNCnRoaXMgY3JhcCBiYWlscyBvdXQu DQoNCg0KLSAtLSANCk8uIEhhcnRtYW5uDQoNCkljaCB3aWRlcnNwcmVjaGUgZGVyIE51dHp1bmcg b2RlciDDnGJlcm1pdHRsdW5nIG1laW5lciBEYXRlbiBmw7xyDQpXZXJiZXp3ZWNrZSBvZGVyIGbD vHIgZGllIE1hcmt0LSBvZGVyIE1laW51bmdzZm9yc2NodW5nICjCpyAyOCBBYnMuIDQgQkRTRyku DQotLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KDQppTFVFQVJNS0FCMFdJUVFaVlpNekF0 d0MyVC84NlRyUzUyOGZ5RmhZbEFVQ1d1dGp0Z0FLQ1JEUzUyOGZ5RmhZDQpsQWt6QWY5UGhhRlR3 TmhRRDJ6Rjd4U0hKMndmdkx0b1VFalpsekdzdXNBQ3AxcGE3SkFmejBQeXYrbG0rWE5KDQp2TEVs cklmMUNtRHp1QTh5YmxaL3gvd09WU0prQWY5Qys1MERWRXRHcTVIL2JIU0ROd3ptcXJqOFlnQjdY cFNzDQpQTVJYYytJd0lhMUpnaTJ5TSs2VENTTlNzMU41YkVVaFU5Qmk4ZVh5NlkwRlNrQVplVitz DQo9UzBiQw0KLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tDQo= From owner-svn-src-all@freebsd.org Thu May 3 19:38:21 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8D743FB78E6; Thu, 3 May 2018 19:38:21 +0000 (UTC) (envelope-from jonlooney@gmail.com) Received: from mail-wm0-f46.google.com (mail-wm0-f46.google.com [74.125.82.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0C2A16E54A; Thu, 3 May 2018 19:38:20 +0000 (UTC) (envelope-from jonlooney@gmail.com) Received: by mail-wm0-f46.google.com with SMTP id a137-v6so4223713wme.1; Thu, 03 May 2018 12:38:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+Tzv6K1bZQRRiP50d/xHwc1Nyn+dC55xxULzP+qhS+4=; b=RpIIy9aBUQnRACQ+5XeNApRuhphkq8syxNmwD6n7BR0jEkaC2nZsXdgH4ryejatEC0 FNuP5j4Srj+J0WfMdSywcHK8cfZslPy4X9vFQ7G4g3aga42ezf3pTTfqqAUb5pgsCQ2T nag0WjrrZsvLxggOXz4V/uBWcl8gTvdWJrBROlMfHTXbik0U7dHVmy3BIv78sOpbA579 /ECc+hTZvqAeuQm5VIJuUeF+a+AQHs4uUK8f2JIBkHbMbvr1QqGxyW+SYRoaBuTI399w /4iLHFmKd0t+LVGQgPOi8i7fipZfpKS/qq6p8DmexkjxqDQlJz0uoz7ax04GxjWEK2Z0 uh2Q== X-Gm-Message-State: ALQs6tCCXzPNFrm8SHgylEsQAL4KxKET1WwhGYuLViZ9UWigP+qREDbh ooitVx1/mNprRpgHgqyis1vUJkUN X-Google-Smtp-Source: AB8JxZprsxsyLabI5awzLVLjfOSaZ7kWbkVBzuIhUfOsXDhgIUy2hJpGrMp0JUUEwBxJJlEBBOYV5g== X-Received: by 2002:a50:8e59:: with SMTP id 25-v6mr5734060edx.101.1525376294267; Thu, 03 May 2018 12:38:14 -0700 (PDT) Received: from mail-wr0-f180.google.com (mail-wr0-f180.google.com. [209.85.128.180]) by smtp.gmail.com with ESMTPSA id b16-v6sm8030827eds.81.2018.05.03.12.38.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 May 2018 12:38:13 -0700 (PDT) Received: by mail-wr0-f180.google.com with SMTP id v5-v6so18780474wrf.9; Thu, 03 May 2018 12:38:13 -0700 (PDT) X-Received: by 2002:adf:ab56:: with SMTP id r22-v6mr20353972wrc.228.1525376293651; Thu, 03 May 2018 12:38:13 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.197.74 with HTTP; Thu, 3 May 2018 12:38:13 -0700 (PDT) In-Reply-To: <201805031501.w43F1Reo024234@repo.freebsd.org> References: <201805031501.w43F1Reo024234@repo.freebsd.org> From: "Jonathan T. Looney" Date: Thu, 3 May 2018 15:38:13 -0400 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r333211 - head/sys/netinet/cc To: Sean Bruno Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:38:21 -0000 On Thu, May 3, 2018 at 11:01 AM, Sean Bruno wrote: > > @@ -242,8 +241,8 @@ tf_cwnd(int ticks_since_cong, int rtt_ticks, unsigned > { > > /* Equation 4 of I-D. */ > - return (((wmax * CUBIC_BETA) + (((THREE_X_PT2 * ticks_since_cong * > - smss) << CUBIC_SHIFT) / TWO_SUB_PT2 / rtt_ticks)) >> CUBIC_SHIFT); > + return (((wmax * CUBIC_BETA) + (((THREE_X_PT3 * ticks_since_cong * > + smss) << CUBIC_SHIFT) / TWO_SUB_PT3 / rtt_ticks)) >> CUBIC_SHIFT); > } > > #endif /* _NETINET_CC_CUBIC_H_ */ > Did you analyze this to ensure that the intermediate steps in this calculation would never overflow? Jonathan From owner-svn-src-all@freebsd.org Thu May 3 19:45:49 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EACA6FB7DB7; Thu, 3 May 2018 19:45:48 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9F82A6FE11; Thu, 3 May 2018 19:45:48 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 99C3024517; Thu, 3 May 2018 19:45:48 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43JjmjC074853; Thu, 3 May 2018 19:45:48 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43JjmuO074852; Thu, 3 May 2018 19:45:48 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805031945.w43JjmuO074852@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Thu, 3 May 2018 19:45:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333223 - head/sys/modules/dtb/allwinner X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/sys/modules/dtb/allwinner X-SVN-Commit-Revision: 333223 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:45:49 -0000 Author: kevans Date: Thu May 3 19:45:48 2018 New Revision: 333223 URL: https://svnweb.freebsd.org/changeset/base/333223 Log: dtb/allwinner: Add a83t-sid overlay Modified: head/sys/modules/dtb/allwinner/Makefile Modified: head/sys/modules/dtb/allwinner/Makefile ============================================================================== --- head/sys/modules/dtb/allwinner/Makefile Thu May 3 19:00:50 2018 (r333222) +++ head/sys/modules/dtb/allwinner/Makefile Thu May 3 19:45:48 2018 (r333223) @@ -19,7 +19,8 @@ DTS= \ sun8i-h3-orangepi-one.dts \ sun8i-h3-orangepi-plus2e.dts -DTSO= sun8i-h3-sid.dtso +DTSO= sun8i-a83t-sid.dtso \ + sun8i-h3-sid.dtso LINKS= \ ${DTBDIR}/sun4i-a10-cubieboard.dtb ${DTBDIR}/cubieboard.dtb \ From owner-svn-src-all@freebsd.org Thu May 3 19:47:26 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A503BFB7E74; Thu, 3 May 2018 19:47:26 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5933970CAC; Thu, 3 May 2018 19:47:26 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 53CBB24519; Thu, 3 May 2018 19:47:26 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43JlQXx075079; Thu, 3 May 2018 19:47:26 GMT (envelope-from jilles@FreeBSD.org) Received: (from jilles@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43JlPeA075076; Thu, 3 May 2018 19:47:25 GMT (envelope-from jilles@FreeBSD.org) Message-Id: <201805031947.w43JlPeA075076@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jilles set sender to jilles@FreeBSD.org using -f From: Jilles Tjoelker Date: Thu, 3 May 2018 19:47:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333224 - in stable/11/bin/sh: . tests/builtins X-SVN-Group: stable-11 X-SVN-Commit-Author: jilles X-SVN-Commit-Paths: in stable/11/bin/sh: . tests/builtins X-SVN-Commit-Revision: 333224 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:47:26 -0000 Author: jilles Date: Thu May 3 19:47:25 2018 New Revision: 333224 URL: https://svnweb.freebsd.org/changeset/base/333224 Log: MFC r333092: sh: Don't have [ match any [[:class:]] Added: stable/11/bin/sh/tests/builtins/case23.0 - copied unchanged from r333092, head/bin/sh/tests/builtins/case23.0 Modified: stable/11/bin/sh/expand.c stable/11/bin/sh/tests/builtins/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/bin/sh/expand.c ============================================================================== --- stable/11/bin/sh/expand.c Thu May 3 19:45:48 2018 (r333223) +++ stable/11/bin/sh/expand.c Thu May 3 19:47:25 2018 (r333224) @@ -1342,8 +1342,10 @@ patmatch(const char *pattern, const char *string) } if (c == '[' && *p == ':') { found |= match_charclass(p, chr, &end); - if (end != NULL) + if (end != NULL) { p = end; + continue; + } } if (c == CTLESC) c = *p++; Modified: stable/11/bin/sh/tests/builtins/Makefile ============================================================================== --- stable/11/bin/sh/tests/builtins/Makefile Thu May 3 19:45:48 2018 (r333223) +++ stable/11/bin/sh/tests/builtins/Makefile Thu May 3 19:47:25 2018 (r333224) @@ -40,6 +40,7 @@ ${PACKAGE}FILES+= case17.0 ${PACKAGE}FILES+= case18.0 ${PACKAGE}FILES+= case19.0 ${PACKAGE}FILES+= case20.0 +${PACKAGE}FILES+= case23.0 ${PACKAGE}FILES+= cd1.0 ${PACKAGE}FILES+= cd2.0 ${PACKAGE}FILES+= cd3.0 Copied: stable/11/bin/sh/tests/builtins/case23.0 (from r333092, head/bin/sh/tests/builtins/case23.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/11/bin/sh/tests/builtins/case23.0 Thu May 3 19:47:25 2018 (r333224, copy of r333092, head/bin/sh/tests/builtins/case23.0) @@ -0,0 +1,5 @@ +# $FreeBSD$ + +case [ in +[[:alpha:]]) echo bad +esac From owner-svn-src-all@freebsd.org Thu May 3 19:49:40 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D321CFB7FA6; Thu, 3 May 2018 19:49:40 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7F23271C72; Thu, 3 May 2018 19:49:40 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 788CB2451E; Thu, 3 May 2018 19:49:40 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Jneqf075197; Thu, 3 May 2018 19:49:40 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43JneuM075196; Thu, 3 May 2018 19:49:40 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805031949.w43JneuM075196@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Thu, 3 May 2018 19:49:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333225 - head/sys/dts/arm/overlays X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/sys/dts/arm/overlays X-SVN-Commit-Revision: 333225 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:49:41 -0000 Author: kevans Date: Thu May 3 19:49:40 2018 New Revision: 333225 URL: https://svnweb.freebsd.org/changeset/base/333225 Log: Garbage collect the a83t emac overlays The 4.16 DTS import brought in emac support for the a83t. Since these boards' DTS is pulled from /boot and I forgot to hook these up to the build, they should be fairly safe to go away. The a83t-sid and h3-sid overlays are still relevant. a83t-sid will likely come in with 4.18 DTS. Deleted: head/sys/dts/arm/overlays/sun8i-a83t-bananapi-m3-emac.dtso head/sys/dts/arm/overlays/sun8i-a83t-emac.dtso From owner-svn-src-all@freebsd.org Thu May 3 19:53:08 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E727EFB82D7; Thu, 3 May 2018 19:53:07 +0000 (UTC) (envelope-from kmacybsd@gmail.com) Received: from mail-oi0-x243.google.com (mail-oi0-x243.google.com [IPv6:2607:f8b0:4003:c06::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7A1B972EE6; Thu, 3 May 2018 19:53:07 +0000 (UTC) (envelope-from kmacybsd@gmail.com) Received: by mail-oi0-x243.google.com with SMTP id 11-v6so17176169ois.8; Thu, 03 May 2018 12:53:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=i2/PS8jsZTqLlCFd1qRPvDTR6zXDfuwrIRwdxq7te48=; b=U9nWlGOQdWhJtbigOCw6rYvJ5yyxygXWLCHjkS/eQ3rkIltXKrio7yoA8W5NC2K441 hkdZ/538V7bdpvF+zP9Hh7rP1/9HmeGpw+xRiIQdnJgZ+6/bYZ0ZwSjEtaTFpQjPVmoQ hb1K118hFfKZ6/dqmudNBqTLFbxLgw6dbiMJjBiHUlhZB4ti9XeNFsluDFWoSS7zMCmS 7oOJXG5FIngsNBiPJ4nNq0q4AIjnvc3n4bG8Xkdum8yZnkf/frXjFmBd79QQKw7WpnKh mwNMdgbbPr4c3SF3Bbo3IP6VHueTFAh+RvR2AB2TzYQOaBVdmyM+EkbgXvca2jqSasuI 7Pxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=i2/PS8jsZTqLlCFd1qRPvDTR6zXDfuwrIRwdxq7te48=; b=jQgXv+zygra/7ziFY1Yiay0835rp376SnkOikoEJlESEcBT+HogRZSmR2sVePxjNiI zHWasnwjafyuPWJTxr6eNtMFrGac9sur6UF3qPpYM92biXBdGs2tyu3DtYIl/C16kZDC RzS0vHqT/s+sXSKjhS9zMX7b8QEdu0zeYigQwDLezHnvwFwXMBUMScq5MRaRiNQMLoC+ Nl9dUtnJ/E6uZDcJySQ/hhZLohkfUUPpGokBZVq1Fr0FQNFDYD5ZKTQZ64vg62EudTMe mCLRi5xpgy6oofMCGfyk9jgtdBXOU6H6pmZJy5XlLK6rPJ+TAWgpxp04DdoXpNx5UI4t 0tgw== X-Gm-Message-State: ALQs6tCfUCQaS+td6JsQSIepuRJZ2X/e/r90ss1MxGO0TIOqXiX0gRgy GjUs0mfWt8HcwFqGDcxPxLusEhbP7Mx74Htg/NqPbA== X-Google-Smtp-Source: AB8JxZpmFrHYwMaTtmWP5VMvdXfkdVjtjZoTiRnCyjK7e2VU4Gqouv3RxMzVL04pbtD2GO3aJ3uzHjqVzIV1612713U= X-Received: by 2002:aca:d906:: with SMTP id q6-v6mr14530789oig.349.1525377185943; Thu, 03 May 2018 12:53:05 -0700 (PDT) MIME-Version: 1.0 Sender: kmacybsd@gmail.com Received: by 2002:a9d:3f0:0:0:0:0:0 with HTTP; Thu, 3 May 2018 12:53:05 -0700 (PDT) In-Reply-To: <20180503213206.7fba052c@thor.intern.walstatt.dynvpn.de> References: <201805021936.w42JaTlq039053@repo.freebsd.org> <20180503213206.7fba052c@thor.intern.walstatt.dynvpn.de> From: "K. Macy" Date: Thu, 3 May 2018 12:53:05 -0700 X-Google-Sender-Auth: biZlE7RN0iIOno95crp4ZfyRuxE Message-ID: Subject: Re: svn commit: r333175 - in head/sys: kern net netinet netinet6 sys To: "O. Hartmann" Cc: Stephen Hurd , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:53:08 -0000 Can you give any context on what they're doing? In addition - even on a production kernel it's possible to compile in DDB to at least get a backtrace. Your report only gives us enough information to know that there is _an_ issue. It's difficult to proceed on this alone. I do have a report from the FreeBSD CI infrastructure that we're looking in to now. With luck that is the same issue. -M On Thu, May 3, 2018 at 12:31 PM, O. Hartmann wrote= : > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 > > Am Wed, 2 May 2018 19:36:29 +0000 (UTC) > Stephen Hurd schrieb: > >> Author: shurd >> Date: Wed May 2 19:36:29 2018 >> New Revision: 333175 >> URL: https://svnweb.freebsd.org/changeset/base/333175 >> >> Log: >> Separate list manipulation locking from state change in multicast >> >> Multicast incorrectly calls in to drivers with a mutex held causing dr= ivers >> to have to go through all manner of contortions to use a non sleepable= lock. >> Serialize multicast updates instead. >> >> Submitted by: mmacy >> Reviewed by: shurd, sbruno >> Sponsored by: Limelight Networks >> Differential Revision: https://reviews.freebsd.org/D14969 >> >> Modified: >> head/sys/kern/subr_gtaskqueue.c >> head/sys/kern/subr_witness.c >> head/sys/net/if.c >> head/sys/netinet/igmp.c >> head/sys/netinet/igmp_var.h >> head/sys/netinet/in.c >> head/sys/netinet/in_mcast.c >> head/sys/netinet/in_pcb.c >> head/sys/netinet/in_var.h >> head/sys/netinet/ip_carp.c >> head/sys/netinet6/in6.c >> head/sys/netinet6/in6_ifattach.c >> head/sys/netinet6/in6_mcast.c >> head/sys/netinet6/in6_pcb.c >> head/sys/netinet6/in6_var.h >> head/sys/netinet6/mld6.c >> head/sys/netinet6/mld6_var.h >> head/sys/sys/gtaskqueue.h >> >> Modified: head/sys/kern/subr_gtaskqueue.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/kern/subr_gtaskqueue.c Wed May 2 17:41:00 2018 (r= 333174) >> +++ head/sys/kern/subr_gtaskqueue.c Wed May 2 19:36:29 2018 (r= 333175) >> @@ -53,6 +53,7 @@ static void gtaskqueue_thread_enqueue(void *); >> static void gtaskqueue_thread_loop(void *arg); >> >> TASKQGROUP_DEFINE(softirq, mp_ncpus, 1); >> +TASKQGROUP_DEFINE(config, 1, 1); >> >> struct gtaskqueue_busy { >> struct gtask *tb_running; >> @@ -662,7 +663,7 @@ SYSINIT(tqg_record_smp_started, SI_SUB_SMP, SI_ORDER= _F >> >> void >> taskqgroup_attach(struct taskqgroup *qgroup, struct grouptask *gtask, >> - void *uniq, int irq, char *name) >> + void *uniq, int irq, const char *name) >> { >> cpuset_t mask; >> int qid, error; >> @@ -976,4 +977,13 @@ void >> taskqgroup_destroy(struct taskqgroup *qgroup) >> { >> >> +} >> + >> +void >> +taskqgroup_config_gtask_init(void *ctx, struct grouptask *gtask, gtask_= fn_t *fn, >> + const char *name) >> +{ >> + >> + GROUPTASK_INIT(gtask, 0, fn, ctx); >> + taskqgroup_attach(qgroup_config, gtask, gtask, -1, name); >> } >> >> Modified: head/sys/kern/subr_witness.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/kern/subr_witness.c Wed May 2 17:41:00 2018 (r= 333174) >> +++ head/sys/kern/subr_witness.c Wed May 2 19:36:29 2018 (r= 333175) >> @@ -532,18 +532,22 @@ static struct witness_order_list_entry order_lists= [] =3D >> * IPv4 multicast: >> * protocol locks before interface locks, after UDP locks. >> */ >> + { "in_multi_sx", &lock_class_sx }, >> { "udpinp", &lock_class_rw }, >> - { "in_multi_mtx", &lock_class_mtx_sleep }, >> + { "in_multi_list_mtx", &lock_class_mtx_sleep }, >> { "igmp_mtx", &lock_class_mtx_sleep }, >> + { "ifnet_rw", &lock_class_rw }, >> { "if_addr_lock", &lock_class_rw }, >> { NULL, NULL }, >> /* >> * IPv6 multicast: >> * protocol locks before interface locks, after UDP locks. >> */ >> + { "in6_multi_sx", &lock_class_sx }, >> { "udpinp", &lock_class_rw }, >> - { "in6_multi_mtx", &lock_class_mtx_sleep }, >> + { "in6_multi_list_mtx", &lock_class_mtx_sleep }, >> { "mld_mtx", &lock_class_mtx_sleep }, >> + { "ifnet_rw", &lock_class_rw }, >> { "if_addr_lock", &lock_class_rw }, >> { NULL, NULL }, >> /* >> >> Modified: head/sys/net/if.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/net/if.c Wed May 2 17:41:00 2018 (r333174) >> +++ head/sys/net/if.c Wed May 2 19:36:29 2018 (r333175) >> @@ -985,11 +985,13 @@ static void >> if_purgemaddrs(struct ifnet *ifp) >> { >> struct ifmultiaddr *ifma; >> - struct ifmultiaddr *next; >> >> IF_ADDR_WLOCK(ifp); >> - TAILQ_FOREACH_SAFE(ifma, &ifp->if_multiaddrs, ifma_link, next) >> + while (!TAILQ_EMPTY(&ifp->if_multiaddrs)) { >> + ifma =3D TAILQ_FIRST(&ifp->if_multiaddrs); >> + TAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifma_link); >> if_delmulti_locked(ifp, ifma, 1); >> + } >> IF_ADDR_WUNLOCK(ifp); >> } >> >> @@ -3429,6 +3431,12 @@ if_addmulti(struct ifnet *ifp, struct sockaddr *s= a, >> struct sockaddr_dl sdl; >> int error; >> >> +#ifdef INET >> + IN_MULTI_LIST_UNLOCK_ASSERT(); >> +#endif >> +#ifdef INET6 >> + IN6_MULTI_LIST_UNLOCK_ASSERT(); >> +#endif >> /* >> * If the address is already present, return a new reference to it= ; >> * otherwise, allocate storage and set up a new address. >> @@ -3610,6 +3618,9 @@ if_delmulti_ifma(struct ifmultiaddr *ifma) >> struct ifnet *ifp; >> int lastref; >> >> +#ifdef INET >> + IN_MULTI_LIST_UNLOCK_ASSERT(); >> +#endif >> ifp =3D ifma->ifma_ifp; >> #ifdef DIAGNOSTIC >> if (ifp =3D=3D NULL) { >> @@ -3711,8 +3722,7 @@ if_delmulti_locked(struct ifnet *ifp, struct ifmul= tiad >> if_freemulti(ll_ifma); >> } >> } >> - >> - if (ifp !=3D NULL) >> + if (ifp !=3D NULL && detaching =3D=3D 0) >> TAILQ_REMOVE(&ifp->if_multiaddrs, ifma, ifma_link); >> >> if_freemulti(ifma); >> >> Modified: head/sys/netinet/igmp.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/netinet/igmp.c Wed May 2 17:41:00 2018 (r333174) >> +++ head/sys/netinet/igmp.c Wed May 2 19:36:29 2018 (r333175) >> @@ -136,7 +136,7 @@ static int igmp_v3_enqueue_group_record(struc= t mbufq * >> struct in_multi *, const int, const int, const int); >> static int igmp_v3_enqueue_filter_change(struct mbufq *, >> struct in_multi *); >> -static void igmp_v3_process_group_timers(struct igmp_ifsoftc *, >> +static void igmp_v3_process_group_timers(struct in_multi_head *, >> struct mbufq *, struct mbufq *, struct in_multi *, >> const int); >> static int igmp_v3_merge_state_changes(struct in_multi *, >> @@ -162,12 +162,12 @@ static const struct netisr_handler igmp_nh =3D { >> * themselves are not virtualized. >> * >> * Locking: >> - * * The permitted lock order is: IN_MULTI_LOCK, IGMP_LOCK, IF_ADDR_LO= CK. >> + * * The permitted lock order is: IN_MULTI_LIST_LOCK, IGMP_LOCK, IF_AD= DR_LOCK. >> * Any may be taken independently; if any are held at the same >> * time, the above lock order must be followed. >> * * All output is delegated to the netisr. >> * Now that Giant has been eliminated, the netisr may be inlined. >> - * * IN_MULTI_LOCK covers in_multi. >> + * * IN_MULTI_LIST_LOCK covers in_multi. >> * * IGMP_LOCK covers igmp_ifsoftc and any global variables in this fi= le, >> * including the output queue. >> * * IF_ADDR_LOCK covers if_multiaddrs, which is used for a variety of >> @@ -441,7 +441,7 @@ sysctl_igmp_ifinfo(SYSCTL_HANDLER_ARGS) >> if (error) >> return (error); >> >> - IN_MULTI_LOCK(); >> + IN_MULTI_LIST_LOCK(); >> IGMP_LOCK(); >> >> if (name[0] <=3D 0 || name[0] > V_if_index) { >> @@ -475,7 +475,7 @@ sysctl_igmp_ifinfo(SYSCTL_HANDLER_ARGS) >> >> out_locked: >> IGMP_UNLOCK(); >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> return (error); >> } >> >> @@ -586,7 +586,6 @@ igi_alloc_locked(/*const*/ struct ifnet *ifp) >> igi->igi_qi =3D IGMP_QI_INIT; >> igi->igi_qri =3D IGMP_QRI_INIT; >> igi->igi_uri =3D IGMP_URI_INIT; >> - SLIST_INIT(&igi->igi_relinmhead); >> mbufq_init(&igi->igi_gq, IGMP_MAX_RESPONSE_PACKETS); >> >> LIST_INSERT_HEAD(&V_igi_head, igi, igi_link); >> @@ -612,11 +611,12 @@ igmp_ifdetach(struct ifnet *ifp) >> { >> struct igmp_ifsoftc *igi; >> struct ifmultiaddr *ifma; >> - struct in_multi *inm, *tinm; >> - >> + struct in_multi *inm; >> + struct in_multi_head inm_free_tmp; >> CTR3(KTR_IGMPV3, "%s: called for ifp %p(%s)", __func__, ifp, >> ifp->if_xname); >> >> + SLIST_INIT(&inm_free_tmp); >> IGMP_LOCK(); >> >> igi =3D ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; >> @@ -631,24 +631,15 @@ igmp_ifdetach(struct ifnet *ifp) >> ("%s: ifma_protospec is NULL", __func__)); >> #endif >> inm =3D (struct in_multi *)ifma->ifma_protospec; >> - if (inm->inm_state =3D=3D IGMP_LEAVING_MEMBER) { >> - SLIST_INSERT_HEAD(&igi->igi_relinmhead, >> - inm, inm_nrele); >> - } >> + if (inm->inm_state =3D=3D IGMP_LEAVING_MEMBER) >> + inm_rele_locked(&inm_free_tmp, inm); >> inm_clear_recorded(inm); >> } >> IF_ADDR_RUNLOCK(ifp); >> - /* >> - * Free the in_multi reference(s) for this IGMP lifecycle. >> - */ >> - SLIST_FOREACH_SAFE(inm, &igi->igi_relinmhead, inm_nrele, >> - tinm) { >> - SLIST_REMOVE_HEAD(&igi->igi_relinmhead, inm_nrele)= ; >> - inm_release_locked(inm); >> - } >> + inm_release_list_deferred(&inm_free_tmp); >> } >> - >> IGMP_UNLOCK(); >> + >> } >> >> /* >> @@ -684,11 +675,6 @@ igi_delete_locked(const struct ifnet *ifp) >> mbufq_drain(&igi->igi_gq); >> >> LIST_REMOVE(igi, igi_link); >> - >> - KASSERT(SLIST_EMPTY(&igi->igi_relinmhead), >> - ("%s: there are dangling in_multi references", >> - __func__)); >> - >> free(igi, M_IGMP); >> return; >> } >> @@ -722,7 +708,7 @@ igmp_input_v1_query(struct ifnet *ifp, const struct = ip >> } >> IGMPSTAT_INC(igps_rcv_gen_queries); >> >> - IN_MULTI_LOCK(); >> + IN_MULTI_LIST_LOCK(); >> IGMP_LOCK(); >> >> igi =3D ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; >> @@ -778,7 +764,7 @@ igmp_input_v1_query(struct ifnet *ifp, const struct = ip >> >> out_locked: >> IGMP_UNLOCK(); >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> >> return (0); >> } >> @@ -816,7 +802,7 @@ igmp_input_v2_query(struct ifnet *ifp, const struct = ip >> IGMPSTAT_INC(igps_rcv_group_queries); >> } >> >> - IN_MULTI_LOCK(); >> + IN_MULTI_LIST_LOCK(); >> IGMP_LOCK(); >> >> igi =3D ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; >> @@ -872,7 +858,7 @@ igmp_input_v2_query(struct ifnet *ifp, const struct = ip >> >> out_locked: >> IGMP_UNLOCK(); >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> >> return (0); >> } >> @@ -899,7 +885,7 @@ igmp_v2_update_group(struct in_multi *inm, const int= t >> CTR4(KTR_IGMPV3, "0x%08x: %s/%s timer=3D%d", __func__, >> ntohl(inm->inm_addr.s_addr), inm->inm_ifp->if_xname, timer); >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> >> switch (inm->inm_state) { >> case IGMP_NOT_MEMBER: >> @@ -1011,7 +997,7 @@ igmp_input_v3_query(struct ifnet *ifp, const struct= ip >> IGMPSTAT_INC(igps_rcv_gsr_queries); >> } >> >> - IN_MULTI_LOCK(); >> + IN_MULTI_LIST_LOCK(); >> IGMP_LOCK(); >> >> igi =3D ((struct in_ifinfo *)ifp->if_afdata[AF_INET])->ii_igmp; >> @@ -1092,7 +1078,7 @@ igmp_input_v3_query(struct ifnet *ifp, const struc= t ip >> >> out_locked: >> IGMP_UNLOCK(); >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> >> return (0); >> } >> @@ -1109,7 +1095,7 @@ igmp_input_v3_group_query(struct in_multi *inm, st= ruct >> int retval; >> uint16_t nsrc; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> retval =3D 0; >> @@ -1246,7 +1232,7 @@ igmp_input_v1_report(struct ifnet *ifp, /*const*/ = stru >> * If we are a member of this group, and our membership should be >> * reported, stop our group timer and transition to the 'lazy' sta= te. >> */ >> - IN_MULTI_LOCK(); >> + IN_MULTI_LIST_LOCK(); >> inm =3D inm_lookup(ifp, igmp->igmp_group); >> if (inm !=3D NULL) { >> struct igmp_ifsoftc *igi; >> @@ -1305,7 +1291,7 @@ igmp_input_v1_report(struct ifnet *ifp, /*const*/ = stru >> } >> >> out_locked: >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> >> return (0); >> } >> @@ -1373,7 +1359,7 @@ igmp_input_v2_report(struct ifnet *ifp, /*const*/ = stru >> * reported, and our group timer is pending or about to be reset, >> * stop our group timer by transitioning to the 'lazy' state. >> */ >> - IN_MULTI_LOCK(); >> + IN_MULTI_LIST_LOCK(); >> inm =3D inm_lookup(ifp, igmp->igmp_group); >> if (inm !=3D NULL) { >> struct igmp_ifsoftc *igi; >> @@ -1418,7 +1404,7 @@ igmp_input_v2_report(struct ifnet *ifp, /*const*/ = stru >> } >> >> out_locked: >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> >> return (0); >> } >> @@ -1647,6 +1633,7 @@ igmp_fasttimo_vnet(void) >> struct igmp_ifsoftc *igi; >> struct ifmultiaddr *ifma; >> struct in_multi *inm; >> + struct in_multi_head inm_free_tmp; >> int loop, uri_fasthz; >> >> loop =3D 0; >> @@ -1662,7 +1649,8 @@ igmp_fasttimo_vnet(void) >> !V_state_change_timers_running) >> return; >> >> - IN_MULTI_LOCK(); >> + SLIST_INIT(&inm_free_tmp); >> + IN_MULTI_LIST_LOCK(); >> IGMP_LOCK(); >> >> /* >> @@ -1720,7 +1708,7 @@ igmp_fasttimo_vnet(void) >> igi->igi_version); >> break; >> case IGMP_VERSION_3: >> - igmp_v3_process_group_timers(igi, &qrq, >> + igmp_v3_process_group_timers(&inm_free_tmp= , &qrq, >> &scq, inm, uri_fasthz); >> break; >> } >> @@ -1728,8 +1716,6 @@ igmp_fasttimo_vnet(void) >> IF_ADDR_RUNLOCK(ifp); >> >> if (igi->igi_version =3D=3D IGMP_VERSION_3) { >> - struct in_multi *tinm; >> - >> igmp_dispatch_queue(&qrq, 0, loop); >> igmp_dispatch_queue(&scq, 0, loop); >> >> @@ -1737,18 +1723,13 @@ igmp_fasttimo_vnet(void) >> * Free the in_multi reference(s) for this >> * IGMP lifecycle. >> */ >> - SLIST_FOREACH_SAFE(inm, &igi->igi_relinmhead, >> - inm_nrele, tinm) { >> - SLIST_REMOVE_HEAD(&igi->igi_relinmhead, >> - inm_nrele); >> - inm_release_locked(inm); >> - } >> + inm_release_list_deferred(&inm_free_tmp); >> } >> } >> >> out_locked: >> IGMP_UNLOCK(); >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> } >> >> /* >> @@ -1760,7 +1741,7 @@ igmp_v1v2_process_group_timer(struct in_multi *inm= , co >> { >> int report_timer_expired; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> if (inm->inm_timer =3D=3D 0) { >> @@ -1802,14 +1783,14 @@ igmp_v1v2_process_group_timer(struct in_multi *i= nm, co >> * Note: Unlocked read from igi. >> */ >> static void >> -igmp_v3_process_group_timers(struct igmp_ifsoftc *igi, >> +igmp_v3_process_group_timers(struct in_multi_head *inmh, >> struct mbufq *qrq, struct mbufq *scq, >> struct in_multi *inm, const int uri_fasthz) >> { >> int query_response_timer_expired; >> int state_change_retransmit_timer_expired; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> query_response_timer_expired =3D 0; >> @@ -1907,8 +1888,7 @@ igmp_v3_process_group_timers(struct igmp_ifsoftc *= igi, >> if (inm->inm_state =3D=3D IGMP_LEAVING_MEMBER && >> inm->inm_scrv =3D=3D 0) { >> inm->inm_state =3D IGMP_NOT_MEMBER; >> - SLIST_INSERT_HEAD(&igi->igi_relinmhead, >> - inm, inm_nrele); >> + inm_rele_locked(inmh, inm); >> } >> } >> break; >> @@ -1929,7 +1909,7 @@ static void >> igmp_v3_suppress_group_record(struct in_multi *inm) >> { >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> >> KASSERT(inm->inm_igi->igi_version =3D=3D IGMP_VERSION_3, >> ("%s: not IGMPv3 mode on link", __func__)); >> @@ -2003,13 +1983,15 @@ igmp_v3_cancel_link_timers(struct igmp_ifsoftc *= igi) >> { >> struct ifmultiaddr *ifma; >> struct ifnet *ifp; >> - struct in_multi *inm, *tinm; >> + struct in_multi *inm; >> + struct in_multi_head inm_free_tmp; >> >> CTR3(KTR_IGMPV3, "%s: cancel v3 timers on ifp %p(%s)", __func__, >> igi->igi_ifp, igi->igi_ifp->if_xname); >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> + SLIST_INIT(&inm_free_tmp); >> >> /* >> * Stop the v3 General Query Response on this link stone dead. >> @@ -2050,7 +2032,7 @@ igmp_v3_cancel_link_timers(struct igmp_ifsoftc *ig= i) >> * message is sent upstream to the old querier -- >> * transition to NOT would lose the leave and race= . >> */ >> - SLIST_INSERT_HEAD(&igi->igi_relinmhead, inm, inm_n= rele); >> + inm_rele_locked(&inm_free_tmp, inm); >> /* FALLTHROUGH */ >> case IGMP_G_QUERY_PENDING_MEMBER: >> case IGMP_SG_QUERY_PENDING_MEMBER: >> @@ -2069,10 +2051,8 @@ igmp_v3_cancel_link_timers(struct igmp_ifsoftc *i= gi) >> mbufq_drain(&inm->inm_scq); >> } >> IF_ADDR_RUNLOCK(ifp); >> - SLIST_FOREACH_SAFE(inm, &igi->igi_relinmhead, inm_nrele, tinm) { >> - SLIST_REMOVE_HEAD(&igi->igi_relinmhead, inm_nrele); >> - inm_release_locked(inm); >> - } >> + >> + inm_release_list_deferred(&inm_free_tmp); >> } >> >> /* >> @@ -2199,7 +2179,7 @@ igmp_v1v2_queue_report(struct in_multi *inm, const= int >> struct ip *ip; >> struct mbuf *m; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> ifp =3D inm->inm_ifp; >> @@ -2276,10 +2256,8 @@ igmp_change_state(struct in_multi *inm) >> struct ifnet *ifp; >> int error; >> >> - IN_MULTI_LOCK_ASSERT(); >> - >> error =3D 0; >> - >> + IN_MULTI_LOCK_ASSERT(); >> /* >> * Try to detect if the upper layer just asked us to change state >> * for an interface which has now gone away. >> @@ -2379,9 +2357,10 @@ igmp_initial_join(struct in_multi *inm, struct ig= mp_if >> * group around for the final INCLUDE {} enqueue. >> */ >> if (igi->igi_version =3D=3D IGMP_VERSION_3 && >> - inm->inm_state =3D=3D IGMP_LEAVING_MEMBER) >> - inm_release_locked(inm); >> - >> + inm->inm_state =3D=3D IGMP_LEAVING_MEMBER) { >> + MPASS(inm->inm_refcount > 1); >> + inm_rele_locked(NULL, inm); >> + } >> inm->inm_state =3D IGMP_REPORTING_MEMBER; >> >> switch (igi->igi_version) { >> @@ -2473,7 +2452,7 @@ igmp_handle_state_change(struct in_multi *inm, str= uct >> >> ifp =3D inm->inm_ifp; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> KASSERT(igi && igi->igi_ifp =3D=3D ifp, ("%s: inconsistent ifp", _= _func__)); >> @@ -2531,7 +2510,7 @@ igmp_final_leave(struct in_multi *inm, struct igmp= _ifs >> __func__, ntohl(inm->inm_addr.s_addr), inm->inm_ifp, >> inm->inm_ifp->if_xname); >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> switch (inm->inm_state) { >> @@ -2658,7 +2637,7 @@ igmp_v3_enqueue_group_record(struct mbufq *mq, str= uct >> in_addr_t naddr; >> uint8_t mode; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> >> error =3D 0; >> ifp =3D inm->inm_ifp; >> @@ -3018,7 +2997,7 @@ igmp_v3_enqueue_filter_change(struct mbufq *mq, st= ruct >> uint8_t mode, now, then; >> rectype_t crt, drt, nrt; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> >> if (inm->inm_nsrc =3D=3D 0 || >> (inm->inm_st[0].iss_asm > 0 && inm->inm_st[1].iss_asm > 0)) >> @@ -3221,7 +3200,7 @@ igmp_v3_merge_state_changes(struct in_multi *inm, = stru >> domerge =3D 0; >> recslen =3D 0; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> /* >> @@ -3320,7 +3299,7 @@ igmp_v3_dispatch_general_query(struct igmp_ifsoftc= *ig >> struct in_multi *inm; >> int retval, loop; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IGMP_LOCK_ASSERT(); >> >> KASSERT(igi->igi_version =3D=3D IGMP_VERSION_3, >> @@ -3632,7 +3611,6 @@ DB_SHOW_COMMAND(igi_list, db_show_igi_list) >> db_printf(" qi %u\n", igi->igi_qi); >> db_printf(" qri %u\n", igi->igi_qri); >> db_printf(" uri %u\n", igi->igi_uri); >> - /* SLIST_HEAD(,in_multi) igi_relinmhead */ >> /* struct mbufq igi_gq; */ >> db_printf("\n"); >> } >> >> Modified: head/sys/netinet/igmp_var.h >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/netinet/igmp_var.h Wed May 2 17:41:00 2018 (r= 333174) >> +++ head/sys/netinet/igmp_var.h Wed May 2 19:36:29 2018 (r= 333175) >> @@ -214,7 +214,6 @@ struct igmp_ifsoftc { >> uint32_t igi_qi; /* IGMPv3 Query Interval (s) */ >> uint32_t igi_qri; /* IGMPv3 Query Response Interval (s) */ >> uint32_t igi_uri; /* IGMPv3 Unsolicited Report Interval (s) = */ >> - SLIST_HEAD(,in_multi) igi_relinmhead; /* released groups */ >> struct mbufq igi_gq; /* general query responses queue *= / >> }; >> >> >> Modified: head/sys/netinet/in.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/netinet/in.c Wed May 2 17:41:00 2018 (r333174) >> +++ head/sys/netinet/in.c Wed May 2 19:36:29 2018 (r333175) >> @@ -632,12 +632,10 @@ in_difaddr_ioctl(u_long cmd, caddr_t data, struct = ifne >> struct in_ifinfo *ii; >> >> ii =3D ((struct in_ifinfo *)ifp->if_afdata[AF_INET]); >> - IN_MULTI_LOCK(); >> if (ii->ii_allhosts) { >> - (void)in_leavegroup_locked(ii->ii_allhosts, NULL); >> + (void)in_leavegroup(ii->ii_allhosts, NULL); >> ii->ii_allhosts =3D NULL; >> } >> - IN_MULTI_UNLOCK(); >> } >> >> IF_ADDR_WLOCK(ifp); >> @@ -994,11 +992,12 @@ in_broadcast(struct in_addr in, struct ifnet *ifp) >> void >> in_ifdetach(struct ifnet *ifp) >> { >> - >> + IN_MULTI_LOCK(); >> in_pcbpurgeif0(&V_ripcbinfo, ifp); >> in_pcbpurgeif0(&V_udbinfo, ifp); >> in_pcbpurgeif0(&V_ulitecbinfo, ifp); >> in_purgemaddrs(ifp); >> + IN_MULTI_UNLOCK(); >> } >> >> /* >> @@ -1011,12 +1010,12 @@ in_ifdetach(struct ifnet *ifp) >> static void >> in_purgemaddrs(struct ifnet *ifp) >> { >> - LIST_HEAD(,in_multi) purgeinms; >> - struct in_multi *inm, *tinm; >> + struct in_multi_head purgeinms; >> + struct in_multi *inm; >> struct ifmultiaddr *ifma; >> >> - LIST_INIT(&purgeinms); >> - IN_MULTI_LOCK(); >> + SLIST_INIT(&purgeinms); >> + IN_MULTI_LIST_LOCK(); >> >> /* >> * Extract list of in_multi associated with the detaching ifp >> @@ -1034,17 +1033,13 @@ in_purgemaddrs(struct ifnet *ifp) >> ("%s: ifma_protospec is NULL", __func__)); >> #endif >> inm =3D (struct in_multi *)ifma->ifma_protospec; >> - LIST_INSERT_HEAD(&purgeinms, inm, inm_link); >> + inm_rele_locked(&purgeinms, inm); >> } >> IF_ADDR_RUNLOCK(ifp); >> >> - LIST_FOREACH_SAFE(inm, &purgeinms, inm_link, tinm) { >> - LIST_REMOVE(inm, inm_link); >> - inm_release_locked(inm); >> - } >> + inm_release_list_deferred(&purgeinms); >> igmp_ifdetach(ifp); >> - >> - IN_MULTI_UNLOCK(); >> + IN_MULTI_LIST_UNLOCK(); >> } >> >> struct in_llentry { >> >> Modified: head/sys/netinet/in_mcast.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/netinet/in_mcast.c Wed May 2 17:41:00 2018 (r= 333174) >> +++ head/sys/netinet/in_mcast.c Wed May 2 19:36:29 2018 (r= 333175) >> @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); >> #include >> #include >> #include >> +#include >> #include >> >> #include >> @@ -59,6 +60,8 @@ __FBSDID("$FreeBSD$"); >> #include >> #include >> >> +#include >> + >> #include >> #include >> #include >> @@ -91,18 +94,24 @@ static MALLOC_DEFINE(M_IPMSOURCE, "ip_msource", >> >> /* >> * Locking: >> - * - Lock order is: Giant, INP_WLOCK, IN_MULTI_LOCK, IGMP_LOCK, IF_ADDR= _LOCK. >> + * - Lock order is: Giant, INP_WLOCK, IN_MULTI_LIST_LOCK, IGMP_LOCK, IF= _ADDR_LOCK. >> * - The IF_ADDR_LOCK is implicitly taken by inm_lookup() earlier, howe= ver >> * it can be taken by code in net/if.c also. >> * - ip_moptions and in_mfilter are covered by the INP_WLOCK. >> * >> - * struct in_multi is covered by IN_MULTI_LOCK. There isn't strictly >> + * struct in_multi is covered by IN_MULTI_LIST_LOCK. There isn't strict= ly >> * any need for in_multi itself to be virtualized -- it is bound to an = ifp >> * anyway no matter what happens. >> */ >> -struct mtx in_multi_mtx; >> -MTX_SYSINIT(in_multi_mtx, &in_multi_mtx, "in_multi_mtx", MTX_DEF); >> +struct mtx in_multi_list_mtx; >> +MTX_SYSINIT(in_multi_mtx, &in_multi_list_mtx, "in_multi_list_mtx", MTX_= DEF); >> >> +struct mtx in_multi_free_mtx; >> +MTX_SYSINIT(in_multi_free_mtx, &in_multi_free_mtx, "in_multi_free_mtx",= MTX_DEF); >> + >> +struct sx in_multi_sx; >> +SX_SYSINIT(in_multi_sx, &in_multi_sx, "in_multi_sx"); >> + >> /* >> * Functions with non-static linkage defined in this file should be >> * declared in in_var.h: >> @@ -151,6 +160,7 @@ static int inm_is_ifp_detached(const struct i= n_multi * >> static int inm_merge(struct in_multi *, /*const*/ struct in_mfilter *= ); >> static void inm_purge(struct in_multi *); >> static void inm_reap(struct in_multi *); >> +static void inm_release(struct in_multi *); >> static struct ip_moptions * >> inp_findmoptions(struct inpcb *); >> static void inp_freemoptions_internal(struct ip_moptions *); >> @@ -216,6 +226,65 @@ inm_is_ifp_detached(const struct in_multi *inm) >> } >> #endif >> >> +static struct grouptask free_gtask; >> +static struct in_multi_head inm_free_list; >> +static void inm_release_task(void *arg __unused); >> +static void inm_init(void) >> +{ >> + SLIST_INIT(&inm_free_list); >> + taskqgroup_config_gtask_init(NULL, &free_gtask, inm_release_task, = "inm release >> task"); +} >> + >> +SYSINIT(inm_init, SI_SUB_SMP + 1, SI_ORDER_FIRST, >> + inm_init, NULL); >> + >> + >> +void >> +inm_release_list_deferred(struct in_multi_head *inmh) >> +{ >> + >> + if (SLIST_EMPTY(inmh)) >> + return; >> + mtx_lock(&in_multi_free_mtx); >> + SLIST_CONCAT(&inm_free_list, inmh, in_multi, inm_nrele); >> + mtx_unlock(&in_multi_free_mtx); >> + GROUPTASK_ENQUEUE(&free_gtask); >> +} >> + >> +void >> +inm_release_deferred(struct in_multi *inm) >> +{ >> + struct in_multi_head tmp; >> + >> + IN_MULTI_LIST_LOCK_ASSERT(); >> + MPASS(inm->inm_refcount > 0); >> + if (--inm->inm_refcount =3D=3D 0) { >> + SLIST_INIT(&tmp); >> + inm->inm_ifma->ifma_protospec =3D NULL; >> + SLIST_INSERT_HEAD(&tmp, inm, inm_nrele); >> + inm_release_list_deferred(&tmp); >> + } >> +} >> + >> +static void >> +inm_release_task(void *arg __unused) >> +{ >> + struct in_multi_head inm_free_tmp; >> + struct in_multi *inm, *tinm; >> + >> + SLIST_INIT(&inm_free_tmp); >> + mtx_lock(&in_multi_free_mtx); >> + SLIST_CONCAT(&inm_free_tmp, &inm_free_list, in_multi, inm_nrele); >> + mtx_unlock(&in_multi_free_mtx); >> + IN_MULTI_LOCK(); >> + SLIST_FOREACH_SAFE(inm, &inm_free_tmp, inm_nrele, tinm) { >> + SLIST_REMOVE_HEAD(&inm_free_tmp, inm_nrele); >> + MPASS(inm); >> + inm_release(inm); >> + } >> + IN_MULTI_UNLOCK(); >> +} >> + >> /* >> * Initialize an in_mfilter structure to a known state at t0, t1 >> * with an empty source filter list. >> @@ -232,7 +301,7 @@ imf_init(struct in_mfilter *imf, const int st0, cons= t >> /* >> * Function for looking up an in_multi record for an IPv4 multicast add= ress >> * on a given interface. ifp must be valid. If no record found, return = NULL. >> - * The IN_MULTI_LOCK and IF_ADDR_LOCK on ifp must be held. >> + * The IN_MULTI_LIST_LOCK and IF_ADDR_LOCK on ifp must be held. >> */ >> struct in_multi * >> inm_lookup_locked(struct ifnet *ifp, const struct in_addr ina) >> @@ -240,7 +309,7 @@ inm_lookup_locked(struct ifnet *ifp, const struct in= _a >> struct ifmultiaddr *ifma; >> struct in_multi *inm; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IF_ADDR_LOCK_ASSERT(ifp); >> >> inm =3D NULL; >> @@ -264,7 +333,7 @@ inm_lookup(struct ifnet *ifp, const struct in_addr i= na >> { >> struct in_multi *inm; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> IF_ADDR_RLOCK(ifp); >> inm =3D inm_lookup_locked(ifp, ina); >> IF_ADDR_RUNLOCK(ifp); >> @@ -451,7 +520,7 @@ in_getmulti(struct ifnet *ifp, const struct in_addr = *g >> IN_MULTI_LOCK_ASSERT(); >> >> ii =3D (struct in_ifinfo *)ifp->if_afdata[AF_INET]; >> - >> + IN_MULTI_LIST_LOCK(); >> inm =3D inm_lookup(ifp, *group); >> if (inm !=3D NULL) { >> /* >> @@ -460,11 +529,13 @@ in_getmulti(struct ifnet *ifp, const struct in_add= r *g >> */ >> KASSERT(inm->inm_refcount >=3D 1, >> ("%s: bad refcount %d", __func__, inm->inm_refcount)); >> - ++inm->inm_refcount; >> + inm_acquire_locked(inm); >> *pinm =3D inm; >> - return (0); >> } >> - >> + IN_MULTI_LIST_UNLOCK(); >> + if (inm !=3D NULL) >> + return (0); >> + >> memset(&gsin, 0, sizeof(gsin)); >> gsin.sin_family =3D AF_INET; >> gsin.sin_len =3D sizeof(struct sockaddr_in); >> @@ -479,6 +550,7 @@ in_getmulti(struct ifnet *ifp, const struct in_addr = *g >> return (error); >> >> /* XXX ifma_protospec must be covered by IF_ADDR_LOCK */ >> + IN_MULTI_LIST_LOCK(); >> IF_ADDR_WLOCK(ifp); >> >> /* >> @@ -504,10 +576,9 @@ in_getmulti(struct ifnet *ifp, const struct in_addr= *g >> __func__, ifma, inm, inet_ntoa_r(*group, addrb= uf)); >> } >> #endif >> - ++inm->inm_refcount; >> + inm_acquire_locked(inm); >> *pinm =3D inm; >> - IF_ADDR_WUNLOCK(ifp); >> - return (0); >> + goto out_locked; >> } >> >> IF_ADDR_WLOCK_ASSERT(ifp); >> @@ -522,6 +593,7 @@ in_getmulti(struct ifnet *ifp, const struct in_addr = *g >> inm =3D malloc(sizeof(*inm), M_IPMADDR, M_NOWAIT | M_ZERO); >> if (inm =3D=3D NULL) { >> IF_ADDR_WUNLOCK(ifp); >> + IN_MULTI_LIST_UNLOCK(); >> if_delmulti_ifma(ifma); >> return (ENOMEM); >> } >> @@ -539,8 +611,9 @@ in_getmulti(struct ifnet *ifp, const struct in_addr = *g >> ifma->ifma_protospec =3D inm; >> >> *pinm =3D inm; >> - >> + out_locked: >> IF_ADDR_WUNLOCK(ifp); >> + IN_MULTI_LIST_UNLOCK(); >> return (0); >> } >> >> @@ -550,36 +623,29 @@ in_getmulti(struct ifnet *ifp, const struct in_add= r *g >> * If the refcount drops to 0, free the in_multi record and >> * delete the underlying link-layer membership. >> */ >> -void >> -inm_release_locked(struct in_multi *inm) >> +static void >> +inm_release(struct in_multi *inm) >> { >> struct ifmultiaddr *ifma; >> + struct ifnet *ifp; >> >> - IN_MULTI_LOCK_ASSERT(); >> - >> CTR2(KTR_IGMPV3, "%s: refcount is %d", __func__, inm->inm_refcount= ); >> - >> - if (--inm->inm_refcount > 0) { >> - CTR2(KTR_IGMPV3, "%s: refcount is now %d", __func__, >> - inm->inm_refcount); >> - return; >> - } >> - >> + MPASS(inm->inm_refcount =3D=3D 0); >> CTR2(KTR_IGMPV3, "%s: freeing inm %p", __func__, inm); >> >> ifma =3D inm->inm_ifma; >> + ifp =3D inm->inm_ifp; >> >> /* XXX this access is not covered by IF_ADDR_LOCK */ >> CTR2(KTR_IGMPV3, "%s: purging ifma %p", __func__, ifma); >> - KASSERT(ifma->ifma_protospec =3D=3D inm, >> - ("%s: ifma_protospec !=3D inm", __func__)); >> - ifma->ifma_protospec =3D NULL; >> - >> + if (ifp) >> + CURVNET_SET(ifp->if_vnet); >> inm_purge(inm); >> - >> free(inm, M_IPMADDR); >> >> if_delmulti_ifma(ifma); >> + if (ifp) >> + CURVNET_RESTORE(); >> } >> >> /* >> @@ -592,7 +658,7 @@ inm_clear_recorded(struct in_multi *inm) >> { >> struct ip_msource *ims; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> >> RB_FOREACH(ims, ip_msource_tree, &inm->inm_srcs) { >> if (ims->ims_stp) { >> @@ -632,7 +698,7 @@ inm_record_source(struct in_multi *inm, const in_add= r_ >> struct ip_msource find; >> struct ip_msource *ims, *nims; >> >> - IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_LOCK_ASSERT(); >> >> find.ims_haddr =3D ntohl(naddr); >> ims =3D RB_FIND(ip_msource_tree, &inm->inm_srcs, &find); >> @@ -959,6 +1025,7 @@ inm_merge(struct in_multi *inm, /*const*/ struct in= _mf >> schanged =3D 0; >> error =3D 0; >> nsrc1 =3D nsrc0 =3D 0; >> + IN_MULTI_LIST_LOCK_ASSERT(); >> >> /* >> * Update the source filters first, as this may fail. >> @@ -1165,6 +1232,7 @@ in_joingroup_locked(struct ifnet *ifp, const struc= t in >> int error; >> >> IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_UNLOCK_ASSERT(); >> >> CTR4(KTR_IGMPV3, "%s: join 0x%08x on %p(%s))", __func__, >> ntohl(gina->s_addr), ifp, ifp->if_xname); >> @@ -1186,7 +1254,7 @@ in_joingroup_locked(struct ifnet *ifp, const struc= t in >> CTR1(KTR_IGMPV3, "%s: in_getmulti() failure", __func__); >> return (error); >> } >> - >> + IN_MULTI_LIST_LOCK(); >> CTR1(KTR_IGMPV3, "%s: merge inm state", __func__); >> error =3D inm_merge(inm, imf); >> if (error) { >> @@ -1201,10 +1269,12 @@ in_joingroup_locked(struct ifnet *ifp, const str= uct in >> goto out_inm_release; >> } >> >> -out_inm_release: >> + out_inm_release: >> + IN_MULTI_LIST_UNLOCK(); >> if (error) { >> + >> CTR2(KTR_IGMPV3, "%s: dropping ref on %p", __func__, inm); >> - inm_release_locked(inm); >> + inm_release_deferred(inm); >> } else { >> *pinm =3D inm; >> } >> @@ -1249,6 +1319,7 @@ in_leavegroup_locked(struct in_multi *inm, /*const= */ s >> error =3D 0; >> >> IN_MULTI_LOCK_ASSERT(); >> + IN_MULTI_LIST_UNLOCK_ASSERT(); >> >> CTR5(KTR_IGMPV3, "%s: leave inm %p, 0x%08x/%s, imf %p", __func__, >> inm, ntohl(inm->inm_addr.s_addr), >> @@ -1272,18 +1343,20 @@ in_leavegroup_locked(struct in_multi *inm, /*con= st*/ s >> * the transaction, it MUST NOT fail. >> */ >> CTR1(KTR_IGMPV3, "%s: merge inm state", __func__); >> + IN_MULTI_LIST_LOCK(); >> error =3D inm_merge(inm, imf); >> KASSERT(error =3D=3D 0, ("%s: failed to merge inm state", __func__= )); >> >> CTR1(KTR_IGMPV3, "%s: doing igmp downcall", __func__); >> CURVNET_SET(inm->inm_ifp->if_vnet); >> error =3D igmp_change_state(inm); >> + inm_release_deferred(inm); >> + IN_MULTI_LIST_UNLOCK(); >> CURVNET_RESTORE(); >> if (error) >> CTR1(KTR_IGMPV3, "%s: failed igmp downcall", __func__); >> >> CTR2(KTR_IGMPV3, "%s: dropping ref on %p", __func__, inm); >> - inm_release_locked(inm); >> >> return (error); >> } >> @@ -1315,18 +1388,6 @@ in_addmulti(struct in_addr *ap, struct ifnet *ifp= ) >> } >> >> /* >> - * Leave an IPv4 multicast group, assumed to be in exclusive (*,G) mode= . >> - * This KPI is for legacy kernel consumers only. >> - */ >> >> *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** >> _______________________________________________ >> svn-src-head@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/svn-src-head >> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" > > > After (around!) this update, some boxes with i350 dual port NICs immediat= ely crash with > Fatal trap 12: page fault and something with > > current process: (isc-worker0006) > > .... > > Those boxes do not have debugging kernel. The symptombs are the same. Sin= gle user kernel > works, but the moment I perform /etc/netstart and any kind of net traffic= establishes, > this crap bails out. > > > - -- > O. Hartmann > > Ich widerspreche der Nutzung oder =C3=9Cbermittlung meiner Daten f=C3=BCr > Werbezwecke oder f=C3=BCr die Markt- oder Meinungsforschung (=C2=A7 28 Ab= s. 4 BDSG). > -----BEGIN PGP SIGNATURE----- > > iLUEARMKAB0WIQQZVZMzAtwC2T/86TrS528fyFhYlAUCWutjtgAKCRDS528fyFhY > lAkzAf9PhaFTwNhQD2zF7xSHJ2wfvLtoUEjZlzGsusACp1pa7JAfz0Pyv+lm+XNJ > vLElrIf1CmDzuA8yblZ/x/wOVSJkAf9C+50DVEtGq5H/bHSDNwzmqrj8YgB7XpSs > PMRXc+IwIa1Jgi2yM+6TCSNSs1N5bEUhU9Bi8eXy6Y0FSkAZeV+s > =3DS0bC > -----END PGP SIGNATURE----- > _______________________________________________ > svn-src-head@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/svn-src-head > To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" From owner-svn-src-all@freebsd.org Thu May 3 20:05:58 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1B465FB887A; Thu, 3 May 2018 20:05:58 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C068875BEE; Thu, 3 May 2018 20:05:57 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BA7E32486A; Thu, 3 May 2018 20:05:57 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43K5vOd085056; Thu, 3 May 2018 20:05:57 GMT (envelope-from brooks@FreeBSD.org) Received: (from brooks@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43K5vFa085055; Thu, 3 May 2018 20:05:57 GMT (envelope-from brooks@FreeBSD.org) Message-Id: <201805032005.w43K5vFa085055@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: brooks set sender to brooks@FreeBSD.org using -f From: Brooks Davis Date: Thu, 3 May 2018 20:05:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333226 - stable/11/sys/net X-SVN-Group: stable-11 X-SVN-Commit-Author: brooks X-SVN-Commit-Paths: stable/11/sys/net X-SVN-Commit-Revision: 333226 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 20:05:58 -0000 Author: brooks Date: Thu May 3 20:05:57 2018 New Revision: 333226 URL: https://svnweb.freebsd.org/changeset/base/333226 Log: MFC r332997: Translate 32-bit ifmedia requests into native ones. We use transformation rather than accessors as virtually ever driver implements SIOCGIFMEDIA and all would have to be touched. Keep the code readable by always performing copies and (possiably no-op) transforms. Reviewed by: jhb, kib Obtained from: CheriBSD Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14996 Modified: stable/11/sys/net/if.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/net/if.c ============================================================================== --- stable/11/sys/net/if.c Thu May 3 19:49:40 2018 (r333225) +++ stable/11/sys/net/if.c Thu May 3 20:05:57 2018 (r333226) @@ -142,11 +142,24 @@ struct ifgroupreq32 { uint32_t ifgru_groups; } ifgr_ifgru; }; + +struct ifmediareq32 { + char ifm_name[IFNAMSIZ]; + int ifm_current; + int ifm_mask; + int ifm_status; + int ifm_active; + int ifm_count; + uint32_t ifm_ulist; /* (int *) */ +}; +#define SIOCGIFMEDIA32 _IOC_NEWTYPE(SIOCGIFMEDIA, struct ifmediareq32) +#define SIOCGIFXMEDIA32 _IOC_NEWTYPE(SIOCGIFXMEDIA, struct ifmediareq32) + #define _CASE_IOC_IFGROUPREQ_32(cmd) \ case _IOC_NEWTYPE((cmd), struct ifgroupreq32): -#else +#else /* !COMPAT_FREEBSD32 */ #define _CASE_IOC_IFGROUPREQ_32(cmd) -#endif /* COMPAT_FREEBSD32 */ +#endif /* !COMPAT_FREEBSD32 */ #define CASE_IOC_IFGROUPREQ(cmd) \ _CASE_IOC_IFGROUPREQ_32(cmd) \ @@ -2886,12 +2899,48 @@ struct ifconf32 { #define SIOCGIFCONF32 _IOWR('i', 36, struct ifconf32) #endif +#ifdef COMPAT_FREEBSD32 +static void +ifmr_init(struct ifmediareq *ifmr, caddr_t data) +{ + struct ifmediareq32 *ifmr32; + + ifmr32 = (struct ifmediareq32 *)data; + memcpy(ifmr->ifm_name, ifmr32->ifm_name, + sizeof(ifmr->ifm_name)); + ifmr->ifm_current = ifmr32->ifm_current; + ifmr->ifm_mask = ifmr32->ifm_mask; + ifmr->ifm_status = ifmr32->ifm_status; + ifmr->ifm_active = ifmr32->ifm_active; + ifmr->ifm_count = ifmr32->ifm_count; + ifmr->ifm_ulist = (int *)(uintptr_t)ifmr32->ifm_ulist; +} + +static void +ifmr_update(const struct ifmediareq *ifmr, caddr_t data) +{ + struct ifmediareq32 *ifmr32; + + ifmr32 = (struct ifmediareq32 *)data; + ifmr32->ifm_current = ifmr->ifm_current; + ifmr32->ifm_mask = ifmr->ifm_mask; + ifmr32->ifm_status = ifmr->ifm_status; + ifmr32->ifm_active = ifmr->ifm_active; + ifmr32->ifm_count = ifmr->ifm_count; +} +#endif + /* * Interface ioctls. */ int ifioctl(struct socket *so, u_long cmd, caddr_t data, struct thread *td) { +#ifdef COMPAT_FREEBSD32 + caddr_t saved_data; + struct ifmediareq ifmr; +#endif + struct ifmediareq *ifmrp; struct ifnet *ifp; struct ifreq *ifr; int error; @@ -2937,17 +2986,29 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, s } #endif } - ifr = (struct ifreq *)data; + ifmrp = NULL; +#ifdef COMPAT_FREEBSD32 switch (cmd) { + case SIOCGIFMEDIA32: + case SIOCGIFXMEDIA32: + ifmrp = &ifmr; + ifmr_init(ifmrp, data); + cmd = _IOC_NEWTYPE(cmd, struct ifmediareq); + saved_data = data; + data = (caddr_t)ifmrp; + } +#endif + + ifr = (struct ifreq *)data; + switch (cmd) { #ifdef VIMAGE case SIOCSIFRVNET: error = priv_check(td, PRIV_NET_SETIFVNET); if (error == 0) error = if_vmove_reclaim(td, ifr->ifr_name, ifr->ifr_jid); - CURVNET_RESTORE(); - return (error); + goto out_noref; #endif case SIOCIFCREATE: case SIOCIFCREATE2: @@ -2956,23 +3017,21 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, s error = if_clone_create(ifr->ifr_name, sizeof(ifr->ifr_name), cmd == SIOCIFCREATE2 ? ifr_data_get_ptr(ifr) : NULL); - CURVNET_RESTORE(); - return (error); + goto out_noref; case SIOCIFDESTROY: error = priv_check(td, PRIV_NET_IFDESTROY); if (error == 0) error = if_clone_destroy(ifr->ifr_name); - CURVNET_RESTORE(); - return (error); + goto out_noref; case SIOCIFGCLONERS: error = if_clone_list((struct if_clonereq *)data); - CURVNET_RESTORE(); - return (error); + goto out_noref; + CASE_IOC_IFGROUPREQ(SIOCGIFGMEMB): error = if_getgroupmembers((struct ifgroupreq *)data); - CURVNET_RESTORE(); - return (error); + goto out_noref; + #if defined(INET) || defined(INET6) case SIOCSVH: case SIOCGVH: @@ -2980,29 +3039,24 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, s error = EPROTONOSUPPORT; else error = (*carp_ioctl_p)(ifr, cmd, td); - CURVNET_RESTORE(); - return (error); + goto out_noref; #endif } ifp = ifunit_ref(ifr->ifr_name); if (ifp == NULL) { - CURVNET_RESTORE(); - return (ENXIO); + error = ENXIO; + goto out_noref; } error = ifhwioctl(cmd, ifp, data, td); - if (error != ENOIOCTL) { - if_rele(ifp); - CURVNET_RESTORE(); - return (error); - } + if (error != ENOIOCTL) + goto out_ref; oif_flags = ifp->if_flags; if (so->so_proto == NULL) { - if_rele(ifp); - CURVNET_RESTORE(); - return (EOPNOTSUPP); + error = EOPNOTSUPP; + goto out_ref; } /* @@ -3027,7 +3081,19 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, s in6_if_up(ifp); #endif } + +out_ref: if_rele(ifp); +out_noref: +#ifdef COMPAT_FREEBSD32 + if (ifmrp != NULL) { + KASSERT((cmd == SIOCGIFMEDIA || cmd == SIOCGIFXMEDIA), + ("ifmrp non-NULL, but cmd is not an ifmedia req 0x%lx", + cmd)); + data = saved_data; + ifmr_update(ifmrp, data); + } +#endif CURVNET_RESTORE(); return (error); } From owner-svn-src-all@freebsd.org Thu May 3 20:24:36 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AD981FB930A; Thu, 3 May 2018 20:24:35 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass DE-2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0B8767B067; Thu, 3 May 2018 20:24:34 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from thor.intern.walstatt.dynvpn.de ([77.14.33.35]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LlGoc-1efohp1nJm-00b4rB; Thu, 03 May 2018 22:24:27 +0200 Date: Thu, 3 May 2018 22:23:52 +0200 From: "O. Hartmann" To: "K. Macy" Cc: "O. Hartmann" , Stephen Hurd , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers Subject: Re: svn commit: r333175 - in head/sys: kern net netinet netinet6 sys Message-ID: <20180503222419.4228e8e8@thor.intern.walstatt.dynvpn.de> In-Reply-To: References: <201805021936.w42JaTlq039053@repo.freebsd.org> <20180503213206.7fba052c@thor.intern.walstatt.dynvpn.de> Organization: WALSTATT User-Agent: OutScare 3.1415926 X-Operating-System: ImNotAnOperatingSystem 3.141592527 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:Db843JGK12UZDTbs0dDiXarz4JKHSDh6KrpgWLPaIUNI3XncK10 r4V1cEHHlICIRwKJGeoLf0N1C+riE20cQvNdWADCxPUVxlC6yAxruJgl7TIIFBLXo9KKXIT x8APf5DSYKZmhQTUnwlFPDJ6qHyYPxGdnRpxr4FWSKHU357r3KDXG4FSc6wiGmn0veVizZy SVFa99trIDUCM1E908Lfw== X-UI-Out-Filterresults: notjunk:1;V01:K0:QwnfBKhvx7o=:1/L8FrT1Zhk1EQhXtZrK27 a3Mouzt1b6XtKKdasjV72/rcQkFL++ClCE6s5qnLL2W9Lt/NSo6HxEzEx+gtAIHcaTQ0ODaVE N2k6G2nsTr2rB9oK334AJ7dt4JUiQ9VhsaAwvTae4c5kiR6mY4A+vMl93Ywr6lr/reRsVLQyC GkW6n2sin8AINGUyhZ45uGzEchF5UKhEI/0wjj4JoVrPhbEWTSZ+mI3k6eJa/GAACtRh5G196 CmhpMTxfc6JuVGjTNozU+hw5BFq+oN8GWlGQAHvE4hwg2b5jBcEN/AlTtyXRLtjrChCkyCOxr 3lO/BWLCN+JHvH9Ll7AGBcuVPf6cWp/I9zvlbji/dmxW0m7rkAnQw0FFYEmVpIAzHXujsReW/ 6RtQpbbp71KrX6tvE0tpQ/ruP5Q3MH7W4TzGC5LRZEoDkPkA1Y3tI2Q8lyvpZd99klHgEQIYC J9fy3h8l/MLZMEKikio/qBwWPqwLGVuDRmaUuGNObHcZqNAzUzr6yPMox/M/uFDikp9CHdE/S +2TTARpyN2PJ+jr6GJAygo7f02F5q+0FBRVDytNG5piSWE+UBmnB61cwPoV77t95A4n+YXdBY FGWMXCzoqpmM26CXxgZ7ApdEsFLGYUETpptV2mFUbGAz3bAm/YOo6I3laiseXcYJQtUSjA97O N9YbFRax6j1MdWb56jT6j1+mfzGm8OaUXmTspHtC08yGqIkd1iw4iArhaLaDHNM2SBRKVQzED V2hz9RAEliStz/eI3s8oguMnL+JzHLd2jp6FWrVFC52LesDS33yi8mCCSI/ER6vxTMCObZBP4 1M767o2 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 20:24:36 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBNTEyDQoNCkFtIFRo dSwgMyBNYXkgMjAxOCAxMjo1MzowNSAtMDcwMA0KIksuIE1hY3kiIDxrbWFjeUBmcmVlYnNkLm9y Zz4gc2NocmllYjoNCg0KPiBDYW4geW91IGdpdmUgYW55IGNvbnRleHQgb24gd2hhdCB0aGV5J3Jl IGRvaW5nPyBJbiBhZGRpdGlvbiAtIGV2ZW4gb24NCj4gYSBwcm9kdWN0aW9uIGtlcm5lbCBpdCdz IHBvc3NpYmxlIHRvIGNvbXBpbGUgaW4gRERCIHRvIGF0IGxlYXN0IGdldCBhDQo+IGJhY2t0cmFj ZS4gWW91ciByZXBvcnQgb25seSBnaXZlcyB1cyBlbm91Z2ggaW5mb3JtYXRpb24gdG8ga25vdyB0 aGF0DQoNCk5vdCBhdCB0aGUgbW9tZW50LiBUaGUgaW1tZWRpYXRlIGNyYXNoIGNvcnJ1cHRlZCB0 aGUgL3Vzci9zcmMgZmlsZXN5c3RlbSBzbyBJIGNhbiBub3QNCnJlY29tcGlsZSBhIGtlcm5lbC4g RXZlcnkgYXR0ZW1wdCB0byAvZXRjL25ldHN0YXJ0IHRoZSBuZXR3b3JrIG9uIHRoZSBidWdneSBr ZXJuZWwgZW5kcw0KdXAgaW4gYSBmdXJ0aGVyIGRlc3RydWN0aW9uLCBzbyBJIHN0b3BwZWQgYXQg dGhpcyB2ZXJ5IG1vbWVudCBhbmQgaG9wZWZ1bGx5IEkgY2FuDQpjb3B5IC91c3Ivc3JjIGZyb20g YSByMzMxNTMgYm94IChyMzMzMTUzIGlzIGZvciBtZSB0aGUgbGFzdCB3b3JraW5nIHJldmlzaW9u KSB2aWEgVVNCDQpmbGFzaCBkcml2ZSBhbmQgcmVjb21waWxlIHRoZSBrZXJuZWwuIEJ1dCBJJ2xs IGdvIGZvciByMzMzMTUzIGZpcnN0IHNpbmNlIEkgbmVlZCB0aGUNCnNlcnZlciB1cCB0b21vcnJv dyBhbmQgSSdsbCB0cnkgb24gdGhlIG90aGVyIGJveCB3aGljaCBpcyBhbHNvIGFmZmVjdGVkLCBi dXQgYWxzbw0KZXF1aXB0ZWQgd2l0aCB0aGUgaTM1MCBOSUMgb24gd2hpY2ggdGhlIHByb2JsZW0g b2NjdXJzIHZlcnkgcXVpY2tseS4NCg0KPiB0aGVyZSBpcyBfYW5fIGlzc3VlLiBJdCdzIGRpZmZp Y3VsdCB0byBwcm9jZWVkIG9uIHRoaXMgYWxvbmUuIEkgZG8NCj4gaGF2ZSBhIHJlcG9ydCBmcm9t IHRoZSBGcmVlQlNEIENJIGluZnJhc3RydWN0dXJlIHRoYXQgd2UncmUgbG9va2luZyBpbg0KPiB0 byBub3cuICBXaXRoIGx1Y2sgdGhhdCBpcyB0aGUgc2FtZSBpc3N1ZS4NCj4gDQo+IC1NDQo+IA0K PiBPbiBUaHUsIE1heSAzLCAyMDE4IGF0IDEyOjMxIFBNLCBPLiBIYXJ0bWFubiA8b2hhcnRtYW5u QHdhbHN0YXR0Lm9yZz4gd3JvdGU6DQo+ID4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0Ut LS0tLQ0KPiA+IEhhc2g6IFNIQTUxMg0KPiA+DQo+ID4gQW0gV2VkLCAyIE1heSAyMDE4IDE5OjM2 OjI5ICswMDAwIChVVEMpDQo+ID4gU3RlcGhlbiBIdXJkIDxzaHVyZEBGcmVlQlNELm9yZz4gc2No cmllYjoNCj4gPiAgDQo+ID4+IEF1dGhvcjogc2h1cmQNCj4gPj4gRGF0ZTogV2VkIE1heSAgMiAx OTozNjoyOSAyMDE4DQo+ID4+IE5ldyBSZXZpc2lvbjogMzMzMTc1DQo+ID4+IFVSTDogaHR0cHM6 Ly9zdm53ZWIuZnJlZWJzZC5vcmcvY2hhbmdlc2V0L2Jhc2UvMzMzMTc1DQo+ID4+DQo+ID4+IExv ZzoNCj4gPj4gICBTZXBhcmF0ZSBsaXN0IG1hbmlwdWxhdGlvbiBsb2NraW5nIGZyb20gc3RhdGUg Y2hhbmdlIGluIG11bHRpY2FzdA0KPiA+Pg0KPiA+PiAgIE11bHRpY2FzdCBpbmNvcnJlY3RseSBj YWxscyBpbiB0byBkcml2ZXJzIHdpdGggYSBtdXRleCBoZWxkIGNhdXNpbmcgZHJpdmVycw0KPiA+ PiAgIHRvIGhhdmUgdG8gZ28gdGhyb3VnaCBhbGwgbWFubmVyIG9mIGNvbnRvcnRpb25zIHRvIHVz ZSBhIG5vbiBzbGVlcGFibGUgbG9jay4NCj4gPj4gICBTZXJpYWxpemUgbXVsdGljYXN0IHVwZGF0 ZXMgaW5zdGVhZC4NCj4gPj4NCj4gPj4gICBTdWJtaXR0ZWQgYnk6ICAgICAgIG1tYWN5IDxtbWFj eUBtYXR0bWFjeS5pbz4NCj4gPj4gICBSZXZpZXdlZCBieTogICAgICAgIHNodXJkLCBzYnJ1bm8N Cj4gPj4gICBTcG9uc29yZWQgYnk6ICAgICAgIExpbWVsaWdodCBOZXR3b3Jrcw0KPiA+PiAgIERp ZmZlcmVudGlhbCBSZXZpc2lvbjogICAgICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDE0 OTY5DQo+ID4+DQo+ID4+IE1vZGlmaWVkOg0KPiA+PiAgIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFz a3F1ZXVlLmMNCj4gPj4gICBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ID4+ICAgaGVh ZC9zeXMvbmV0L2lmLmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0L2lnbXAuYw0KPiA+PiAgIGhl YWQvc3lzL25ldGluZXQvaWdtcF92YXIuaA0KPiA+PiAgIGhlYWQvc3lzL25ldGluZXQvaW4uYw0K PiA+PiAgIGhlYWQvc3lzL25ldGluZXQvaW5fbWNhc3QuYw0KPiA+PiAgIGhlYWQvc3lzL25ldGlu ZXQvaW5fcGNiLmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0L2luX3Zhci5oDQo+ID4+ICAgaGVh ZC9zeXMvbmV0aW5ldC9pcF9jYXJwLmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjYuYw0K PiA+PiAgIGhlYWQvc3lzL25ldGluZXQ2L2luNl9pZmF0dGFjaC5jDQo+ID4+ICAgaGVhZC9zeXMv bmV0aW5ldDYvaW42X21jYXN0LmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfcGNiLmMN Cj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfdmFyLmgNCj4gPj4gICBoZWFkL3N5cy9uZXRp bmV0Ni9tbGQ2LmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9tbGQ2X3Zhci5oDQo+ID4+ICAg aGVhZC9zeXMvc3lzL2d0YXNrcXVldWUuaA0KPiA+Pg0KPiA+PiBNb2RpZmllZDogaGVhZC9zeXMv a2Vybi9zdWJyX2d0YXNrcXVldWUuYw0KPiA+PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPj4g LS0tIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFza3F1ZXVlLmMgICBXZWQgTWF5ICAyIDE3OjQxOjAw IDIwMTggICAgICAgIChyMzMzMTc0KQ0KPiA+PiArKysgaGVhZC9zeXMva2Vybi9zdWJyX2d0YXNr cXVldWUuYyAgIFdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOCAgICAgICAgKHIzMzMxNzUpDQo+ID4+ IEBAIC01Myw2ICs1Myw3IEBAIHN0YXRpYyB2b2lkIGd0YXNrcXVldWVfdGhyZWFkX2VucXVldWUo dm9pZCAqKTsNCj4gPj4gIHN0YXRpYyB2b2lkICBndGFza3F1ZXVlX3RocmVhZF9sb29wKHZvaWQg KmFyZyk7DQo+ID4+DQo+ID4+ICBUQVNLUUdST1VQX0RFRklORShzb2Z0aXJxLCBtcF9uY3B1cywg MSk7DQo+ID4+ICtUQVNLUUdST1VQX0RFRklORShjb25maWcsIDEsIDEpOw0KPiA+Pg0KPiA+PiAg c3RydWN0IGd0YXNrcXVldWVfYnVzeSB7DQo+ID4+ICAgICAgIHN0cnVjdCBndGFzayAgICAqdGJf cnVubmluZzsNCj4gPj4gQEAgLTY2Miw3ICs2NjMsNyBAQCBTWVNJTklUKHRxZ19yZWNvcmRfc21w X3N0YXJ0ZWQsIFNJX1NVQl9TTVAsIFNJX09SREVSX0YNCj4gPj4NCj4gPj4gIHZvaWQNCj4gPj4g IHRhc2txZ3JvdXBfYXR0YWNoKHN0cnVjdCB0YXNrcWdyb3VwICpxZ3JvdXAsIHN0cnVjdCBncm91 cHRhc2sgKmd0YXNrLA0KPiA+PiAtICAgIHZvaWQgKnVuaXEsIGludCBpcnEsIGNoYXIgKm5hbWUp DQo+ID4+ICsgICAgdm9pZCAqdW5pcSwgaW50IGlycSwgY29uc3QgY2hhciAqbmFtZSkNCj4gPj4g IHsNCj4gPj4gICAgICAgY3B1c2V0X3QgbWFzazsNCj4gPj4gICAgICAgaW50IHFpZCwgZXJyb3I7 DQo+ID4+IEBAIC05NzYsNCArOTc3LDEzIEBAIHZvaWQNCj4gPj4gIHRhc2txZ3JvdXBfZGVzdHJv eShzdHJ1Y3QgdGFza3Fncm91cCAqcWdyb3VwKQ0KPiA+PiAgew0KPiA+Pg0KPiA+PiArfQ0KPiA+ PiArDQo+ID4+ICt2b2lkDQo+ID4+ICt0YXNrcWdyb3VwX2NvbmZpZ19ndGFza19pbml0KHZvaWQg KmN0eCwgc3RydWN0IGdyb3VwdGFzayAqZ3Rhc2ssIGd0YXNrX2ZuX3QgKmZuLA0KPiA+PiArICAg ICBjb25zdCBjaGFyICpuYW1lKQ0KPiA+PiArew0KPiA+PiArDQo+ID4+ICsgICAgIEdST1VQVEFT S19JTklUKGd0YXNrLCAwLCBmbiwgY3R4KTsNCj4gPj4gKyAgICAgdGFza3Fncm91cF9hdHRhY2go cWdyb3VwX2NvbmZpZywgZ3Rhc2ssIGd0YXNrLCAtMSwgbmFtZSk7DQo+ID4+ICB9DQo+ID4+DQo+ ID4+IE1vZGlmaWVkOiBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ID4+ID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVhZC9zeXMva2Vybi9zdWJyX3dpdG5lc3MuYyAgICAg IFdlZCBNYXkgIDIgMTc6NDE6MDAgMjAxOCAgICAgICAgKHIzMzMxNzQpDQo+ID4+ICsrKyBoZWFk L3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jICAgICAgV2VkIE1heSAgMiAxOTozNjoyOSAyMDE4ICAg ICAgICAocjMzMzE3NSkNCj4gPj4gQEAgLTUzMiwxOCArNTMyLDIyIEBAIHN0YXRpYyBzdHJ1Y3Qg d2l0bmVzc19vcmRlcl9saXN0X2VudHJ5IG9yZGVyX2xpc3RzW10gPQ0KPiA+PiAgICAgICAgKiBJ UHY0IG11bHRpY2FzdDoNCj4gPj4gICAgICAgICogcHJvdG9jb2wgbG9ja3MgYmVmb3JlIGludGVy ZmFjZSBsb2NrcywgYWZ0ZXIgVURQIGxvY2tzLg0KPiA+PiAgICAgICAgKi8NCj4gPj4gKyAgICAg eyAiaW5fbXVsdGlfc3giLCAmbG9ja19jbGFzc19zeCB9LA0KPiA+PiAgICAgICB7ICJ1ZHBpbnAi LCAmbG9ja19jbGFzc19ydyB9LA0KPiA+PiAtICAgICB7ICJpbl9tdWx0aV9tdHgiLCAmbG9ja19j bGFzc19tdHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaW5fbXVsdGlfbGlzdF9tdHgiLCAmbG9j a19jbGFzc19tdHhfc2xlZXAgfSwNCj4gPj4gICAgICAgeyAiaWdtcF9tdHgiLCAmbG9ja19jbGFz c19tdHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaWZuZXRfcnciLCAmbG9ja19jbGFzc19ydyB9 LA0KPiA+PiAgICAgICB7ICJpZl9hZGRyX2xvY2siLCAmbG9ja19jbGFzc19ydyB9LA0KPiA+PiAg ICAgICB7IE5VTEwsIE5VTEwgfSwNCj4gPj4gICAgICAgLyoNCj4gPj4gICAgICAgICogSVB2NiBt dWx0aWNhc3Q6DQo+ID4+ICAgICAgICAqIHByb3RvY29sIGxvY2tzIGJlZm9yZSBpbnRlcmZhY2Ug bG9ja3MsIGFmdGVyIFVEUCBsb2Nrcy4NCj4gPj4gICAgICAgICovDQo+ID4+ICsgICAgIHsgImlu Nl9tdWx0aV9zeCIsICZsb2NrX2NsYXNzX3N4IH0sDQo+ID4+ICAgICAgIHsgInVkcGlucCIsICZs b2NrX2NsYXNzX3J3IH0sDQo+ID4+IC0gICAgIHsgImluNl9tdWx0aV9tdHgiLCAmbG9ja19jbGFz c19tdHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaW42X211bHRpX2xpc3RfbXR4IiwgJmxvY2tf Y2xhc3NfbXR4X3NsZWVwIH0sDQo+ID4+ICAgICAgIHsgIm1sZF9tdHgiLCAmbG9ja19jbGFzc19t dHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaWZuZXRfcnciLCAmbG9ja19jbGFzc19ydyB9LA0K PiA+PiAgICAgICB7ICJpZl9hZGRyX2xvY2siLCAmbG9ja19jbGFzc19ydyB9LA0KPiA+PiAgICAg ICB7IE5VTEwsIE5VTEwgfSwNCj4gPj4gICAgICAgLyoNCj4gPj4NCj4gPj4gTW9kaWZpZWQ6IGhl YWQvc3lzL25ldC9pZi5jDQo+ID4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVh ZC9zeXMvbmV0L2lmLmMgV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4ICAgICAgICAocjMzMzE3NCkN Cj4gPj4gKysrIGhlYWQvc3lzL25ldC9pZi5jIFdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOCAgICAg ICAgKHIzMzMxNzUpDQo+ID4+IEBAIC05ODUsMTEgKzk4NSwxMyBAQCBzdGF0aWMgdm9pZA0KPiA+ PiAgaWZfcHVyZ2VtYWRkcnMoc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICB7DQo+ID4+ICAgICAg IHN0cnVjdCBpZm11bHRpYWRkciAqaWZtYTsNCj4gPj4gLSAgICAgc3RydWN0IGlmbXVsdGlhZGRy ICpuZXh0Ow0KPiA+Pg0KPiA+PiAgICAgICBJRl9BRERSX1dMT0NLKGlmcCk7DQo+ID4+IC0gICAg IFRBSUxRX0ZPUkVBQ0hfU0FGRShpZm1hLCAmaWZwLT5pZl9tdWx0aWFkZHJzLCBpZm1hX2xpbmss IG5leHQpDQo+ID4+ICsgICAgIHdoaWxlICghVEFJTFFfRU1QVFkoJmlmcC0+aWZfbXVsdGlhZGRy cykpIHsNCj4gPj4gKyAgICAgICAgICAgICBpZm1hID0gVEFJTFFfRklSU1QoJmlmcC0+aWZfbXVs dGlhZGRycyk7DQo+ID4+ICsgICAgICAgICAgICAgVEFJTFFfUkVNT1ZFKCZpZnAtPmlmX211bHRp YWRkcnMsIGlmbWEsIGlmbWFfbGluayk7DQo+ID4+ICAgICAgICAgICAgICAgaWZfZGVsbXVsdGlf bG9ja2VkKGlmcCwgaWZtYSwgMSk7DQo+ID4+ICsgICAgIH0NCj4gPj4gICAgICAgSUZfQUREUl9X VU5MT0NLKGlmcCk7DQo+ID4+ICB9DQo+ID4+DQo+ID4+IEBAIC0zNDI5LDYgKzM0MzEsMTIgQEAg aWZfYWRkbXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBzb2NrYWRkciAqc2EsDQo+ID4+ ICAgICAgIHN0cnVjdCBzb2NrYWRkcl9kbCBzZGw7DQo+ID4+ICAgICAgIGludCBlcnJvcjsNCj4g Pj4NCj4gPj4gKyNpZmRlZiBJTkVUDQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLX0FT U0VSVCgpOw0KPiA+PiArI2VuZGlmDQo+ID4+ICsjaWZkZWYgSU5FVDYNCj4gPj4gKyAgICAgSU42 X01VTFRJX0xJU1RfVU5MT0NLX0FTU0VSVCgpOw0KPiA+PiArI2VuZGlmDQo+ID4+ICAgICAgIC8q DQo+ID4+ICAgICAgICAqIElmIHRoZSBhZGRyZXNzIGlzIGFscmVhZHkgcHJlc2VudCwgcmV0dXJu IGEgbmV3IHJlZmVyZW5jZSB0byBpdDsNCj4gPj4gICAgICAgICogb3RoZXJ3aXNlLCBhbGxvY2F0 ZSBzdG9yYWdlIGFuZCBzZXQgdXAgYSBuZXcgYWRkcmVzcy4NCj4gPj4gQEAgLTM2MTAsNiArMzYx OCw5IEBAIGlmX2RlbG11bHRpX2lmbWEoc3RydWN0IGlmbXVsdGlhZGRyICppZm1hKQ0KPiA+PiAg ICAgICBzdHJ1Y3QgaWZuZXQgKmlmcDsNCj4gPj4gICAgICAgaW50IGxhc3RyZWY7DQo+ID4+DQo+ ID4+ICsjaWZkZWYgSU5FVA0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NFUlQo KTsNCj4gPj4gKyNlbmRpZg0KPiA+PiAgICAgICBpZnAgPSBpZm1hLT5pZm1hX2lmcDsNCj4gPj4g ICNpZmRlZiBESUFHTk9TVElDDQo+ID4+ICAgICAgIGlmIChpZnAgPT0gTlVMTCkgew0KPiA+PiBA QCAtMzcxMSw4ICszNzIyLDcgQEAgaWZfZGVsbXVsdGlfbG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZw LCBzdHJ1Y3QgaWZtdWx0aWFkDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpZl9mcmVlbXVs dGkobGxfaWZtYSk7DQo+ID4+ICAgICAgICAgICAgICAgfQ0KPiA+PiAgICAgICB9DQo+ID4+IC0N Cj4gPj4gLSAgICAgaWYgKGlmcCAhPSBOVUxMKQ0KPiA+PiArICAgICBpZiAoaWZwICE9IE5VTEwg JiYgZGV0YWNoaW5nID09IDApDQo+ID4+ICAgICAgICAgICAgICAgVEFJTFFfUkVNT1ZFKCZpZnAt PmlmX211bHRpYWRkcnMsIGlmbWEsIGlmbWFfbGluayk7DQo+ID4+DQo+ID4+ICAgICAgIGlmX2Zy ZWVtdWx0aShpZm1hKTsNCj4gPj4NCj4gPj4gTW9kaWZpZWQ6IGhlYWQvc3lzL25ldGluZXQvaWdt cC5jDQo+ID4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVhZC9zeXMvbmV0aW5l dC9pZ21wLmMgICBXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTggICAgICAgIChyMzMzMTc0KQ0KPiA+ PiArKysgaGVhZC9zeXMvbmV0aW5ldC9pZ21wLmMgICBXZWQgTWF5ICAyIDE5OjM2OjI5IDIwMTgg ICAgICAgIChyMzMzMTc1KQ0KPiA+PiBAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbnQgICAg ICAgIGlnbXBfdjNfZW5xdWV1ZV9ncm91cF9yZWNvcmQoc3RydWN0IG1idWZxICoNCj4gPj4gICAg ICAgICAgICAgICAgICAgc3RydWN0IGluX211bHRpICosIGNvbnN0IGludCwgY29uc3QgaW50LCBj b25zdCBpbnQpOw0KPiA+PiAgc3RhdGljIGludCAgIGlnbXBfdjNfZW5xdWV1ZV9maWx0ZXJfY2hh bmdlKHN0cnVjdCBtYnVmcSAqLA0KPiA+PiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5fbXVs dGkgKik7DQo+ID4+IC1zdGF0aWMgdm9pZCAgaWdtcF92M19wcm9jZXNzX2dyb3VwX3RpbWVycyhz dHJ1Y3QgaWdtcF9pZnNvZnRjICosDQo+ID4+ICtzdGF0aWMgdm9pZCAgaWdtcF92M19wcm9jZXNz X2dyb3VwX3RpbWVycyhzdHJ1Y3QgaW5fbXVsdGlfaGVhZCAqLA0KPiA+PiAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgbWJ1ZnEgKiwgc3RydWN0IG1idWZxICosIHN0cnVjdCBpbl9tdWx0aSAqLA0K PiA+PiAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQpOw0KPiA+PiAgc3RhdGljIGludCAgIGln bXBfdjNfbWVyZ2Vfc3RhdGVfY2hhbmdlcyhzdHJ1Y3QgaW5fbXVsdGkgKiwNCj4gPj4gQEAgLTE2 MiwxMiArMTYyLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0aXNyX2hhbmRsZXIgaWdtcF9u aCA9IHsNCj4gPj4gICAqIHRoZW1zZWx2ZXMgYXJlIG5vdCB2aXJ0dWFsaXplZC4NCj4gPj4gICAq DQo+ID4+ICAgKiBMb2NraW5nOg0KPiA+PiAtICogICogVGhlIHBlcm1pdHRlZCBsb2NrIG9yZGVy IGlzOiBJTl9NVUxUSV9MT0NLLCBJR01QX0xPQ0ssIElGX0FERFJfTE9DSy4NCj4gPj4gKyAqICAq IFRoZSBwZXJtaXR0ZWQgbG9jayBvcmRlciBpczogSU5fTVVMVElfTElTVF9MT0NLLCBJR01QX0xP Q0ssIElGX0FERFJfTE9DSy4NCj4gPj4gICAqICAgIEFueSBtYXkgYmUgdGFrZW4gaW5kZXBlbmRl bnRseTsgaWYgYW55IGFyZSBoZWxkIGF0IHRoZSBzYW1lDQo+ID4+ICAgKiAgICB0aW1lLCB0aGUg YWJvdmUgbG9jayBvcmRlciBtdXN0IGJlIGZvbGxvd2VkLg0KPiA+PiAgICogICogQWxsIG91dHB1 dCBpcyBkZWxlZ2F0ZWQgdG8gdGhlIG5ldGlzci4NCj4gPj4gICAqICAgIE5vdyB0aGF0IEdpYW50 IGhhcyBiZWVuIGVsaW1pbmF0ZWQsIHRoZSBuZXRpc3IgbWF5IGJlIGlubGluZWQuDQo+ID4+IC0g KiAgKiBJTl9NVUxUSV9MT0NLIGNvdmVycyBpbl9tdWx0aS4NCj4gPj4gKyAqICAqIElOX01VTFRJ X0xJU1RfTE9DSyBjb3ZlcnMgaW5fbXVsdGkuDQo+ID4+ICAgKiAgKiBJR01QX0xPQ0sgY292ZXJz IGlnbXBfaWZzb2Z0YyBhbmQgYW55IGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhpcyBmaWxlLA0KPiA+ PiAgICogICAgaW5jbHVkaW5nIHRoZSBvdXRwdXQgcXVldWUuDQo+ID4+ICAgKiAgKiBJRl9BRERS X0xPQ0sgY292ZXJzIGlmX211bHRpYWRkcnMsIHdoaWNoIGlzIHVzZWQgZm9yIGEgdmFyaWV0eSBv Zg0KPiA+PiBAQCAtNDQxLDcgKzQ0MSw3IEBAIHN5c2N0bF9pZ21wX2lmaW5mbyhTWVNDVExfSEFO RExFUl9BUkdTKQ0KPiA+PiAgICAgICBpZiAoZXJyb3IpDQo+ID4+ICAgICAgICAgICAgICAgcmV0 dXJuIChlcnJvcik7DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJX0xPQ0soKTsNCj4gPj4gKyAg ICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIElHTVBfTE9DSygpOw0KPiA+Pg0K PiA+PiAgICAgICBpZiAobmFtZVswXSA8PSAwIHx8IG5hbWVbMF0gPiBWX2lmX2luZGV4KSB7DQo+ ID4+IEBAIC00NzUsNyArNDc1LDcgQEAgc3lzY3RsX2lnbXBfaWZpbmZvKFNZU0NUTF9IQU5ETEVS X0FSR1MpDQo+ID4+DQo+ID4+ICBvdXRfbG9ja2VkOg0KPiA+PiAgICAgICBJR01QX1VOTE9DSygp Ow0KPiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElT VF9VTkxPQ0soKTsNCj4gPj4gICAgICAgcmV0dXJuIChlcnJvcik7DQo+ID4+ICB9DQo+ID4+DQo+ ID4+IEBAIC01ODYsNyArNTg2LDYgQEAgaWdpX2FsbG9jX2xvY2tlZCgvKmNvbnN0Ki8gc3RydWN0 IGlmbmV0ICppZnApDQo+ID4+ICAgICAgIGlnaS0+aWdpX3FpID0gSUdNUF9RSV9JTklUOw0KPiA+ PiAgICAgICBpZ2ktPmlnaV9xcmkgPSBJR01QX1FSSV9JTklUOw0KPiA+PiAgICAgICBpZ2ktPmln aV91cmkgPSBJR01QX1VSSV9JTklUOw0KPiA+PiAtICAgICBTTElTVF9JTklUKCZpZ2ktPmlnaV9y ZWxpbm1oZWFkKTsNCj4gPj4gICAgICAgbWJ1ZnFfaW5pdCgmaWdpLT5pZ2lfZ3EsIElHTVBfTUFY X1JFU1BPTlNFX1BBQ0tFVFMpOw0KPiA+Pg0KPiA+PiAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZW X2lnaV9oZWFkLCBpZ2ksIGlnaV9saW5rKTsNCj4gPj4gQEAgLTYxMiwxMSArNjExLDEyIEBAIGln bXBfaWZkZXRhY2goc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICB7DQo+ID4+ICAgICAgIHN0cnVj dCBpZ21wX2lmc29mdGMgICAgICppZ2k7DQo+ID4+ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAg ICAgICppZm1hOw0KPiA+PiAtICAgICBzdHJ1Y3QgaW5fbXVsdGkgICAgICAgICAqaW5tLCAqdGlu bTsNCj4gPj4gLQ0KPiA+PiArICAgICBzdHJ1Y3QgaW5fbXVsdGkgICAgICAgICAqaW5tOw0KPiA+ PiArICAgICBzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBpbm1fZnJlZV90bXA7DQo+ID4+ICAgICAgIENU UjMoS1RSX0lHTVBWMywgIiVzOiBjYWxsZWQgZm9yIGlmcCAlcCglcykiLCBfX2Z1bmNfXywgaWZw LA0KPiA+PiAgICAgICAgICAgaWZwLT5pZl94bmFtZSk7DQo+ID4+DQo+ID4+ICsgICAgIFNMSVNU X0lOSVQoJmlubV9mcmVlX3RtcCk7DQo+ID4+ICAgICAgIElHTVBfTE9DSygpOw0KPiA+Pg0KPiA+ PiAgICAgICBpZ2kgPSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVU XSktPmlpX2lnbXA7DQo+ID4+IEBAIC02MzEsMjQgKzYzMSwxNSBAQCBpZ21wX2lmZGV0YWNoKHN0 cnVjdCBpZm5ldCAqaWZwKQ0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICgiJXM6IGlm bWFfcHJvdG9zcGVjIGlzIE5VTEwiLCBfX2Z1bmNfXykpOw0KPiA+PiAgI2VuZGlmDQo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICBpbm0gPSAoc3RydWN0IGluX211bHRpICopaWZtYS0+aWZtYV9w cm90b3NwZWM7DQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBpZiAoaW5tLT5pbm1fc3RhdGUg PT0gSUdNUF9MRUFWSU5HX01FTUJFUikgew0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTTElTVF9JTlNFUlRfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwNCj4gPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubSwgaW5tX25yZWxlKTsNCj4gPj4gLSAgICAg ICAgICAgICAgICAgICAgIH0NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChpbm0tPmlu bV9zdGF0ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSKQ0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbm1fcmVsZV9sb2NrZWQoJmlubV9mcmVlX3RtcCwgaW5tKTsNCj4gPj4gICAg ICAgICAgICAgICAgICAgICAgIGlubV9jbGVhcl9yZWNvcmRlZChpbm0pOw0KPiA+PiAgICAgICAg ICAgICAgIH0NCj4gPj4gICAgICAgICAgICAgICBJRl9BRERSX1JVTkxPQ0soaWZwKTsNCj4gPj4g LSAgICAgICAgICAgICAvKg0KPiA+PiAtICAgICAgICAgICAgICAqIEZyZWUgdGhlIGluX211bHRp IHJlZmVyZW5jZShzKSBmb3IgdGhpcyBJR01QIGxpZmVjeWNsZS4NCj4gPj4gLSAgICAgICAgICAg ICAgKi8NCj4gPj4gLSAgICAgICAgICAgICBTTElTVF9GT1JFQUNIX1NBRkUoaW5tLCAmaWdpLT5p Z2lfcmVsaW5taGVhZCwgaW5tX25yZWxlLA0KPiA+PiAtICAgICAgICAgICAgICAgICB0aW5tKSB7 DQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBTTElTVF9SRU1PVkVfSEVBRCgmaWdpLT5pZ2lf cmVsaW5taGVhZCwgaW5tX25yZWxlKTsNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGlubV9y ZWxlYXNlX2xvY2tlZChpbm0pOw0KPiA+PiAtICAgICAgICAgICAgIH0NCj4gPj4gKyAgICAgICAg ICAgICBpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKCZpbm1fZnJlZV90bXApOw0KPiA+PiAgICAg ICB9DQo+ID4+IC0NCj4gPj4gICAgICAgSUdNUF9VTkxPQ0soKTsNCj4gPj4gKw0KPiA+PiAgfQ0K PiA+Pg0KPiA+PiAgLyoNCj4gPj4gQEAgLTY4NCwxMSArNjc1LDYgQEAgaWdpX2RlbGV0ZV9sb2Nr ZWQoY29uc3Qgc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBt YnVmcV9kcmFpbigmaWdpLT5pZ2lfZ3EpOw0KPiA+Pg0KPiA+PiAgICAgICAgICAgICAgICAgICAg ICAgTElTVF9SRU1PVkUoaWdpLCBpZ2lfbGluayk7DQo+ID4+IC0NCj4gPj4gLSAgICAgICAgICAg ICAgICAgICAgIEtBU1NFUlQoU0xJU1RfRU1QVFkoJmlnaS0+aWdpX3JlbGlubWhlYWQpLA0KPiA+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICgiJXM6IHRoZXJlIGFyZSBkYW5nbGluZyBpbl9t dWx0aSByZWZlcmVuY2VzIiwNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNf XykpOw0KPiA+PiAtDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGlnaSwgTV9JR01Q KTsNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCj4gPj4gICAgICAgICAgICAg ICB9DQo+ID4+IEBAIC03MjIsNyArNzA4LDcgQEAgaWdtcF9pbnB1dF92MV9xdWVyeShzdHJ1Y3Qg aWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGlwDQo+ID4+ICAgICAgIH0NCj4gPj4gICAgICAgSUdN UFNUQVRfSU5DKGlncHNfcmN2X2dlbl9xdWVyaWVzKTsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVM VElfTE9DSygpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0soKTsNCj4gPj4gICAgICAg SUdNUF9MT0NLKCk7DQo+ID4+DQo+ID4+ICAgICAgIGlnaSA9ICgoc3RydWN0IGluX2lmaW5mbyAq KWlmcC0+aWZfYWZkYXRhW0FGX0lORVRdKS0+aWlfaWdtcDsNCj4gPj4gQEAgLTc3OCw3ICs3NjQs NyBAQCBpZ21wX2lucHV0X3YxX3F1ZXJ5KHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3Qg aXANCj4gPj4NCj4gPj4gIG91dF9sb2NrZWQ6DQo+ID4+ICAgICAgIElHTVBfVU5MT0NLKCk7DQo+ ID4+IC0gICAgIElOX01VTFRJX1VOTE9DSygpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VO TE9DSygpOw0KPiA+Pg0KPiA+PiAgICAgICByZXR1cm4gKDApOw0KPiA+PiAgfQ0KPiA+PiBAQCAt ODE2LDcgKzgwMiw3IEBAIGlnbXBfaW5wdXRfdjJfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNv bnN0IHN0cnVjdCBpcA0KPiA+PiAgICAgICAgICAgICAgIElHTVBTVEFUX0lOQyhpZ3BzX3Jjdl9n cm91cF9xdWVyaWVzKTsNCj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9M T0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBJR01Q X0xPQ0soKTsNCj4gPj4NCj4gPj4gICAgICAgaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZw LT5pZl9hZmRhdGFbQUZfSU5FVF0pLT5paV9pZ21wOw0KPiA+PiBAQCAtODcyLDcgKzg1OCw3IEBA IGlnbXBfaW5wdXRfdjJfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0K PiA+Pg0KPiA+PiAgb3V0X2xvY2tlZDoNCj4gPj4gICAgICAgSUdNUF9VTkxPQ0soKTsNCj4gPj4g LSAgICAgSU5fTVVMVElfVU5MT0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NL KCk7DQo+ID4+DQo+ID4+ICAgICAgIHJldHVybiAoMCk7DQo+ID4+ICB9DQo+ID4+IEBAIC04OTks NyArODg1LDcgQEAgaWdtcF92Ml91cGRhdGVfZ3JvdXAoc3RydWN0IGluX211bHRpICppbm0sIGNv bnN0IGludCB0DQo+ID4+ICAgICAgIENUUjQoS1RSX0lHTVBWMywgIjB4JTA4eDogJXMvJXMgdGlt ZXI9JWQiLCBfX2Z1bmNfXywNCj4gPj4gICAgICAgICAgIG50b2hsKGlubS0+aW5tX2FkZHIuc19h ZGRyKSwgaW5tLT5pbm1faWZwLT5pZl94bmFtZSwgdGltZXIpOw0KPiA+Pg0KPiA+PiAtICAgICBJ Tl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNT RVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIHN3aXRjaCAoaW5tLT5pbm1fc3RhdGUpIHsNCj4gPj4g ICAgICAgY2FzZSBJR01QX05PVF9NRU1CRVI6DQo+ID4+IEBAIC0xMDExLDcgKzk5Nyw3IEBAIGln bXBfaW5wdXRfdjNfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0KPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgSUdNUFNUQVRfSU5DKGlncHNfcmN2X2dzcl9xdWVyaWVz KTsNCj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ID4+ ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBJR01QX0xPQ0soKTsNCj4g Pj4NCj4gPj4gICAgICAgaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5pZl9hZmRhdGFb QUZfSU5FVF0pLT5paV9pZ21wOw0KPiA+PiBAQCAtMTA5Miw3ICsxMDc4LDcgQEAgaWdtcF9pbnB1 dF92M19xdWVyeShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGlwDQo+ID4+DQo+ID4+ ICBvdXRfbG9ja2VkOg0KPiA+PiAgICAgICBJR01QX1VOTE9DSygpOw0KPiA+PiAtICAgICBJTl9N VUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4gPj4N Cj4gPj4gICAgICAgcmV0dXJuICgwKTsNCj4gPj4gIH0NCj4gPj4gQEAgLTExMDksNyArMTA5NSw3 IEBAIGlnbXBfaW5wdXRfdjNfZ3JvdXBfcXVlcnkoc3RydWN0IGluX211bHRpICppbm0sIHN0cnVj dA0KPiA+PiAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsOw0KPiA+PiAgICAg ICB1aW50MTZfdCAgICAgICAgICAgICAgICAgbnNyYzsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVM VElfTE9DS19BU1NFUlQoKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgp Ow0KPiA+PiAgICAgICBJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIHJldHZh bCA9IDA7DQo+ID4+IEBAIC0xMjQ2LDcgKzEyMzIsNyBAQCBpZ21wX2lucHV0X3YxX3JlcG9ydChz dHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gPj4gICAgICAgICogSWYgd2UgYXJl IGEgbWVtYmVyIG9mIHRoaXMgZ3JvdXAsIGFuZCBvdXIgbWVtYmVyc2hpcCBzaG91bGQgYmUNCj4g Pj4gICAgICAgICogcmVwb3J0ZWQsIHN0b3Agb3VyIGdyb3VwIHRpbWVyIGFuZCB0cmFuc2l0aW9u IHRvIHRoZSAnbGF6eScgc3RhdGUuDQo+ID4+ICAgICAgICAqLw0KPiA+PiAtICAgICBJTl9NVUxU SV9MT0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBp bm0gPSBpbm1fbG9va3VwKGlmcCwgaWdtcC0+aWdtcF9ncm91cCk7DQo+ID4+ICAgICAgIGlmIChp bm0gIT0gTlVMTCkgew0KPiA+PiAgICAgICAgICAgICAgIHN0cnVjdCBpZ21wX2lmc29mdGMgKmln aTsNCj4gPj4gQEAgLTEzMDUsNyArMTI5MSw3IEBAIGlnbXBfaW5wdXRfdjFfcmVwb3J0KHN0cnVj dCBpZm5ldCAqaWZwLCAvKmNvbnN0Ki8gc3RydQ0KPiA+PiAgICAgICB9DQo+ID4+DQo+ID4+ICBv dXRfbG9ja2VkOg0KPiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5f TVVMVElfTElTVF9VTkxPQ0soKTsNCj4gPj4NCj4gPj4gICAgICAgcmV0dXJuICgwKTsNCj4gPj4g IH0NCj4gPj4gQEAgLTEzNzMsNyArMTM1OSw3IEBAIGlnbXBfaW5wdXRfdjJfcmVwb3J0KHN0cnVj dCBpZm5ldCAqaWZwLCAvKmNvbnN0Ki8gc3RydQ0KPiA+PiAgICAgICAgKiByZXBvcnRlZCwgYW5k IG91ciBncm91cCB0aW1lciBpcyBwZW5kaW5nIG9yIGFib3V0IHRvIGJlIHJlc2V0LA0KPiA+PiAg ICAgICAgKiBzdG9wIG91ciBncm91cCB0aW1lciBieSB0cmFuc2l0aW9uaW5nIHRvIHRoZSAnbGF6 eScgc3RhdGUuDQo+ID4+ICAgICAgICAqLw0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBpbm0gPSBpbm1fbG9v a3VwKGlmcCwgaWdtcC0+aWdtcF9ncm91cCk7DQo+ID4+ICAgICAgIGlmIChpbm0gIT0gTlVMTCkg ew0KPiA+PiAgICAgICAgICAgICAgIHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaTsNCj4gPj4gQEAg LTE0MTgsNyArMTQwNCw3IEBAIGlnbXBfaW5wdXRfdjJfcmVwb3J0KHN0cnVjdCBpZm5ldCAqaWZw LCAvKmNvbnN0Ki8gc3RydQ0KPiA+PiAgICAgICB9DQo+ID4+DQo+ID4+ICBvdXRfbG9ja2VkOg0K PiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9V TkxPQ0soKTsNCj4gPj4NCj4gPj4gICAgICAgcmV0dXJuICgwKTsNCj4gPj4gIH0NCj4gPj4gQEAg LTE2NDcsNiArMTYzMyw3IEBAIGlnbXBfZmFzdHRpbW9fdm5ldCh2b2lkKQ0KPiA+PiAgICAgICBz dHJ1Y3QgaWdtcF9pZnNvZnRjICAgICAqaWdpOw0KPiA+PiAgICAgICBzdHJ1Y3QgaWZtdWx0aWFk ZHIgICAgICAqaWZtYTsNCj4gPj4gICAgICAgc3RydWN0IGluX211bHRpICAgICAgICAgKmlubTsN Cj4gPj4gKyAgICAgc3RydWN0IGluX211bHRpX2hlYWQgaW5tX2ZyZWVfdG1wOw0KPiA+PiAgICAg ICBpbnQgICAgICAgICAgICAgICAgICAgICAgbG9vcCwgdXJpX2Zhc3RoejsNCj4gPj4NCj4gPj4g ICAgICAgbG9vcCA9IDA7DQo+ID4+IEBAIC0xNjYyLDcgKzE2NDksOCBAQCBpZ21wX2Zhc3R0aW1v X3ZuZXQodm9pZCkNCj4gPj4gICAgICAgICAgICFWX3N0YXRlX2NoYW5nZV90aW1lcnNfcnVubmlu ZykNCj4gPj4gICAgICAgICAgICAgICByZXR1cm47DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJ X0xPQ0soKTsNCj4gPj4gKyAgICAgU0xJU1RfSU5JVCgmaW5tX2ZyZWVfdG1wKTsNCj4gPj4gKyAg ICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIElHTVBfTE9DSygpOw0KPiA+Pg0K PiA+PiAgICAgICAvKg0KPiA+PiBAQCAtMTcyMCw3ICsxNzA4LDcgQEAgaWdtcF9mYXN0dGltb192 bmV0KHZvaWQpDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ2ktPmln aV92ZXJzaW9uKTsNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4+ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElHTVBfVkVSU0lPTl8zOg0KPiA+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKGln aSwgJnFycSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdtcF92M19wcm9j ZXNzX2dyb3VwX3RpbWVycygmaW5tX2ZyZWVfdG1wLCAmcXJxLA0KPiA+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnNjcSwgaW5tLCB1cmlfZmFzdGh6KTsNCj4gPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4+ICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4+IEBAIC0xNzI4LDggKzE3MTYsNiBAQCBpZ21wX2Zhc3R0aW1vX3ZuZXQodm9pZCkN Cj4gPj4gICAgICAgICAgICAgICBJRl9BRERSX1JVTkxPQ0soaWZwKTsNCj4gPj4NCj4gPj4gICAg ICAgICAgICAgICBpZiAoaWdpLT5pZ2lfdmVyc2lvbiA9PSBJR01QX1ZFUlNJT05fMykgew0KPiA+ PiAtICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGluX211bHRpICAgICAgICAgKnRpbm07DQo+ ID4+IC0NCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIGlnbXBfZGlzcGF0Y2hfcXVldWUoJnFy cSwgMCwgbG9vcCk7DQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpZ21wX2Rpc3BhdGNoX3F1 ZXVlKCZzY3EsIDAsIGxvb3ApOw0KPiA+Pg0KPiA+PiBAQCAtMTczNywxOCArMTcyMywxMyBAQCBp Z21wX2Zhc3R0aW1vX3ZuZXQodm9pZCkNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAqIEZy ZWUgdGhlIGluX211bHRpIHJlZmVyZW5jZShzKSBmb3IgdGhpcw0KPiA+PiAgICAgICAgICAgICAg ICAgICAgICAgICogSUdNUCBsaWZlY3ljbGUuDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg Ki8NCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIFNMSVNUX0ZPUkVBQ0hfU0FGRShpbm0sICZp Z2ktPmlnaV9yZWxpbm1oZWFkLA0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgIGlubV9u cmVsZSwgdGlubSkgew0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTElTVF9S RU1PVkVfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwNCj4gPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlubV9ucmVsZSk7DQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiA+PiAtICAgICAgICAgICAgICAgICAg ICAgfQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJl ZCgmaW5tX2ZyZWVfdG1wKTsNCj4gPj4gICAgICAgICAgICAgICB9DQo+ID4+ICAgICAgIH0NCj4g Pj4NCj4gPj4gIG91dF9sb2NrZWQ6DQo+ID4+ICAgICAgIElHTVBfVU5MT0NLKCk7DQo+ID4+IC0g ICAgIElOX01VTFRJX1VOTE9DSygpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DSygp Ow0KPiA+PiAgfQ0KPiA+Pg0KPiA+PiAgLyoNCj4gPj4gQEAgLTE3NjAsNyArMTc0MSw3IEBAIGln bXBfdjF2Ml9wcm9jZXNzX2dyb3VwX3RpbWVyKHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjbw0KPiA+ PiAgew0KPiA+PiAgICAgICBpbnQgcmVwb3J0X3RpbWVyX2V4cGlyZWQ7DQo+ID4+DQo+ID4+IC0g ICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9D S19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+Pg0KPiA+PiAg ICAgICBpZiAoaW5tLT5pbm1fdGltZXIgPT0gMCkgew0KPiA+PiBAQCAtMTgwMiwxNCArMTc4Mywx NCBAQCBpZ21wX3YxdjJfcHJvY2Vzc19ncm91cF90aW1lcihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwg Y28NCj4gPj4gICAqIE5vdGU6IFVubG9ja2VkIHJlYWQgZnJvbSBpZ2kuDQo+ID4+ICAgKi8NCj4g Pj4gIHN0YXRpYyB2b2lkDQo+ID4+IC1pZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKHN0cnVj dCBpZ21wX2lmc29mdGMgKmlnaSwNCj4gPj4gK2lnbXBfdjNfcHJvY2Vzc19ncm91cF90aW1lcnMo c3RydWN0IGluX211bHRpX2hlYWQgKmlubWgsDQo+ID4+ICAgICAgc3RydWN0IG1idWZxICpxcnEs IHN0cnVjdCBtYnVmcSAqc2NxLA0KPiA+PiAgICAgIHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25z dCBpbnQgdXJpX2Zhc3RoeikNCj4gPj4gIHsNCj4gPj4gICAgICAgaW50IHF1ZXJ5X3Jlc3BvbnNl X3RpbWVyX2V4cGlyZWQ7DQo+ID4+ICAgICAgIGludCBzdGF0ZV9jaGFuZ2VfcmV0cmFuc21pdF90 aW1lcl9leHBpcmVkOw0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0K PiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICAgICAgIElHTVBf TE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4gICAgICAgcXVlcnlfcmVzcG9uc2VfdGltZXJfZXhw aXJlZCA9IDA7DQo+ID4+IEBAIC0xOTA3LDggKzE4ODgsNyBAQCBpZ21wX3YzX3Byb2Nlc3NfZ3Jv dXBfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSwNCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgIGlmIChpbm0tPmlubV9zdGF0ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSICYmDQo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5tLT5pbm1fc2NydiA9PSAwKSB7DQo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubS0+aW5tX3N0YXRlID0gSUdNUF9OT1RfTUVN QkVSOw0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTElTVF9JTlNFUlRfSEVB RCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlubSwgaW5tX25yZWxlKTsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5tX3JlbGVfbG9ja2VkKGlubWgsIGlubSk7DQo+ID4+ICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4+ICAgICAgICAgICAgICAgfQ0KPiA+PiAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ PiBAQCAtMTkyOSw3ICsxOTA5LDcgQEAgc3RhdGljIHZvaWQNCj4gPj4gIGlnbXBfdjNfc3VwcHJl c3NfZ3JvdXBfcmVjb3JkKHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiA+PiAgew0KPiA+Pg0KPiA+ PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNU X0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIEtBU1NFUlQoaW5tLT5pbm1faWdpLT5p Z2lfdmVyc2lvbiA9PSBJR01QX1ZFUlNJT05fMywNCj4gPj4gICAgICAgICAgICAgICAoIiVzOiBu b3QgSUdNUHYzIG1vZGUgb24gbGluayIsIF9fZnVuY19fKSk7DQo+ID4+IEBAIC0yMDAzLDEzICsx OTgzLDE1IEBAIGlnbXBfdjNfY2FuY2VsX2xpbmtfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMg KmlnaSkNCj4gPj4gIHsNCj4gPj4gICAgICAgc3RydWN0IGlmbXVsdGlhZGRyICAgICAgKmlmbWE7 DQo+ID4+ICAgICAgIHN0cnVjdCBpZm5ldCAgICAgICAgICAgICppZnA7DQo+ID4+IC0gICAgIHN0 cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm0sICp0aW5tOw0KPiA+PiArICAgICBzdHJ1Y3QgaW5f bXVsdGkgICAgICAgICAqaW5tOw0KPiA+PiArICAgICBzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBpbm1f ZnJlZV90bXA7DQo+ID4+DQo+ID4+ICAgICAgIENUUjMoS1RSX0lHTVBWMywgIiVzOiBjYW5jZWwg djMgdGltZXJzIG9uIGlmcCAlcCglcykiLCBfX2Z1bmNfXywNCj4gPj4gICAgICAgICAgIGlnaS0+ aWdpX2lmcCwgaWdpLT5pZ2lfaWZwLT5pZl94bmFtZSk7DQo+ID4+DQo+ID4+IC0gICAgIElOX01V TFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQo KTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBTTElTVF9JTklU KCZpbm1fZnJlZV90bXApOw0KPiA+Pg0KPiA+PiAgICAgICAvKg0KPiA+PiAgICAgICAgKiBTdG9w IHRoZSB2MyBHZW5lcmFsIFF1ZXJ5IFJlc3BvbnNlIG9uIHRoaXMgbGluayBzdG9uZSBkZWFkLg0K PiA+PiBAQCAtMjA1MCw3ICsyMDMyLDcgQEAgaWdtcF92M19jYW5jZWxfbGlua190aW1lcnMoc3Ry dWN0IGlnbXBfaWZzb2Z0YyAqaWdpKQ0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICogbWVz c2FnZSBpcyBzZW50IHVwc3RyZWFtIHRvIHRoZSBvbGQgcXVlcmllciAtLQ0KPiA+PiAgICAgICAg ICAgICAgICAgICAgICAgICogdHJhbnNpdGlvbiB0byBOT1Qgd291bGQgbG9zZSB0aGUgbGVhdmUg YW5kIHJhY2UuDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gPj4gLSAgICAgICAg ICAgICAgICAgICAgIFNMSVNUX0lOU0VSVF9IRUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFkLCBpbm0s IGlubV9ucmVsZSk7DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBpbm1fcmVsZV9sb2NrZWQo JmlubV9mcmVlX3RtcCwgaW5tKTsNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIC8qIEZBTExU SFJPVUdIICovDQo+ID4+ICAgICAgICAgICAgICAgY2FzZSBJR01QX0dfUVVFUllfUEVORElOR19N RU1CRVI6DQo+ID4+ICAgICAgICAgICAgICAgY2FzZSBJR01QX1NHX1FVRVJZX1BFTkRJTkdfTUVN QkVSOg0KPiA+PiBAQCAtMjA2OSwxMCArMjA1MSw4IEBAIGlnbXBfdjNfY2FuY2VsX2xpbmtfdGlt ZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSkNCj4gPj4gICAgICAgICAgICAgICBtYnVmcV9k cmFpbigmaW5tLT5pbm1fc2NxKTsNCj4gPj4gICAgICAgfQ0KPiA+PiAgICAgICBJRl9BRERSX1JV TkxPQ0soaWZwKTsNCj4gPj4gLSAgICAgU0xJU1RfRk9SRUFDSF9TQUZFKGlubSwgJmlnaS0+aWdp X3JlbGlubWhlYWQsIGlubV9ucmVsZSwgdGlubSkgew0KPiA+PiAtICAgICAgICAgICAgIFNMSVNU X1JFTU9WRV9IRUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFkLCBpbm1fbnJlbGUpOw0KPiA+PiAtICAg ICAgICAgICAgIGlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiA+PiAtICAgICB9DQo+ID4+ICsN Cj4gPj4gKyAgICAgaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZCgmaW5tX2ZyZWVfdG1wKTsNCj4g Pj4gIH0NCj4gPj4NCj4gPj4gIC8qDQo+ID4+IEBAIC0yMTk5LDcgKzIxNzksNyBAQCBpZ21wX3Yx djJfcXVldWVfcmVwb3J0KHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbnQNCj4gPj4gICAg ICAgc3RydWN0IGlwICAgICAgICAgICAgICAgKmlwOw0KPiA+PiAgICAgICBzdHJ1Y3QgbWJ1ZiAg ICAgICAgICAgICAqbTsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsN Cj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiA+PiAgICAgICBJR01Q X0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIGlmcCA9IGlubS0+aW5tX2lmcDsNCj4g Pj4gQEAgLTIyNzYsMTAgKzIyNTYsOCBAQCBpZ21wX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgaW5fbXVs dGkgKmlubSkNCj4gPj4gICAgICAgc3RydWN0IGlmbmV0ICppZnA7DQo+ID4+ICAgICAgIGludCBl cnJvcjsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPj4gLQ0K PiA+PiAgICAgICBlcnJvciA9IDA7DQo+ID4+IC0NCj4gPj4gKyAgICAgSU5fTVVMVElfTE9DS19B U1NFUlQoKTsNCj4gPj4gICAgICAgLyoNCj4gPj4gICAgICAgICogVHJ5IHRvIGRldGVjdCBpZiB0 aGUgdXBwZXIgbGF5ZXIganVzdCBhc2tlZCB1cyB0byBjaGFuZ2Ugc3RhdGUNCj4gPj4gICAgICAg ICogZm9yIGFuIGludGVyZmFjZSB3aGljaCBoYXMgbm93IGdvbmUgYXdheS4NCj4gPj4gQEAgLTIz NzksOSArMjM1NywxMCBAQCBpZ21wX2luaXRpYWxfam9pbihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwg c3RydWN0IGlnbXBfaWYNCj4gPj4gICAgICAgICAgICAgICAgKiBncm91cCBhcm91bmQgZm9yIHRo ZSBmaW5hbCBJTkNMVURFIHt9IGVucXVldWUuDQo+ID4+ICAgICAgICAgICAgICAgICovDQo+ID4+ ICAgICAgICAgICAgICAgaWYgKGlnaS0+aWdpX3ZlcnNpb24gPT0gSUdNUF9WRVJTSU9OXzMgJiYN Cj4gPj4gLSAgICAgICAgICAgICAgICAgaW5tLT5pbm1fc3RhdGUgPT0gSUdNUF9MRUFWSU5HX01F TUJFUikNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGlubV9yZWxlYXNlX2xvY2tlZChpbm0p Ow0KPiA+PiAtDQo+ID4+ICsgICAgICAgICAgICAgICAgIGlubS0+aW5tX3N0YXRlID09IElHTVBf TEVBVklOR19NRU1CRVIpIHsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIE1QQVNTKGlubS0+ aW5tX3JlZmNvdW50ID4gMSk7DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBpbm1fcmVsZV9s b2NrZWQoTlVMTCwgaW5tKTsNCj4gPj4gKyAgICAgICAgICAgICB9DQo+ID4+ICAgICAgICAgICAg ICAgaW5tLT5pbm1fc3RhdGUgPSBJR01QX1JFUE9SVElOR19NRU1CRVI7DQo+ID4+DQo+ID4+ICAg ICAgICAgICAgICAgc3dpdGNoIChpZ2ktPmlnaV92ZXJzaW9uKSB7DQo+ID4+IEBAIC0yNDczLDcg KzI0NTIsNyBAQCBpZ21wX2hhbmRsZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGluX211bHRpICppbm0s IHN0cnVjdA0KPiA+Pg0KPiA+PiAgICAgICBpZnAgPSBpbm0tPmlubV9pZnA7DQo+ID4+DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1Rf TE9DS19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+Pg0KPiA+ PiAgICAgICBLQVNTRVJUKGlnaSAmJiBpZ2ktPmlnaV9pZnAgPT0gaWZwLCAoIiVzOiBpbmNvbnNp c3RlbnQgaWZwIiwgX19mdW5jX18pKTsNCj4gPj4gQEAgLTI1MzEsNyArMjUxMCw3IEBAIGlnbXBf ZmluYWxfbGVhdmUoc3RydWN0IGluX211bHRpICppbm0sIHN0cnVjdCBpZ21wX2lmcw0KPiA+PiAg ICAgICAgICAgX19mdW5jX18sIG50b2hsKGlubS0+aW5tX2FkZHIuc19hZGRyKSwgaW5tLT5pbm1f aWZwLA0KPiA+PiAgICAgICAgICAgaW5tLT5pbm1faWZwLT5pZl94bmFtZSk7DQo+ID4+DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1Rf TE9DS19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+Pg0KPiA+ PiAgICAgICBzd2l0Y2ggKGlubS0+aW5tX3N0YXRlKSB7DQo+ID4+IEBAIC0yNjU4LDcgKzI2Mzcs NyBAQCBpZ21wX3YzX2VucXVldWVfZ3JvdXBfcmVjb3JkKHN0cnVjdCBtYnVmcSAqbXEsIHN0cnVj dA0KPiA+PiAgICAgICBpbl9hZGRyX3QgICAgICAgICAgICAgICAgbmFkZHI7DQo+ID4+ICAgICAg IHVpbnQ4X3QgICAgICAgICAgICAgICAgICBtb2RlOw0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxU SV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7 DQo+ID4+DQo+ID4+ICAgICAgIGVycm9yID0gMDsNCj4gPj4gICAgICAgaWZwID0gaW5tLT5pbm1f aWZwOw0KPiA+PiBAQCAtMzAxOCw3ICsyOTk3LDcgQEAgaWdtcF92M19lbnF1ZXVlX2ZpbHRlcl9j aGFuZ2Uoc3RydWN0IG1idWZxICptcSwgc3RydWN0DQo+ID4+ICAgICAgIHVpbnQ4X3QgICAgICAg ICAgICAgICAgICBtb2RlLCBub3csIHRoZW47DQo+ID4+ICAgICAgIHJlY3R5cGVfdCAgICAgICAg ICAgICAgICBjcnQsIGRydCwgbnJ0Ow0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FT U0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ ID4+ICAgICAgIGlmIChpbm0tPmlubV9uc3JjID09IDAgfHwNCj4gPj4gICAgICAgICAgIChpbm0t PmlubV9zdFswXS5pc3NfYXNtID4gMCAmJiBpbm0tPmlubV9zdFsxXS5pc3NfYXNtID4gMCkpDQo+ ID4+IEBAIC0zMjIxLDcgKzMyMDAsNyBAQCBpZ21wX3YzX21lcmdlX3N0YXRlX2NoYW5nZXMoc3Ry dWN0IGluX211bHRpICppbm0sIHN0cnUNCj4gPj4gICAgICAgZG9tZXJnZSA9IDA7DQo+ID4+ICAg ICAgIHJlY3NsZW4gPSAwOw0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgp Ow0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICAgICAgIElH TVBfTE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4gICAgICAgLyoNCj4gPj4gQEAgLTMzMjAsNyAr MzI5OSw3IEBAIGlnbXBfdjNfZGlzcGF0Y2hfZ2VuZXJhbF9xdWVyeShzdHJ1Y3QgaWdtcF9pZnNv ZnRjICppZw0KPiA+PiAgICAgICBzdHJ1Y3QgaW5fbXVsdGkgICAgICAgICAqaW5tOw0KPiA+PiAg ICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsLCBsb29wOw0KPiA+Pg0KPiA+PiAt ICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xP Q0tfQVNTRVJUKCk7DQo+ID4+ICAgICAgIElHTVBfTE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4g ICAgICAgS0FTU0VSVChpZ2ktPmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8zLA0KPiA+PiBA QCAtMzYzMiw3ICszNjExLDYgQEAgREJfU0hPV19DT01NQU5EKGlnaV9saXN0LCBkYl9zaG93X2ln aV9saXN0KQ0KPiA+PiAgICAgICAgICAgICAgIGRiX3ByaW50ZigiICAgIHFpICV1XG4iLCBpZ2kt PmlnaV9xaSk7DQo+ID4+ICAgICAgICAgICAgICAgZGJfcHJpbnRmKCIgICAgcXJpICV1XG4iLCBp Z2ktPmlnaV9xcmkpOw0KPiA+PiAgICAgICAgICAgICAgIGRiX3ByaW50ZigiICAgIHVyaSAldVxu IiwgaWdpLT5pZ2lfdXJpKTsNCj4gPj4gLSAgICAgICAgICAgICAvKiBTTElTVF9IRUFEKCxpbl9t dWx0aSkgICBpZ2lfcmVsaW5taGVhZCAqLw0KPiA+PiAgICAgICAgICAgICAgIC8qIHN0cnVjdCBt YnVmcSAgICBpZ2lfZ3E7ICovDQo+ID4+ICAgICAgICAgICAgICAgZGJfcHJpbnRmKCJcbiIpOw0K PiA+PiAgICAgICB9DQo+ID4+DQo+ID4+IE1vZGlmaWVkOiBoZWFkL3N5cy9uZXRpbmV0L2lnbXBf dmFyLmgNCj4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4+IC0tLSBoZWFkL3N5cy9uZXRp bmV0L2lnbXBfdmFyLmggICAgICAgV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4ICAgICAgICAocjMz MzE3NCkNCj4gPj4gKysrIGhlYWQvc3lzL25ldGluZXQvaWdtcF92YXIuaCAgICAgICBXZWQgTWF5 ICAyIDE5OjM2OjI5IDIwMTggICAgICAgIChyMzMzMTc1KQ0KPiA+PiBAQCAtMjE0LDcgKzIxNCw2 IEBAIHN0cnVjdCBpZ21wX2lmc29mdGMgew0KPiA+PiAgICAgICB1aW50MzJfdCBpZ2lfcWk7ICAg ICAgICAvKiBJR01QdjMgUXVlcnkgSW50ZXJ2YWwgKHMpICovDQo+ID4+ICAgICAgIHVpbnQzMl90 IGlnaV9xcmk7ICAgICAgIC8qIElHTVB2MyBRdWVyeSBSZXNwb25zZSBJbnRlcnZhbCAocykgKi8N Cj4gPj4gICAgICAgdWludDMyX3QgaWdpX3VyaTsgICAgICAgLyogSUdNUHYzIFVuc29saWNpdGVk IFJlcG9ydCBJbnRlcnZhbCAocykgKi8NCj4gPj4gLSAgICAgU0xJU1RfSEVBRCgsaW5fbXVsdGkp ICAgaWdpX3JlbGlubWhlYWQ7IC8qIHJlbGVhc2VkIGdyb3VwcyAqLw0KPiA+PiAgICAgICBzdHJ1 Y3QgbWJ1ZnEgICAgaWdpX2dxOyAgICAgICAgIC8qIGdlbmVyYWwgcXVlcnkgcmVzcG9uc2VzIHF1 ZXVlICovDQo+ID4+ICB9Ow0KPiA+Pg0KPiA+Pg0KPiA+PiBNb2RpZmllZDogaGVhZC9zeXMvbmV0 aW5ldC9pbi5jDQo+ID4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVhZC9zeXMv bmV0aW5ldC9pbi5jICAgICBXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTggICAgICAgIChyMzMzMTc0 KQ0KPiA+PiArKysgaGVhZC9zeXMvbmV0aW5ldC9pbi5jICAgICBXZWQgTWF5ICAyIDE5OjM2OjI5 IDIwMTggICAgICAgIChyMzMzMTc1KQ0KPiA+PiBAQCAtNjMyLDEyICs2MzIsMTAgQEAgaW5fZGlm YWRkcl9pb2N0bCh1X2xvbmcgY21kLCBjYWRkcl90IGRhdGEsIHN0cnVjdCBpZm5lDQo+ID4+ICAg ICAgICAgICAgICAgc3RydWN0IGluX2lmaW5mbyAqaWk7DQo+ID4+DQo+ID4+ICAgICAgICAgICAg ICAgaWkgPSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXSk7DQo+ ID4+IC0gICAgICAgICAgICAgSU5fTVVMVElfTE9DSygpOw0KPiA+PiAgICAgICAgICAgICAgIGlm IChpaS0+aWlfYWxsaG9zdHMpIHsNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICh2b2lkKWlu X2xlYXZlZ3JvdXBfbG9ja2VkKGlpLT5paV9hbGxob3N0cywgTlVMTCk7DQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAodm9pZClpbl9sZWF2ZWdyb3VwKGlpLT5paV9hbGxob3N0cywgTlVMTCk7 DQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpaS0+aWlfYWxsaG9zdHMgPSBOVUxMOw0KPiA+ PiAgICAgICAgICAgICAgIH0NCj4gPj4gLSAgICAgICAgICAgICBJTl9NVUxUSV9VTkxPQ0soKTsN Cj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgICBJRl9BRERSX1dMT0NLKGlmcCk7DQo+ID4+ IEBAIC05OTQsMTEgKzk5MiwxMiBAQCBpbl9icm9hZGNhc3Qoc3RydWN0IGluX2FkZHIgaW4sIHN0 cnVjdCBpZm5ldCAqaWZwKQ0KPiA+PiAgdm9pZA0KPiA+PiAgaW5faWZkZXRhY2goc3RydWN0IGlm bmV0ICppZnApDQo+ID4+ICB7DQo+ID4+IC0NCj4gPj4gKyAgICAgSU5fTVVMVElfTE9DSygpOw0K PiA+PiAgICAgICBpbl9wY2JwdXJnZWlmMCgmVl9yaXBjYmluZm8sIGlmcCk7DQo+ID4+ICAgICAg IGluX3BjYnB1cmdlaWYwKCZWX3VkYmluZm8sIGlmcCk7DQo+ID4+ICAgICAgIGluX3BjYnB1cmdl aWYwKCZWX3VsaXRlY2JpbmZvLCBpZnApOw0KPiA+PiAgICAgICBpbl9wdXJnZW1hZGRycyhpZnAp Ow0KPiA+PiArICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gIH0NCj4gPj4NCj4gPj4gIC8q DQo+ID4+IEBAIC0xMDExLDEyICsxMDEwLDEyIEBAIGluX2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAq aWZwKQ0KPiA+PiAgc3RhdGljIHZvaWQNCj4gPj4gIGluX3B1cmdlbWFkZHJzKHN0cnVjdCBpZm5l dCAqaWZwKQ0KPiA+PiAgew0KPiA+PiAtICAgICBMSVNUX0hFQUQoLGluX211bHRpKSBwdXJnZWlu bXM7DQo+ID4+IC0gICAgIHN0cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm0sICp0aW5tOw0KPiA+ PiArICAgICBzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBwdXJnZWlubXM7DQo+ID4+ICsgICAgIHN0cnVj dCBpbl9tdWx0aSAgICAgICAgICppbm07DQo+ID4+ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAg ICAgICppZm1hOw0KPiA+Pg0KPiA+PiAtICAgICBMSVNUX0lOSVQoJnB1cmdlaW5tcyk7DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0soKTsNCj4gPj4gKyAgICAgU0xJU1RfSU5JVCgmcHVyZ2Vpbm1z KTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+DQo+ID4+ICAgICAgIC8q DQo+ID4+ICAgICAgICAqIEV4dHJhY3QgbGlzdCBvZiBpbl9tdWx0aSBhc3NvY2lhdGVkIHdpdGgg dGhlIGRldGFjaGluZyBpZnANCj4gPj4gQEAgLTEwMzQsMTcgKzEwMzMsMTMgQEAgaW5fcHVyZ2Vt YWRkcnMoc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICAgICAgICAgICAgICAgICAgICgiJXM6IGlm bWFfcHJvdG9zcGVjIGlzIE5VTEwiLCBfX2Z1bmNfXykpOw0KPiA+PiAgI2VuZGlmDQo+ID4+ICAg ICAgICAgICAgICAgaW5tID0gKHN0cnVjdCBpbl9tdWx0aSAqKWlmbWEtPmlmbWFfcHJvdG9zcGVj Ow0KPiA+PiAtICAgICAgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJnB1cmdlaW5tcywgaW5tLCBp bm1fbGluayk7DQo+ID4+ICsgICAgICAgICAgICAgaW5tX3JlbGVfbG9ja2VkKCZwdXJnZWlubXMs IGlubSk7DQo+ID4+ICAgICAgIH0NCj4gPj4gICAgICAgSUZfQUREUl9SVU5MT0NLKGlmcCk7DQo+ ID4+DQo+ID4+IC0gICAgIExJU1RfRk9SRUFDSF9TQUZFKGlubSwgJnB1cmdlaW5tcywgaW5tX2xp bmssIHRpbm0pIHsNCj4gPj4gLSAgICAgICAgICAgICBMSVNUX1JFTU9WRShpbm0sIGlubV9saW5r KTsNCj4gPj4gLSAgICAgICAgICAgICBpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPj4gLSAg ICAgfQ0KPiA+PiArICAgICBpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKCZwdXJnZWlubXMpOw0K PiA+PiAgICAgICBpZ21wX2lmZGV0YWNoKGlmcCk7DQo+ID4+IC0NCj4gPj4gLSAgICAgSU5fTVVM VElfVU5MT0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4+ICB9 DQo+ID4+DQo+ID4+ICBzdHJ1Y3QgaW5fbGxlbnRyeSB7DQo+ID4+DQo+ID4+IE1vZGlmaWVkOiBo ZWFkL3N5cy9uZXRpbmV0L2luX21jYXN0LmMNCj4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID4+IC0tLSBoZWFkL3N5cy9uZXRpbmV0L2luX21jYXN0LmMgICAgICAgV2VkIE1heSAgMiAxNzo0 MTowMCAyMDE4ICAgICAgICAocjMzMzE3NCkNCj4gPj4gKysrIGhlYWQvc3lzL25ldGluZXQvaW5f bWNhc3QuYyAgICAgICBXZWQgTWF5ICAyIDE5OjM2OjI5IDIwMTggICAgICAgIChyMzMzMTc1KQ0K PiA+PiBAQCAtNTEsNiArNTEsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQo+ID4+ICAjaW5j bHVkZSA8c3lzL3N5c2N0bC5oPg0KPiA+PiAgI2luY2x1ZGUgPHN5cy9rdHIuaD4NCj4gPj4gICNp bmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+DQo+ID4+ICsjaW5jbHVkZSA8c3lzL2d0YXNrcXVldWUu aD4NCj4gPj4gICNpbmNsdWRlIDxzeXMvdHJlZS5oPg0KPiA+Pg0KPiA+PiAgI2luY2x1ZGUgPG5l dC9pZi5oPg0KPiA+PiBAQCAtNTksNiArNjAsOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQo+ ID4+ICAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+DQo+ID4+ICAjaW5jbHVkZSA8bmV0L3ZuZXQuaD4N Cj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4NCj4gPj4gKw0KPiA+PiAgI2lu Y2x1ZGUgPG5ldGluZXQvaW4uaD4NCj4gPj4gICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+ DQo+ID4+ICAjaW5jbHVkZSA8bmV0aW5ldC9pbl9maWIuaD4NCj4gPj4gQEAgLTkxLDE4ICs5NCwy NCBAQCBzdGF0aWMgTUFMTE9DX0RFRklORShNX0lQTVNPVVJDRSwgImlwX21zb3VyY2UiLA0KPiA+ Pg0KPiA+PiAgLyoNCj4gPj4gICAqIExvY2tpbmc6DQo+ID4+IC0gKiAtIExvY2sgb3JkZXIgaXM6 IEdpYW50LCBJTlBfV0xPQ0ssIElOX01VTFRJX0xPQ0ssIElHTVBfTE9DSywgSUZfQUREUl9MT0NL Lg0KPiA+PiArICogLSBMb2NrIG9yZGVyIGlzOiBHaWFudCwgSU5QX1dMT0NLLCBJTl9NVUxUSV9M SVNUX0xPQ0ssIElHTVBfTE9DSywgSUZfQUREUl9MT0NLLg0KPiA+PiAgICogLSBUaGUgSUZfQURE Ul9MT0NLIGlzIGltcGxpY2l0bHkgdGFrZW4gYnkgaW5tX2xvb2t1cCgpIGVhcmxpZXIsIGhvd2V2 ZXINCj4gPj4gICAqICAgaXQgY2FuIGJlIHRha2VuIGJ5IGNvZGUgaW4gbmV0L2lmLmMgYWxzby4N Cj4gPj4gICAqIC0gaXBfbW9wdGlvbnMgYW5kIGluX21maWx0ZXIgYXJlIGNvdmVyZWQgYnkgdGhl IElOUF9XTE9DSy4NCj4gPj4gICAqDQo+ID4+IC0gKiBzdHJ1Y3QgaW5fbXVsdGkgaXMgY292ZXJl ZCBieSBJTl9NVUxUSV9MT0NLLiBUaGVyZSBpc24ndCBzdHJpY3RseQ0KPiA+PiArICogc3RydWN0 IGluX211bHRpIGlzIGNvdmVyZWQgYnkgSU5fTVVMVElfTElTVF9MT0NLLiBUaGVyZSBpc24ndCBz dHJpY3RseQ0KPiA+PiAgICogYW55IG5lZWQgZm9yIGluX211bHRpIGl0c2VsZiB0byBiZSB2aXJ0 dWFsaXplZCAtLSBpdCBpcyBib3VuZCB0byBhbiBpZnANCj4gPj4gICAqIGFueXdheSBubyBtYXR0 ZXIgd2hhdCBoYXBwZW5zLg0KPiA+PiAgICovDQo+ID4+IC1zdHJ1Y3QgbXR4IGluX211bHRpX210 eDsNCj4gPj4gLU1UWF9TWVNJTklUKGluX211bHRpX210eCwgJmluX211bHRpX210eCwgImluX211 bHRpX210eCIsIE1UWF9ERUYpOw0KPiA+PiArc3RydWN0IG10eCBpbl9tdWx0aV9saXN0X210eDsN Cj4gPj4gK01UWF9TWVNJTklUKGluX211bHRpX210eCwgJmluX211bHRpX2xpc3RfbXR4LCAiaW5f bXVsdGlfbGlzdF9tdHgiLCBNVFhfREVGKTsNCj4gPj4NCj4gPj4gK3N0cnVjdCBtdHggaW5fbXVs dGlfZnJlZV9tdHg7DQo+ID4+ICtNVFhfU1lTSU5JVChpbl9tdWx0aV9mcmVlX210eCwgJmluX211 bHRpX2ZyZWVfbXR4LCAiaW5fbXVsdGlfZnJlZV9tdHgiLCBNVFhfREVGKTsNCj4gPj4gKw0KPiA+ PiArc3RydWN0IHN4IGluX211bHRpX3N4Ow0KPiA+PiArU1hfU1lTSU5JVChpbl9tdWx0aV9zeCwg JmluX211bHRpX3N4LCAiaW5fbXVsdGlfc3giKTsNCj4gPj4gKw0KPiA+PiAgLyoNCj4gPj4gICAq IEZ1bmN0aW9ucyB3aXRoIG5vbi1zdGF0aWMgbGlua2FnZSBkZWZpbmVkIGluIHRoaXMgZmlsZSBz aG91bGQgYmUNCj4gPj4gICAqIGRlY2xhcmVkIGluIGluX3Zhci5oOg0KPiA+PiBAQCAtMTUxLDYg KzE2MCw3IEBAIHN0YXRpYyBpbnQgICAgICAgIGlubV9pc19pZnBfZGV0YWNoZWQoY29uc3Qgc3Ry dWN0IGluX211bHRpICoNCj4gPj4gIHN0YXRpYyBpbnQgICBpbm1fbWVyZ2Uoc3RydWN0IGluX211 bHRpICosIC8qY29uc3QqLyBzdHJ1Y3QgaW5fbWZpbHRlciAqKTsNCj4gPj4gIHN0YXRpYyB2b2lk ICBpbm1fcHVyZ2Uoc3RydWN0IGluX211bHRpICopOw0KPiA+PiAgc3RhdGljIHZvaWQgIGlubV9y ZWFwKHN0cnVjdCBpbl9tdWx0aSAqKTsNCj4gPj4gK3N0YXRpYyB2b2lkIGlubV9yZWxlYXNlKHN0 cnVjdCBpbl9tdWx0aSAqKTsNCj4gPj4gIHN0YXRpYyBzdHJ1Y3QgaXBfbW9wdGlvbnMgKg0KPiA+ PiAgICAgICAgICAgICAgIGlucF9maW5kbW9wdGlvbnMoc3RydWN0IGlucGNiICopOw0KPiA+PiAg c3RhdGljIHZvaWQgIGlucF9mcmVlbW9wdGlvbnNfaW50ZXJuYWwoc3RydWN0IGlwX21vcHRpb25z ICopOw0KPiA+PiBAQCAtMjE2LDYgKzIyNiw2NSBAQCBpbm1faXNfaWZwX2RldGFjaGVkKGNvbnN0 IHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiA+PiAgfQ0KPiA+PiAgI2VuZGlmDQo+ID4+DQo+ID4+ ICtzdGF0aWMgc3RydWN0IGdyb3VwdGFzayBmcmVlX2d0YXNrOw0KPiA+PiArc3RhdGljIHN0cnVj dCBpbl9tdWx0aV9oZWFkIGlubV9mcmVlX2xpc3Q7DQo+ID4+ICtzdGF0aWMgdm9pZCBpbm1fcmVs ZWFzZV90YXNrKHZvaWQgKmFyZyBfX3VudXNlZCk7DQo+ID4+ICtzdGF0aWMgdm9pZCBpbm1faW5p dCh2b2lkKQ0KPiA+PiArew0KPiA+PiArICAgICBTTElTVF9JTklUKCZpbm1fZnJlZV9saXN0KTsN Cj4gPj4gKyAgICAgdGFza3Fncm91cF9jb25maWdfZ3Rhc2tfaW5pdChOVUxMLCAmZnJlZV9ndGFz aywgaW5tX3JlbGVhc2VfdGFzaywgImlubSByZWxlYXNlDQo+ID4+IHRhc2siKTsgK30NCj4gPj4g Kw0KPiA+PiArU1lTSU5JVChpbm1faW5pdCwgU0lfU1VCX1NNUCArIDEsIFNJX09SREVSX0ZJUlNU LA0KPiA+PiArICAgICBpbm1faW5pdCwgTlVMTCk7DQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArdm9p ZA0KPiA+PiAraW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZChzdHJ1Y3QgaW5fbXVsdGlfaGVhZCAq aW5taCkNCj4gPj4gK3sNCj4gPj4gKw0KPiA+PiArICAgICBpZiAoU0xJU1RfRU1QVFkoaW5taCkp DQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPiA+PiArICAgICBtdHhfbG9jaygmaW5fbXVs dGlfZnJlZV9tdHgpOw0KPiA+PiArICAgICBTTElTVF9DT05DQVQoJmlubV9mcmVlX2xpc3QsIGlu bWgsIGluX211bHRpLCBpbm1fbnJlbGUpOw0KPiA+PiArICAgICBtdHhfdW5sb2NrKCZpbl9tdWx0 aV9mcmVlX210eCk7DQo+ID4+ICsgICAgIEdST1VQVEFTS19FTlFVRVVFKCZmcmVlX2d0YXNrKTsN Cj4gPj4gK30NCj4gPj4gKw0KPiA+PiArdm9pZA0KPiA+PiAraW5tX3JlbGVhc2VfZGVmZXJyZWQo c3RydWN0IGluX211bHRpICppbm0pDQo+ID4+ICt7DQo+ID4+ICsgICAgIHN0cnVjdCBpbl9tdWx0 aV9oZWFkIHRtcDsNCj4gPj4gKw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJU KCk7DQo+ID4+ICsgICAgIE1QQVNTKGlubS0+aW5tX3JlZmNvdW50ID4gMCk7DQo+ID4+ICsgICAg IGlmICgtLWlubS0+aW5tX3JlZmNvdW50ID09IDApIHsNCj4gPj4gKyAgICAgICAgICAgICBTTElT VF9JTklUKCZ0bXApOw0KPiA+PiArICAgICAgICAgICAgIGlubS0+aW5tX2lmbWEtPmlmbWFfcHJv dG9zcGVjID0gTlVMTDsNCj4gPj4gKyAgICAgICAgICAgICBTTElTVF9JTlNFUlRfSEVBRCgmdG1w LCBpbm0sIGlubV9ucmVsZSk7DQo+ID4+ICsgICAgICAgICAgICAgaW5tX3JlbGVhc2VfbGlzdF9k ZWZlcnJlZCgmdG1wKTsNCj4gPj4gKyAgICAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtzdGF0 aWMgdm9pZA0KPiA+PiAraW5tX3JlbGVhc2VfdGFzayh2b2lkICphcmcgX191bnVzZWQpDQo+ID4+ ICt7DQo+ID4+ICsgICAgIHN0cnVjdCBpbl9tdWx0aV9oZWFkIGlubV9mcmVlX3RtcDsNCj4gPj4g KyAgICAgc3RydWN0IGluX211bHRpICppbm0sICp0aW5tOw0KPiA+PiArDQo+ID4+ICsgICAgIFNM SVNUX0lOSVQoJmlubV9mcmVlX3RtcCk7DQo+ID4+ICsgICAgIG10eF9sb2NrKCZpbl9tdWx0aV9m cmVlX210eCk7DQo+ID4+ICsgICAgIFNMSVNUX0NPTkNBVCgmaW5tX2ZyZWVfdG1wLCAmaW5tX2Zy ZWVfbGlzdCwgaW5fbXVsdGksIGlubV9ucmVsZSk7DQo+ID4+ICsgICAgIG10eF91bmxvY2soJmlu X211bHRpX2ZyZWVfbXR4KTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTE9DSygpOw0KPiA+PiArICAg ICBTTElTVF9GT1JFQUNIX1NBRkUoaW5tLCAmaW5tX2ZyZWVfdG1wLCBpbm1fbnJlbGUsIHRpbm0p IHsNCj4gPj4gKyAgICAgICAgICAgICBTTElTVF9SRU1PVkVfSEVBRCgmaW5tX2ZyZWVfdG1wLCBp bm1fbnJlbGUpOw0KPiA+PiArICAgICAgICAgICAgIE1QQVNTKGlubSk7DQo+ID4+ICsgICAgICAg ICAgICAgaW5tX3JlbGVhc2UoaW5tKTsNCj4gPj4gKyAgICAgfQ0KPiA+PiArICAgICBJTl9NVUxU SV9VTkxPQ0soKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiAgLyoNCj4gPj4gICAqIEluaXRpYWxp emUgYW4gaW5fbWZpbHRlciBzdHJ1Y3R1cmUgdG8gYSBrbm93biBzdGF0ZSBhdCB0MCwgdDENCj4g Pj4gICAqIHdpdGggYW4gZW1wdHkgc291cmNlIGZpbHRlciBsaXN0Lg0KPiA+PiBAQCAtMjMyLDcg KzMwMSw3IEBAIGltZl9pbml0KHN0cnVjdCBpbl9tZmlsdGVyICppbWYsIGNvbnN0IGludCBzdDAs IGNvbnN0DQo+ID4+ICAvKg0KPiA+PiAgICogRnVuY3Rpb24gZm9yIGxvb2tpbmcgdXAgYW4gaW5f bXVsdGkgcmVjb3JkIGZvciBhbiBJUHY0IG11bHRpY2FzdCBhZGRyZXNzDQo+ID4+ICAgKiBvbiBh IGdpdmVuIGludGVyZmFjZS4gaWZwIG11c3QgYmUgdmFsaWQuIElmIG5vIHJlY29yZCBmb3VuZCwg cmV0dXJuIE5VTEwuDQo+ID4+IC0gKiBUaGUgSU5fTVVMVElfTE9DSyBhbmQgSUZfQUREUl9MT0NL IG9uIGlmcCBtdXN0IGJlIGhlbGQuDQo+ID4+ICsgKiBUaGUgSU5fTVVMVElfTElTVF9MT0NLIGFu ZCBJRl9BRERSX0xPQ0sgb24gaWZwIG11c3QgYmUgaGVsZC4NCj4gPj4gICAqLw0KPiA+PiAgc3Ry dWN0IGluX211bHRpICoNCj4gPj4gIGlubV9sb29rdXBfbG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZw LCBjb25zdCBzdHJ1Y3QgaW5fYWRkciBpbmEpDQo+ID4+IEBAIC0yNDAsNyArMzA5LDcgQEAgaW5t X2xvb2t1cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hDQo+ID4+ ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAqaWZtYTsNCj4gPj4gICAgICAgc3RydWN0IGluX211 bHRpICppbm07DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUZfQUREUl9M T0NLX0FTU0VSVChpZnApOw0KPiA+Pg0KPiA+PiAgICAgICBpbm0gPSBOVUxMOw0KPiA+PiBAQCAt MjY0LDcgKzMzMyw3IEBAIGlubV9sb29rdXAoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVj dCBpbl9hZGRyIGluYQ0KPiA+PiAgew0KPiA+PiAgICAgICBzdHJ1Y3QgaW5fbXVsdGkgKmlubTsN Cj4gPj4NCj4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPj4gKyAgICAgSU5f TVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiA+PiAgICAgICBJRl9BRERSX1JMT0NLKGlmcCk7 DQo+ID4+ICAgICAgIGlubSA9IGlubV9sb29rdXBfbG9ja2VkKGlmcCwgaW5hKTsNCj4gPj4gICAg ICAgSUZfQUREUl9SVU5MT0NLKGlmcCk7DQo+ID4+IEBAIC00NTEsNyArNTIwLDcgQEAgaW5fZ2V0 bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ID4+ICAg ICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIGlpID0gKHN0cnVj dCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXTsNCj4gPj4gLQ0KPiA+PiArICAg ICBJTl9NVUxUSV9MSVNUX0xPQ0soKTsNCj4gPj4gICAgICAgaW5tID0gaW5tX2xvb2t1cChpZnAs ICpncm91cCk7DQo+ID4+ICAgICAgIGlmIChpbm0gIT0gTlVMTCkgew0KPiA+PiAgICAgICAgICAg ICAgIC8qDQo+ID4+IEBAIC00NjAsMTEgKzUyOSwxMyBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZu ZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gPj4gICAgICAgICAgICAgICAgKi8N Cj4gPj4gICAgICAgICAgICAgICBLQVNTRVJUKGlubS0+aW5tX3JlZmNvdW50ID49IDEsDQo+ID4+ ICAgICAgICAgICAgICAgICAgICgiJXM6IGJhZCByZWZjb3VudCAlZCIsIF9fZnVuY19fLCBpbm0t PmlubV9yZWZjb3VudCkpOw0KPiA+PiAtICAgICAgICAgICAgICsraW5tLT5pbm1fcmVmY291bnQ7 DQo+ID4+ICsgICAgICAgICAgICAgaW5tX2FjcXVpcmVfbG9ja2VkKGlubSk7DQo+ID4+ICAgICAg ICAgICAgICAgKnBpbm0gPSBpbm07DQo+ID4+IC0gICAgICAgICAgICAgcmV0dXJuICgwKTsNCj4g Pj4gICAgICAgfQ0KPiA+PiAtDQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ ID4+ICsgICAgIGlmIChpbm0gIT0gTlVMTCkNCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gKDAp Ow0KPiA+PiArDQo+ID4+ICAgICAgIG1lbXNldCgmZ3NpbiwgMCwgc2l6ZW9mKGdzaW4pKTsNCj4g Pj4gICAgICAgZ3Npbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCj4gPj4gICAgICAgZ3Npbi5zaW5f bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7DQo+ID4+IEBAIC00NzksNiArNTUwLDcg QEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpn DQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIChlcnJvcik7DQo+ID4+DQo+ID4+ICAgICAgIC8q IFhYWCBpZm1hX3Byb3Rvc3BlYyBtdXN0IGJlIGNvdmVyZWQgYnkgSUZfQUREUl9MT0NLICovDQo+ ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBJRl9BRERSX1dMT0NL KGlmcCk7DQo+ID4+DQo+ID4+ICAgICAgIC8qDQo+ID4+IEBAIC01MDQsMTAgKzU3Niw5IEBAIGlu X2dldG11bHRpKHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciAqZw0KPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpZm1hLCBpbm0sIGluZXRfbnRv YV9yKCpncm91cCwgYWRkcmJ1ZikpOw0KPiA+PiAgICAgICAgICAgICAgIH0NCj4gPj4gICNlbmRp Zg0KPiA+PiAtICAgICAgICAgICAgICsraW5tLT5pbm1fcmVmY291bnQ7DQo+ID4+ICsgICAgICAg ICAgICAgaW5tX2FjcXVpcmVfbG9ja2VkKGlubSk7DQo+ID4+ICAgICAgICAgICAgICAgKnBpbm0g PSBpbm07DQo+ID4+IC0gICAgICAgICAgICAgSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ID4+IC0g ICAgICAgICAgICAgcmV0dXJuICgwKTsNCj4gPj4gKyAgICAgICAgICAgICBnb3RvIG91dF9sb2Nr ZWQ7DQo+ID4+ICAgICAgIH0NCj4gPj4NCj4gPj4gICAgICAgSUZfQUREUl9XTE9DS19BU1NFUlQo aWZwKTsNCj4gPj4gQEAgLTUyMiw2ICs1OTMsNyBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZuZXQg KmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gPj4gICAgICAgaW5tID0gbWFsbG9jKHNp emVvZigqaW5tKSwgTV9JUE1BRERSLCBNX05PV0FJVCB8IE1fWkVSTyk7DQo+ID4+ICAgICAgIGlm IChpbm0gPT0gTlVMTCkgew0KPiA+PiAgICAgICAgICAgICAgIElGX0FERFJfV1VOTE9DSyhpZnAp Ow0KPiA+PiArICAgICAgICAgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4+ICAgICAg ICAgICAgICAgaWZfZGVsbXVsdGlfaWZtYShpZm1hKTsNCj4gPj4gICAgICAgICAgICAgICByZXR1 cm4gKEVOT01FTSk7DQo+ID4+ICAgICAgIH0NCj4gPj4gQEAgLTUzOSw4ICs2MTEsOSBAQCBpbl9n ZXRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gPj4g ICAgICAgaWZtYS0+aWZtYV9wcm90b3NwZWMgPSBpbm07DQo+ID4+DQo+ID4+ICAgICAgICpwaW5t ID0gaW5tOw0KPiA+PiAtDQo+ID4+ICsgb3V0X2xvY2tlZDoNCj4gPj4gICAgICAgSUZfQUREUl9X VU5MT0NLKGlmcCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4+ICAg ICAgIHJldHVybiAoMCk7DQo+ID4+ICB9DQo+ID4+DQo+ID4+IEBAIC01NTAsMzYgKzYyMywyOSBA QCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcN Cj4gPj4gICAqIElmIHRoZSByZWZjb3VudCBkcm9wcyB0byAwLCBmcmVlIHRoZSBpbl9tdWx0aSBy ZWNvcmQgYW5kDQo+ID4+ICAgKiBkZWxldGUgdGhlIHVuZGVybHlpbmcgbGluay1sYXllciBtZW1i ZXJzaGlwLg0KPiA+PiAgICovDQo+ID4+IC12b2lkDQo+ID4+IC1pbm1fcmVsZWFzZV9sb2NrZWQo c3RydWN0IGluX211bHRpICppbm0pDQo+ID4+ICtzdGF0aWMgdm9pZA0KPiA+PiAraW5tX3JlbGVh c2Uoc3RydWN0IGluX211bHRpICppbm0pDQo+ID4+ICB7DQo+ID4+ICAgICAgIHN0cnVjdCBpZm11 bHRpYWRkciAqaWZtYTsNCj4gPj4gKyAgICAgc3RydWN0IGlmbmV0ICppZnA7DQo+ID4+DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+IC0NCj4gPj4gICAgICAgQ1RSMihL VFJfSUdNUFYzLCAiJXM6IHJlZmNvdW50IGlzICVkIiwgX19mdW5jX18sIGlubS0+aW5tX3JlZmNv dW50KTsNCj4gPj4gLQ0KPiA+PiAtICAgICBpZiAoLS1pbm0tPmlubV9yZWZjb3VudCA+IDApIHsN Cj4gPj4gLSAgICAgICAgICAgICBDVFIyKEtUUl9JR01QVjMsICIlczogcmVmY291bnQgaXMgbm93 ICVkIiwgX19mdW5jX18sDQo+ID4+IC0gICAgICAgICAgICAgICAgIGlubS0+aW5tX3JlZmNvdW50 KTsNCj4gPj4gLSAgICAgICAgICAgICByZXR1cm47DQo+ID4+IC0gICAgIH0NCj4gPj4gLQ0KPiA+ PiArICAgICBNUEFTUyhpbm0tPmlubV9yZWZjb3VudCA9PSAwKTsNCj4gPj4gICAgICAgQ1RSMihL VFJfSUdNUFYzLCAiJXM6IGZyZWVpbmcgaW5tICVwIiwgX19mdW5jX18sIGlubSk7DQo+ID4+DQo+ ID4+ICAgICAgIGlmbWEgPSBpbm0tPmlubV9pZm1hOw0KPiA+PiArICAgICBpZnAgPSBpbm0tPmlu bV9pZnA7DQo+ID4+DQo+ID4+ICAgICAgIC8qIFhYWCB0aGlzIGFjY2VzcyBpcyBub3QgY292ZXJl ZCBieSBJRl9BRERSX0xPQ0sgKi8NCj4gPj4gICAgICAgQ1RSMihLVFJfSUdNUFYzLCAiJXM6IHB1 cmdpbmcgaWZtYSAlcCIsIF9fZnVuY19fLCBpZm1hKTsNCj4gPj4gLSAgICAgS0FTU0VSVChpZm1h LT5pZm1hX3Byb3Rvc3BlYyA9PSBpbm0sDQo+ID4+IC0gICAgICAgICAoIiVzOiBpZm1hX3Byb3Rv c3BlYyAhPSBpbm0iLCBfX2Z1bmNfXykpOw0KPiA+PiAtICAgICBpZm1hLT5pZm1hX3Byb3Rvc3Bl YyA9IE5VTEw7DQo+ID4+IC0NCj4gPj4gKyAgICAgaWYgKGlmcCkNCj4gPj4gKyAgICAgICAgICAg ICBDVVJWTkVUX1NFVChpZnAtPmlmX3ZuZXQpOw0KPiA+PiAgICAgICBpbm1fcHVyZ2UoaW5tKTsN Cj4gPj4gLQ0KPiA+PiAgICAgICBmcmVlKGlubSwgTV9JUE1BRERSKTsNCj4gPj4NCj4gPj4gICAg ICAgaWZfZGVsbXVsdGlfaWZtYShpZm1hKTsNCj4gPj4gKyAgICAgaWYgKGlmcCkNCj4gPj4gKyAg ICAgICAgICAgICBDVVJWTkVUX1JFU1RPUkUoKTsNCj4gPj4gIH0NCj4gPj4NCj4gPj4gIC8qDQo+ ID4+IEBAIC01OTIsNyArNjU4LDcgQEAgaW5tX2NsZWFyX3JlY29yZGVkKHN0cnVjdCBpbl9tdWx0 aSAqaW5tKQ0KPiA+PiAgew0KPiA+PiAgICAgICBzdHJ1Y3QgaXBfbXNvdXJjZSAgICAgICAqaW1z Ow0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJ Tl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIFJCX0ZPUkVBQ0go aW1zLCBpcF9tc291cmNlX3RyZWUsICZpbm0tPmlubV9zcmNzKSB7DQo+ID4+ICAgICAgICAgICAg ICAgaWYgKGltcy0+aW1zX3N0cCkgew0KPiA+PiBAQCAtNjMyLDcgKzY5OCw3IEBAIGlubV9yZWNv cmRfc291cmNlKHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbl9hZGRyXw0KPiA+PiAgICAg ICBzdHJ1Y3QgaXBfbXNvdXJjZSAgICAgICAgZmluZDsNCj4gPj4gICAgICAgc3RydWN0IGlwX21z b3VyY2UgICAgICAgKmltcywgKm5pbXM7DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJX0xPQ0tf QVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPj4N Cj4gPj4gICAgICAgZmluZC5pbXNfaGFkZHIgPSBudG9obChuYWRkcik7DQo+ID4+ICAgICAgIGlt cyA9IFJCX0ZJTkQoaXBfbXNvdXJjZV90cmVlLCAmaW5tLT5pbm1fc3JjcywgJmZpbmQpOw0KPiA+ PiBAQCAtOTU5LDYgKzEwMjUsNyBAQCBpbm1fbWVyZ2Uoc3RydWN0IGluX211bHRpICppbm0sIC8q Y29uc3QqLyBzdHJ1Y3QgaW5fbWYNCj4gPj4gICAgICAgc2NoYW5nZWQgPSAwOw0KPiA+PiAgICAg ICBlcnJvciA9IDA7DQo+ID4+ICAgICAgIG5zcmMxID0gbnNyYzAgPSAwOw0KPiA+PiArICAgICBJ Tl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIC8qDQo+ID4+ICAg ICAgICAqIFVwZGF0ZSB0aGUgc291cmNlIGZpbHRlcnMgZmlyc3QsIGFzIHRoaXMgbWF5IGZhaWwu DQo+ID4+IEBAIC0xMTY1LDYgKzEyMzIsNyBAQCBpbl9qb2luZ3JvdXBfbG9ja2VkKHN0cnVjdCBp Zm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4gPj4gICAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgIGVycm9yOw0KPiA+Pg0KPiA+PiAgICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0K PiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4gICAg ICAgQ1RSNChLVFJfSUdNUFYzLCAiJXM6IGpvaW4gMHglMDh4IG9uICVwKCVzKSkiLCBfX2Z1bmNf XywNCj4gPj4gICAgICAgICAgIG50b2hsKGdpbmEtPnNfYWRkciksIGlmcCwgaWZwLT5pZl94bmFt ZSk7DQo+ID4+IEBAIC0xMTg2LDcgKzEyNTQsNyBAQCBpbl9qb2luZ3JvdXBfbG9ja2VkKHN0cnVj dCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4gPj4gICAgICAgICAgICAgICBDVFIxKEtU Ul9JR01QVjMsICIlczogaW5fZ2V0bXVsdGkoKSBmYWlsdXJlIiwgX19mdW5jX18pOw0KPiA+PiAg ICAgICAgICAgICAgIHJldHVybiAoZXJyb3IpOw0KPiA+PiAgICAgICB9DQo+ID4+IC0NCj4gPj4g KyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIENUUjEoS1RSX0lHTVBWMywg IiVzOiBtZXJnZSBpbm0gc3RhdGUiLCBfX2Z1bmNfXyk7DQo+ID4+ICAgICAgIGVycm9yID0gaW5t X21lcmdlKGlubSwgaW1mKTsNCj4gPj4gICAgICAgaWYgKGVycm9yKSB7DQo+ID4+IEBAIC0xMjAx LDEwICsxMjY5LDEyIEBAIGluX2pvaW5ncm91cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNv bnN0IHN0cnVjdCBpbg0KPiA+PiAgICAgICAgICAgICAgIGdvdG8gb3V0X2lubV9yZWxlYXNlOw0K PiA+PiAgICAgICB9DQo+ID4+DQo+ID4+IC1vdXRfaW5tX3JlbGVhc2U6DQo+ID4+ICsgb3V0X2lu bV9yZWxlYXNlOg0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DSygpOw0KPiA+PiAgICAg ICBpZiAoZXJyb3IpIHsNCj4gPj4gKw0KPiA+PiAgICAgICAgICAgICAgIENUUjIoS1RSX0lHTVBW MywgIiVzOiBkcm9wcGluZyByZWYgb24gJXAiLCBfX2Z1bmNfXywgaW5tKTsNCj4gPj4gLSAgICAg ICAgICAgICBpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPj4gKyAgICAgICAgICAgICBpbm1f cmVsZWFzZV9kZWZlcnJlZChpbm0pOw0KPiA+PiAgICAgICB9IGVsc2Ugew0KPiA+PiAgICAgICAg ICAgICAgICpwaW5tID0gaW5tOw0KPiA+PiAgICAgICB9DQo+ID4+IEBAIC0xMjQ5LDYgKzEzMTks NyBAQCBpbl9sZWF2ZWdyb3VwX2xvY2tlZChzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgLypjb25zdCov IHMNCj4gPj4gICAgICAgZXJyb3IgPSAwOw0KPiA+Pg0KPiA+PiAgICAgICBJTl9NVUxUSV9MT0NL X0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NFUlQoKTsNCj4g Pj4NCj4gPj4gICAgICAgQ1RSNShLVFJfSUdNUFYzLCAiJXM6IGxlYXZlIGlubSAlcCwgMHglMDh4 LyVzLCBpbWYgJXAiLCBfX2Z1bmNfXywNCj4gPj4gICAgICAgICAgIGlubSwgbnRvaGwoaW5tLT5p bm1fYWRkci5zX2FkZHIpLA0KPiA+PiBAQCAtMTI3MiwxOCArMTM0MywyMCBAQCBpbl9sZWF2ZWdy b3VwX2xvY2tlZChzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgLypjb25zdCovIHMNCj4gPj4gICAgICAg ICogdGhlIHRyYW5zYWN0aW9uLCBpdCBNVVNUIE5PVCBmYWlsLg0KPiA+PiAgICAgICAgKi8NCj4g Pj4gICAgICAgQ1RSMShLVFJfSUdNUFYzLCAiJXM6IG1lcmdlIGlubSBzdGF0ZSIsIF9fZnVuY19f KTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIGVycm9yID0g aW5tX21lcmdlKGlubSwgaW1mKTsNCj4gPj4gICAgICAgS0FTU0VSVChlcnJvciA9PSAwLCAoIiVz OiBmYWlsZWQgdG8gbWVyZ2UgaW5tIHN0YXRlIiwgX19mdW5jX18pKTsNCj4gPj4NCj4gPj4gICAg ICAgQ1RSMShLVFJfSUdNUFYzLCAiJXM6IGRvaW5nIGlnbXAgZG93bmNhbGwiLCBfX2Z1bmNfXyk7 DQo+ID4+ICAgICAgIENVUlZORVRfU0VUKGlubS0+aW5tX2lmcC0+aWZfdm5ldCk7DQo+ID4+ICAg ICAgIGVycm9yID0gaWdtcF9jaGFuZ2Vfc3RhdGUoaW5tKTsNCj4gPj4gKyAgICAgaW5tX3JlbGVh c2VfZGVmZXJyZWQoaW5tKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4g Pj4gICAgICAgQ1VSVk5FVF9SRVNUT1JFKCk7DQo+ID4+ICAgICAgIGlmIChlcnJvcikNCj4gPj4g ICAgICAgICAgICAgICBDVFIxKEtUUl9JR01QVjMsICIlczogZmFpbGVkIGlnbXAgZG93bmNhbGwi LCBfX2Z1bmNfXyk7DQo+ID4+DQo+ID4+ICAgICAgIENUUjIoS1RSX0lHTVBWMywgIiVzOiBkcm9w cGluZyByZWYgb24gJXAiLCBfX2Z1bmNfXywgaW5tKTsNCj4gPj4gLSAgICAgaW5tX3JlbGVhc2Vf bG9ja2VkKGlubSk7DQo+ID4+DQo+ID4+ICAgICAgIHJldHVybiAoZXJyb3IpOw0KPiA+PiAgfQ0K PiA+PiBAQCAtMTMxNSwxOCArMTM4OCw2IEBAIGluX2FkZG11bHRpKHN0cnVjdCBpbl9hZGRyICph cCwgc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICB9DQo+ID4+DQo+ID4+ICAvKg0KPiA+PiAtICog TGVhdmUgYW4gSVB2NCBtdWx0aWNhc3QgZ3JvdXAsIGFzc3VtZWQgdG8gYmUgaW4gZXhjbHVzaXZl ICgqLEcpIG1vZGUuDQo+ID4+IC0gKiBUaGlzIEtQSSBpcyBmb3IgbGVnYWN5IGtlcm5lbCBjb25z dW1lcnMgb25seS4NCj4gPj4gLSAqLw0KPiA+Pg0KPiA+PiAqKiogRElGRiBPVVRQVVQgVFJVTkNB VEVEIEFUIDEwMDAgTElORVMgKioqDQo+ID4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+ID4+IHN2bi1zcmMtaGVhZEBmcmVlYnNkLm9yZyBtYWlsaW5n IGxpc3QNCj4gPj4gaHR0cHM6Ly9saXN0cy5mcmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3N2 bi1zcmMtaGVhZA0KPiA+PiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0byAic3ZuLXNy Yy1oZWFkLXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIiAgDQo+ID4NCj4gPg0KPiA+IEFmdGVyIChh cm91bmQhKSB0aGlzIHVwZGF0ZSwgc29tZSBib3hlcyB3aXRoIGkzNTAgZHVhbCBwb3J0IE5JQ3Mg aW1tZWRpYXRlbHkgY3Jhc2gNCj4gPiB3aXRoIEZhdGFsIHRyYXAgMTI6IHBhZ2UgZmF1bHQgYW5k IHNvbWV0aGluZyB3aXRoDQo+ID4NCj4gPiBjdXJyZW50IHByb2Nlc3M6IChpc2Mtd29ya2VyMDAw NikNCj4gPg0KPiA+IC4uLi4NCj4gPg0KPiA+IFRob3NlIGJveGVzIGRvIG5vdCBoYXZlIGRlYnVn Z2luZyBrZXJuZWwuIFRoZSBzeW1wdG9tYnMgYXJlIHRoZSBzYW1lLiBTaW5nbGUgdXNlcg0KPiA+ IGtlcm5lbCB3b3JrcywgYnV0IHRoZSBtb21lbnQgSSBwZXJmb3JtIC9ldGMvbmV0c3RhcnQgYW5k IGFueSBraW5kIG9mIG5ldCB0cmFmZmljDQo+ID4gZXN0YWJsaXNoZXMsIHRoaXMgY3JhcCBiYWls cyBvdXQuDQo+ID4NCj4gPg0KPiA+IC0gLS0NCj4gPiBPLiBIYXJ0bWFubg0KPiA+DQo+ID4gSWNo IHdpZGVyc3ByZWNoZSBkZXIgTnV0enVuZyBvZGVyIMOcYmVybWl0dGx1bmcgbWVpbmVyIERhdGVu IGbDvHINCj4gPiBXZXJiZXp3ZWNrZSBvZGVyIGbDvHIgZGllIE1hcmt0LSBvZGVyIE1laW51bmdz Zm9yc2NodW5nICjCpyAyOCBBYnMuIDQgQkRTRykuDQo+ID4gLS0tLS1CRUdJTiBQR1AgU0lHTkFU VVJFLS0tLS0NCj4gPg0KPiA+IGlMVUVBUk1LQUIwV0lRUVpWWk16QXR3QzJULzg2VHJTNTI4ZnlG aFlsQVVDV3V0anRnQUtDUkRTNTI4ZnlGaFkNCj4gPiBsQWt6QWY5UGhhRlR3TmhRRDJ6Rjd4U0hK Mndmdkx0b1VFalpsekdzdXNBQ3AxcGE3SkFmejBQeXYrbG0rWE5KDQo+ID4gdkxFbHJJZjFDbUR6 dUE4eWJsWi94L3dPVlNKa0FmOUMrNTBEVkV0R3E1SC9iSFNETnd6bXFyajhZZ0I3WHBTcw0KPiA+ IFBNUlhjK0l3SWExSmdpMnlNKzZUQ1NOU3MxTjViRVVoVTlCaThlWHk2WTBGU2tBWmVWK3MNCj4g PiA9UzBiQw0KPiA+IC0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gc3ZuLXNyYy1oZWFkQGZy ZWVic2Qub3JnIG1haWxpbmcgbGlzdA0KPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFp bG1hbi9saXN0aW5mby9zdm4tc3JjLWhlYWQNCj4gPiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkg bWFpbCB0byAic3ZuLXNyYy1oZWFkLXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIiAgDQoNCg0KDQot IC0tIA0KTy4gSGFydG1hbm4NCg0KSWNoIHdpZGVyc3ByZWNoZSBkZXIgTnV0enVuZyBvZGVyIMOc YmVybWl0dGx1bmcgbWVpbmVyIERhdGVuIGbDvHINCldlcmJlendlY2tlIG9kZXIgZsO8ciBkaWUg TWFya3QtIG9kZXIgTWVpbnVuZ3Nmb3JzY2h1bmcgKMKnIDI4IEFicy4gNCBCRFNHKS4NCi0tLS0t QkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQoNCmlMVUVBUk1LQUIwV0lRUVpWWk16QXR3QzJULzg2 VHJTNTI4ZnlGaFlsQVVDV3V0djh3QUtDUkRTNTI4ZnlGaFkNCmxJZTFBZndPQ0FpZ3BYYXdaN0tB akxOcFdqUlQ0RHNyemZxY0M1N01vemlWUXlLK1g5cW9RQTJ2MHBsVk5wUDANCkZMcWg1ZGtSWGlp T0xyeXI5YXVJTFVLeUxDTnlBZndMN2NGZTFZUlg3Vm5zSzV3Ly84WG0yNXRKNzRDWEM4UDANCmdh b1NxdkRxQ0tXVGo2aU4rUS9Qam9Ob2hXb0lLNzZ0aVpBV1Bqa2FIZXVGYnlwUGEyRysNCj1FcEph DQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCg== From owner-svn-src-all@freebsd.org Thu May 3 20:43:40 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B33CFFB9FEA; Thu, 3 May 2018 20:43:40 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5ACC77EBD1; Thu, 3 May 2018 20:43:40 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 50B1D24F0A; Thu, 3 May 2018 20:43:40 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Khenp005640; Thu, 3 May 2018 20:43:40 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43KhemZ005638; Thu, 3 May 2018 20:43:40 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805032043.w43KhemZ005638@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Thu, 3 May 2018 20:43:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org Subject: svn commit: r333227 - svnadmin/conf X-SVN-Group: svnadmin X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: svnadmin/conf X-SVN-Commit-Revision: 333227 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 20:43:40 -0000 Author: sbruno Date: Thu May 3 20:43:39 2018 New Revision: 333227 URL: https://svnweb.freebsd.org/changeset/base/333227 Log: Welcome back Matt Macy to the ranks of FreeBSD committers. Approved by: core Modified: svnadmin/conf/access svnadmin/conf/mentors Modified: svnadmin/conf/access ============================================================================== --- svnadmin/conf/access Thu May 3 20:05:57 2018 (r333226) +++ svnadmin/conf/access Thu May 3 20:43:39 2018 (r333227) @@ -150,6 +150,7 @@ mizhka mjg mjoras mm +mmacy mmel mp mr Modified: svnadmin/conf/mentors ============================================================================== --- svnadmin/conf/mentors Thu May 3 20:05:57 2018 (r333226) +++ svnadmin/conf/mentors Thu May 3 20:43:39 2018 (r333227) @@ -26,6 +26,7 @@ jwd rmacklem kadesai ken Co-mentor: scottl, ambrisko mahrens mckusick mjoras rstone +mmacy sbruno peterj jhb Co-mentor: grog ram ken Co-mentor: mav rgrimes phk Co-mentor: bde From owner-svn-src-all@freebsd.org Thu May 3 21:37:47 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 78FC2FBBDBB; Thu, 3 May 2018 21:37:47 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2EABB6A8D4; Thu, 3 May 2018 21:37:47 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2978925779; Thu, 3 May 2018 21:37:47 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43LblSZ030899; Thu, 3 May 2018 21:37:47 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43LbkOT030891; Thu, 3 May 2018 21:37:46 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805032137.w43LbkOT030891@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Thu, 3 May 2018 21:37:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333228 - in head/sys: amd64/amd64 i386/i386 kern sys X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in head/sys: amd64/amd64 i386/i386 kern sys X-SVN-Commit-Revision: 333228 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 21:37:47 -0000 Author: kib Date: Thu May 3 21:37:46 2018 New Revision: 333228 URL: https://svnweb.freebsd.org/changeset/base/333228 Log: Implement support for ifuncs in the kernel linker. Required MD bits are only provided for x86. Reviewed by: jhb (previous version, as part of the larger patch) Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D13838 Modified: head/sys/amd64/amd64/elf_machdep.c head/sys/amd64/amd64/machdep.c head/sys/i386/i386/elf_machdep.c head/sys/i386/i386/machdep.c head/sys/kern/link_elf.c head/sys/kern/link_elf_obj.c head/sys/sys/linker.h Modified: head/sys/amd64/amd64/elf_machdep.c ============================================================================== --- head/sys/amd64/amd64/elf_machdep.c Thu May 3 20:43:39 2018 (r333227) +++ head/sys/amd64/amd64/elf_machdep.c Thu May 3 21:37:46 2018 (r333228) @@ -175,10 +175,13 @@ elf64_dump_thread(struct thread *td, void *dst, size_t *off = len; } +#define ERI_LOCAL 0x0001 +#define ERI_ONLYIFUNC 0x0002 + /* Process one elf relocation with addend. */ static int elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data, - int type, int local, elf_lookup_fn lookup) + int type, elf_lookup_fn lookup, int flags) { Elf64_Addr *where, val; Elf32_Addr *where32, val32; @@ -218,6 +221,9 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas panic("unknown reloc type %d\n", type); } + if (((flags & ERI_ONLYIFUNC) == 0) ^ (rtype != R_X86_64_IRELATIVE)) + return (0); + switch (rtype) { case R_X86_64_NONE: /* none */ break; @@ -278,6 +284,13 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas *where = val; break; + case R_X86_64_IRELATIVE: + addr = relocbase + addend; + val = ((Elf64_Addr (*)(void))addr)(); + if (*where != val) + *where = val; + break; + default: printf("kldload: unexpected relocation type %ld\n", rtype); @@ -287,11 +300,20 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas } int +elf_reloc_ifunc(linker_file_t lf, Elf_Addr relocbase, const void *data, + int type, elf_lookup_fn lookup) +{ + + return (elf_reloc_internal(lf, relocbase, data, type, lookup, + ERI_ONLYIFUNC)); +} + +int elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type, elf_lookup_fn lookup) { - return (elf_reloc_internal(lf, relocbase, data, type, 0, lookup)); + return (elf_reloc_internal(lf, relocbase, data, type, lookup, 0)); } int @@ -299,7 +321,8 @@ elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, int type, elf_lookup_fn lookup) { - return (elf_reloc_internal(lf, relocbase, data, type, 1, lookup)); + return (elf_reloc_internal(lf, relocbase, data, type, lookup, + ERI_LOCAL)); } int Modified: head/sys/amd64/amd64/machdep.c ============================================================================== --- head/sys/amd64/amd64/machdep.c Thu May 3 20:43:39 2018 (r333227) +++ head/sys/amd64/amd64/machdep.c Thu May 3 21:37:46 2018 (r333228) @@ -1566,6 +1566,8 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) identify_cpu1(); identify_hypervisor(); + /* link_elf_ireloc(kmdp); */ + /* Init basic tunables, hz etc */ init_param1(); @@ -1744,6 +1746,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) cninit(); amd64_kdb_init(); } + link_elf_ireloc(kmdp); getmemsize(kmdp, physfree); init_param2(physmem); Modified: head/sys/i386/i386/elf_machdep.c ============================================================================== --- head/sys/i386/i386/elf_machdep.c Thu May 3 20:43:39 2018 (r333227) +++ head/sys/i386/i386/elf_machdep.c Thu May 3 21:37:46 2018 (r333228) @@ -159,10 +159,13 @@ elf32_dump_thread(struct thread *td, void *dst, size_t *off = len; } +#define ERI_LOCAL 0x0001 +#define ERI_ONLYIFUNC 0x0002 + /* Process one elf relocation with addend. */ static int elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data, - int type, int local, elf_lookup_fn lookup) + int type, elf_lookup_fn lookup, int flags) { Elf_Addr *where; Elf_Addr addr; @@ -191,7 +194,10 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas panic("unknown reloc type %d\n", type); } - if (local) { + if (((flags & ERI_ONLYIFUNC) == 0) ^ (rtype != R_386_IRELATIVE)) + return (0); + + if ((flags & ERI_LOCAL) != 0) { if (rtype == R_386_RELATIVE) { /* A + B */ addr = elf_relocaddr(lf, relocbase + addend); if (*where != addr) @@ -243,6 +249,12 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas case R_386_RELATIVE: break; + case R_386_IRELATIVE: + addr = relocbase + addend; + addr = ((Elf_Addr (*)(void))addr)(); + if (*where != addr) + *where = addr; + break; default: printf("kldload: unexpected relocation type %d\n", rtype); @@ -252,11 +264,20 @@ elf_reloc_internal(linker_file_t lf, Elf_Addr relocbas } int +elf_reloc_ifunc(linker_file_t lf, Elf_Addr relocbase, const void *data, + int type, elf_lookup_fn lookup) +{ + + return (elf_reloc_internal(lf, relocbase, data, type, lookup, + ERI_ONLYIFUNC)); +} + +int elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type, elf_lookup_fn lookup) { - return (elf_reloc_internal(lf, relocbase, data, type, 0, lookup)); + return (elf_reloc_internal(lf, relocbase, data, type, lookup, 0)); } int @@ -264,7 +285,8 @@ elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, int type, elf_lookup_fn lookup) { - return (elf_reloc_internal(lf, relocbase, data, type, 1, lookup)); + return (elf_reloc_internal(lf, relocbase, data, type, lookup, + ERI_LOCAL)); } int Modified: head/sys/i386/i386/machdep.c ============================================================================== --- head/sys/i386/i386/machdep.c Thu May 3 20:43:39 2018 (r333227) +++ head/sys/i386/i386/machdep.c Thu May 3 21:37:46 2018 (r333228) @@ -2302,6 +2302,7 @@ init386(int first) int gsel_tss, metadata_missing, x, pa; struct pcpu *pc; struct xstate_hdr *xhdr; + caddr_t kmdp; vm_offset_t addend; int late_console; @@ -2440,6 +2441,9 @@ init386(int first) cninit(); i386_kdb_init(); } + + kmdp = preload_search_by_type("elf kernel"); + link_elf_ireloc(kmdp); vm86_initialize(); getmemsize(first); Modified: head/sys/kern/link_elf.c ============================================================================== --- head/sys/kern/link_elf.c Thu May 3 20:43:39 2018 (r333227) +++ head/sys/kern/link_elf.c Thu May 3 21:37:46 2018 (r333228) @@ -190,6 +190,9 @@ static struct linker_class link_elf_class = { static int parse_dynamic(elf_file_t); static int relocate_file(elf_file_t); +static int relocate_file1(elf_file_t ef, int (*elf_reloc_func)( + linker_file_t lf, Elf_Addr relocbase, const void *data, + int type, elf_lookup_fn lookup)); static int link_elf_preload_parse_symbols(elf_file_t); static struct elf_set_head set_pcpu_list; @@ -1182,7 +1185,8 @@ symbol_name(elf_file_t ef, Elf_Size r_info) } static int -relocate_file(elf_file_t ef) +relocate_file1(elf_file_t ef, int (*elf_reloc_func)(linker_file_t lf, + Elf_Addr relocbase, const void *data, int type, elf_lookup_fn lookup)) { const Elf_Rel *rellim; const Elf_Rel *rel; @@ -1196,7 +1200,7 @@ relocate_file(elf_file_t ef) rellim = (const Elf_Rel *) ((const char *)ef->rel + ef->relsize); while (rel < rellim) { - if (elf_reloc(&ef->lf, (Elf_Addr)ef->address, rel, + if (elf_reloc_func(&ef->lf, (Elf_Addr)ef->address, rel, ELF_RELOC_REL, elf_lookup)) { symname = symbol_name(ef, rel->r_info); printf("link_elf: symbol %s undefined\n", symname); @@ -1212,7 +1216,7 @@ relocate_file(elf_file_t ef) relalim = (const Elf_Rela *) ((const char *)ef->rela + ef->relasize); while (rela < relalim) { - if (elf_reloc(&ef->lf, (Elf_Addr)ef->address, rela, + if (elf_reloc_func(&ef->lf, (Elf_Addr)ef->address, rela, ELF_RELOC_RELA, elf_lookup)) { symname = symbol_name(ef, rela->r_info); printf("link_elf: symbol %s undefined\n", @@ -1229,7 +1233,7 @@ relocate_file(elf_file_t ef) rellim = (const Elf_Rel *) ((const char *)ef->pltrel + ef->pltrelsize); while (rel < rellim) { - if (elf_reloc(&ef->lf, (Elf_Addr)ef->address, rel, + if (elf_reloc_func(&ef->lf, (Elf_Addr)ef->address, rel, ELF_RELOC_REL, elf_lookup)) { symname = symbol_name(ef, rel->r_info); printf("link_elf: symbol %s undefined\n", @@ -1246,7 +1250,7 @@ relocate_file(elf_file_t ef) relalim = (const Elf_Rela *) ((const char *)ef->pltrela + ef->pltrelasize); while (rela < relalim) { - if (elf_reloc(&ef->lf, (Elf_Addr)ef->address, rela, + if (elf_reloc_func(&ef->lf, (Elf_Addr)ef->address, rela, ELF_RELOC_RELA, elf_lookup)) { symname = symbol_name(ef, rela->r_info); printf("link_elf: symbol %s undefined\n", @@ -1260,6 +1264,19 @@ relocate_file(elf_file_t ef) return (0); } +static int +relocate_file(elf_file_t ef) +{ + int e; + + e = relocate_file1(ef, elf_reloc); +#if defined(__i386__) || defined(__amd64__) + if (e == 0) + e = relocate_file1(ef, elf_reloc_ifunc); +#endif + return (e); +} + /* * Hash function for symbol table lookup. Don't even think about changing * this. It is specified by the System V ABI. @@ -1317,7 +1334,8 @@ link_elf_lookup_symbol(linker_file_t lf, const char* n if (strcmp(name, strp) == 0) { if (symp->st_shndx != SHN_UNDEF || (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC)) { + (ELF_ST_TYPE(symp->st_info) == STT_FUNC || + ELF_ST_TYPE(symp->st_info) == STT_GNU_IFUNC))) { *sym = (c_linker_sym_t) symp; return (0); } @@ -1337,7 +1355,8 @@ link_elf_lookup_symbol(linker_file_t lf, const char* n if (strcmp(name, strp) == 0) { if (symp->st_shndx != SHN_UNDEF || (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC)) { + (ELF_ST_TYPE(symp->st_info) == STT_FUNC || + ELF_ST_TYPE(symp->st_info) == STT_GNU_IFUNC))) { *sym = (c_linker_sym_t) symp; return (0); } @@ -1352,12 +1371,18 @@ static int link_elf_symbol_values(linker_file_t lf, c_linker_sym_t sym, linker_symval_t *symval) { - elf_file_t ef = (elf_file_t) lf; - const Elf_Sym* es = (const Elf_Sym*) sym; + elf_file_t ef; + const Elf_Sym *es; + caddr_t val; + ef = (elf_file_t)lf; + es = (const Elf_Sym *)sym; if (es >= ef->symtab && es < (ef->symtab + ef->nchains)) { symval->name = ef->strtab + es->st_name; - symval->value = (caddr_t) ef->address + es->st_value; + val = (caddr_t)ef->address + es->st_value; + if (ELF_ST_TYPE(es->st_info) == STT_GNU_IFUNC) + val = ((caddr_t (*)(void))val)(); + symval->value = val; symval->size = es->st_size; return (0); } @@ -1365,7 +1390,10 @@ link_elf_symbol_values(linker_file_t lf, c_linker_sym_ return (ENOENT); if (es >= ef->ddbsymtab && es < (ef->ddbsymtab + ef->ddbsymcnt)) { symval->name = ef->ddbstrtab + es->st_name; - symval->value = (caddr_t) ef->address + es->st_value; + val = (caddr_t)ef->address + es->st_value; + if (ELF_ST_TYPE(es->st_info) == STT_GNU_IFUNC) + val = ((caddr_t (*)(void))val)(); + symval->value = val; symval->size = es->st_size; return (0); } @@ -1475,7 +1503,8 @@ link_elf_each_function_name(linker_file_t file, /* Exhaustive search */ for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { if (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC) { + (ELF_ST_TYPE(symp->st_info) == STT_FUNC || + ELF_ST_TYPE(symp->st_info) == STT_GNU_IFUNC)) { error = callback(ef->ddbstrtab + symp->st_name, opaque); if (error != 0) return (error); @@ -1496,7 +1525,8 @@ link_elf_each_function_nameval(linker_file_t file, /* Exhaustive search */ for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { if (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC) { + (ELF_ST_TYPE(symp->st_info) == STT_FUNC || + ELF_ST_TYPE(symp->st_info) == STT_GNU_IFUNC)) { error = link_elf_symbol_values(file, (c_linker_sym_t) symp, &symval); if (error != 0) @@ -1655,3 +1685,21 @@ link_elf_strtab_get(linker_file_t lf, caddr_t *strtab) return (ef->ddbstrcnt); } + +#if defined(__i386__) || defined(__amd64__) +void +link_elf_ireloc(caddr_t kmdp) +{ + struct elf_file eff; + elf_file_t ef; + + ef = &eff; + bzero(ef, sizeof(*ef)); + ef->modptr = kmdp; + ef->dynamic = (Elf_Dyn *)&_DYNAMIC; + parse_dynamic(ef); + ef->address = 0; + link_elf_preload_parse_symbols(ef); + relocate_file1(ef, elf_reloc_ifunc); +} +#endif Modified: head/sys/kern/link_elf_obj.c ============================================================================== --- head/sys/kern/link_elf_obj.c Thu May 3 20:43:39 2018 (r333227) +++ head/sys/kern/link_elf_obj.c Thu May 3 21:37:46 2018 (r333228) @@ -1201,12 +1201,19 @@ static int link_elf_symbol_values(linker_file_t lf, c_linker_sym_t sym, linker_symval_t *symval) { - elf_file_t ef = (elf_file_t) lf; - const Elf_Sym *es = (const Elf_Sym*) sym; + elf_file_t ef; + const Elf_Sym *es; + caddr_t val; + ef = (elf_file_t) lf; + es = (const Elf_Sym*) sym; + val = (caddr_t)es->st_value; if (es >= ef->ddbsymtab && es < (ef->ddbsymtab + ef->ddbsymcnt)) { symval->name = ef->ddbstrtab + es->st_name; - symval->value = (caddr_t)es->st_value; + val = (caddr_t)es->st_value; + if (ELF_ST_TYPE(es->st_info) == STT_GNU_IFUNC) + val = ((caddr_t (*)(void))val)(); + symval->value = val; symval->size = es->st_size; return 0; } @@ -1291,7 +1298,8 @@ link_elf_each_function_name(linker_file_t file, /* Exhaustive search */ for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { if (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC) { + (ELF_ST_TYPE(symp->st_info) == STT_FUNC || + ELF_ST_TYPE(symp->st_info) == STT_GNU_IFUNC)) { error = callback(ef->ddbstrtab + symp->st_name, opaque); if (error) return (error); @@ -1312,8 +1320,10 @@ link_elf_each_function_nameval(linker_file_t file, /* Exhaustive search */ for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { if (symp->st_value != 0 && - ELF_ST_TYPE(symp->st_info) == STT_FUNC) { - error = link_elf_symbol_values(file, (c_linker_sym_t) symp, &symval); + (ELF_ST_TYPE(symp->st_info) == STT_FUNC || + ELF_ST_TYPE(symp->st_info) == STT_GNU_IFUNC)) { + error = link_elf_symbol_values(file, + (c_linker_sym_t)symp, &symval); if (error) return (error); error = callback(file, i, &symval, opaque); Modified: head/sys/sys/linker.h ============================================================================== --- head/sys/sys/linker.h Thu May 3 20:43:39 2018 (r333227) +++ head/sys/sys/linker.h Thu May 3 21:37:46 2018 (r333228) @@ -272,11 +272,16 @@ extern int kld_debug; typedef int elf_lookup_fn(linker_file_t, Elf_Size, int, Elf_Addr *); /* Support functions */ -int elf_reloc(linker_file_t _lf, Elf_Addr base, const void *_rel, int _type, elf_lookup_fn _lu); -int elf_reloc_local(linker_file_t _lf, Elf_Addr base, const void *_rel, int _type, elf_lookup_fn _lu); +int elf_reloc(linker_file_t _lf, Elf_Addr base, const void *_rel, + int _type, elf_lookup_fn _lu); +int elf_reloc_ifunc(linker_file_t _lf, Elf_Addr base, const void *_rel, + int _type, elf_lookup_fn _lu); +int elf_reloc_local(linker_file_t _lf, Elf_Addr base, const void *_rel, + int _type, elf_lookup_fn _lu); Elf_Addr elf_relocaddr(linker_file_t _lf, Elf_Addr addr); const Elf_Sym *elf_get_sym(linker_file_t _lf, Elf_Size _symidx); const char *elf_get_symname(linker_file_t _lf, Elf_Size _symidx); +void link_elf_ireloc(caddr_t kmdp); typedef struct linker_ctf { const uint8_t *ctftab; /* Decompressed CTF data. */ From owner-svn-src-all@freebsd.org Thu May 3 21:46:00 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 62123FBD436; Thu, 3 May 2018 21:46:00 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 012DF6B137; Thu, 3 May 2018 21:46:00 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EDF472595A; Thu, 3 May 2018 21:45:59 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Ljx6u036131; Thu, 3 May 2018 21:45:59 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43Ljx8w036130; Thu, 3 May 2018 21:45:59 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201805032145.w43Ljx8w036130@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Thu, 3 May 2018 21:45:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333229 - head/sys/x86/include X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: head/sys/x86/include X-SVN-Commit-Revision: 333229 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 21:46:00 -0000 Author: kib Date: Thu May 3 21:45:59 2018 New Revision: 333229 URL: https://svnweb.freebsd.org/changeset/base/333229 Log: Add helper macros to hide some boring repeatable ceremonies to define ifuncs on x86. Also keep helpers to define 'pseudo-ifuncs' which are emulated by the indirect jmp. Reviewed by: jhb (previous version, as part of the larger patch) Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D13838 Added: head/sys/x86/include/ifunc.h (contents, props changed) Added: head/sys/x86/include/ifunc.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/x86/include/ifunc.h Thu May 3 21:45:59 2018 (r333229) @@ -0,0 +1,58 @@ +/*- + * Copyright (c) 2015, 2017 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * 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$ + */ + +#ifndef __X86_IFUNC_H +#define __X86_IFUNC_H + +#define DECLARE_LIFUNC(ret_type, name, args) \ +ret_type name args + +#define DEFINE_LIFUNC(scope, selector_qual, ret_type, name, args) \ +__asm__ (scope "\t" #name "\n" \ + "\t.type\t" #name ",@function\n" \ + #name ":\n" \ + "\tjmp *" #name "_selector\n" \ + "\t.size\t" #name ",\t. - "#name); \ +selector_qual ret_type (*name##_selector)args __used; \ +DECLARE_LIFUNC(ret_type, name, args) + +#define DEFINE_STATIC_LIFUNC(ret_type, name, args) \ + DEFINE_LIFUNC(".local", static, ret_type, name, args) + +#define DEFINE_GLOBAL_LIFUNC(ret_type, name, args) \ + DEFINE_LIFUNC(".globl", , ret_type, name, args) + +#define DEFINE_IFUNC(qual, ret_type, name, args, resolver_qual) \ + resolver_qual ret_type (*name##_resolver(void))args __used; \ + qual ret_type name args __attribute__((ifunc(#name "_resolver"))); \ + resolver_qual ret_type (*name##_resolver(void))args + +#endif From owner-svn-src-all@freebsd.org Thu May 3 22:51:45 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 03070FBEDAF; Thu, 3 May 2018 22:51:45 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AA1E77A61C; Thu, 3 May 2018 22:51:44 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A534D26485; Thu, 3 May 2018 22:51:44 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43Mpihh067396; Thu, 3 May 2018 22:51:44 GMT (envelope-from grehan@FreeBSD.org) Received: (from grehan@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43MpihV067395; Thu, 3 May 2018 22:51:44 GMT (envelope-from grehan@FreeBSD.org) Message-Id: <201805032251.w43MpihV067395@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: grehan set sender to grehan@FreeBSD.org using -f From: Peter Grehan Date: Thu, 3 May 2018 22:51:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333230 - head/sys/dev/pci X-SVN-Group: head X-SVN-Commit-Author: grehan X-SVN-Commit-Paths: head/sys/dev/pci X-SVN-Commit-Revision: 333230 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 22:51:45 -0000 Author: grehan Date: Thu May 3 22:51:44 2018 New Revision: 333230 URL: https://svnweb.freebsd.org/changeset/base/333230 Log: Allow PCI VGA devices to be detached. GPUs often have a VGA PCI class code and are probed/attached by the VGA driver. Allow them to be detached so they can be presented as passthru devices to VM guests. Submitted by: mmacy Reviewed by: jhb, imp, rgrimes MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D15269 Modified: head/sys/dev/pci/vga_pci.c Modified: head/sys/dev/pci/vga_pci.c ============================================================================== --- head/sys/dev/pci/vga_pci.c Thu May 3 21:45:59 2018 (r333229) +++ head/sys/dev/pci/vga_pci.c Thu May 3 22:51:44 2018 (r333230) @@ -283,6 +283,17 @@ vga_pci_suspend(device_t dev) } static int +vga_pci_detach(device_t dev) +{ + int error; + + error = bus_generic_detach(dev); + if (error == 0) + error = device_delete_children(dev); + return (error); +} + +static int vga_pci_resume(device_t dev) { @@ -620,6 +631,7 @@ static device_method_t vga_pci_methods[] = { DEVMETHOD(device_attach, vga_pci_attach), DEVMETHOD(device_shutdown, bus_generic_shutdown), DEVMETHOD(device_suspend, vga_pci_suspend), + DEVMETHOD(device_detach, vga_pci_detach), DEVMETHOD(device_resume, vga_pci_resume), /* Bus interface */ From owner-svn-src-all@freebsd.org Thu May 3 23:21:48 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 14159FBF9EA; Thu, 3 May 2018 23:21:48 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from smtp-out-no.shaw.ca (smtp-out-no.shaw.ca [64.59.134.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 6B8F881859; Thu, 3 May 2018 23:21:46 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from spqr.komquats.com ([70.67.125.17]) by shaw.ca with ESMTPA id ENXdffWI7uYopENXffnBeF; Thu, 03 May 2018 17:21:39 -0600 X-Authority-Analysis: v=2.3 cv=GopsBH9C c=1 sm=1 tr=0 a=VFtTW3WuZNDh6VkGe7fA3g==:117 a=VFtTW3WuZNDh6VkGe7fA3g==:17 a=VUJBJC2UJ8kA:10 a=YxBL1-UpAAAA:8 a=6I5d2MoRAAAA:8 a=Gxt569OSV-_qMoNeq_EA:9 a=Q2OB4O7iWk4PKUuR:21 a=bFDCvq0lpGBzKDCY:21 a=QEXdDO2ut3YA:10 a=TK9YgfP7-m9JfrDvgokA:9 a=WB1rgLad_iOdLALi:21 a=7swb1lhjqPaAdIF9:21 a=nRqymRxcrboUs4ot:21 a=_W_S_7VecoQA:10 a=Ia-lj3WSrqcvXOmTRaiG:22 a=IjZwj45LgO3ly-622nXo:22 Received: from [25.168.218.74] (unknown [72.143.228.12]) by spqr.komquats.com (Postfix) with ESMTPSA id 2E5662BED; Thu, 3 May 2018 16:21:37 -0700 (PDT) MIME-Version: 1.0 From: Cy Schubert Subject: RE: svn commit: r333227 - svnadmin/conf Date: Thu, 3 May 2018 16:21:38 -0700 To: Sean Bruno , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-svnadmin@freebsd.org" Message-Id: <20180503232137.2E5662BED@spqr.komquats.com> X-CMAE-Envelope: MS4wfBAzT705DnKDPLPU7XSu9El0czobVkqJlVU/2gzoWacW638WWLub5+RPp4T43wA/0atIGyl60c0Ef6ddlhC3p64pbwYT2pZSKDYBK/vSPr9RnYnE8ewO y9jkvmOFg+UtoG7+wIyu4io2LyrlpIbXgb6cTetbDMqR629d75iUeTPQWHgwb5s7uPfvWvoGKqzwnUvVZvkmWZx+n13qivEf6JMfVfFZL89w4WB/0bpik91Q WQErckzwVm9n41EtLuuDgUqIRlE1ChMgLo+/HWvP8IjQKe64Y7dt/UbfP+qSOtDrTdXDMFko3ciTeZ4l+5mLBQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 23:21:48 -0000 V2VsY29tZSBiYWNrIE1hdHQhDQoNCi0tLQ0KU2VudCB1c2luZyBhIHRpbnkgcGhvbmUga2V5Ym9h cmQuDQpBcG9sb2dpZXMgZm9yIGFueSB0eXBvcyBhbmQgYXV0b2NvcnJlY3QuDQpBbHNvLCB0aGlz IG9sZCBwaG9uZSBvbmx5IHN1cHBvcnRzIHRvcCBwb3N0LiBBcG9sb2dpZXMuDQoNCkN5IFNjaHVi ZXJ0DQo8Q3kuU2NodWJlcnRAY3NjaHViZXJ0LmNvbT4gb3IgPGN5QGZyZWVic2Qub3JnPg0KVGhl IG5lZWQgb2YgdGhlIG1hbnkgb3V0d2VpZ2hzIHRoZSBncmVlZCBvZiB0aGUgZmV3Lg0KLS0tDQoN Ci0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBTZWFuIEJydW5vDQpTZW50OiAwMy8w NS8yMDE4IDEzOjQzDQpUbzogc3JjLWNvbW1pdHRlcnNAZnJlZWJzZC5vcmc7IHN2bi1zcmMtYWxs QGZyZWVic2Qub3JnOyBzdm4tc3JjLXN2bmFkbWluQGZyZWVic2Qub3JnDQpTdWJqZWN0OiBzdm4g Y29tbWl0OiByMzMzMjI3IC0gc3ZuYWRtaW4vY29uZg0KDQpBdXRob3I6IHNicnVubw0KRGF0ZTog VGh1IE1heSAgMyAyMDo0MzozOSAyMDE4DQpOZXcgUmV2aXNpb246IDMzMzIyNw0KVVJMOiBodHRw czovL3N2bndlYi5mcmVlYnNkLm9yZy9jaGFuZ2VzZXQvYmFzZS8zMzMyMjcNCg0KTG9nOg0KICBX ZWxjb21lIGJhY2sgTWF0dCBNYWN5IHRvIHRoZSByYW5rcyBvZiBGcmVlQlNEIGNvbW1pdHRlcnMu DQogIA0KICBBcHByb3ZlZCBieToJY29yZQ0KDQpNb2RpZmllZDoNCiAgc3ZuYWRtaW4vY29uZi9h Y2Nlc3MNCiAgc3ZuYWRtaW4vY29uZi9tZW50b3JzDQoNCk1vZGlmaWVkOiBzdm5hZG1pbi9jb25m L2FjY2Vzcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gc3ZuYWRtaW4vY29uZi9hY2Nlc3MJ VGh1IE1heSAgMyAyMDowNTo1NyAyMDE4CShyMzMzMjI2KQ0KKysrIHN2bmFkbWluL2NvbmYvYWNj ZXNzCVRodSBNYXkgIDMgMjA6NDM6MzkgMjAxOAkocjMzMzIyNykNCkBAIC0xNTAsNiArMTUwLDcg QEAgbWl6aGthDQogbWpnDQogbWpvcmFzDQogbW0NCittbWFjeQ0KIG1tZWwNCiBtcA0KIG1yDQoN Ck1vZGlmaWVkOiBzdm5hZG1pbi9jb25mL21lbnRvcnMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K LS0tIHN2bmFkbWluL2NvbmYvbWVudG9ycwlUaHUgTWF5ICAzIDIwOjA1OjU3IDIwMTgJKHIzMzMy MjYpDQorKysgc3ZuYWRtaW4vY29uZi9tZW50b3JzCVRodSBNYXkgIDMgMjA6NDM6MzkgMjAxOAko cjMzMzIyNykNCkBAIC0yNiw2ICsyNiw3IEBAIGp3ZAkJcm1hY2tsZW0NCiBrYWRlc2FpCQlrZW4J CUNvLW1lbnRvcjogc2NvdHRsLCBhbWJyaXNrbw0KIG1haHJlbnMJCW1ja3VzaWNrDQogbWpvcmFz CQlyc3RvbmUNCittbWFjeQkJc2JydW5vDQogcGV0ZXJqCQlqaGIJCUNvLW1lbnRvcjogZ3JvZw0K IHJhbQkJa2VuCQlDby1tZW50b3I6IG1hdg0KIHJncmltZXMJCXBoawkJQ28tbWVudG9yOiBiZGUN Cg0K From owner-svn-src-all@freebsd.org Thu May 3 23:59:40 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EF62EFC089A; Thu, 3 May 2018 23:59:39 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A36B669A8F; Thu, 3 May 2018 23:59:39 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 983E726EAC; Thu, 3 May 2018 23:59:39 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w43NxdrR004204; Thu, 3 May 2018 23:59:39 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w43NxdR1004203; Thu, 3 May 2018 23:59:39 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201805032359.w43NxdR1004203@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Thu, 3 May 2018 23:59:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org Subject: svn commit: r333232 - svnadmin/conf X-SVN-Group: svnadmin X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: svnadmin/conf X-SVN-Commit-Revision: 333232 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 23:59:40 -0000 Author: gjb Date: Thu May 3 23:59:39 2018 New Revision: 333232 URL: https://svnweb.freebsd.org/changeset/base/333232 Log: Require explicit re@ approval for commits to stable/11, as the code freeze for 11.2-RELEASE is now in effect. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: svnadmin/conf/approvers Modified: svnadmin/conf/approvers ============================================================================== --- svnadmin/conf/approvers Thu May 3 23:51:09 2018 (r333231) +++ svnadmin/conf/approvers Thu May 3 23:59:39 2018 (r333232) @@ -17,7 +17,7 @@ # $FreeBSD$ # #^head/ re -#^stable/11/ re +^stable/11/ re ^release/ re ^releng/11.[0-1]/ (security-officer|so) ^releng/10.[0-4]/ (security-officer|so) From owner-svn-src-all@freebsd.org Fri May 4 00:34:29 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DDC36FC16D9; Fri, 4 May 2018 00:34:28 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9052371FDC; Fri, 4 May 2018 00:34:28 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6D0B027553; Fri, 4 May 2018 00:34:28 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w440YS47023921; Fri, 4 May 2018 00:34:28 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w440YRJi023915; Fri, 4 May 2018 00:34:27 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805040034.w440YRJi023915@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 4 May 2018 00:34:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333233 - in head/sys: geom/part sys/disk X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: in head/sys: geom/part sys/disk X-SVN-Commit-Revision: 333233 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 00:34:29 -0000 Author: emaste Date: Fri May 4 00:34:27 2018 New Revision: 333233 URL: https://svnweb.freebsd.org/changeset/base/333233 Log: gpart: add fat32lba MBR partition type FAT32 partition with LBA addressing. Reviewed by: marcel MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D15266 Modified: head/sys/geom/part/g_part.c head/sys/geom/part/g_part.h head/sys/geom/part/g_part_ebr.c head/sys/geom/part/g_part_ldm.c head/sys/geom/part/g_part_mbr.c head/sys/sys/disk/mbr.h Modified: head/sys/geom/part/g_part.c ============================================================================== --- head/sys/geom/part/g_part.c Thu May 3 23:59:39 2018 (r333232) +++ head/sys/geom/part/g_part.c Fri May 4 00:34:27 2018 (r333233) @@ -98,6 +98,7 @@ struct g_part_alias_list { { "efi", G_PART_ALIAS_EFI }, { "fat16", G_PART_ALIAS_MS_FAT16 }, { "fat32", G_PART_ALIAS_MS_FAT32 }, + { "fat32lba", G_PART_ALIAS_MS_FAT32LBA }, { "freebsd", G_PART_ALIAS_FREEBSD }, { "freebsd-boot", G_PART_ALIAS_FREEBSD_BOOT }, { "freebsd-nandfs", G_PART_ALIAS_FREEBSD_NANDFS }, Modified: head/sys/geom/part/g_part.h ============================================================================== --- head/sys/geom/part/g_part.h Thu May 3 23:59:39 2018 (r333232) +++ head/sys/geom/part/g_part.h Fri May 4 00:34:27 2018 (r333233) @@ -78,6 +78,7 @@ enum g_part_alias { G_PART_ALIAS_MS_BASIC_DATA, /* A Microsoft Data part. entry. */ G_PART_ALIAS_MS_FAT16, /* A Microsoft FAT16 partition entry. */ G_PART_ALIAS_MS_FAT32, /* A Microsoft FAT32 partition entry. */ + G_PART_ALIAS_MS_FAT32LBA, /* A Microsoft FAT32 LBA partition entry */ G_PART_ALIAS_MS_LDM_DATA, /* A Microsoft LDM Data part. entry. */ G_PART_ALIAS_MS_LDM_METADATA, /* A Microsoft LDM Metadata entry. */ G_PART_ALIAS_MS_NTFS, /* A Microsoft NTFS partition entry */ Modified: head/sys/geom/part/g_part_ebr.c ============================================================================== --- head/sys/geom/part/g_part_ebr.c Thu May 3 23:59:39 2018 (r333232) +++ head/sys/geom/part/g_part_ebr.c Fri May 4 00:34:27 2018 (r333233) @@ -137,6 +137,7 @@ static struct g_part_ebr_alias { { DOSPTYP_386BSD, G_PART_ALIAS_FREEBSD }, { DOSPTYP_NTFS, G_PART_ALIAS_MS_NTFS }, { DOSPTYP_FAT32, G_PART_ALIAS_MS_FAT32 }, + { DOSPTYP_FAT32LBA, G_PART_ALIAS_MS_FAT32LBA }, { DOSPTYP_LINSWP, G_PART_ALIAS_LINUX_SWAP }, { DOSPTYP_LINUX, G_PART_ALIAS_LINUX_DATA }, { DOSPTYP_LINLVM, G_PART_ALIAS_LINUX_LVM }, Modified: head/sys/geom/part/g_part_ldm.c ============================================================================== --- head/sys/geom/part/g_part_ldm.c Thu May 3 23:59:39 2018 (r333232) +++ head/sys/geom/part/g_part_ldm.c Fri May 4 00:34:27 2018 (r333233) @@ -371,6 +371,7 @@ static struct g_part_ldm_alias { } ldm_alias_match[] = { { DOSPTYP_NTFS, G_PART_ALIAS_MS_NTFS }, { DOSPTYP_FAT32, G_PART_ALIAS_MS_FAT32 }, + { DOSPTYP_FAT32LBA, G_PART_ALIAS_MS_FAT32LBA }, { DOSPTYP_386BSD, G_PART_ALIAS_FREEBSD }, { DOSPTYP_LDM, G_PART_ALIAS_MS_LDM_DATA }, { DOSPTYP_LINSWP, G_PART_ALIAS_LINUX_SWAP }, Modified: head/sys/geom/part/g_part_mbr.c ============================================================================== --- head/sys/geom/part/g_part_mbr.c Thu May 3 23:59:39 2018 (r333232) +++ head/sys/geom/part/g_part_mbr.c Fri May 4 00:34:27 2018 (r333233) @@ -132,6 +132,7 @@ static struct g_part_mbr_alias { { DOSPTYP_NTFS, G_PART_ALIAS_MS_NTFS }, { DOSPTYP_FAT16, G_PART_ALIAS_MS_FAT16 }, { DOSPTYP_FAT32, G_PART_ALIAS_MS_FAT32 }, + { DOSPTYP_FAT32LBA, G_PART_ALIAS_MS_FAT32LBA }, { DOSPTYP_EXTLBA, G_PART_ALIAS_EBR }, { DOSPTYP_LDM, G_PART_ALIAS_MS_LDM_DATA }, { DOSPTYP_LINSWP, G_PART_ALIAS_LINUX_SWAP }, Modified: head/sys/sys/disk/mbr.h ============================================================================== --- head/sys/sys/disk/mbr.h Thu May 3 23:59:39 2018 (r333232) +++ head/sys/sys/disk/mbr.h Fri May 4 00:34:27 2018 (r333233) @@ -46,6 +46,7 @@ #define DOSPTYP_FAT16 0x06 /* FAT16 partition */ #define DOSPTYP_NTFS 0x07 /* NTFS partition */ #define DOSPTYP_FAT32 0x0b /* FAT32 partition */ +#define DOSPTYP_FAT32LBA 0x0c /* FAT32 with LBA partition */ #define DOSPTYP_EXTLBA 0x0f /* DOS extended partition */ #define DOSPTYP_PPCBOOT 0x41 /* PReP/CHRP boot partition */ #define DOSPTYP_LDM 0x42 /* Win2k dynamic extended partition */ From owner-svn-src-all@freebsd.org Fri May 4 00:56:42 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F15F2FC1EE1; Fri, 4 May 2018 00:56:41 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9DBA376A5B; Fri, 4 May 2018 00:56:41 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 94E6227885; Fri, 4 May 2018 00:56:41 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w440uf3R034087; Fri, 4 May 2018 00:56:41 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w440ufvq034086; Fri, 4 May 2018 00:56:41 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805040056.w440ufvq034086@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 4 May 2018 00:56:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333234 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Commit-Revision: 333234 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 00:56:42 -0000 Author: emaste Date: Fri May 4 00:56:41 2018 New Revision: 333234 URL: https://svnweb.freebsd.org/changeset/base/333234 Log: zfs_ioctl: avoid out-of-bound read admbugs: 796 Submitted by: Domagoj Stolfa Reported by: Ilja Van Sprundel Reviewed by: avg MFC after: 1 day Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 4 00:34:27 2018 (r333233) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 4 00:56:41 2018 (r333234) @@ -6440,6 +6440,10 @@ zfsdev_ioctl(struct cdev *dev, u_long zcmd, caddr_t ar cflag = ZFS_CMD_COMPAT_V28; break; case sizeof(zfs_cmd_v15_t): + if (cmd >= sizeof(zfs_ioctl_v15_to_v28) / + sizeof(zfs_ioctl_v15_to_v28[0])) + return (EINVAL); + cflag = ZFS_CMD_COMPAT_V15; vecnum = zfs_ioctl_v15_to_v28[cmd]; From owner-svn-src-all@freebsd.org Fri May 4 01:36:50 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 47838FC2D88; Fri, 4 May 2018 01:36:50 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E9BF07E488; Fri, 4 May 2018 01:36:49 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DE6DA27EFC; Fri, 4 May 2018 01:36:49 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w441an1c054213; Fri, 4 May 2018 01:36:49 GMT (envelope-from grehan@FreeBSD.org) Received: (from grehan@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w441anGr054212; Fri, 4 May 2018 01:36:49 GMT (envelope-from grehan@FreeBSD.org) Message-Id: <201805040136.w441anGr054212@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: grehan set sender to grehan@FreeBSD.org using -f From: Peter Grehan Date: Fri, 4 May 2018 01:36:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333235 - head/usr.sbin/bhyve X-SVN-Group: head X-SVN-Commit-Author: grehan X-SVN-Commit-Paths: head/usr.sbin/bhyve X-SVN-Commit-Revision: 333235 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 01:36:50 -0000 Author: grehan Date: Fri May 4 01:36:49 2018 New Revision: 333235 URL: https://svnweb.freebsd.org/changeset/base/333235 Log: Allow arbitrary numbers of columns for VNC server screen resolution. The prior code only allowed multiples of 32 for the numbers of columns. Remove this restriction to allow a forthcoming UEFI firmware update to allow arbitrary x,y resolutions. (the code for handling rows already supported non mult-32 values) Reviewed by: Leon Dang (original author) MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D15274 Modified: head/usr.sbin/bhyve/rfb.c Modified: head/usr.sbin/bhyve/rfb.c ============================================================================== --- head/usr.sbin/bhyve/rfb.c Fri May 4 00:56:41 2018 (r333234) +++ head/usr.sbin/bhyve/rfb.c Fri May 4 01:36:49 2018 (r333235) @@ -541,40 +541,23 @@ rfb_send_screen(struct rfb_softc *rc, int cfd, int all } for (x = 0; x < xcells; x++) { + if (x == (xcells - 1) && rem_x > 0) + cellwidth = rem_x; + else + cellwidth = PIX_PER_CELL; + if (rc->hw_crc) crc_p[x] = fast_crc32(p, - PIX_PER_CELL * sizeof(uint32_t), + cellwidth * sizeof(uint32_t), crc_p[x]); else crc_p[x] = (uint32_t)crc32(crc_p[x], (Bytef *)p, - PIX_PER_CELL * sizeof(uint32_t)); + cellwidth * sizeof(uint32_t)); - p += PIX_PER_CELL; + p += cellwidth; /* check for crc delta if last row in cell */ - if ((y & PIXCELL_MASK) == PIXCELL_MASK || y == (h-1)) { - if (orig_crc[x] != crc_p[x]) { - orig_crc[x] = crc_p[x]; - crc_p[x] = 1; - changes++; - } else { - crc_p[x] = 0; - } - } - } - - if (rem_x) { - if (rc->hw_crc) - crc_p[x] = fast_crc32(p, - rem_x * sizeof(uint32_t), - crc_p[x]); - else - crc_p[x] = (uint32_t)crc32(crc_p[x], - (Bytef *)p, - rem_x * sizeof(uint32_t)); - p += rem_x; - if ((y & PIXCELL_MASK) == PIXCELL_MASK || y == (h-1)) { if (orig_crc[x] != crc_p[x]) { orig_crc[x] = crc_p[x]; From owner-svn-src-all@freebsd.org Fri May 4 03:13:27 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 064A9FC5101; Fri, 4 May 2018 03:13:27 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A8142724DB; Fri, 4 May 2018 03:13:26 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A31461018; Fri, 4 May 2018 03:13:26 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w443DQMD004810; Fri, 4 May 2018 03:13:26 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w443DQpP004804; Fri, 4 May 2018 03:13:26 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805040313.w443DQpP004804@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Fri, 4 May 2018 03:13:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333236 - in head: share/mk tools/build/options usr.bin/grep usr.bin/grep/regex X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: in head: share/mk tools/build/options usr.bin/grep usr.bin/grep/regex X-SVN-Commit-Revision: 333236 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 03:13:27 -0000 Author: kevans Date: Fri May 4 03:13:25 2018 New Revision: 333236 URL: https://svnweb.freebsd.org/changeset/base/333236 Log: bsdgrep: annihilate our in-tree TRE, previously disabled by default It was an old TRE that had plenty of bugs and no performance gain over regex(3). I disabled it by default in r323615, and there was some confusion about what the knob does- likely due to poor naming on my part- to the tune of "well, it sounds like it should speed things up" (mentioned by multiple people). To compound this, I have no intention of maintaining a second regex implementation. If someone would like to step up and volunteer to maintain a lean-and-mean implementation for grep, this is OK, but we have very few volunteers to maintain even our primary regex implementation. Deleted: head/tools/build/options/WITHOUT_BSD_GREP_FASTMATCH head/tools/build/options/WITH_BSD_GREP_FASTMATCH head/usr.bin/grep/regex/ Modified: head/share/mk/bsd.prog.mk head/share/mk/src.opts.mk head/usr.bin/grep/Makefile head/usr.bin/grep/grep.c head/usr.bin/grep/grep.h head/usr.bin/grep/util.c Modified: head/share/mk/bsd.prog.mk ============================================================================== --- head/share/mk/bsd.prog.mk Fri May 4 01:36:49 2018 (r333235) +++ head/share/mk/bsd.prog.mk Fri May 4 03:13:25 2018 (r333236) @@ -271,6 +271,7 @@ SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP} SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE} STAGE_AS_${script:T}= ${SCRIPTSDIR_${script:T}}/${SCRIPTSNAME_${script:T}} _scriptsinstall: _SCRIPTSINS_${script:T} + echo ">SFD>F>DF YES" _SCRIPTSINS_${script:T}: ${script} ${INSTALL} ${TAG_ARGS} -o ${SCRIPTSOWN_${.ALLSRC:T}} \ -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \ Modified: head/share/mk/src.opts.mk ============================================================================== --- head/share/mk/src.opts.mk Fri May 4 01:36:49 2018 (r333235) +++ head/share/mk/src.opts.mk Fri May 4 03:13:25 2018 (r333236) @@ -187,7 +187,6 @@ __DEFAULT_YES_OPTIONS = \ __DEFAULT_NO_OPTIONS = \ BSD_GREP \ - BSD_GREP_FASTMATCH \ CLANG_EXTRAS \ DTRACE_TESTS \ GNU_GREP_COMPAT \ Modified: head/usr.bin/grep/Makefile ============================================================================== --- head/usr.bin/grep/Makefile Fri May 4 01:36:49 2018 (r333235) +++ head/usr.bin/grep/Makefile Fri May 4 03:13:25 2018 (r333236) @@ -17,15 +17,6 @@ bsdgrep.1: grep.1 .endif SRCS= file.c grep.c queue.c util.c -.if ${MK_BSD_GREP_FASTMATCH} == "yes" -# Extra files ported backported for some regex improvements -.PATH: ${.CURDIR}/regex -SRCS+= fastmatch.c hashtable.c tre-compile.c tre-fastmatch.c -CFLAGS+=-I${.CURDIR}/regex -.else -CFLAGS+= -DWITHOUT_FASTMATCH -.endif - SCRIPTS= zgrep.sh LINKS= ${BINDIR}/zgrep ${BINDIR}/zfgrep \ ${BINDIR}/zgrep ${BINDIR}/zegrep \ Modified: head/usr.bin/grep/grep.c ============================================================================== --- head/usr.bin/grep/grep.c Fri May 4 01:36:49 2018 (r333235) +++ head/usr.bin/grep/grep.c Fri May 4 03:13:25 2018 (r333236) @@ -51,9 +51,6 @@ __FBSDID("$FreeBSD$"); #include #include -#ifndef WITHOUT_FASTMATCH -#include "fastmatch.h" -#endif #include "grep.h" #ifndef WITHOUT_NLS @@ -96,9 +93,6 @@ unsigned int patterns; static unsigned int pattern_sz; struct pat *pattern; regex_t *r_pattern; -#ifndef WITHOUT_FASTMATCH -fastmatch_t *fg_pattern; -#endif /* Filename exclusion/inclusion patterns */ unsigned int fpatterns, dpatterns; @@ -712,9 +706,6 @@ main(int argc, char *argv[]) usage(); } -#ifndef WITHOUT_FASTMATCH - fg_pattern = grep_calloc(patterns, sizeof(*fg_pattern)); -#endif r_pattern = grep_calloc(patterns, sizeof(*r_pattern)); /* Don't process any patterns if we have a blank one */ @@ -725,15 +716,6 @@ main(int argc, char *argv[]) #endif /* Check if cheating is allowed (always is for fgrep). */ for (i = 0; i < patterns; ++i) { -#ifndef WITHOUT_FASTMATCH - /* - * Attempt compilation with fastmatch regex and - * fallback to regex(3) if it fails. - */ - if (fastncomp(&fg_pattern[i], pattern[i].pat, - pattern[i].len, cflags) == 0) - continue; -#endif c = regcomp(&r_pattern[i], pattern[i].pat, cflags); if (c != 0) { regerror(c, &r_pattern[i], re_error, Modified: head/usr.bin/grep/grep.h ============================================================================== --- head/usr.bin/grep/grep.h Fri May 4 01:36:49 2018 (r333235) +++ head/usr.bin/grep/grep.h Fri May 4 03:13:25 2018 (r333236) @@ -38,10 +38,6 @@ #include #include -#ifndef WITHOUT_FASTMATCH -#include "fastmatch.h" -#endif - #ifdef WITHOUT_NLS #define getstr(n) errstr[n] #else @@ -131,9 +127,6 @@ extern unsigned int dpatterns, fpatterns, patterns; extern struct pat *pattern; extern struct epat *dpattern, *fpattern; extern regex_t *er_pattern, *r_pattern; -#ifndef WITHOUT_FASTMATCH -extern fastmatch_t *fg_pattern; -#endif /* For regex errors */ #define RE_ERROR_BUF 512 Modified: head/usr.bin/grep/util.c ============================================================================== --- head/usr.bin/grep/util.c Fri May 4 01:36:49 2018 (r333235) +++ head/usr.bin/grep/util.c Fri May 4 03:13:25 2018 (r333236) @@ -52,9 +52,6 @@ __FBSDID("$FreeBSD$"); #include #include -#ifndef WITHOUT_FASTMATCH -#include "fastmatch.h" -#endif #include "grep.h" static bool first_match = true; @@ -512,14 +509,8 @@ procline(struct parsec *pc) r = litexec(&pattern[i], pc->ln.dat, 1, &pmatch); else #endif -#ifndef WITHOUT_FASTMATCH - if (fg_pattern[i].pattern) - r = fastexec(&fg_pattern[i], - pc->ln.dat, 1, &pmatch, leflags); - else -#endif - r = regexec(&r_pattern[i], pc->ln.dat, 1, - &pmatch, leflags); + r = regexec(&r_pattern[i], pc->ln.dat, 1, &pmatch, + leflags); if (r != 0) continue; /* Check for full match */ @@ -527,11 +518,7 @@ procline(struct parsec *pc) (size_t)pmatch.rm_eo != pc->ln.len)) continue; /* Check for whole word match */ -#ifndef WITHOUT_FASTMATCH - if (wflag || fg_pattern[i].word) { -#else if (wflag) { -#endif wbegin = wend = L' '; if (pmatch.rm_so != 0 && sscanf(&pc->ln.dat[pmatch.rm_so - 1], From owner-svn-src-all@freebsd.org Fri May 4 03:17:45 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4041FFC5210; Fri, 4 May 2018 03:17:45 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E5E72737E1; Fri, 4 May 2018 03:17:44 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E0FA11021; Fri, 4 May 2018 03:17:44 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w443HiJv004997; Fri, 4 May 2018 03:17:44 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w443HiWq004996; Fri, 4 May 2018 03:17:44 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805040317.w443HiWq004996@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Fri, 4 May 2018 03:17:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333237 - head/share/man/man5 X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/share/man/man5 X-SVN-Commit-Revision: 333237 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 03:17:45 -0000 Author: kevans Date: Fri May 4 03:17:44 2018 New Revision: 333237 URL: https://svnweb.freebsd.org/changeset/base/333237 Log: Regen src.conf(5) after r333236 Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Fri May 4 03:13:25 2018 (r333236) +++ head/share/man/man5/src.conf.5 Fri May 4 03:17:44 2018 (r333237) @@ -1,6 +1,6 @@ .\" DO NOT EDIT-- this file is generated by tools/build/options/makeman. .\" $FreeBSD$ -.Dd March 7, 2018 +.Dd May 3, 2018 .Dt SRC.CONF 5 .Os .Sh NAME @@ -219,9 +219,6 @@ Set to not build the BSD licensed version of cpio base .Xr libarchive 3 . .It Va WITH_BSD_GREP Install BSD-licensed grep as '[ef]grep' instead of GNU grep. -.It Va WITH_BSD_GREP_FASTMATCH -Set this option to use the fastmatch implementation in -.Xr bsdgrep 1 . .It Va WITHOUT_BSNMP Set to not build or install .Xr bsnmpd 1 @@ -436,18 +433,12 @@ Set to not build CUSE-related programs and libraries. .It Va WITHOUT_CXGBETOOL Set to not build .Xr cxgbetool 8 -.It Va WITHOUT_MLX5TOOL -Set to not build -.Xr mlx5tool 8 .Pp This is a default setting on arm/arm, arm/armeb, arm/armv6, arm/armv7, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpcspe, riscv/riscv64 and riscv/riscv64sf. .It Va WITH_CXGBETOOL Set to build .Xr cxgbetool 8 -.It Va WITH_MLX5TOOL -Set to build -.Xr mlx5tool 8 .Pp This is a default setting on amd64/amd64, arm64/aarch64, i386/i386, powerpc/powerpc64 and sparc64/sparc64. @@ -965,12 +956,12 @@ library. Set to not build LLVM's lld linker. .Pp This is a default setting on -mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe, riscv/riscv64, riscv/riscv64sf and sparc64/sparc64. +riscv/riscv64, riscv/riscv64sf and sparc64/sparc64. .It Va WITH_LLD Set to build LLVM's lld linker. .Pp This is a default setting on -amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv7, arm64/aarch64 and i386/i386. +amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv7, arm64/aarch64, i386/i386, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpc64 and powerpc/powerpcspe. .It Va WITHOUT_LLDB Set to not build the LLDB debugger. .Pp @@ -1022,12 +1013,12 @@ amd64/amd64, arm/arm, arm/armeb, arm/armv6, arm/armv7, Set to use GCC's stack unwinder (instead of LLVM's libunwind). .Pp This is a default setting on -arm/arm, arm/armeb, arm/armv6, arm/armv7, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe and sparc64/sparc64. +arm/arm, arm/armeb, arm/armv6, arm/armv7, powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe and sparc64/sparc64. .It Va WITH_LLVM_LIBUNWIND Set to use LLVM's libunwind stack unwinder (instead of GCC's unwinder). .Pp This is a default setting on -amd64/amd64, arm64/aarch64, i386/i386, riscv/riscv64 and riscv/riscv64sf. +amd64/amd64, arm64/aarch64, i386/i386, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, riscv/riscv64 and riscv/riscv64sf. .It Va WITH_LOADER_FIREWIRE Enable firewire support in /boot/loader and /boot/zfsloader on x86. This option is a nop on all other platforms. @@ -1182,6 +1173,18 @@ This must be set in the environment, make command line .Pa /etc/src-env.conf , not .Pa /etc/src.conf . +.It Va WITHOUT_MLX5TOOL +Set to not build +.Xr mlx5tool 8 +.Pp +This is a default setting on +arm/arm, arm/armeb, arm/armv6, arm/armv7, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, mips/mipselhf, mips/mipshf, mips/mips64elhf, mips/mips64hf, powerpc/powerpc, powerpc/powerpcspe, riscv/riscv64 and riscv/riscv64sf. +.It Va WITH_MLX5TOOL +Set to build +.Xr mlx5tool 8 +.Pp +This is a default setting on +amd64/amd64, arm64/aarch64, i386/i386, powerpc/powerpc64 and sparc64/sparc64. .It Va WITH_NAND Set to build the NAND Flash components. .It Va WITHOUT_NDIS From owner-svn-src-all@freebsd.org Fri May 4 03:23:46 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 41476FC54BE; Fri, 4 May 2018 03:23:46 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DB5EB75232; Fri, 4 May 2018 03:23:45 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D0B0011BC; Fri, 4 May 2018 03:23:45 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w443NjG1009644; Fri, 4 May 2018 03:23:45 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w443Nj6u009643; Fri, 4 May 2018 03:23:45 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805040323.w443Nj6u009643@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Fri, 4 May 2018 03:23:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333238 - head/share/man/man9 X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/share/man/man9 X-SVN-Commit-Revision: 333238 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 03:23:46 -0000 Author: kevans Date: Fri May 4 03:23:45 2018 New Revision: 333238 URL: https://svnweb.freebsd.org/changeset/base/333238 Log: style(9): add some additional useful FILES/xref information Submitted by: 0mp Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D15196 Modified: head/share/man/man9/style.9 Modified: head/share/man/man9/style.9 ============================================================================== --- head/share/man/man9/style.9 Fri May 4 03:17:44 2018 (r333237) +++ head/share/man/man9/style.9 Fri May 4 03:23:45 2018 (r333238) @@ -404,8 +404,7 @@ When convention requires a make its name match the struct tag. Avoid typedefs ending in .Dq Li _t , -except as specified in Standard C or by -.Tn POSIX . +except as specified in Standard C or by POSIX. .Bd -literal /* Make the structure name match the typedef. */ typedef struct bar { @@ -861,11 +860,25 @@ Whenever possible, code should be run through a code c (e.g., various static analyzers or .Nm cc Fl Wall ) and produce minimal warnings. +.Sh FILES +.Bl -tag -width indent +.It Pa /usr/src/tools/tools/editing/freebsd.el +An Emacs plugin to follow the +.Fx +.Nm +indentation rules. +.It Pa /usr/src/tools/tools/editing/freebsd.vim +A Vim plugin to follow the +.Fx +.Nm +indentation rules. +.El .Sh SEE ALSO .Xr indent 1 , .Xr err 3 , .Xr warn 3 , -.Xr style.Makefile 5 +.Xr style.Makefile 5 , +.Xr style.lua 9 .Sh HISTORY This manual page is largely based on the .Pa src/admin/style/style From owner-svn-src-all@freebsd.org Fri May 4 03:44:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 81651FC5B50; Fri, 4 May 2018 03:44:13 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 246637911C; Fri, 4 May 2018 03:44:13 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1F6E11552; Fri, 4 May 2018 03:44:13 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w443iDdi020034; Fri, 4 May 2018 03:44:13 GMT (envelope-from pfg@FreeBSD.org) Received: (from pfg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w443iDbn020033; Fri, 4 May 2018 03:44:13 GMT (envelope-from pfg@FreeBSD.org) Message-Id: <201805040344.w443iDbn020033@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pfg set sender to pfg@FreeBSD.org using -f From: "Pedro F. Giffuni" Date: Fri, 4 May 2018 03:44:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333239 - head/sys/fs/msdosfs X-SVN-Group: head X-SVN-Commit-Author: pfg X-SVN-Commit-Paths: head/sys/fs/msdosfs X-SVN-Commit-Revision: 333239 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 03:44:13 -0000 Author: pfg Date: Fri May 4 03:44:12 2018 New Revision: 333239 URL: https://svnweb.freebsd.org/changeset/base/333239 Log: msdosfs: long names of files are created incorrectly. This fixes a regression that happened in r120492 (2003) where libkiconv was introduced and we went from checking unlen to checking for '\0'. PR: 111843 Patch by: Damjan Jovanovic MFC after: 1 week Modified: head/sys/fs/msdosfs/msdosfs_conv.c Modified: head/sys/fs/msdosfs/msdosfs_conv.c ============================================================================== --- head/sys/fs/msdosfs/msdosfs_conv.c Fri May 4 03:23:45 2018 (r333238) +++ head/sys/fs/msdosfs/msdosfs_conv.c Fri May 4 03:44:12 2018 (r333239) @@ -570,7 +570,7 @@ unix2winfn(const u_char *un, size_t unlen, struct wine if (!code) end = WIN_LAST; } - if (*un == '\0') + if (!unlen) end = WIN_LAST; wep->weCnt |= end; return !end; From owner-svn-src-all@freebsd.org Fri May 4 04:00:49 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3791AFC6131; Fri, 4 May 2018 04:00:49 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C8FD87C0E0; Fri, 4 May 2018 04:00:48 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C2D76171F; Fri, 4 May 2018 04:00:48 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4440mJd025060; Fri, 4 May 2018 04:00:48 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4440moH025057; Fri, 4 May 2018 04:00:48 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <201805040400.w4440moH025057@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Fri, 4 May 2018 04:00:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333240 - in head/sys: powerpc/powerpc sys X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: in head/sys: powerpc/powerpc sys X-SVN-Commit-Revision: 333240 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 04:00:49 -0000 Author: mjg Date: Fri May 4 04:00:48 2018 New Revision: 333240 URL: https://svnweb.freebsd.org/changeset/base/333240 Log: Allow __builtin_memmove instead of bcopy for small buffers of known size See r323329 for an explanation why this is a good idea. Modified: head/sys/powerpc/powerpc/bcopy.c head/sys/sys/systm.h Modified: head/sys/powerpc/powerpc/bcopy.c ============================================================================== --- head/sys/powerpc/powerpc/bcopy.c Fri May 4 03:44:12 2018 (r333239) +++ head/sys/powerpc/powerpc/bcopy.c Fri May 4 04:00:48 2018 (r333240) @@ -143,7 +143,7 @@ done: } void -bcopy(const void *src0, void *dst0, size_t length) +(bcopy)(const void *src0, void *dst0, size_t length) { memcpy(dst0, src0, length); Modified: head/sys/sys/systm.h ============================================================================== --- head/sys/sys/systm.h Fri May 4 03:44:12 2018 (r333239) +++ head/sys/sys/systm.h Fri May 4 04:00:48 2018 (r333240) @@ -259,6 +259,12 @@ void hexdump(const void *ptr, int length, const char * #define ovbcopy(f, t, l) bcopy((f), (t), (l)) void bcopy(const void * _Nonnull from, void * _Nonnull to, size_t len); +#define bcopy(from, to, len) ({ \ + if (__builtin_constant_p(len) && (len) <= 64) \ + __builtin_memmove((to), (from), (len)); \ + else \ + bcopy((from), (to), (len)); \ +}) void bzero(void * _Nonnull buf, size_t len); #define bzero(buf, len) ({ \ if (__builtin_constant_p(len) && (len) <= 64) \ From owner-svn-src-all@freebsd.org Fri May 4 04:05:08 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0161DFC6466; Fri, 4 May 2018 04:05:08 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A183C7E70B; Fri, 4 May 2018 04:05:07 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9C821189A; Fri, 4 May 2018 04:05:07 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44457bJ029613; Fri, 4 May 2018 04:05:07 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44457Od029612; Fri, 4 May 2018 04:05:07 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <201805040405.w44457Od029612@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Fri, 4 May 2018 04:05:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333241 - head/sys/amd64/amd64 X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/amd64/amd64 X-SVN-Commit-Revision: 333241 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 04:05:08 -0000 Author: mjg Date: Fri May 4 04:05:07 2018 New Revision: 333241 URL: https://svnweb.freebsd.org/changeset/base/333241 Log: amd64: get rid of the pessimized bcopy in syscall arg copy The code was unnecessarily conditionally copying either 5 or 6 args. It can blindly copy 6, which also means the size is known at compilation time and the operation can be depessimized. Note the entire syscall handling code is rather slow. Tested on Skylake, sample result for getppid (calls/s): without pti: 7310106 -> 10653569 with pti: 3304843 -> 4148306 Some syscalls (like read) did not note any difference, other have typically very modest wins. Modified: head/sys/amd64/amd64/trap.c Modified: head/sys/amd64/amd64/trap.c ============================================================================== --- head/sys/amd64/amd64/trap.c Fri May 4 04:00:48 2018 (r333240) +++ head/sys/amd64/amd64/trap.c Fri May 4 04:05:07 2018 (r333241) @@ -908,7 +908,7 @@ cpu_fetch_syscall_args(struct thread *td) error = 0; argp = &frame->tf_rdi; argp += reg; - bcopy(argp, sa->args, sizeof(sa->args[0]) * regcnt); + bcopy(argp, sa->args, sizeof(sa->args[0]) * 6); if (sa->narg > regcnt) { KASSERT(params != NULL, ("copyin args with no params!")); error = copyin(params, &sa->args[regcnt], From owner-svn-src-all@freebsd.org Fri May 4 06:51:02 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8CA7EFC9DBB; Fri, 4 May 2018 06:51:02 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3F0FA8487A; Fri, 4 May 2018 06:51:02 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3A1B4328D; Fri, 4 May 2018 06:51:02 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w446p2t6010840; Fri, 4 May 2018 06:51:02 GMT (envelope-from mmacy@FreeBSD.org) Received: (from mmacy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w446p2iB010839; Fri, 4 May 2018 06:51:02 GMT (envelope-from mmacy@FreeBSD.org) Message-Id: <201805040651.w446p2iB010839@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmacy set sender to mmacy@FreeBSD.org using -f From: Matt Macy Date: Fri, 4 May 2018 06:51:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333242 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: mmacy X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 333242 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 06:51:02 -0000 Author: mmacy Date: Fri May 4 06:51:01 2018 New Revision: 333242 URL: https://svnweb.freebsd.org/changeset/base/333242 Log: `dup1_processes -t 96 -s 5` on a dual 8160 x dup_before + dup_after +------------------------------------------------------------+ | x + | |x x x x ++ ++| | |____AM___| |AM|| +------------------------------------------------------------+ N Min Max Median Avg Stddev x 5 1.514954e+08 1.5230351e+08 1.5206157e+08 1.5199371e+08 341205.71 + 5 1.5494336e+08 1.5519569e+08 1.5511982e+08 1.5508323e+08 96232.829 Difference at 95.0% confidence 3.08952e+06 +/- 365604 2.03266% +/- 0.245071% (Student's t, pooled s = 250681) Reported by: mjg@ MFC after: 1 week Modified: head/sys/kern/kern_descrip.c Modified: head/sys/kern/kern_descrip.c ============================================================================== --- head/sys/kern/kern_descrip.c Fri May 4 04:05:07 2018 (r333241) +++ head/sys/kern/kern_descrip.c Fri May 4 06:51:01 2018 (r333242) @@ -1503,7 +1503,7 @@ filecaps_copy(const struct filecaps *src, struct filec if (src->fc_ioctls != NULL && !locked) return (false); - *dst = *src; + memcpy(dst, src, sizeof(*src)); if (src->fc_ioctls == NULL) return (true); @@ -1512,7 +1512,7 @@ filecaps_copy(const struct filecaps *src, struct filec size = sizeof(src->fc_ioctls[0]) * src->fc_nioctls; dst->fc_ioctls = malloc(size, M_FILECAPS, M_WAITOK); - bcopy(src->fc_ioctls, dst->fc_ioctls, size); + memcpy(dst->fc_ioctls, src->fc_ioctls, size); return (true); } From owner-svn-src-all@freebsd.org Fri May 4 07:28:02 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B2C36FCAA5B; Fri, 4 May 2018 07:28:02 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 64C516A36B; Fri, 4 May 2018 07:28:02 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5B1A63CDE; Fri, 4 May 2018 07:28:02 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w447S2bO029526; Fri, 4 May 2018 07:28:02 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w447S2sh029525; Fri, 4 May 2018 07:28:02 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805040728.w447S2sh029525@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Fri, 4 May 2018 07:28:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333243 - head/sys/cddl/compat/opensolaris/kern X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/sys/cddl/compat/opensolaris/kern X-SVN-Commit-Revision: 333243 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 07:28:02 -0000 Author: avg Date: Fri May 4 07:28:01 2018 New Revision: 333243 URL: https://svnweb.freebsd.org/changeset/base/333243 Log: opensolaris system_taskq does not need to run at maximum priority In fact, this taskqueue should use "boring" threads, nothing special about them. MFC after: 2 weeks Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Fri May 4 06:51:01 2018 (r333242) +++ head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Fri May 4 07:28:01 2018 (r333243) @@ -48,7 +48,8 @@ system_taskq_init(void *arg) taskq_zone = uma_zcreate("taskq_zone", sizeof(taskq_ent_t), NULL, NULL, NULL, NULL, 0, 0); - system_taskq = taskq_create("system_taskq", mp_ncpus, 0, 0, 0, 0); + system_taskq = taskq_create("system_taskq", mp_ncpus, minclsyspri, + 0, 0, 0); } SYSINIT(system_taskq_init, SI_SUB_CONFIGURE, SI_ORDER_ANY, system_taskq_init, NULL); From owner-svn-src-all@freebsd.org Fri May 4 09:28:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E3973FA65C5; Fri, 4 May 2018 09:28:12 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7E00A8790E; Fri, 4 May 2018 09:28:12 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 73F1E5087; Fri, 4 May 2018 09:28:12 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w449SCUB088587; Fri, 4 May 2018 09:28:12 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w449SCdA088586; Fri, 4 May 2018 09:28:12 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201805040928.w449SCdA088586@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Fri, 4 May 2018 09:28:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333244 - head/sys/netinet X-SVN-Group: head X-SVN-Commit-Author: ae X-SVN-Commit-Paths: head/sys/netinet X-SVN-Commit-Revision: 333244 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 09:28:13 -0000 Author: ae Date: Fri May 4 09:28:12 2018 New Revision: 333244 URL: https://svnweb.freebsd.org/changeset/base/333244 Log: Immediately propagate EACCES error code to application from tcp_output. In r309610 and r315514 the behavior of handling EACCES was changed, and tcp_output() now returns zero when EACCES happens. The reason of this change was a hesitation that applications that use TCP-MD5 will be affected by changes in project/ipsec. TCP-MD5 code returns EACCES when security assocition for given connection is not configured. But the same error code can return pfil(9), and this change has affected connections blocked by pfil(9). E.g. application doesn't return immediately when SYN segment is blocked, instead it waits when several tries will be failed. Actually, for TCP-MD5 application it doesn't matter will it get EACCES after first SYN, or after several tries. Security associtions must be configured before initiating TCP connection. I left the EACCES in the switch() to show that it has special handling. Reported by: Andreas Longwitz MFC after: 10 days Modified: head/sys/netinet/tcp_output.c Modified: head/sys/netinet/tcp_output.c ============================================================================== --- head/sys/netinet/tcp_output.c Fri May 4 07:28:01 2018 (r333243) +++ head/sys/netinet/tcp_output.c Fri May 4 09:28:12 2018 (r333244) @@ -1586,8 +1586,6 @@ timer: SOCKBUF_UNLOCK_ASSERT(&so->so_snd); /* Check gotos. */ switch (error) { case EACCES: - tp->t_softerror = error; - return (0); case EPERM: tp->t_softerror = error; return (error); From owner-svn-src-all@freebsd.org Fri May 4 10:10:23 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 882D6FA80F7; Fri, 4 May 2018 10:10:23 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3A7F77181A; Fri, 4 May 2018 10:10:23 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 312E35761; Fri, 4 May 2018 10:10:23 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44AANUg008575; Fri, 4 May 2018 10:10:23 GMT (envelope-from philip@FreeBSD.org) Received: (from philip@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44AAMHt008566; Fri, 4 May 2018 10:10:22 GMT (envelope-from philip@FreeBSD.org) Message-Id: <201805041010.w44AAMHt008566@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: philip set sender to philip@FreeBSD.org using -f From: Philip Paeps Date: Fri, 4 May 2018 10:10:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r333245 - vendor/tzdata/dist X-SVN-Group: vendor X-SVN-Commit-Author: philip X-SVN-Commit-Paths: vendor/tzdata/dist X-SVN-Commit-Revision: 333245 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 10:10:23 -0000 Author: philip Date: Fri May 4 10:10:21 2018 New Revision: 333245 URL: https://svnweb.freebsd.org/changeset/base/333245 Log: Import tzdata 2018e Modified: vendor/tzdata/dist/Makefile vendor/tzdata/dist/NEWS vendor/tzdata/dist/africa vendor/tzdata/dist/asia vendor/tzdata/dist/australasia vendor/tzdata/dist/europe vendor/tzdata/dist/theory.html vendor/tzdata/dist/version vendor/tzdata/dist/ziguard.awk Modified: vendor/tzdata/dist/Makefile ============================================================================== --- vendor/tzdata/dist/Makefile Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/Makefile Fri May 4 10:10:21 2018 (r333245) @@ -21,7 +21,7 @@ DATAFORM= main # Change the line below for your time zone (after finding the zone you want in # the time zone files, or adding it to a time zone file). -# Alternately, if you discover you've got the wrong time zone, you can just +# Alternatively, if you discover you've got the wrong time zone, you can just # zic -l rightzone # to correct things. # Use the command @@ -38,7 +38,7 @@ LOCALTIME= GMT # template file are used to determine "spring forward" and "fall back" days and # times; the environment variable itself specifies UT offsets of standard and # daylight saving time. -# Alternately, if you discover you've got the wrong time zone, you can just +# Alternatively, if you discover you've got the wrong time zone, you can just # zic -p rightzone # to correct things. # Use the command @@ -236,14 +236,16 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \ $(GCC_INSTRUMENT) \ -Wall -Wextra \ -Walloc-size-larger-than=100000 -Warray-bounds=2 \ - -Wbad-function-cast -Wcast-align -Wdate-time \ + -Wbad-function-cast -Wcast-align=strict -Wdate-time \ -Wdeclaration-after-statement -Wdouble-promotion \ -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \ -Winit-self -Wjump-misses-init -Wlogical-op \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wold-style-definition -Woverlength-strings -Wpointer-arith \ - -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=5 \ + -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=4 \ + -Wstringop-truncation -Wsuggest-attribute=cold \ -Wsuggest-attribute=const -Wsuggest-attribute=format \ + -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ -Wtrampolines -Wundef -Wuninitialized -Wunused \ -Wvariadic-macros -Wvla -Wwrite-strings \ @@ -514,6 +516,7 @@ VERSION_DEPS= \ tzfile.5 tzfile.h tzselect.8 tzselect.ksh \ workman.sh yearistype.sh \ zdump.8 zdump.c zic.8 zic.c \ + ziguard.awk zishrink.awk \ zone.tab zone1970.tab zoneinfo2tdf.pl # And for the benefit of csh users on systems that assume the user @@ -559,8 +562,8 @@ version: $(VERSION_DEPS) # These files can be tailored by setting BACKWARD, PACKRATDATA, etc. vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS) - $(AWK) -v outfile='$@' -f ziguard.awk $(TDATA) $(PACKRATDATA) \ - >$@.out + $(AWK) -v DATAFORM=`expr $@ : '\(.*\).zi'` -f ziguard.awk \ + $(TDATA) $(PACKRATDATA) >$@.out mv $@.out $@ tzdata.zi: $(DATAFORM).zi version version=`sed 1q version` && \ @@ -900,6 +903,13 @@ check_time_t_alternatives: done rm -fr time_t.dir +TRADITIONAL_ASC = \ + tzcode$(VERSION).tar.gz.asc \ + tzdata$(VERSION).tar.gz.asc +ALL_ASC = $(TRADITIONAL_ASC) \ + tzdata$(VERSION)-rearguard.tar.gz.asc \ + tzdb-$(VERSION).tar.lz.asc + tarballs traditional_tarballs signatures traditional_signatures: version VERSION=`cat version` && \ $(MAKE) VERSION="$$VERSION" $@_version @@ -907,12 +917,13 @@ tarballs traditional_tarballs signatures traditional_s # These *_version rules are intended for use if VERSION is set by some # other means. Ordinarily these rules are used only by the above # non-_version rules, which set VERSION on the 'make' command line. -tarballs_version: traditional_tarballs_version tzdb-$(VERSION).tar.lz +tarballs_version: traditional_tarballs_version \ + tzdata$(VERSION)-rearguard.tar.gz \ + tzdb-$(VERSION).tar.lz traditional_tarballs_version: \ tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz -signatures_version: traditional_signatures_version tzdb-$(VERSION).tar.lz.asc -traditional_signatures_version: \ - tzcode$(VERSION).tar.gz.asc tzdata$(VERSION).tar.gz.asc \ +signatures_version: $(ALL_ASC) +traditional_signatures_version: $(TRADITIONAL_ASC) tzcode$(VERSION).tar.gz: set-timestamps.out LC_ALL=C && export LC_ALL && \ @@ -927,6 +938,26 @@ tzdata$(VERSION).tar.gz: set-timestamps.out gzip $(GZIPFLAGS) >$@.out mv $@.out $@ +tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out + rm -fr tzdata$(VERSION)-rearguard.dir + mkdir tzdata$(VERSION)-rearguard.dir + ln $(COMMON) $(DATA) $(MISC) tzdata$(VERSION)-rearguard.dir + cd tzdata$(VERSION)-rearguard.dir && \ + rm -f $(TDATA) $(PACKRATDATA) version + for f in $(TDATA) $(PACKRATDATA); do \ + rearf=tzdata$(VERSION)-rearguard.dir/$$f; \ + $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \ + touch -cmr `ls -t ziguard.awk $$f` $$rearf || exit; \ + done + sed '1s/$$/-rearguard/' \ + tzdata$(VERSION)-rearguard.dir/version + touch -cmr version tzdata$(VERSION)-rearguard.dir/version + LC_ALL=C && export LC_ALL && \ + (cd tzdata$(VERSION)-rearguard.dir && \ + tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \ + gzip $(GZIPFLAGS)) >$@.out + mv $@.out $@ + tzdb-$(VERSION).tar.lz: set-timestamps.out rm -fr tzdb-$(VERSION) mkdir tzdb-$(VERSION) @@ -937,12 +968,10 @@ tzdb-$(VERSION).tar.lz: set-timestamps.out mv $@.out $@ tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz - gpg --armor --detach-sign $? - tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz - gpg --armor --detach-sign $? - +tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz +$(ALL_ASC): gpg --armor --detach-sign $? typecheck: Modified: vendor/tzdata/dist/NEWS ============================================================================== --- vendor/tzdata/dist/NEWS Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/NEWS Fri May 4 10:10:21 2018 (r333245) @@ -1,5 +1,69 @@ News for the tz database +Release 2018e - 2018-05-01 23:42:51 -0700 + + Briefly: + + North Korea switches back to +09 on 2018-05-05. + The main format uses negative DST again, for Ireland etc. + 'make tarballs' now also builds a rearguard tarball. + New 's' and 'd' suffixes in SAVE columns of Rule and Zone lines. + + Changes to past and future time stamps + + North Korea switches back from +0830 to +09 on 2018-05-05. + (Thanks to Kang Seonghoon, Arthur David Olson, Seo Sanghyeon, + and Tim Parenti.) + + Bring back the negative-DST changes of 2018a, except be more + compatible with data parsers that do not support negative DST. + Also, this now affects historical time stamps in Namibia and the + former Czechoslovakia, not just Ireland. The main format now uses + negative DST to model time stamps in Europe/Dublin (from 1971 on), + Europe/Prague (1946/7), and Africa/Windhoek (1994/2017). This + does not affect UT offsets, only time zone abbreviations and the + tm_isdst flag. Also, this does not affect rearguard or vanguard + formats; effectively the main format now uses vanguard instead of + rearguard format. Data parsers that do not support negative DST + can still use data from the rearguard tarball described below. + + Changes to build procedure + + The command 'make tarballs' now also builds the tarball + tzdataVERSION-rearguard.tar.gz, which is like tzdataVERSION.tar.gz + except that it uses rearguard format intended for trailing-edge + data parsers. + + Changes to data format and to code + + The SAVE column of Rule and Zone lines can now have an 's' or 'd' + suffix, which specifies whether the adjusted time is standard time + or daylight saving time. If no suffix is given, daylight saving + time is used if and only if the SAVE column is nonzero; this is + the longstanding behavior. Although this new feature is not used + in tzdata, it could be used to specify the legal time in Namibia + 1994-2017, as opposed to the popular time (see below). + + Changes to past time stamps + + From 1994 through 2017 Namibia observed DST in winter, not summer. + That is, it used negative DST, as Ireland still does. This change + does not affect UTC offsets; it affects only the tm_isdst flag and + the abbreviation used during summer, which is now CAT, not WAST. + Although (as noted by Michael Deckers) summer and winter time were + both simply called "standard time" in Namibian law, in common + practice winter time was considered to be DST (as noted by Stephen + Colebourne). The full effect of this change is only in vanguard + format; in rearguard and main format, the tm_isdst flag is still + zero in winter and nonzero in summer. + + In 1946/7 Czechoslovakia also observed negative DST in winter. + The full effect of this change is only in vanguard format; in + rearguard and main formats, it is modeled as plain GMT without + daylight saving. Also, the dates of some 1944/5 DST transitions + in Czechoslovakia have been changed. + + Release 2018d - 2018-03-22 07:05:46 -0700 Briefly: @@ -39,7 +103,7 @@ Release 2018d - 2018-03-22 07:05:46 -0700 Enderbury and Kiritimati skipped New Year's Eve 1994, not New Year's Day 1995. (Thanks to Kerry Shetline.) - Fix the 1912-01-01 transition for Portugual and its colonies. + Fix the 1912-01-01 transition for Portugal and its colonies. This transition was at 00:00 according to the new UT offset, not according to the old one. Also assume that Cape Verde switched on the same date as the rest, not in 1907. This affects Modified: vendor/tzdata/dist/africa ============================================================================== --- vendor/tzdata/dist/africa Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/africa Fri May 4 10:10:21 2018 (r333245) @@ -6,7 +6,7 @@ # tz@iana.org for general use in the future). For more, please see # the file CONTRIBUTING in the tz distribution. -# From Paul Eggert (2017-02-20): +# From Paul Eggert (2017-04-09): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), @@ -52,7 +52,7 @@ # cannot now come up with solid citations. # # I invented the following abbreviations; corrections are welcome! -# +02 WAST West Africa Summer Time +# +02 WAST West Africa Summer Time (no longer used) # +03 CAST Central Africa Summer Time (no longer used) # +03 SAST South Africa Summer Time (no longer used) # +03 EAT East Africa Time @@ -967,6 +967,10 @@ Link Africa/Maputo Africa/Lusaka # Zambia # commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on # Sunday 4 September 1994. +# From Michael Deckers (2017-04-06): +# ... both summer and winter time are called "standard" +# (which differs from the use in Ireland) ... + # From Petronella Sibeene (2007-03-30): # http://allafrica.com/stories/200703300178.html # While the entire country changes its time, Katima Mulilo and other @@ -992,19 +996,42 @@ Link Africa/Maputo Africa/Lusaka # Zambia # the same time they would normally start DST, the first Sunday in September: # https://www.timeanddate.com/news/time/namibia-new-time-zone.html +# From Paul Eggert (2017-04-09): +# Before the change, summer and winter time were both standard time legally. +# However in common parlance, winter time was considered to be DST. See, e.g.: +# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706 +# https://zone.my.na/news/times-are-changing-in-namibia +# https://www.newera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/ +# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible +# with Namibia's neighbors. + # RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Namibia 1994 only - Mar 21 0:00 0 - -Rule Namibia 1994 2016 - Sep Sun>=1 2:00 1:00 S -Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 - +# Vanguard section, for zic and other parsers that support negative DST. +Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT +Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT +Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT +# Rearguard section, for parsers that do not support negative DST. +#Rule Namibia 1994 only - Mar 21 0:00 0 WAT +#Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT +#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT +# End of rearguard section. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 1:30 - +0130 1903 Mar 2:00 - SAST 1942 Sep 20 2:00 2:00 1:00 SAST 1943 Mar 21 2:00 2:00 - SAST 1990 Mar 21 # independence - 2:00 - CAT 1994 Mar 21 0:00 - 1:00 Namibia WA%sT 2017 Sep 3 2:00 - 2:00 - CAT +# Vanguard section, for zic and other parsers that support negative DST. + 2:00 Namibia %s +# Rearguard section, for parsers that do not support negative DST. +# 2:00 - CAT 1994 Mar 21 0:00 +# From Paul Eggert (2017-04-07): +# The official date of the 2017 rule change was 2017-10-24. See: +# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf +# 1:00 Namibia %s 2017 Oct 24 +# 2:00 - CAT +# End of rearguard section. # Niger # See Africa/Lagos. Modified: vendor/tzdata/dist/asia ============================================================================== --- vendor/tzdata/dist/asia Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/asia Fri May 4 10:10:21 2018 (r333245) @@ -1983,6 +1983,19 @@ Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S # There is no common English-language abbreviation for this time zone. # Use KST, as that's what we already use for 1954-1961 in ROK. +# From Kang Seonghoon (2018-04-29): +# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang +# Time) back to UTC+9 (KST; Korea Standard Time). +# +# From Seo Sanghyeon (2018-04-30): +# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan. +# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf +# ... the transition date is 2018-05-05 ... Citation should be Decree +# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's +# Assembly, as published in Rodong Sinmun. +# From Tim Parenti (2018-04-29): +# It appears to be the front page story at the top in the right-most column. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 8:30 - KST 1912 Jan 1 @@ -1994,7 +2007,8 @@ Zone Asia/Pyongyang 8:23:00 - LMT 1908 Apr 1 8:30 - KST 1912 Jan 1 9:00 - JST 1945 Aug 24 9:00 - KST 2015 Aug 15 00:00 - 8:30 - KST + 8:30 - KST 2018 May 5 + 9:00 - KST ############################################################################### @@ -2658,7 +2672,7 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # From Sharef Mustafa (2018-03-16): # Palestine summer time will start on Mar 24th 2018 by advancing the # clock by 60 minutes as per Palestinian cabinet decision published on -# the offical website, though the decree did not specify the exact +# the official website, though the decree did not specify the exact # time of the time shift. # http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 # Modified: vendor/tzdata/dist/australasia ============================================================================== --- vendor/tzdata/dist/australasia Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/australasia Fri May 4 10:10:21 2018 (r333245) @@ -1085,6 +1085,15 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # (1999-09-27) writes that Giles Meteorological Station uses # South Australian time even though it's located in Western Australia. +# From Paul Eggert (2018-04-01): +# The Guardian Express of Perth, Australia reported today that the +# government decided to advance the clocks permanently on January 1, +# 2019, from UT +08 to UT +09. The article noted that an exemption +# would be made for people aged 61 and over, who "can apply in writing +# to have the extra hour of sunshine removed from their area." See: +# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01. +# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/ + # Queensland # From Paul Eggert (2018-02-26): Modified: vendor/tzdata/dist/europe ============================================================================== --- vendor/tzdata/dist/europe Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/europe Fri May 4 10:10:21 2018 (r333245) @@ -528,13 +528,13 @@ Link Europe/London Europe/Isle_of_Man # summer and negative daylight saving time in winter. It is for when # negative SAVE values are used. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -#Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT -#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST -#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT -#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST -#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT -#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT -#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT +Rule Eire 1971 only - Oct 31 2:00u -1:00 - +Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 - +Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 - +Rule Eire 1981 max - Mar lastSun 1:00u 0 - +Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 - +Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - +Rule Eire 1996 max - Oct lastSun 1:00u -1:00 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 @@ -548,11 +548,11 @@ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 0:00 - GMT 1948 Apr 18 2:00s 0:00 GB-Eire GMT/IST 1968 Oct 27 # The next line is for when negative SAVE values are used. -# 1:00 Eire IST/GMT + 1:00 Eire IST/GMT # These three lines are for when SAVE values are always nonnegative. - 1:00 - IST 1971 Oct 31 2:00u - 0:00 GB-Eire GMT/IST 1996 - 0:00 EU GMT/IST +# 1:00 - IST 1971 Oct 31 2:00u +# 0:00 GB-Eire GMT/IST 1996 +# 0:00 EU GMT/IST ############################################################################### @@ -970,18 +970,30 @@ Zone Europe/Sofia 1:33:16 - LMT 1880 # Please see the 'asia' file for Asia/Nicosia. # Czech Republic / Czechia +# +# From Paul Eggert (2018-04-15): +# The source for Czech data is: Kdy zaÄíná a konÄí letní Äas. 2018-04-15. +# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas +# We know of no English-language name for historical Czech winter time; +# abbreviate it as "GMT", as it happened to be GMT. +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Czech 1945 only - Apr 8 2:00s 1:00 S -Rule Czech 1945 only - Nov 18 2:00s 0 - +Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S +Rule Czech 1945 only - Oct 1 2:00s 0 - Rule Czech 1946 only - May 6 2:00s 1:00 S Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 - -Rule Czech 1947 only - Apr 20 2:00s 1:00 S -Rule Czech 1948 only - Apr 18 2:00s 1:00 S +Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S Rule Czech 1949 only - Apr 9 2:00s 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Prague 0:57:44 - LMT 1850 0:57:44 - PMT 1891 Oct # Prague Mean Time - 1:00 C-Eur CE%sT 1944 Sep 17 2:00s + 1:00 C-Eur CE%sT 1945 May 9 + 1:00 Czech CE%sT 1946 Dec 1 3:00 +# Vanguard section, for zic and other parsers that support negative DST. + 1:00 -1:00 GMT 1947 Feb 23 2:00 +# Rearguard section, for parsers that do not support negative DST. +# 0:00 - GMT 1947 Feb 23 2:00 +# End of rearguard section. 1:00 Czech CE%sT 1979 1:00 EU CE%sT # Use Europe/Prague also for Slovakia. @@ -2016,7 +2028,7 @@ Rule Neth 1938 1939 - May 15 2:00s 1:00 S Rule Neth 1945 only - Apr 2 2:00s 1:00 S Rule Neth 1945 only - Sep 16 2:00s 0 - # -# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted +# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted # below because the current format requires GMTOFF to be an integer. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Amsterdam 0:19:32 - LMT 1835 Modified: vendor/tzdata/dist/theory.html ============================================================================== --- vendor/tzdata/dist/theory.html Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/theory.html Fri May 4 10:10:21 2018 (r333245) @@ -32,7 +32,7 @@ all computer-based clocks that track civil time. It organizes time zone and daylight saving time data by partitioning the world into regions -whose clocks all agree about timestamps that occur after the of the POSIX Epoch (1970-01-01 00:00:00 backzone that is distributed along with the database proper, this file is less reliable and does not necessarily follow database guidelines. @@ -68,7 +68,7 @@ standard for UNIX-like systems. As of this writing, the current edition of POSIX is: The Open -Group Base Specifications Issue 7, IEEE Std 1003.1-2008, 2016 +Group Base Specifications Issue 7, IEEE Std 1003.1-2017, 2018 Edition. Because the database's scope encompasses real-world changes to civil timekeeping, its model for describing time is more complex than the @@ -79,7 +79,7 @@ flip back and forth between two alternatives, and the can change at times. Whether and when a tz region changes its clock, and even the region's notional base offset from UTC, are variable. -It doesn't even really make sense to talk about a region's +It does not always make sense to talk about a region's "base offset", since it is not necessarily a single number.

@@ -92,8 +92,8 @@ Each tz region has a unique corresponds to a set of time zone rules. Inexperienced users are not expected to select these names unaided. Distributors should provide documentation and/or a simple selection -interface that explains the names; for one example, see the 'tzselect' -program in the tz code. +interface that explains the names; for one example, see the +tzselect program in the tz code. The Unicode Common Locale Data Repository contains data that may be useful for other selection interfaces. @@ -137,6 +137,9 @@ region. North and South America share the same area, 'America'. Typical names are 'Africa/Cairo', 'America/New_York', and 'Pacific/Honolulu'. +Some names are further qualified to help avoid confusion; for example, +'America/Indiana/Petersburg' distinguishes Petersburg, +Indiana from other Petersburgs in America.

@@ -159,7 +162,8 @@ in decreasing order of importance: TZ strings. A file name component must not exceed 14 characters or start with '-'. - E.g., prefer 'Brunei' to 'Bandar_Seri_Begawan'. + E.g., prefer Asia/Brunei to + Asia/Bandar_Seri_Begawan. Exceptions: see the discussion of legacy names below.

  • @@ -177,8 +181,8 @@ in decreasing order of importance: name AB (ignoring case), then B must not start with '/', as a regular file cannot have the same name as a directory in POSIX. - For example, 'America/New_York' precludes - 'America/New_York/Bronx'. + For example, America/New_York precludes + America/New_York/Bronx.
  • Uninhabited regions like the North Pole and Bouvet Island @@ -193,50 +197,56 @@ in decreasing order of importance:
  • If all the clocks in a region have agreed since 1970, - don't bother to include more than one location + do not bother to include more than one location even if subregions' clocks disagreed before 1970. Otherwise these tables would become annoyingly large.
  • If a name is ambiguous, use a less ambiguous alternative; e.g., many cities are named San José and Georgetown, so - prefer 'Costa_Rica' to 'San_Jose' and - 'Guyana' to 'Georgetown'. + prefer America/Costa_Rica to + America/San_Jose and America/Guyana + to America/Georgetown.
  • Keep locations compact. Use cities or small islands, not countries or regions, so that any future changes do not split individual locations into different tz regions. - E.g., prefer 'Paris' to 'France', since + E.g., prefer Europe/Paris to Europe/France, + since France has had multiple time zones.
  • - Use mainstream English spelling, e.g., prefer 'Rome' - to 'Roma', and prefer 'Athens' to the - Greek 'Αθήνα' or the Romanized 'Athína'. + Use mainstream English spelling, e.g., prefer + Europe/Rome to Europe/Roma, and + prefer Europe/Athens to the Greek + Europe/Αθήνα or the Romanized + Europe/Athína. The POSIX file name restrictions encourage this guideline.
  • Use the most populous among locations in a region, - e.g., prefer 'Shanghai' to - 'Beijing'. + e.g., prefer Asia/Shanghai to + Asia/Beijing. Among locations with similar populations, pick the best-known - location, e.g., prefer 'Rome' to - 'Milan'. + location, e.g., prefer Europe/Rome to + Europe/Milan.
  • - Use the singular form, e.g., prefer 'Canary' to - 'Canaries'. + Use the singular form, e.g., prefer Atlantic/Canary to + Atlantic/Canaries.
  • Omit common suffixes like '_Islands' and '_City', unless that would lead to ambiguity. - E.g., prefer 'Cayman' to - 'Cayman_Islands' and 'Guatemala' to - 'Guatemala_City', but prefer - 'Mexico_City' to 'Mexico' + E.g., prefer America/Cayman to + America/Cayman_Islands and + America/Guatemala to + America/Guatemala_City, but prefer + America/Mexico_City to + America/Mexico because the country of Mexico has several time zones.
  • @@ -245,13 +255,14 @@ in decreasing order of importance:
  • Omit '.' from abbreviations in names. - E.g., prefer 'St_Helena' to 'St._Helena'. + E.g., prefer Atlantic/St_Helena to + Atlantic/St._Helena.
  • Do not change established names if they only marginally violate the above guidelines. - For example, don't change the existing name 'Rome' to - 'Milan' merely because Milan's population has grown + For example, do not change the existing name Europe/Rome to + Europe/Milan merely because Milan's population has grown to be somewhat greater than Rome's.
  • @@ -318,8 +329,10 @@ in decreasing order of importance: Use three to six characters that are ASCII alphanumerics or '+' or '-'. Previous editions of this database also used characters like - ' ' and '?', but these characters have a - special meaning to the shell and cause commands like + space and '?', but these characters have a + special meaning to the + UNIX shell + and cause commands like 'set `date`' to have unexpected effects. @@ -688,7 +701,7 @@ href="https://www.dissentmagazine.org/blog/booked-a-gl subsecond accuracy is needed.
  • - Civil time was not based on atomic time before 1972, and we don't + Civil time was not based on atomic time before 1972, and we do not know the history of earth's rotation accurately enough to map tzsetwall; - if such code is moved to "old" systems that don't - provide tzsetwall, you won't be able to generate an + if such code is moved to "old" systems that do not + provide tzsetwall, you will not be able to generate an executable program. (These functions also arrange for local wall clock time to be used if tzset is called – directly or - indirectly – and there's no TZ environment + indirectly – and there is no TZ environment variable; portable applications should not, however, rely on this - behavior since it's not the way SVR2 systems behave.) + behavior since it is not the way SVR2 + systems behave.)
  • Negative time_t values are supported, on systems @@ -1040,7 +1055,7 @@ The vestigial APIs are:
  • The 7th Edition UNIX timezone function is not present in this - package; it's impossible to reliably map timezone's + package; it is impossible to reliably map timezone's arguments (a "minutes west of GMT" value and a "daylight saving time in effect" flag) to a time zone abbreviation, and we refuse to guess. @@ -1052,7 +1067,9 @@ The vestigial APIs are: zone abbreviation to use.
  • - The 4.2BSD gettimeofday function is not + The 4.2BSD + gettimeofday function is not used in this package. This formerly let users obtain the current UTC offset and DST flag, but this functionality was removed in @@ -1061,7 +1078,7 @@ The vestigial APIs are:
  • In SVR2, time conversion fails for near-minimum or near-maximum time_t values when doing conversions - for places that don't use UT. + for places that do not use UT. This package takes care to do these conversions correctly. A comment in the source code tells how to get compatibly wrong results. @@ -1155,10 +1172,10 @@ based on guesswork and these guesses may be corrected Calendrical issues are a bit out of scope for a time zone database, but they indicate the sort of problems that we would run into if we extended the time zone database further into the past. -An excellent resource in this area is Nachum Dershowitz and Edward M. -Reingold, Calendrical -Calculations: Third Edition, Cambridge University Press (2008). +An excellent resource in this area is Edward M. Reingold +and Nachum Dershowitz, Calendrical +Calculations: The Ultimate Edition, Cambridge University Press (2018). Other information and sources are given in the file 'calendars' in the tz distribution. They sometimes disagree. @@ -1170,11 +1187,11 @@ They sometimes disagree.

    Some people's work schedules use Mars time. -Jet Propulsion Laboratory (JPL) coordinators have kept Mars time on -and off at least since 1997 for the +Jet Propulsion Laboratory (JPL) coordinators kept Mars time on +and off during the Mars Pathfinder mission. -Some of their family members have also adapted to Mars time. +Some of their family members also adapted to Mars time. Dozens of special Mars watches were built for JPL workers who kept Mars time during the Mars Exploration Rovers mission (2004). These timepieces look like normal Seikos and Citizens but use Mars @@ -1262,7 +1279,7 @@ Sources for time on other planets: Jia-Rui Chong, "Workdays Fit for a Martian", Los Angeles Times - (2004-01-14), pp A1, A20-A21. + (2004-01-14), pp A1, A20–A21.

  • Tom Chmielewski, Modified: vendor/tzdata/dist/version ============================================================================== --- vendor/tzdata/dist/version Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/version Fri May 4 10:10:21 2018 (r333245) @@ -1 +1 @@ -2018d +2018e Modified: vendor/tzdata/dist/ziguard.awk ============================================================================== --- vendor/tzdata/dist/ziguard.awk Fri May 4 09:28:12 2018 (r333244) +++ vendor/tzdata/dist/ziguard.awk Fri May 4 10:10:21 2018 (r333245) @@ -13,20 +13,31 @@ # rearguard format. BEGIN { - dst_type["vanguard.zi"] = 1 - dst_type["main.zi"] = 1 - dst_type["rearguard.zi"] = 1 + dataform_type["vanguard"] = 1 + dataform_type["main"] = 1 + dataform_type["rearguard"] = 1 - # The command line should set OUTFILE to the name of the output file. - if (!dst_type[outfile]) exit 1 - vanguard = outfile == "vanguard.zi" + # The command line should set DATAFORM. + if (!dataform_type[DATAFORM]) exit 1 + vanguard = DATAFORM == "vanguard" } /^Zone/ { zone = $2 } -outfile != "main.zi" { +DATAFORM != "main" { in_comment = /^#/ + uncomment = comment_out = 0 + # If the line should differ due to Czechoslovakia using negative SAVE values, + # uncomment the desired version and comment out the undesired one. + if (zone == "Europe/Prague" && /1947 Feb 23/) { + if (($(in_comment + 2) != "-") == vanguard) { + uncomment = in_comment + } else { + comment_out = !in_comment + } + } + # If this line should differ due to Ireland using negative SAVE values, # uncomment the desired version and comment out the undesired one. Rule_Eire = /^#?Rule[\t ]+Eire[\t ]/ @@ -37,10 +48,37 @@ outfile != "main.zi" { if ((Rule_Eire \ || (Zone_Dublin_post_1968 && $(in_comment + 3) == "IST/GMT")) \ == vanguard) { - sub(/^#/, "") - } else if (/^[^#]/) { - sub(/^/, "#") + uncomment = in_comment + } else { + comment_out = !in_comment } + } + + # If this line should differ due to Namibia using Rule SAVE suffixes, + # uncomment the desired version and comment out the undesired one. + Rule_Namibia = /^#?Rule[\t ]+Namibia[\t ]/ + Zone_using_Namibia_rule \ + = (zone == "Africa/Windhoek" \ + && ($(in_comment + 2) == "Namibia" \ + || (1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \ + || in_comment + 3 == NF)) + if (Rule_Namibia || Zone_using_Namibia_rule) { + if ((Rule_Namibia \ + ? ($(in_comment + 9) ~ /^-/ \ + || ($(in_comment + 9) == 0 && $(in_comment + 10) == "CAT")) \ + : $(in_comment + 1) == "2:00" && $(in_comment + 2) == "Namibia") \ + == vanguard) { + uncomment = in_comment + } else { + comment_out = !in_comment + } + } + + if (uncomment) { + sub(/^#/, "") + } + if (comment_out) { + sub(/^/, "#") } } From owner-svn-src-all@freebsd.org Fri May 4 10:11:19 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F2083FA82E0; Fri, 4 May 2018 10:11:18 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A7D40719D1; Fri, 4 May 2018 10:11:18 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 89C54588E; Fri, 4 May 2018 10:11:18 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44ABIxw010254; Fri, 4 May 2018 10:11:18 GMT (envelope-from philip@FreeBSD.org) Received: (from philip@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44ABIZg010253; Fri, 4 May 2018 10:11:18 GMT (envelope-from philip@FreeBSD.org) Message-Id: <201805041011.w44ABIZg010253@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: philip set sender to philip@FreeBSD.org using -f From: Philip Paeps Date: Fri, 4 May 2018 10:11:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r333246 - vendor/tzdata/tzdata2018e X-SVN-Group: vendor X-SVN-Commit-Author: philip X-SVN-Commit-Paths: vendor/tzdata/tzdata2018e X-SVN-Commit-Revision: 333246 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 10:11:19 -0000 Author: philip Date: Fri May 4 10:11:18 2018 New Revision: 333246 URL: https://svnweb.freebsd.org/changeset/base/333246 Log: Import tzdata 2018e Added: vendor/tzdata/tzdata2018e/ - copied from r333245, vendor/tzdata/dist/ From owner-svn-src-all@freebsd.org Fri May 4 10:17:28 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9DE58FA860F; Fri, 4 May 2018 10:17:28 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4A6B971EEB; Fri, 4 May 2018 10:17:28 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 44BF45909; Fri, 4 May 2018 10:17:28 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44AHSMp013624; Fri, 4 May 2018 10:17:28 GMT (envelope-from philip@FreeBSD.org) Received: (from philip@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44AHRkk013615; Fri, 4 May 2018 10:17:27 GMT (envelope-from philip@FreeBSD.org) Message-Id: <201805041017.w44AHRkk013615@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: philip set sender to philip@FreeBSD.org using -f From: Philip Paeps Date: Fri, 4 May 2018 10:17:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333247 - head/contrib/tzdata X-SVN-Group: head X-SVN-Commit-Author: philip X-SVN-Commit-Paths: head/contrib/tzdata X-SVN-Commit-Revision: 333247 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 10:17:29 -0000 Author: philip Date: Fri May 4 10:17:27 2018 New Revision: 333247 URL: https://svnweb.freebsd.org/changeset/base/333247 Log: Import tzdata 2018e Changes: https://github.com/eggert/tz/blob/2018e/NEWS MFC after: 3 days Modified: head/contrib/tzdata/Makefile head/contrib/tzdata/NEWS head/contrib/tzdata/africa head/contrib/tzdata/asia head/contrib/tzdata/australasia head/contrib/tzdata/europe head/contrib/tzdata/theory.html head/contrib/tzdata/version head/contrib/tzdata/ziguard.awk Directory Properties: head/contrib/tzdata/ (props changed) Modified: head/contrib/tzdata/Makefile ============================================================================== --- head/contrib/tzdata/Makefile Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/Makefile Fri May 4 10:17:27 2018 (r333247) @@ -21,7 +21,7 @@ DATAFORM= main # Change the line below for your time zone (after finding the zone you want in # the time zone files, or adding it to a time zone file). -# Alternately, if you discover you've got the wrong time zone, you can just +# Alternatively, if you discover you've got the wrong time zone, you can just # zic -l rightzone # to correct things. # Use the command @@ -38,7 +38,7 @@ LOCALTIME= GMT # template file are used to determine "spring forward" and "fall back" days and # times; the environment variable itself specifies UT offsets of standard and # daylight saving time. -# Alternately, if you discover you've got the wrong time zone, you can just +# Alternatively, if you discover you've got the wrong time zone, you can just # zic -p rightzone # to correct things. # Use the command @@ -236,14 +236,16 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \ $(GCC_INSTRUMENT) \ -Wall -Wextra \ -Walloc-size-larger-than=100000 -Warray-bounds=2 \ - -Wbad-function-cast -Wcast-align -Wdate-time \ + -Wbad-function-cast -Wcast-align=strict -Wdate-time \ -Wdeclaration-after-statement -Wdouble-promotion \ -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \ -Winit-self -Wjump-misses-init -Wlogical-op \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wold-style-definition -Woverlength-strings -Wpointer-arith \ - -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=5 \ + -Wshadow -Wshift-overflow=2 -Wstrict-prototypes -Wstringop-overflow=4 \ + -Wstringop-truncation -Wsuggest-attribute=cold \ -Wsuggest-attribute=const -Wsuggest-attribute=format \ + -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ -Wtrampolines -Wundef -Wuninitialized -Wunused \ -Wvariadic-macros -Wvla -Wwrite-strings \ @@ -514,6 +516,7 @@ VERSION_DEPS= \ tzfile.5 tzfile.h tzselect.8 tzselect.ksh \ workman.sh yearistype.sh \ zdump.8 zdump.c zic.8 zic.c \ + ziguard.awk zishrink.awk \ zone.tab zone1970.tab zoneinfo2tdf.pl # And for the benefit of csh users on systems that assume the user @@ -559,8 +562,8 @@ version: $(VERSION_DEPS) # These files can be tailored by setting BACKWARD, PACKRATDATA, etc. vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS) - $(AWK) -v outfile='$@' -f ziguard.awk $(TDATA) $(PACKRATDATA) \ - >$@.out + $(AWK) -v DATAFORM=`expr $@ : '\(.*\).zi'` -f ziguard.awk \ + $(TDATA) $(PACKRATDATA) >$@.out mv $@.out $@ tzdata.zi: $(DATAFORM).zi version version=`sed 1q version` && \ @@ -900,6 +903,13 @@ check_time_t_alternatives: done rm -fr time_t.dir +TRADITIONAL_ASC = \ + tzcode$(VERSION).tar.gz.asc \ + tzdata$(VERSION).tar.gz.asc +ALL_ASC = $(TRADITIONAL_ASC) \ + tzdata$(VERSION)-rearguard.tar.gz.asc \ + tzdb-$(VERSION).tar.lz.asc + tarballs traditional_tarballs signatures traditional_signatures: version VERSION=`cat version` && \ $(MAKE) VERSION="$$VERSION" $@_version @@ -907,12 +917,13 @@ tarballs traditional_tarballs signatures traditional_s # These *_version rules are intended for use if VERSION is set by some # other means. Ordinarily these rules are used only by the above # non-_version rules, which set VERSION on the 'make' command line. -tarballs_version: traditional_tarballs_version tzdb-$(VERSION).tar.lz +tarballs_version: traditional_tarballs_version \ + tzdata$(VERSION)-rearguard.tar.gz \ + tzdb-$(VERSION).tar.lz traditional_tarballs_version: \ tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz -signatures_version: traditional_signatures_version tzdb-$(VERSION).tar.lz.asc -traditional_signatures_version: \ - tzcode$(VERSION).tar.gz.asc tzdata$(VERSION).tar.gz.asc \ +signatures_version: $(ALL_ASC) +traditional_signatures_version: $(TRADITIONAL_ASC) tzcode$(VERSION).tar.gz: set-timestamps.out LC_ALL=C && export LC_ALL && \ @@ -927,6 +938,26 @@ tzdata$(VERSION).tar.gz: set-timestamps.out gzip $(GZIPFLAGS) >$@.out mv $@.out $@ +tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out + rm -fr tzdata$(VERSION)-rearguard.dir + mkdir tzdata$(VERSION)-rearguard.dir + ln $(COMMON) $(DATA) $(MISC) tzdata$(VERSION)-rearguard.dir + cd tzdata$(VERSION)-rearguard.dir && \ + rm -f $(TDATA) $(PACKRATDATA) version + for f in $(TDATA) $(PACKRATDATA); do \ + rearf=tzdata$(VERSION)-rearguard.dir/$$f; \ + $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \ + touch -cmr `ls -t ziguard.awk $$f` $$rearf || exit; \ + done + sed '1s/$$/-rearguard/' \ + tzdata$(VERSION)-rearguard.dir/version + touch -cmr version tzdata$(VERSION)-rearguard.dir/version + LC_ALL=C && export LC_ALL && \ + (cd tzdata$(VERSION)-rearguard.dir && \ + tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \ + gzip $(GZIPFLAGS)) >$@.out + mv $@.out $@ + tzdb-$(VERSION).tar.lz: set-timestamps.out rm -fr tzdb-$(VERSION) mkdir tzdb-$(VERSION) @@ -937,12 +968,10 @@ tzdb-$(VERSION).tar.lz: set-timestamps.out mv $@.out $@ tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz - gpg --armor --detach-sign $? - tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz - gpg --armor --detach-sign $? - +tzdata$(VERSION)-rearguard.tar.gz.asc: tzdata$(VERSION)-rearguard.tar.gz tzdb-$(VERSION).tar.lz.asc: tzdb-$(VERSION).tar.lz +$(ALL_ASC): gpg --armor --detach-sign $? typecheck: Modified: head/contrib/tzdata/NEWS ============================================================================== --- head/contrib/tzdata/NEWS Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/NEWS Fri May 4 10:17:27 2018 (r333247) @@ -1,5 +1,69 @@ News for the tz database +Release 2018e - 2018-05-01 23:42:51 -0700 + + Briefly: + + North Korea switches back to +09 on 2018-05-05. + The main format uses negative DST again, for Ireland etc. + 'make tarballs' now also builds a rearguard tarball. + New 's' and 'd' suffixes in SAVE columns of Rule and Zone lines. + + Changes to past and future time stamps + + North Korea switches back from +0830 to +09 on 2018-05-05. + (Thanks to Kang Seonghoon, Arthur David Olson, Seo Sanghyeon, + and Tim Parenti.) + + Bring back the negative-DST changes of 2018a, except be more + compatible with data parsers that do not support negative DST. + Also, this now affects historical time stamps in Namibia and the + former Czechoslovakia, not just Ireland. The main format now uses + negative DST to model time stamps in Europe/Dublin (from 1971 on), + Europe/Prague (1946/7), and Africa/Windhoek (1994/2017). This + does not affect UT offsets, only time zone abbreviations and the + tm_isdst flag. Also, this does not affect rearguard or vanguard + formats; effectively the main format now uses vanguard instead of + rearguard format. Data parsers that do not support negative DST + can still use data from the rearguard tarball described below. + + Changes to build procedure + + The command 'make tarballs' now also builds the tarball + tzdataVERSION-rearguard.tar.gz, which is like tzdataVERSION.tar.gz + except that it uses rearguard format intended for trailing-edge + data parsers. + + Changes to data format and to code + + The SAVE column of Rule and Zone lines can now have an 's' or 'd' + suffix, which specifies whether the adjusted time is standard time + or daylight saving time. If no suffix is given, daylight saving + time is used if and only if the SAVE column is nonzero; this is + the longstanding behavior. Although this new feature is not used + in tzdata, it could be used to specify the legal time in Namibia + 1994-2017, as opposed to the popular time (see below). + + Changes to past time stamps + + From 1994 through 2017 Namibia observed DST in winter, not summer. + That is, it used negative DST, as Ireland still does. This change + does not affect UTC offsets; it affects only the tm_isdst flag and + the abbreviation used during summer, which is now CAT, not WAST. + Although (as noted by Michael Deckers) summer and winter time were + both simply called "standard time" in Namibian law, in common + practice winter time was considered to be DST (as noted by Stephen + Colebourne). The full effect of this change is only in vanguard + format; in rearguard and main format, the tm_isdst flag is still + zero in winter and nonzero in summer. + + In 1946/7 Czechoslovakia also observed negative DST in winter. + The full effect of this change is only in vanguard format; in + rearguard and main formats, it is modeled as plain GMT without + daylight saving. Also, the dates of some 1944/5 DST transitions + in Czechoslovakia have been changed. + + Release 2018d - 2018-03-22 07:05:46 -0700 Briefly: @@ -39,7 +103,7 @@ Release 2018d - 2018-03-22 07:05:46 -0700 Enderbury and Kiritimati skipped New Year's Eve 1994, not New Year's Day 1995. (Thanks to Kerry Shetline.) - Fix the 1912-01-01 transition for Portugual and its colonies. + Fix the 1912-01-01 transition for Portugal and its colonies. This transition was at 00:00 according to the new UT offset, not according to the old one. Also assume that Cape Verde switched on the same date as the rest, not in 1907. This affects Modified: head/contrib/tzdata/africa ============================================================================== --- head/contrib/tzdata/africa Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/africa Fri May 4 10:17:27 2018 (r333247) @@ -6,7 +6,7 @@ # tz@iana.org for general use in the future). For more, please see # the file CONTRIBUTING in the tz distribution. -# From Paul Eggert (2017-02-20): +# From Paul Eggert (2017-04-09): # # Unless otherwise specified, the source for data through 1990 is: # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), @@ -52,7 +52,7 @@ # cannot now come up with solid citations. # # I invented the following abbreviations; corrections are welcome! -# +02 WAST West Africa Summer Time +# +02 WAST West Africa Summer Time (no longer used) # +03 CAST Central Africa Summer Time (no longer used) # +03 SAST South Africa Summer Time (no longer used) # +03 EAT East Africa Time @@ -967,6 +967,10 @@ Link Africa/Maputo Africa/Lusaka # Zambia # commence at OOhOO on Monday 21 March 1994 and shall end at 02h00 on # Sunday 4 September 1994. +# From Michael Deckers (2017-04-06): +# ... both summer and winter time are called "standard" +# (which differs from the use in Ireland) ... + # From Petronella Sibeene (2007-03-30): # http://allafrica.com/stories/200703300178.html # While the entire country changes its time, Katima Mulilo and other @@ -992,19 +996,42 @@ Link Africa/Maputo Africa/Lusaka # Zambia # the same time they would normally start DST, the first Sunday in September: # https://www.timeanddate.com/news/time/namibia-new-time-zone.html +# From Paul Eggert (2017-04-09): +# Before the change, summer and winter time were both standard time legally. +# However in common parlance, winter time was considered to be DST. See, e.g.: +# http://www.nbc.na/news/namibias-winter-time-could-be-scrapped.2706 +# https://zone.my.na/news/times-are-changing-in-namibia +# https://www.newera.com.na/2017/02/23/namibias-winter-time-might-be-repealed/ +# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible +# with Namibia's neighbors. + # RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Namibia 1994 only - Mar 21 0:00 0 - -Rule Namibia 1994 2016 - Sep Sun>=1 2:00 1:00 S -Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 - +# Vanguard section, for zic and other parsers that support negative DST. +Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT +Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT +Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT +# Rearguard section, for parsers that do not support negative DST. +#Rule Namibia 1994 only - Mar 21 0:00 0 WAT +#Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT +#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT +# End of rearguard section. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 1:30 - +0130 1903 Mar 2:00 - SAST 1942 Sep 20 2:00 2:00 1:00 SAST 1943 Mar 21 2:00 2:00 - SAST 1990 Mar 21 # independence - 2:00 - CAT 1994 Mar 21 0:00 - 1:00 Namibia WA%sT 2017 Sep 3 2:00 - 2:00 - CAT +# Vanguard section, for zic and other parsers that support negative DST. + 2:00 Namibia %s +# Rearguard section, for parsers that do not support negative DST. +# 2:00 - CAT 1994 Mar 21 0:00 +# From Paul Eggert (2017-04-07): +# The official date of the 2017 rule change was 2017-10-24. See: +# http://www.lac.org.na/laws/annoSTAT/Namibian%20Time%20Act%209%20of%202017.pdf +# 1:00 Namibia %s 2017 Oct 24 +# 2:00 - CAT +# End of rearguard section. # Niger # See Africa/Lagos. Modified: head/contrib/tzdata/asia ============================================================================== --- head/contrib/tzdata/asia Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/asia Fri May 4 10:17:27 2018 (r333247) @@ -1983,6 +1983,19 @@ Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S # There is no common English-language abbreviation for this time zone. # Use KST, as that's what we already use for 1954-1961 in ROK. +# From Kang Seonghoon (2018-04-29): +# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang +# Time) back to UTC+9 (KST; Korea Standard Time). +# +# From Seo Sanghyeon (2018-04-30): +# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan. +# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf +# ... the transition date is 2018-05-05 ... Citation should be Decree +# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's +# Assembly, as published in Rodong Sinmun. +# From Tim Parenti (2018-04-29): +# It appears to be the front page story at the top in the right-most column. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 8:30 - KST 1912 Jan 1 @@ -1994,7 +2007,8 @@ Zone Asia/Pyongyang 8:23:00 - LMT 1908 Apr 1 8:30 - KST 1912 Jan 1 9:00 - JST 1945 Aug 24 9:00 - KST 2015 Aug 15 00:00 - 8:30 - KST + 8:30 - KST 2018 May 5 + 9:00 - KST ############################################################################### @@ -2658,7 +2672,7 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # From Sharef Mustafa (2018-03-16): # Palestine summer time will start on Mar 24th 2018 by advancing the # clock by 60 minutes as per Palestinian cabinet decision published on -# the offical website, though the decree did not specify the exact +# the official website, though the decree did not specify the exact # time of the time shift. # http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817 # Modified: head/contrib/tzdata/australasia ============================================================================== --- head/contrib/tzdata/australasia Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/australasia Fri May 4 10:17:27 2018 (r333247) @@ -1085,6 +1085,15 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # (1999-09-27) writes that Giles Meteorological Station uses # South Australian time even though it's located in Western Australia. +# From Paul Eggert (2018-04-01): +# The Guardian Express of Perth, Australia reported today that the +# government decided to advance the clocks permanently on January 1, +# 2019, from UT +08 to UT +09. The article noted that an exemption +# would be made for people aged 61 and over, who "can apply in writing +# to have the extra hour of sunshine removed from their area." See: +# Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01. +# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/ + # Queensland # From Paul Eggert (2018-02-26): Modified: head/contrib/tzdata/europe ============================================================================== --- head/contrib/tzdata/europe Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/europe Fri May 4 10:17:27 2018 (r333247) @@ -528,13 +528,13 @@ Link Europe/London Europe/Isle_of_Man # summer and negative daylight saving time in winter. It is for when # negative SAVE values are used. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -#Rule Eire 1971 only - Oct 31 2:00u -1:00 GMT -#Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 IST -#Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 GMT -#Rule Eire 1981 max - Mar lastSun 1:00u 0 IST -#Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 GMT -#Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 GMT -#Rule Eire 1996 max - Oct lastSun 1:00u -1:00 GMT +Rule Eire 1971 only - Oct 31 2:00u -1:00 - +Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 - +Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 - +Rule Eire 1981 max - Mar lastSun 1:00u 0 - +Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 - +Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 - +Rule Eire 1996 max - Oct lastSun 1:00u -1:00 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 @@ -548,11 +548,11 @@ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 0:00 - GMT 1948 Apr 18 2:00s 0:00 GB-Eire GMT/IST 1968 Oct 27 # The next line is for when negative SAVE values are used. -# 1:00 Eire IST/GMT + 1:00 Eire IST/GMT # These three lines are for when SAVE values are always nonnegative. - 1:00 - IST 1971 Oct 31 2:00u - 0:00 GB-Eire GMT/IST 1996 - 0:00 EU GMT/IST +# 1:00 - IST 1971 Oct 31 2:00u +# 0:00 GB-Eire GMT/IST 1996 +# 0:00 EU GMT/IST ############################################################################### @@ -970,18 +970,30 @@ Zone Europe/Sofia 1:33:16 - LMT 1880 # Please see the 'asia' file for Asia/Nicosia. # Czech Republic / Czechia +# +# From Paul Eggert (2018-04-15): +# The source for Czech data is: Kdy zaÄíná a konÄí letní Äas. 2018-04-15. +# https://kalendar.beda.cz/kdy-zacina-a-konci-letni-cas +# We know of no English-language name for historical Czech winter time; +# abbreviate it as "GMT", as it happened to be GMT. +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Czech 1945 only - Apr 8 2:00s 1:00 S -Rule Czech 1945 only - Nov 18 2:00s 0 - +Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S +Rule Czech 1945 only - Oct 1 2:00s 0 - Rule Czech 1946 only - May 6 2:00s 1:00 S Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 - -Rule Czech 1947 only - Apr 20 2:00s 1:00 S -Rule Czech 1948 only - Apr 18 2:00s 1:00 S +Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S Rule Czech 1949 only - Apr 9 2:00s 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Prague 0:57:44 - LMT 1850 0:57:44 - PMT 1891 Oct # Prague Mean Time - 1:00 C-Eur CE%sT 1944 Sep 17 2:00s + 1:00 C-Eur CE%sT 1945 May 9 + 1:00 Czech CE%sT 1946 Dec 1 3:00 +# Vanguard section, for zic and other parsers that support negative DST. + 1:00 -1:00 GMT 1947 Feb 23 2:00 +# Rearguard section, for parsers that do not support negative DST. +# 0:00 - GMT 1947 Feb 23 2:00 +# End of rearguard section. 1:00 Czech CE%sT 1979 1:00 EU CE%sT # Use Europe/Prague also for Slovakia. @@ -2016,7 +2028,7 @@ Rule Neth 1938 1939 - May 15 2:00s 1:00 S Rule Neth 1945 only - Apr 2 2:00s 1:00 S Rule Neth 1945 only - Sep 16 2:00s 0 - # -# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted +# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted # below because the current format requires GMTOFF to be an integer. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Amsterdam 0:19:32 - LMT 1835 Modified: head/contrib/tzdata/theory.html ============================================================================== --- head/contrib/tzdata/theory.html Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/theory.html Fri May 4 10:17:27 2018 (r333247) @@ -32,7 +32,7 @@ all computer-based clocks that track civil time. It organizes time zone and daylight saving time data by partitioning the world into regions -whose clocks all agree about timestamps that occur after the of the POSIX Epoch (1970-01-01 00:00:00 backzone that is distributed along with the database proper, this file is less reliable and does not necessarily follow database guidelines. @@ -68,7 +68,7 @@ standard for UNIX-like systems. As of this writing, the current edition of POSIX is: The Open -Group Base Specifications Issue 7, IEEE Std 1003.1-2008, 2016 +Group Base Specifications Issue 7, IEEE Std 1003.1-2017, 2018 Edition. Because the database's scope encompasses real-world changes to civil timekeeping, its model for describing time is more complex than the @@ -79,7 +79,7 @@ flip back and forth between two alternatives, and the can change at times. Whether and when a tz region changes its clock, and even the region's notional base offset from UTC, are variable. -It doesn't even really make sense to talk about a region's +It does not always make sense to talk about a region's "base offset", since it is not necessarily a single number.

    @@ -92,8 +92,8 @@ Each tz region has a unique corresponds to a set of time zone rules. Inexperienced users are not expected to select these names unaided. Distributors should provide documentation and/or a simple selection -interface that explains the names; for one example, see the 'tzselect' -program in the tz code. +interface that explains the names; for one example, see the +tzselect program in the tz code. The Unicode Common Locale Data Repository contains data that may be useful for other selection interfaces. @@ -137,6 +137,9 @@ region. North and South America share the same area, 'America'. Typical names are 'Africa/Cairo', 'America/New_York', and 'Pacific/Honolulu'. +Some names are further qualified to help avoid confusion; for example, +'America/Indiana/Petersburg' distinguishes Petersburg, +Indiana from other Petersburgs in America.

    @@ -159,7 +162,8 @@ in decreasing order of importance: TZ strings. A file name component must not exceed 14 characters or start with '-'. - E.g., prefer 'Brunei' to 'Bandar_Seri_Begawan'. + E.g., prefer Asia/Brunei to + Asia/Bandar_Seri_Begawan. Exceptions: see the discussion of legacy names below.

  • @@ -177,8 +181,8 @@ in decreasing order of importance: name AB (ignoring case), then B must not start with '/', as a regular file cannot have the same name as a directory in POSIX. - For example, 'America/New_York' precludes - 'America/New_York/Bronx'. + For example, America/New_York precludes + America/New_York/Bronx.
  • Uninhabited regions like the North Pole and Bouvet Island @@ -193,50 +197,56 @@ in decreasing order of importance:
  • If all the clocks in a region have agreed since 1970, - don't bother to include more than one location + do not bother to include more than one location even if subregions' clocks disagreed before 1970. Otherwise these tables would become annoyingly large.
  • If a name is ambiguous, use a less ambiguous alternative; e.g., many cities are named San José and Georgetown, so - prefer 'Costa_Rica' to 'San_Jose' and - 'Guyana' to 'Georgetown'. + prefer America/Costa_Rica to + America/San_Jose and America/Guyana + to America/Georgetown.
  • Keep locations compact. Use cities or small islands, not countries or regions, so that any future changes do not split individual locations into different tz regions. - E.g., prefer 'Paris' to 'France', since + E.g., prefer Europe/Paris to Europe/France, + since France has had multiple time zones.
  • - Use mainstream English spelling, e.g., prefer 'Rome' - to 'Roma', and prefer 'Athens' to the - Greek 'Αθήνα' or the Romanized 'Athína'. + Use mainstream English spelling, e.g., prefer + Europe/Rome to Europe/Roma, and + prefer Europe/Athens to the Greek + Europe/Αθήνα or the Romanized + Europe/Athína. The POSIX file name restrictions encourage this guideline.
  • Use the most populous among locations in a region, - e.g., prefer 'Shanghai' to - 'Beijing'. + e.g., prefer Asia/Shanghai to + Asia/Beijing. Among locations with similar populations, pick the best-known - location, e.g., prefer 'Rome' to - 'Milan'. + location, e.g., prefer Europe/Rome to + Europe/Milan.
  • - Use the singular form, e.g., prefer 'Canary' to - 'Canaries'. + Use the singular form, e.g., prefer Atlantic/Canary to + Atlantic/Canaries.
  • Omit common suffixes like '_Islands' and '_City', unless that would lead to ambiguity. - E.g., prefer 'Cayman' to - 'Cayman_Islands' and 'Guatemala' to - 'Guatemala_City', but prefer - 'Mexico_City' to 'Mexico' + E.g., prefer America/Cayman to + America/Cayman_Islands and + America/Guatemala to + America/Guatemala_City, but prefer + America/Mexico_City to + America/Mexico because the country of Mexico has several time zones.
  • @@ -245,13 +255,14 @@ in decreasing order of importance:
  • Omit '.' from abbreviations in names. - E.g., prefer 'St_Helena' to 'St._Helena'. + E.g., prefer Atlantic/St_Helena to + Atlantic/St._Helena.
  • Do not change established names if they only marginally violate the above guidelines. - For example, don't change the existing name 'Rome' to - 'Milan' merely because Milan's population has grown + For example, do not change the existing name Europe/Rome to + Europe/Milan merely because Milan's population has grown to be somewhat greater than Rome's.
  • @@ -318,8 +329,10 @@ in decreasing order of importance: Use three to six characters that are ASCII alphanumerics or '+' or '-'. Previous editions of this database also used characters like - ' ' and '?', but these characters have a - special meaning to the shell and cause commands like + space and '?', but these characters have a + special meaning to the + UNIX shell + and cause commands like 'set `date`' to have unexpected effects. @@ -688,7 +701,7 @@ href="https://www.dissentmagazine.org/blog/booked-a-gl subsecond accuracy is needed.
  • - Civil time was not based on atomic time before 1972, and we don't + Civil time was not based on atomic time before 1972, and we do not know the history of earth's rotation accurately enough to map tzsetwall; - if such code is moved to "old" systems that don't - provide tzsetwall, you won't be able to generate an + if such code is moved to "old" systems that do not + provide tzsetwall, you will not be able to generate an executable program. (These functions also arrange for local wall clock time to be used if tzset is called – directly or - indirectly – and there's no TZ environment + indirectly – and there is no TZ environment variable; portable applications should not, however, rely on this - behavior since it's not the way SVR2 systems behave.) + behavior since it is not the way SVR2 + systems behave.)
  • Negative time_t values are supported, on systems @@ -1040,7 +1055,7 @@ The vestigial APIs are:
  • The 7th Edition UNIX timezone function is not present in this - package; it's impossible to reliably map timezone's + package; it is impossible to reliably map timezone's arguments (a "minutes west of GMT" value and a "daylight saving time in effect" flag) to a time zone abbreviation, and we refuse to guess. @@ -1052,7 +1067,9 @@ The vestigial APIs are: zone abbreviation to use.
  • - The 4.2BSD gettimeofday function is not + The 4.2BSD + gettimeofday function is not used in this package. This formerly let users obtain the current UTC offset and DST flag, but this functionality was removed in @@ -1061,7 +1078,7 @@ The vestigial APIs are:
  • In SVR2, time conversion fails for near-minimum or near-maximum time_t values when doing conversions - for places that don't use UT. + for places that do not use UT. This package takes care to do these conversions correctly. A comment in the source code tells how to get compatibly wrong results. @@ -1155,10 +1172,10 @@ based on guesswork and these guesses may be corrected Calendrical issues are a bit out of scope for a time zone database, but they indicate the sort of problems that we would run into if we extended the time zone database further into the past. -An excellent resource in this area is Nachum Dershowitz and Edward M. -Reingold, Calendrical -Calculations: Third Edition, Cambridge University Press (2008). +An excellent resource in this area is Edward M. Reingold +and Nachum Dershowitz, Calendrical +Calculations: The Ultimate Edition, Cambridge University Press (2018). Other information and sources are given in the file 'calendars' in the tz distribution. They sometimes disagree. @@ -1170,11 +1187,11 @@ They sometimes disagree.

    Some people's work schedules use Mars time. -Jet Propulsion Laboratory (JPL) coordinators have kept Mars time on -and off at least since 1997 for the +Jet Propulsion Laboratory (JPL) coordinators kept Mars time on +and off during the Mars Pathfinder mission. -Some of their family members have also adapted to Mars time. +Some of their family members also adapted to Mars time. Dozens of special Mars watches were built for JPL workers who kept Mars time during the Mars Exploration Rovers mission (2004). These timepieces look like normal Seikos and Citizens but use Mars @@ -1262,7 +1279,7 @@ Sources for time on other planets: Jia-Rui Chong, "Workdays Fit for a Martian", Los Angeles Times - (2004-01-14), pp A1, A20-A21. + (2004-01-14), pp A1, A20–A21.

  • Tom Chmielewski, Modified: head/contrib/tzdata/version ============================================================================== --- head/contrib/tzdata/version Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/version Fri May 4 10:17:27 2018 (r333247) @@ -1 +1 @@ -2018d +2018e Modified: head/contrib/tzdata/ziguard.awk ============================================================================== --- head/contrib/tzdata/ziguard.awk Fri May 4 10:11:18 2018 (r333246) +++ head/contrib/tzdata/ziguard.awk Fri May 4 10:17:27 2018 (r333247) @@ -13,20 +13,31 @@ # rearguard format. BEGIN { - dst_type["vanguard.zi"] = 1 - dst_type["main.zi"] = 1 - dst_type["rearguard.zi"] = 1 + dataform_type["vanguard"] = 1 + dataform_type["main"] = 1 + dataform_type["rearguard"] = 1 - # The command line should set OUTFILE to the name of the output file. - if (!dst_type[outfile]) exit 1 - vanguard = outfile == "vanguard.zi" + # The command line should set DATAFORM. + if (!dataform_type[DATAFORM]) exit 1 + vanguard = DATAFORM == "vanguard" } /^Zone/ { zone = $2 } -outfile != "main.zi" { +DATAFORM != "main" { in_comment = /^#/ + uncomment = comment_out = 0 + # If the line should differ due to Czechoslovakia using negative SAVE values, + # uncomment the desired version and comment out the undesired one. + if (zone == "Europe/Prague" && /1947 Feb 23/) { + if (($(in_comment + 2) != "-") == vanguard) { + uncomment = in_comment + } else { + comment_out = !in_comment + } + } + # If this line should differ due to Ireland using negative SAVE values, # uncomment the desired version and comment out the undesired one. Rule_Eire = /^#?Rule[\t ]+Eire[\t ]/ @@ -37,10 +48,37 @@ outfile != "main.zi" { if ((Rule_Eire \ || (Zone_Dublin_post_1968 && $(in_comment + 3) == "IST/GMT")) \ == vanguard) { - sub(/^#/, "") - } else if (/^[^#]/) { - sub(/^/, "#") + uncomment = in_comment + } else { + comment_out = !in_comment } + } + + # If this line should differ due to Namibia using Rule SAVE suffixes, + # uncomment the desired version and comment out the undesired one. + Rule_Namibia = /^#?Rule[\t ]+Namibia[\t ]/ + Zone_using_Namibia_rule \ + = (zone == "Africa/Windhoek" \ + && ($(in_comment + 2) == "Namibia" \ + || (1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \ + || in_comment + 3 == NF)) + if (Rule_Namibia || Zone_using_Namibia_rule) { + if ((Rule_Namibia \ + ? ($(in_comment + 9) ~ /^-/ \ + || ($(in_comment + 9) == 0 && $(in_comment + 10) == "CAT")) \ + : $(in_comment + 1) == "2:00" && $(in_comment + 2) == "Namibia") \ + == vanguard) { + uncomment = in_comment + } else { + comment_out = !in_comment + } + } + + if (uncomment) { + sub(/^#/, "") + } + if (comment_out) { + sub(/^/, "#") } } From owner-svn-src-all@freebsd.org Fri May 4 10:52:18 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6BFD8FA9357; Fri, 4 May 2018 10:52:18 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1A11E79158; Fri, 4 May 2018 10:52:18 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 151A75F55; Fri, 4 May 2018 10:52:18 +0000 (UTC) (envelope-from philip@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44AqHI1032402; Fri, 4 May 2018 10:52:17 GMT (envelope-from philip@FreeBSD.org) Received: (from philip@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44AqHK2032401; Fri, 4 May 2018 10:52:17 GMT (envelope-from philip@FreeBSD.org) Message-Id: <201805041052.w44AqHK2032401@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: philip set sender to philip@FreeBSD.org using -f From: Philip Paeps Date: Fri, 4 May 2018 10:52:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333248 - head X-SVN-Group: head X-SVN-Commit-Author: philip X-SVN-Commit-Paths: head X-SVN-Commit-Revision: 333248 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 10:52:18 -0000 Author: philip Date: Fri May 4 10:52:17 2018 New Revision: 333248 URL: https://svnweb.freebsd.org/changeset/base/333248 Log: Point out that the tzdata 2018e update brings in negative DST for certain time zones. This does not affect the vast majority of users who do not care about (or even know about) the tm_isdst flag but may be slightly surprising to those with a more specialised interest in time zone arcana. MFC after: 3 days Modified: head/UPDATING Modified: head/UPDATING ============================================================================== --- head/UPDATING Fri May 4 10:17:27 2018 (r333247) +++ head/UPDATING Fri May 4 10:52:17 2018 (r333248) @@ -51,6 +51,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20180504: + The tz database (tzdb) has been updated to 2018e. This version more + correctly models time stamps in time zones with negative DST such as + Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and + Africa/Windhoek (1994/2017). This does not affect the UT offsets, only + time zone abbreviations and the tm_isdst flag. + 20180502: The ixgb(4) driver has been removed. This driver was for an early and uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel From owner-svn-src-all@freebsd.org Fri May 4 13:41:00 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 37BC9FAE09A; Fri, 4 May 2018 13:41:00 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DB0707CF92; Fri, 4 May 2018 13:40:59 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D480F7A60; Fri, 4 May 2018 13:40:59 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44Dexue015833; Fri, 4 May 2018 13:40:59 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44DexQk015832; Fri, 4 May 2018 13:40:59 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805041340.w44DexQk015832@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 4 May 2018 13:40:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r333249 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Commit-Revision: 333249 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 13:41:00 -0000 Author: emaste Date: Fri May 4 13:40:59 2018 New Revision: 333249 URL: https://svnweb.freebsd.org/changeset/base/333249 Log: MFC r333234: zfs_ioctl: avoid out-of-bound read admbugs: 796 Submitted by: Domagoj Stolfa Reported by: Ilja Van Sprundel Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 4 10:52:17 2018 (r333248) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 4 13:40:59 2018 (r333249) @@ -6275,6 +6275,10 @@ zfsdev_ioctl(struct cdev *dev, u_long zcmd, caddr_t ar cflag = ZFS_CMD_COMPAT_V28; break; case sizeof(zfs_cmd_v15_t): + if (cmd >= sizeof(zfs_ioctl_v15_to_v28) / + sizeof(zfs_ioctl_v15_to_v28[0])) + return (EINVAL); + cflag = ZFS_CMD_COMPAT_V15; vecnum = zfs_ioctl_v15_to_v28[cmd]; From owner-svn-src-all@freebsd.org Fri May 4 14:07:18 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D6EDAFAE7A3; Fri, 4 May 2018 14:07:18 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 31B258343E; Fri, 4 May 2018 14:07:17 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w44E7FhU042499; Fri, 4 May 2018 07:07:15 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w44E7EHg042498; Fri, 4 May 2018 07:07:14 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201805041407.w44E7EHg042498@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r333242 - head/sys/kern In-Reply-To: <201805040651.w446p2iB010839@repo.freebsd.org> To: Matt Macy Date: Fri, 4 May 2018 07:07:14 -0700 (PDT) CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 14:07:19 -0000 > Author: mmacy > Date: Fri May 4 06:51:01 2018 > New Revision: 333242 > URL: https://svnweb.freebsd.org/changeset/base/333242 > > Log: > `dup1_processes -t 96 -s 5` on a dual 8160 > > x dup_before > + dup_after > +------------------------------------------------------------+ > | x + | > |x x x x ++ ++| > | |____AM___| |AM|| > +------------------------------------------------------------+ > N Min Max Median Avg Stddev > x 5 1.514954e+08 1.5230351e+08 1.5206157e+08 1.5199371e+08 341205.71 > + 5 1.5494336e+08 1.5519569e+08 1.5511982e+08 1.5508323e+08 96232.829 > Difference at 95.0% confidence > 3.08952e+06 +/- 365604 > 2.03266% +/- 0.245071% > (Student's t, pooled s = 250681) Um, a benchmark result is not a very good commit message, how about something along the lines of: Use memcpy over struct and bcopy to improve performance. > > Reported by: mjg@ > MFC after: 1 week Missing Approved by: sbruno? > Modified: > head/sys/kern/kern_descrip.c > > Modified: head/sys/kern/kern_descrip.c > ============================================================================== > --- head/sys/kern/kern_descrip.c Fri May 4 04:05:07 2018 (r333241) > +++ head/sys/kern/kern_descrip.c Fri May 4 06:51:01 2018 (r333242) > @@ -1503,7 +1503,7 @@ filecaps_copy(const struct filecaps *src, struct filec > > if (src->fc_ioctls != NULL && !locked) > return (false); > - *dst = *src; > + memcpy(dst, src, sizeof(*src)); > if (src->fc_ioctls == NULL) > return (true); > > @@ -1512,7 +1512,7 @@ filecaps_copy(const struct filecaps *src, struct filec > > size = sizeof(src->fc_ioctls[0]) * src->fc_nioctls; > dst->fc_ioctls = malloc(size, M_FILECAPS, M_WAITOK); > - bcopy(src->fc_ioctls, dst->fc_ioctls, size); > + memcpy(dst->fc_ioctls, src->fc_ioctls, size); > return (true); > } > > > -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Fri May 4 14:38:49 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AC40CFAF06A; Fri, 4 May 2018 14:38:49 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 54B746A161; Fri, 4 May 2018 14:38:49 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 492D01031A; Fri, 4 May 2018 14:38:49 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44Ecnk5045181; Fri, 4 May 2018 14:38:49 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44Ecn7Z045179; Fri, 4 May 2018 14:38:49 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201805041438.w44Ecn7Z045179@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Fri, 4 May 2018 14:38:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333250 - head/sys/dts/arm/overlays X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/sys/dts/arm/overlays X-SVN-Commit-Revision: 333250 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 14:38:49 -0000 Author: kevans Date: Fri May 4 14:38:48 2018 New Revision: 333250 URL: https://svnweb.freebsd.org/changeset/base/333250 Log: arm: overlays: Update to new path-based sugar format Modified: head/sys/dts/arm/overlays/sun8i-a83t-sid.dtso head/sys/dts/arm/overlays/sun8i-h3-sid.dtso Modified: head/sys/dts/arm/overlays/sun8i-a83t-sid.dtso ============================================================================== --- head/sys/dts/arm/overlays/sun8i-a83t-sid.dtso Fri May 4 13:40:59 2018 (r333249) +++ head/sys/dts/arm/overlays/sun8i-a83t-sid.dtso Fri May 4 14:38:48 2018 (r333250) @@ -3,15 +3,12 @@ / { compatible = "allwinner,sun8i-a83t"; +}; - fragment@0 { - target-path = "/soc"; - __overlay__ { - sid: eeprom@1c14000 { - compatible = "allwinner,sun8i-a83t-sid"; - reg = <0x1c14000 0x400>; - status = "okay"; - }; - }; +&{/soc} { + sid: eeprom@1c14000 { + compatible = "allwinner,sun8i-a83t-sid"; + reg = <0x1c14000 0x400>; + status = "okay"; }; }; Modified: head/sys/dts/arm/overlays/sun8i-h3-sid.dtso ============================================================================== --- head/sys/dts/arm/overlays/sun8i-h3-sid.dtso Fri May 4 13:40:59 2018 (r333249) +++ head/sys/dts/arm/overlays/sun8i-h3-sid.dtso Fri May 4 14:38:48 2018 (r333250) @@ -3,16 +3,12 @@ / { compatible = "allwinner,sun8i-h3"; +}; - fragment@0 { - target-path = "/soc"; - - __overlay__ { - sid: eeprom@1c14000 { - compatible = "allwinner,sun8i-h3-sid"; - reg = <0x1c14000 0x400>; - status = "okay"; - }; - }; +&{/soc} { + sid: eeprom@1c14000 { + compatible = "allwinner,sun8i-h3-sid"; + reg = <0x1c14000 0x400>; + status = "okay"; }; }; From owner-svn-src-all@freebsd.org Fri May 4 14:39:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AE30AFAF0DC; Fri, 4 May 2018 14:39:32 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5C6166A88B; Fri, 4 May 2018 14:39:32 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5750A1031B; Fri, 4 May 2018 14:39:32 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44EdWxh045250; Fri, 4 May 2018 14:39:32 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44EdWho045249; Fri, 4 May 2018 14:39:32 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201805041439.w44EdWho045249@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Fri, 4 May 2018 14:39:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333251 - head/usr.bin/time X-SVN-Group: head X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: head/usr.bin/time X-SVN-Commit-Revision: 333251 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 14:39:32 -0000 Author: asomers Date: Fri May 4 14:39:32 2018 New Revision: 333251 URL: https://svnweb.freebsd.org/changeset/base/333251 Log: time(1): use the monotonic clock The monotonic clock is more appropriate than the realtime clock for measuring durations. Reviewed by: ken, jilles Differential Revision: https://reviews.freebsd.org/D14032 Modified: head/usr.bin/time/time.c Modified: head/usr.bin/time/time.c ============================================================================== --- head/usr.bin/time/time.c Fri May 4 14:38:48 2018 (r333250) +++ head/usr.bin/time/time.c Fri May 4 14:39:32 2018 (r333251) @@ -121,7 +121,7 @@ main(int argc, char **argv) setvbuf(out, (char *)NULL, _IONBF, (size_t)0); } - if (clock_gettime(CLOCK_REALTIME, &before_ts)) + if (clock_gettime(CLOCK_MONOTONIC, &before_ts)) err(1, "clock_gettime"); switch(pid = fork()) { case -1: /* error */ @@ -141,13 +141,13 @@ main(int argc, char **argv) while (wait4(pid, &status, 0, &ru) != pid) { if (siginfo_recvd) { siginfo_recvd = 0; - if (clock_gettime(CLOCK_REALTIME, &after)) + if (clock_gettime(CLOCK_MONOTONIC, &after)) err(1, "clock_gettime"); getrusage(RUSAGE_CHILDREN, &ru); showtime(stdout, &before_ts, &after, &ru); } } - if (clock_gettime(CLOCK_REALTIME, &after)) + if (clock_gettime(CLOCK_MONOTONIC, &after)) err(1, "clock_gettime"); if ( ! WIFEXITED(status)) warnx("command terminated abnormally"); From owner-svn-src-all@freebsd.org Fri May 4 14:49:38 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6DE0EFAF45B; Fri, 4 May 2018 14:49:38 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 224256B4A2; Fri, 4 May 2018 14:49:38 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 19441104BD; Fri, 4 May 2018 14:49:38 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44EnbaA050234; Fri, 4 May 2018 14:49:37 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44EnbDI050233; Fri, 4 May 2018 14:49:37 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201805041449.w44EnbDI050233@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 4 May 2018 14:49:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r333252 - stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-11 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Commit-Revision: 333252 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 14:49:38 -0000 Author: emaste Date: Fri May 4 14:49:37 2018 New Revision: 333252 URL: https://svnweb.freebsd.org/changeset/base/333252 Log: MFC r333234: zfs_ioctl: avoid out-of-bound read admbugs: 796 Submitted by: Domagoj Stolfa Reported by: Ilja Van Sprundel Approved by: re (early MFC as an EN candidate) Modified: stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 4 14:39:32 2018 (r333251) +++ stable/11/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 4 14:49:37 2018 (r333252) @@ -6441,6 +6441,10 @@ zfsdev_ioctl(struct cdev *dev, u_long zcmd, caddr_t ar cflag = ZFS_CMD_COMPAT_V28; break; case sizeof(zfs_cmd_v15_t): + if (cmd >= sizeof(zfs_ioctl_v15_to_v28) / + sizeof(zfs_ioctl_v15_to_v28[0])) + return (EINVAL); + cflag = ZFS_CMD_COMPAT_V15; vecnum = zfs_ioctl_v15_to_v28[cmd]; From owner-svn-src-all@freebsd.org Fri May 4 15:11:17 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F05EAFAFAF8; Fri, 4 May 2018 15:11:16 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9E6D66E89E; Fri, 4 May 2018 15:11:16 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 997A510822; Fri, 4 May 2018 15:11:16 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44FBGpd060909; Fri, 4 May 2018 15:11:16 GMT (envelope-from shurd@FreeBSD.org) Received: (from shurd@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44FBG3F060908; Fri, 4 May 2018 15:11:16 GMT (envelope-from shurd@FreeBSD.org) Message-Id: <201805041511.w44FBG3F060908@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: shurd set sender to shurd@FreeBSD.org using -f From: Stephen Hurd Date: Fri, 4 May 2018 15:11:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333253 - head/sys/net X-SVN-Group: head X-SVN-Commit-Author: shurd X-SVN-Commit-Paths: head/sys/net X-SVN-Commit-Revision: 333253 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 15:11:17 -0000 Author: shurd Date: Fri May 4 15:11:16 2018 New Revision: 333253 URL: https://svnweb.freebsd.org/changeset/base/333253 Log: iflib: remove unused brscp pointer from iflib_queues_alloc This pointer was no longer written to as of r315217. Since nothing writes to the variable, remove it. Submitted by: Jacob Keller Reviewed by: gallatin, kmacy, sbruno Differential Revision: https://reviews.freebsd.org/D15284 Modified: head/sys/net/iflib.c Modified: head/sys/net/iflib.c ============================================================================== --- head/sys/net/iflib.c Fri May 4 14:49:37 2018 (r333252) +++ head/sys/net/iflib.c Fri May 4 15:11:16 2018 (r333253) @@ -4773,12 +4773,10 @@ iflib_queues_alloc(if_ctx_t ctx) int nfree_lists = sctx->isc_nfl ? sctx->isc_nfl : 1; caddr_t *vaddrs; uint64_t *paddrs; - struct ifmp_ring **brscp; KASSERT(ntxqs > 0, ("number of queues per qset must be at least 1")); KASSERT(nrxqs > 0, ("number of queues per qset must be at least 1")); - brscp = NULL; txq = NULL; rxq = NULL; @@ -4966,8 +4964,6 @@ err_tx_desc: free(ctx->ifc_txqs, M_IFLIB); ctx->ifc_txqs = NULL; rx_fail: - if (brscp != NULL) - free(brscp, M_IFLIB); if (rxq != NULL) free(rxq, M_IFLIB); if (txq != NULL) From owner-svn-src-all@freebsd.org Fri May 4 15:20:35 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5BD49FAFCAB; Fri, 4 May 2018 15:20:35 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0A8C770FE0; Fri, 4 May 2018 15:20:35 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0595B1098B; Fri, 4 May 2018 15:20:35 +0000 (UTC) (envelope-from shurd@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44FKY1L065357; Fri, 4 May 2018 15:20:34 GMT (envelope-from shurd@FreeBSD.org) Received: (from shurd@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44FKYqI065356; Fri, 4 May 2018 15:20:34 GMT (envelope-from shurd@FreeBSD.org) Message-Id: <201805041520.w44FKYqI065356@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: shurd set sender to shurd@FreeBSD.org using -f From: Stephen Hurd Date: Fri, 4 May 2018 15:20:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333254 - head/sys/net X-SVN-Group: head X-SVN-Commit-Author: shurd X-SVN-Commit-Paths: head/sys/net X-SVN-Commit-Revision: 333254 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 15:20:35 -0000 Author: shurd Date: Fri May 4 15:20:34 2018 New Revision: 333254 URL: https://svnweb.freebsd.org/changeset/base/333254 Log: iflib: fix invalid free during queue allocation failure In r301567, code was added to cleanup to prevent memory leaks for the Tx and Rx ring structs. This code carefully tracked txq and rxq, and made sure to free them properly during cleanup. Because we assigned the txq and rxq pointers into the ctx->ifc_txqs and ctx->ifc_rxqs, we carefully reset these pointers to NULL, so that cleanup code would not accidentally free the memory twice. This was changed by r304021 ("Update iflib to support more NIC designs"), which removed this resetting of the pointers to NULL, because it re-used the txq and rxq pointers as an index into the queue set array. Unfortunately, the cleanup code was left alone. Thus, if we fail to allocate DMA or fail to configure the queues using the drivers ifdi methods, we will attempt to free txq and rxq. These variables would now incorrectly point to the wrong location, resulting in a page fault. There are a number of methods to correct this, but ultimately the root cause was that we reuse the txq and rxq pointers for two different purposes. Instead, when allocating, store the returned pointer directly into ctx->ifc_txqs and ctx->ifc_rxqs. Then, assign this to txq and rxq as index pointers before starting the loop to allocate each queue. Drop the cleanup code for txq and rxq, and only use ctx->ifc_txqs and ctx->ifc_rxqs. Thus, we no longer need to free txq or rxq under any error flow, and intsead rely solely on the pointers stored in ctx->ifc_txqs and ctx->ifc_rxqs. This prevents the invalid free(), and ensures that we still properly cleanup after ourselves as before when failing to allocate. Submitted by: Jacob Keller Reviewed by: gallatin, sbruno Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D15285 Modified: head/sys/net/iflib.c Modified: head/sys/net/iflib.c ============================================================================== --- head/sys/net/iflib.c Fri May 4 15:11:16 2018 (r333253) +++ head/sys/net/iflib.c Fri May 4 15:20:34 2018 (r333254) @@ -4777,11 +4777,8 @@ iflib_queues_alloc(if_ctx_t ctx) KASSERT(ntxqs > 0, ("number of queues per qset must be at least 1")); KASSERT(nrxqs > 0, ("number of queues per qset must be at least 1")); - txq = NULL; - rxq = NULL; - /* Allocate the TX ring struct memory */ - if (!(txq = + if (!(ctx->ifc_txqs = (iflib_txq_t) malloc(sizeof(struct iflib_txq) * ntxqsets, M_IFLIB, M_NOWAIT | M_ZERO))) { device_printf(dev, "Unable to allocate TX ring memory\n"); @@ -4790,7 +4787,7 @@ iflib_queues_alloc(if_ctx_t ctx) } /* Now allocate the RX */ - if (!(rxq = + if (!(ctx->ifc_rxqs = (iflib_rxq_t) malloc(sizeof(struct iflib_rxq) * nrxqsets, M_IFLIB, M_NOWAIT | M_ZERO))) { device_printf(dev, "Unable to allocate RX ring memory\n"); @@ -4798,8 +4795,8 @@ iflib_queues_alloc(if_ctx_t ctx) goto rx_fail; } - ctx->ifc_txqs = txq; - ctx->ifc_rxqs = rxq; + txq = ctx->ifc_txqs; + rxq = ctx->ifc_rxqs; /* * XXX handle allocation failure @@ -4957,17 +4954,13 @@ iflib_queues_alloc(if_ctx_t ctx) /* XXX handle allocation failure changes */ err_rx_desc: err_tx_desc: +rx_fail: if (ctx->ifc_rxqs != NULL) free(ctx->ifc_rxqs, M_IFLIB); ctx->ifc_rxqs = NULL; if (ctx->ifc_txqs != NULL) free(ctx->ifc_txqs, M_IFLIB); ctx->ifc_txqs = NULL; -rx_fail: - if (rxq != NULL) - free(rxq, M_IFLIB); - if (txq != NULL) - free(txq, M_IFLIB); fail: return (err); } From owner-svn-src-all@freebsd.org Fri May 4 15:53:08 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6196AFB0CB8; Fri, 4 May 2018 15:53:08 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Received: from spindle.one-eyed-alien.net (spindle.one-eyed-alien.net [199.48.129.229]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 984B9792DF; Fri, 4 May 2018 15:53:07 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Received: by spindle.one-eyed-alien.net (Postfix, from userid 3001) id 49E695A9F12; Fri, 4 May 2018 15:53:01 +0000 (UTC) Date: Fri, 4 May 2018 15:53:01 +0000 From: Brooks Davis To: Mateusz Guzik Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys Message-ID: <20180504155301.GA56280@spindle.one-eyed-alien.net> References: <201805040400.w4440moH025057@repo.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="r5Pyd7+fXNt84Ff3" Content-Disposition: inline In-Reply-To: <201805040400.w4440moH025057@repo.freebsd.org> User-Agent: Mutt/1.9.4 (2018-02-28) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 15:53:08 -0000 --r5Pyd7+fXNt84Ff3 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, May 04, 2018 at 04:00:48AM +0000, Mateusz Guzik wrote: > Author: mjg > Date: Fri May 4 04:00:48 2018 > New Revision: 333240 > URL: https://svnweb.freebsd.org/changeset/base/333240 >=20 > Log: > Allow __builtin_memmove instead of bcopy for small buffers of known size What is the justification for forcing a size rather than using the compiler's built-in fallback to memmove? Is the kernel compilation environment disabling that? -- Brooks --r5Pyd7+fXNt84Ff3 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEcBAEBAgAGBQJa7IHcAAoJEKzQXbSebgfAOeQH/jZeWm52/PIApAvo21GWfHNj ccHIcXS5HekTTL/66GCCzPJTsBANrtNZEE9sAkTy4+FTMzhGm0r1DkShEF1yqeow w8oRLEOl4G726LxWtF+4GHrlEOZPyqLjtw0FKrZo01M9We1gqvF5HsGLA3evtSpp AToE9zzZkkC3DHjjtQsnyBGGCXLSPjoHfKlLfAIozR2jhoKB7qKFxbPVH/6h95bY lLBheSWIZZvGWPw3c23wyT0auAbx/TMXdjDoYitNGeMb6mRc5H3ZRHGlToKvfDS9 lskFOmGXLVeXASADQbfjWfZ+JaQeyfMOgf2a/xBlcCFRcOjB67Syqd5oFsOsxzI= =GWsD -----END PGP SIGNATURE----- --r5Pyd7+fXNt84Ff3-- From owner-svn-src-all@freebsd.org Fri May 4 16:14:17 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7E343FB13DA; Fri, 4 May 2018 16:14:17 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: from mail-it0-f48.google.com (mail-it0-f48.google.com [209.85.214.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1C3F97C55E; Fri, 4 May 2018 16:14:16 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: by mail-it0-f48.google.com with SMTP id f65-v6so3992897itd.3; Fri, 04 May 2018 09:14:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:in-reply-to:references :from:date:message-id:subject:to:cc; bh=egYJmxFge7teY5kISE9BeoqDdCRisZGiSmA6c2QWN38=; b=CnlFqX33cdVDh7TUawx1YqXiGEZz7p/x1FwcoJmbZVwn/1IbNVoqnz9lKs6W0XelzV Aw9X3bOTuO/tx/pO1jNXS5HTQq3ComVGGwRYhf+JgUt54t6N3h37WCn9zaq6PNha3hJR TmBoFFdRPLdr5eExf805nYU3w3nqU+9zkSFIXwzjslGtjmGti5guUG1Fsewf3eWNafgl Vgo3RX1zhJulcqjBTmLmeMPjGjNfyO+pZhUw/p6cML8ZqUChhFmgYTqwfdoRodrdiD8D 0nY+tbuwmAOIRx50A/VIKZPuFtxK0rokwWuLQZmcmlWdIPnW+/o7u73Ux6FeSld0F4tQ NvuA== X-Gm-Message-State: ALQs6tCz7q3K/0J2hVg9lgvCD+AmOOXMoHuC/2hyQ8AJz0zxNsz5JXrx PFpY0wk//hIRdSABP336tu1Y7fSa X-Google-Smtp-Source: AB8JxZrxNkMnsr+/7UCD/vwLOZ+j7am9qDVzY7XDJDuc7bQ/oWOwDZoGiKYTOobPdcWGkxti2d05iQ== X-Received: by 2002:a24:f983:: with SMTP id l125-v6mr27910218ith.96.1525450455813; Fri, 04 May 2018 09:14:15 -0700 (PDT) Received: from mail-io0-f172.google.com (mail-io0-f172.google.com. [209.85.223.172]) by smtp.gmail.com with ESMTPSA id g1-v6sm1213746itg.27.2018.05.04.09.14.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:14:15 -0700 (PDT) Received: by mail-io0-f172.google.com with SMTP id e20-v6so26258066iof.4; Fri, 04 May 2018 09:14:15 -0700 (PDT) X-Received: by 2002:a6b:da04:: with SMTP id x4-v6mr30213490iob.19.1525450455588; Fri, 04 May 2018 09:14:15 -0700 (PDT) MIME-Version: 1.0 Reply-To: cem@freebsd.org Received: by 2002:a02:a40b:0:0:0:0:0 with HTTP; Fri, 4 May 2018 09:14:15 -0700 (PDT) In-Reply-To: <20180504155301.GA56280@spindle.one-eyed-alien.net> References: <201805040400.w4440moH025057@repo.freebsd.org> <20180504155301.GA56280@spindle.one-eyed-alien.net> From: Conrad Meyer Date: Fri, 4 May 2018 09:14:15 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys To: Brooks Davis Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 16:14:17 -0000 On Fri, May 4, 2018 at 8:53 AM, Brooks Davis wrote: > On Fri, May 04, 2018 at 04:00:48AM +0000, Mateusz Guzik wrote: >> Author: mjg >> Date: Fri May 4 04:00:48 2018 >> New Revision: 333240 >> URL: https://svnweb.freebsd.org/changeset/base/333240 >> >> Log: >> Allow __builtin_memmove instead of bcopy for small buffers of known size > > What is the justification for forcing a size rather than using the > compiler's built-in fallback to memmove? Is the kernel compilation > environment disabling that? Yes. I think the compiler can't use its builtin bcopy() in standalone mode. From owner-svn-src-all@freebsd.org Fri May 4 16:20:52 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 72BA2FB1537; Fri, 4 May 2018 16:20:52 +0000 (UTC) (envelope-from kmacybsd@gmail.com) Received: from mail-ot0-x242.google.com (mail-ot0-x242.google.com [IPv6:2607:f8b0:4003:c0f::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0126F7EEF0; Fri, 4 May 2018 16:20:52 +0000 (UTC) (envelope-from kmacybsd@gmail.com) Received: by mail-ot0-x242.google.com with SMTP id l22-v6so25114708otj.0; Fri, 04 May 2018 09:20:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=5okFOr+OecUDRqzcjddo/dR//BcR+R+IFvb1yJ2+M2I=; b=oBrqdjNKYxQ7KfdVolkNBv9eMy1Exgc20u/67NCMKtHcZGmFvGCTEQwNSvGl7t6ees 7XSIBOdwStMyy0E3sxJLeq5yWZ7ShKVzbxwzRmR9jIn6LeQtMfa0SqqLyeDwttr2vp/y d6v51DsxFST4wyZyi0T5QOULw4oJYJJryfKRjrKBTa5ubqyaE1Hvm0RWoOf+TV3D3Y7v t4SJQp/EutOL3xWBqTzr4uHBiCtgMMUVqXiwUnGNnS5JWy4Jz07OIX/LXc/gNFslihCn fH9B/iiG+O6DZYb1hPD+TwssX27jvRX2ZwF6kmVeTYpDrtuC0U9o9dd4zOWP9bF2Z2wM bzCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=5okFOr+OecUDRqzcjddo/dR//BcR+R+IFvb1yJ2+M2I=; b=UIrO9QGxa/rvhhp7iyjAbKc7aJns7hDcYxpQYOHEDWKV/+hsWIncxRQE7GV6/P3rSb 5iXIEnhadDnkv5uTa5H4/C1NCt9ptlsob7SrhJsFeYeZY6zlXIDTzv8ycrjv3x1QkXhN +0aGvHZGtcM4efSLWCIYydCR4huroeP1n4l0lsly7cnKQm+1bJZ2c6KcMaWcv0bNQuuk y9YidvDDCnq+rVtYWkLDWsqUDfYOcFwXRcJEqXyHkJku9Je98VX6yd2OE9K18PKT3fkc 3/bT9uPSvdfp4BujWeYoGJTyi9tnfXMzR9c19MAYEQ6N7/pKAZWoXx/0WDDvjwRqYZ61 eG4Q== X-Gm-Message-State: ALQs6tCND4ljI62rdKJJNvkgEu/n3cclpUiOIiPuBlOeoF/nVDvM3ewZ IOWCuA+eJLqTS2S6NXOM7SzBPXsNdLRKHRpo2KuvaA== X-Google-Smtp-Source: AB8JxZoEbA+NK/U3R6l5Ga4NbtXgNNKVrJmcbkUY1VpYrS18GPtu2r/bfuxeaXfO7aEAAe/GMnO+Df469Ds9ELaci4s= X-Received: by 2002:a9d:3c0a:: with SMTP id q10-v6mr322946otc.39.1525450851124; Fri, 04 May 2018 09:20:51 -0700 (PDT) MIME-Version: 1.0 Sender: kmacybsd@gmail.com Received: by 2002:a9d:3f0:0:0:0:0:0 with HTTP; Fri, 4 May 2018 09:20:50 -0700 (PDT) In-Reply-To: <201805041407.w44E7EHg042498@pdx.rh.CN85.dnsmgr.net> References: <201805040651.w446p2iB010839@repo.freebsd.org> <201805041407.w44E7EHg042498@pdx.rh.CN85.dnsmgr.net> From: "K. Macy" Date: Fri, 4 May 2018 09:20:50 -0700 X-Google-Sender-Auth: V1EKBN9iHKrLEhw-HC-7c8LDPVs Message-ID: Subject: Re: svn commit: r333242 - head/sys/kern To: rgrimes@freebsd.org Cc: Matt Macy , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 16:20:52 -0000 Yes. Good catch. Thanks. -M > > Missing Approved by: sbruno? > > >> Modified: >> head/sys/kern/kern_descrip.c >> >> Modified: head/sys/kern/kern_descrip.c >> ============================================================================== >> --- head/sys/kern/kern_descrip.c Fri May 4 04:05:07 2018 (r333241) >> +++ head/sys/kern/kern_descrip.c Fri May 4 06:51:01 2018 (r333242) >> @@ -1503,7 +1503,7 @@ filecaps_copy(const struct filecaps *src, struct filec >> >> if (src->fc_ioctls != NULL && !locked) >> return (false); >> - *dst = *src; >> + memcpy(dst, src, sizeof(*src)); >> if (src->fc_ioctls == NULL) >> return (true); >> >> @@ -1512,7 +1512,7 @@ filecaps_copy(const struct filecaps *src, struct filec >> >> size = sizeof(src->fc_ioctls[0]) * src->fc_nioctls; >> dst->fc_ioctls = malloc(size, M_FILECAPS, M_WAITOK); >> - bcopy(src->fc_ioctls, dst->fc_ioctls, size); >> + memcpy(dst->fc_ioctls, src->fc_ioctls, size); >> return (true); >> } >> >> >> > > -- > Rod Grimes rgrimes@freebsd.org > _______________________________________________ > svn-src-head@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/svn-src-head > To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" From owner-svn-src-all@freebsd.org Fri May 4 16:23:55 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1CCE7FB1771; Fri, 4 May 2018 16:23:55 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C4A137F39C; Fri, 4 May 2018 16:23:54 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BFADE11519; Fri, 4 May 2018 16:23:54 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44GNs1T099966; Fri, 4 May 2018 16:23:54 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44GNs6i099965; Fri, 4 May 2018 16:23:54 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201805041623.w44GNs6i099965@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Fri, 4 May 2018 16:23:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333255 - head/sys/arm/freescale/imx X-SVN-Group: head X-SVN-Commit-Author: ian X-SVN-Commit-Paths: head/sys/arm/freescale/imx X-SVN-Commit-Revision: 333255 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 16:23:55 -0000 Author: ian Date: Fri May 4 16:23:54 2018 New Revision: 333255 URL: https://svnweb.freebsd.org/changeset/base/333255 Log: Make reading imx6 gpio pins work correctly whether the pin is in open-drain mode or not. An earlier attempt to make this work was done in r320456, by always reading the pad status register (PSR) instead of the data register. But it turns out the values in PSR only reflect the electrical level of an output pin if the pad is configured with the SION (Set Input On) bit in the pinmux config, and most output gpio pads are not configured that way. So now a gpio read is done by returning the value from the data register, which works right whether the pin is configured for input or output, unless the pin has been set for OPENDRAIN mode, in which case the PSR is read instead. For this to work, the pin must also be configured with SION turned on in the fdt pinmux data, which is a reasonable thing to require for the unusual case of reading an open-drain output pin. Modified: head/sys/arm/freescale/imx/imx_gpio.c Modified: head/sys/arm/freescale/imx/imx_gpio.c ============================================================================== --- head/sys/arm/freescale/imx/imx_gpio.c Fri May 4 15:20:34 2018 (r333254) +++ head/sys/arm/freescale/imx/imx_gpio.c Fri May 4 16:23:54 2018 (r333255) @@ -644,7 +644,20 @@ imx51_gpio_pin_get(device_t dev, uint32_t pin, unsigne if (pin >= sc->gpio_npins) return (EINVAL); - *val = (READ4(sc, IMX_GPIO_PSR_REG) >> pin) & 1; + /* + * Normally a pin set for output can be read by reading the DR reg which + * indicates what value is being driven to that pin. The exception is + * pins configured for open-drain mode, in which case we have to read + * the pad status register in case the pin is being driven externally. + * Doing so requires that the SION bit be configured in pinmux, which + * isn't the case for most normal gpio pins, so only try to read via PSR + * if the OPENDRAIN flag is set, and it's the user's job to correctly + * configure SION along with open-drain output mode for those pins. + */ + if (sc->gpio_pins[pin].gp_flags & GPIO_PIN_OPENDRAIN) + *val = (READ4(sc, IMX_GPIO_PSR_REG) >> pin) & 1; + else + *val = (READ4(sc, IMX_GPIO_DR_REG) >> pin) & 1; return (0); } From owner-svn-src-all@freebsd.org Fri May 4 17:17:32 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1D4ABFB2482; Fri, 4 May 2018 17:17:32 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C57F569B5E; Fri, 4 May 2018 17:17:31 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BF9F911D03; Fri, 4 May 2018 17:17:31 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44HHV8Z025061; Fri, 4 May 2018 17:17:31 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44HHVV5025054; Fri, 4 May 2018 17:17:31 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201805041717.w44HHVV5025054@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Fri, 4 May 2018 17:17:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333256 - in head/sys: kern vm X-SVN-Group: head X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in head/sys: kern vm X-SVN-Commit-Revision: 333256 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 17:17:32 -0000 Author: markj Date: Fri May 4 17:17:30 2018 New Revision: 333256 URL: https://svnweb.freebsd.org/changeset/base/333256 Log: Fix some races introduced in r332974. With r332974, when performing a synchronized access of a page's "queue" field, one must first check whether the page is logically dequeued. If so, then the page lock does not prevent the page from being removed from its page queue. Intoduce vm_page_queue(), which returns the page's logical queue index. In some cases, direct access to the "queue" field is still required, but such accesses should be confined to sys/vm. Reported and tested by: pho Reviewed by: kib Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D15280 Modified: head/sys/kern/kern_sendfile.c head/sys/kern/vfs_bio.c head/sys/vm/vm_object.c head/sys/vm/vm_page.c head/sys/vm/vm_page.h head/sys/vm/vm_pageout.c Modified: head/sys/kern/kern_sendfile.c ============================================================================== --- head/sys/kern/kern_sendfile.c Fri May 4 16:23:54 2018 (r333255) +++ head/sys/kern/kern_sendfile.c Fri May 4 17:17:30 2018 (r333256) @@ -163,7 +163,7 @@ sendfile_free_page(vm_page_t pg, bool nocache) */ if (nocache) vm_page_deactivate_noreuse(pg); - else if (pg->queue == PQ_ACTIVE) + else if (vm_page_active(pg)) vm_page_reference(pg); else vm_page_deactivate(pg); Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Fri May 4 16:23:54 2018 (r333255) +++ head/sys/kern/vfs_bio.c Fri May 4 17:17:30 2018 (r333256) @@ -2933,7 +2933,7 @@ vfs_vmio_unwire(struct buf *bp, vm_page_t m) */ if (m->valid == 0 || (bp->b_flags & B_NOREUSE) != 0) vm_page_deactivate_noreuse(m); - else if (m->queue == PQ_ACTIVE) + else if (vm_page_active(m)) vm_page_reference(m); else vm_page_deactivate(m); Modified: head/sys/vm/vm_object.c ============================================================================== --- head/sys/vm/vm_object.c Fri May 4 16:23:54 2018 (r333255) +++ head/sys/vm/vm_object.c Fri May 4 17:17:30 2018 (r333256) @@ -2379,9 +2379,9 @@ sysctl_vm_object_list(SYSCTL_HANDLER_ARGS) * sysctl is only meant to give an * approximation of the system anyway. */ - if (vm_page_active(m)) + if (m->queue == PQ_ACTIVE) kvo->kvo_active++; - else if (vm_page_inactive(m)) + else if (m->queue == PQ_INACTIVE) kvo->kvo_inactive++; } Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Fri May 4 16:23:54 2018 (r333255) +++ head/sys/vm/vm_page.c Fri May 4 17:17:30 2018 (r333256) @@ -2403,7 +2403,7 @@ retry: vm_reserv_size(level)) - pa); #endif } else if (object->memattr == VM_MEMATTR_DEFAULT && - vm_page_enqueued(m) && !vm_page_busied(m)) { + vm_page_queue(m) != PQ_NONE && !vm_page_busied(m)) { /* * The page is allocated but eligible for * relocation. Extend the current run by one @@ -2554,7 +2554,8 @@ retry: error = EINVAL; else if (object->memattr != VM_MEMATTR_DEFAULT) error = EINVAL; - else if (vm_page_enqueued(m) && !vm_page_busied(m)) { + else if (vm_page_queue(m) != PQ_NONE && + !vm_page_busied(m)) { KASSERT(pmap_page_get_memattr(m) == VM_MEMATTR_DEFAULT, ("page %p has an unexpected memattr", m)); @@ -3391,9 +3392,9 @@ vm_page_activate(vm_page_t m) { int queue; - vm_page_lock_assert(m, MA_OWNED); + vm_page_assert_locked(m); - if ((queue = m->queue) == PQ_ACTIVE || m->wire_count > 0 || + if ((queue = vm_page_queue(m)) == PQ_ACTIVE || m->wire_count > 0 || (m->oflags & VPO_UNMANAGED) != 0) { if (queue == PQ_ACTIVE && m->act_count < ACT_INIT) m->act_count = ACT_INIT; @@ -3610,7 +3611,7 @@ vm_page_unwire(vm_page_t m, uint8_t queue) if (!unwired || (m->oflags & VPO_UNMANAGED) != 0 || m->object == NULL) return (unwired); - if (m->queue == queue) { + if (vm_page_queue(m) == queue) { if (queue == PQ_ACTIVE) vm_page_reference(m); else if (queue != PQ_NONE) @@ -3716,7 +3717,7 @@ vm_page_launder(vm_page_t m) if (m->wire_count > 0 || (m->oflags & VPO_UNMANAGED) != 0) return; - if (m->queue == PQ_LAUNDRY) + if (vm_page_in_laundry(m)) vm_page_requeue(m); else { vm_page_remque(m); Modified: head/sys/vm/vm_page.h ============================================================================== --- head/sys/vm/vm_page.h Fri May 4 16:23:54 2018 (r333255) +++ head/sys/vm/vm_page.h Fri May 4 17:17:30 2018 (r333256) @@ -785,43 +785,45 @@ vm_page_replace_checked(vm_page_t mnew, vm_object_t ob (void)mret; } -static inline bool -vm_page_active(vm_page_t m) +/* + * vm_page_queue: + * + * Return the index of the queue containing m. This index is guaranteed + * not to change while the page lock is held. + */ +static inline uint8_t +vm_page_queue(vm_page_t m) { - return (m->queue == PQ_ACTIVE); + vm_page_assert_locked(m); + + if ((m->aflags & PGA_DEQUEUE) != 0) + return (PQ_NONE); + atomic_thread_fence_acq(); + return (m->queue); } static inline bool -vm_page_inactive(vm_page_t m) +vm_page_active(vm_page_t m) { - return (m->queue == PQ_INACTIVE); + return (vm_page_queue(m) == PQ_ACTIVE); } static inline bool -vm_page_in_laundry(vm_page_t m) +vm_page_inactive(vm_page_t m) { - return (m->queue == PQ_LAUNDRY || m->queue == PQ_UNSWAPPABLE); + return (vm_page_queue(m) == PQ_INACTIVE); } -/* - * vm_page_enqueued: - * - * Return true if the page is logically enqueued and no deferred - * dequeue is pending. - */ static inline bool -vm_page_enqueued(vm_page_t m) +vm_page_in_laundry(vm_page_t m) { + uint8_t queue; - vm_page_assert_locked(m); - - if ((m->aflags & PGA_DEQUEUE) != 0) - return (false); - atomic_thread_fence_acq(); - return (m->queue != PQ_NONE); + queue = vm_page_queue(m); + return (queue == PQ_LAUNDRY || queue == PQ_UNSWAPPABLE); } /* Modified: head/sys/vm/vm_pageout.c ============================================================================== --- head/sys/vm/vm_pageout.c Fri May 4 16:23:54 2018 (r333255) +++ head/sys/vm/vm_pageout.c Fri May 4 17:17:30 2018 (r333256) @@ -384,12 +384,12 @@ more: break; } vm_page_test_dirty(p); - if (p->dirty == 0 || !vm_page_in_laundry(p)) { + if (p->dirty == 0) { ib = 0; break; } vm_page_lock(p); - if (vm_page_held(p)) { + if (vm_page_held(p) || !vm_page_in_laundry(p)) { vm_page_unlock(p); ib = 0; break; @@ -412,10 +412,10 @@ more: if ((p = vm_page_next(ps)) == NULL || vm_page_busied(p)) break; vm_page_test_dirty(p); - if (p->dirty == 0 || !vm_page_in_laundry(p)) + if (p->dirty == 0) break; vm_page_lock(p); - if (vm_page_held(p)) { + if (vm_page_held(p) || !vm_page_in_laundry(p)) { vm_page_unlock(p); break; } @@ -1129,7 +1129,7 @@ vm_pageout_reinsert_inactive_page(struct scan_state *s { struct vm_domain *vmd; - if (!vm_page_inactive(m) || (m->aflags & PGA_ENQUEUED) != 0) + if (m->queue != PQ_INACTIVE || (m->aflags & PGA_ENQUEUED) != 0) return (0); vm_page_aflag_set(m, PGA_ENQUEUED); if ((m->aflags & PGA_REQUEUE_HEAD) != 0) { From owner-svn-src-all@freebsd.org Fri May 4 17:28:45 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 341C0FB288E; Fri, 4 May 2018 17:28:45 +0000 (UTC) (envelope-from sbruno@freebsd.org) Received: from mail.ignoranthack.me (ignoranthack.me [199.102.79.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B6FDC6D458; Fri, 4 May 2018 17:28:44 +0000 (UTC) (envelope-from sbruno@freebsd.org) Received: from [192.168.0.6] (67-0-214-163.albq.qwest.net [67.0.214.163]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: sbruno@ignoranthack.me) by mail.ignoranthack.me (Postfix) with ESMTPSA id 10CA219426D; Fri, 4 May 2018 09:17:32 +0000 (UTC) Subject: Re: svn commit: r333242 - head/sys/kern To: "K. Macy" , rgrimes@freebsd.org Cc: Matt Macy , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers References: <201805040651.w446p2iB010839@repo.freebsd.org> <201805041407.w44E7EHg042498@pdx.rh.CN85.dnsmgr.net> From: Sean Bruno Openpgp: preference=signencrypt Autocrypt: addr=sbruno@freebsd.org; prefer-encrypt=mutual; keydata= xsBNBFk+0UEBCADaf4bgxxKvMOhRV5NPoGWRCCGm49d6+1VFNlQ77WsY/+Zvf95TPULdRlnG w648KfxWt7+O3kdKhdRwnqlXWC7zA2Qt0dRE1yIqOGJ4jp4INvp/bcxWzgr0aoKOjrlnfxRV bh+s0rzdZt6TsNL3cVYxkC8oezjaUkHdW4mFJU249U1QJogkF8g0FeKNfEcjEkwJNX6lQJH+ EzCWT0NCk6J+Xyo+zOOljxPp1OUfdvZi3ulkU/qTZstGVWxFVsP8xQklV/y3AFcbIYx6iGJ4 5L7WuB0IWhO7Z4yHENr8wFaNYwpod9i4egX2BugbrM8pOfhN2/qqdeG1L5LMtXw3yyAhABEB AAHNN1NlYW4gQnJ1bm8gKEZyZWVCU0QgRGV2ZWxvcGVyIEtleSkgPHNicnVub0BmcmVlYnNk Lm9yZz7CwJQEEwEKAD4WIQToxOn4gDUE4eP0ujS95PX+ibX8tgUCWT7RQQIbAwUJBaOagAUL CQgHAwUVCgkICwUWAwIBAAIeAQIXgAAKCRC95PX+ibX8ttKTCACFKzRc56EBAlVotq02EjZP SfX+unlk6AuPBzShxqRxeK+bGYVCigrYd1M8nnskv0dEiZ5iYeND9HIxbpEyopqgpVTibA7w gBXaZ7SOEhNX1wXwg14JrralfSmPFMYni+sWegPMX/zwfAsn1z4mG1Nn44Xqo3o7CfpkMPy6 M5Bow2IDzIhEYISLR+urxs74/aHU35PLtBSDtu18914SEMDdva27MARN8mbeCDbuJVfGCPWy YHuy2t+9u2Zn5Dd+t3sBXLM9gpeaMm+4x6TNPpESygbVdh4tDdjVZ9DK/bWFg0kMgfZoaq6J l0jNsQXrZV3bzYNFbVw04pFcvA2GIJ7xzsBNBFk+0UEBCADIXBmQOaKMHGbc9vwjhV4Oj5aZ DdhNedn12FVeTdOXJvuTOusgxS29lla0RenHGDsgD08UiFpasBXWq/E+BhQ19d+iRbLLR17O KKc1ZGefoVbLARLXD68J5j4XAyK+6k2KqBLlqzAEpHTzsksM9naARkVXiEVcrt6ciw0FSm8n kuK3gDKKe93XfzfP+TQdbvvzJc7Fa+appLbXz61TM1aikaQlda8bWubDegwXbuoJdB34xU1m yjr/N4o+raL0x7QrzdH+wwgrTTo+H4S2c1972Skt5K5tbxLowfHicRl23V8itVQr3sBtlX4+ 66q+Apm7+R36bUS/k+G45Sp6iPpxABEBAAHCwHwEGAEKACYWIQToxOn4gDUE4eP0ujS95PX+ ibX8tgUCWT7RQQIbDAUJBaOagAAKCRC95PX+ibX8trrIB/9Pljqt/JGamD9tx4dOVmxSyFg9 z2xzgklTLuDgS73MM120mM7ao9AQUeWiSle/H0UCK7xPOzC/aeUC4oygDQKAfkkNbCNTo3+A qDjBRA8qx0e9a/QjDL+RFgD4L5kLT4tToY8T8HaBp8h03LBfk510IaI8oL/Jg7vpM3PDtJMW tUi2H+yNFmL3NfM2oBToWKLFsoP54f/eeeImrNnrlLjLHPzqS+/9apgYqX2Jwiv3tHBc4FTO GuY8VvF7BpixJs8Pc2RUuCfSyodrp1YG1kRGlXAH0cqwwr0Zmk4+7dZvtVQMCl6kS6q1+84q JwtItxS2eXSEA4NO0sQ3BXUywANh Message-ID: <715d0d1b-d71e-b190-7855-a0d3dc6c7212@freebsd.org> Date: Fri, 4 May 2018 11:28:33 -0600 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="wvbWc5rwFoJQweoYQu6rFMvvKpZunD1jW" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 17:28:45 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --wvbWc5rwFoJQweoYQu6rFMvvKpZunD1jW Content-Type: multipart/mixed; boundary="YmTKEIzqwR4oR3SPw0ECbsOf8HMHLkqgO"; protected-headers="v1" From: Sean Bruno To: "K. Macy" , rgrimes@freebsd.org Cc: Matt Macy , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers Message-ID: <715d0d1b-d71e-b190-7855-a0d3dc6c7212@freebsd.org> Subject: Re: svn commit: r333242 - head/sys/kern References: <201805040651.w446p2iB010839@repo.freebsd.org> <201805041407.w44E7EHg042498@pdx.rh.CN85.dnsmgr.net> In-Reply-To: --YmTKEIzqwR4oR3SPw0ECbsOf8HMHLkqgO Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable For the "official" record: Approved-by: sbruno :-) sean p.s. silly svn didn't stop this commit, I wonder why. On 05/04/18 10:20, K. Macy wrote: > Yes. Good catch. Thanks. >=20 > -M >=20 >> >> Missing Approved by: sbruno? >> >> >>> Modified: >>> head/sys/kern/kern_descrip.c >>> >>> Modified: head/sys/kern/kern_descrip.c >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D >>> --- head/sys/kern/kern_descrip.c Fri May 4 04:05:07 2018 = (r333241) >>> +++ head/sys/kern/kern_descrip.c Fri May 4 06:51:01 2018 = (r333242) >>> @@ -1503,7 +1503,7 @@ filecaps_copy(const struct filecaps *src, struc= t filec >>> >>> if (src->fc_ioctls !=3D NULL && !locked) >>> return (false); >>> - *dst =3D *src; >>> + memcpy(dst, src, sizeof(*src)); >>> if (src->fc_ioctls =3D=3D NULL) >>> return (true); >>> >>> @@ -1512,7 +1512,7 @@ filecaps_copy(const struct filecaps *src, struc= t filec >>> >>> size =3D sizeof(src->fc_ioctls[0]) * src->fc_nioctls; >>> dst->fc_ioctls =3D malloc(size, M_FILECAPS, M_WAITOK); >>> - bcopy(src->fc_ioctls, dst->fc_ioctls, size); >>> + memcpy(dst->fc_ioctls, src->fc_ioctls, size); >>> return (true); >>> } >>> >>> >>> >> >> -- >> Rod Grimes rgrimes@fre= ebsd.org >> _______________________________________________ >> svn-src-head@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/svn-src-head >> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org= " >=20 >=20 --YmTKEIzqwR4oR3SPw0ECbsOf8HMHLkqgO-- --wvbWc5rwFoJQweoYQu6rFMvvKpZunD1jW Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQGSBAEBCgB9FiEE6MTp+IA1BOHj9Lo0veT1/om1/LYFAlrsmEFfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEU4 QzRFOUY4ODAzNTA0RTFFM0Y0QkEzNEJERTRGNUZFODlCNUZDQjYACgkQveT1/om1 /LY8Kwf4uEIE7xaBLzSrBoflWhI2CzoqlbwCqyszDanZEFf3burxecM5oCKMJkt1 4RNXfWDviKV83C+70068IVrA0NnRYUFYgbzf6L8Z7reytJ21rapyTzUKytwJV3eT BQw0a8yzsT9tJh6f3iy6OyTOPxya/HKhya8wVMhGGkijQ6pPO13euAEWS9ZhGk6o wt0T+fGLWh04Qew0fruAspA2DucWNz2w4pBEyYE6KZpYCpt4ZAQupXBrmbtLBDqP MFULnmzWDIcfx0xcJx3E4x4XNjTSZpf41MWInoZ6T2yXXyWrCHGvwGt5AGLxWsv3 CNx1NvwbHdwl68UXewgANGwGlwi9 =pNCp -----END PGP SIGNATURE----- --wvbWc5rwFoJQweoYQu6rFMvvKpZunD1jW-- From owner-svn-src-all@freebsd.org Fri May 4 18:25:08 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7A865FB46D7; Fri, 4 May 2018 18:25:08 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 28B607F9E1; Fri, 4 May 2018 18:25:08 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1F66F12889; Fri, 4 May 2018 18:25:08 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44IP7oZ064348; Fri, 4 May 2018 18:25:07 GMT (envelope-from mmacy@FreeBSD.org) Received: (from mmacy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44IP7w7064347; Fri, 4 May 2018 18:25:07 GMT (envelope-from mmacy@FreeBSD.org) Message-Id: <201805041825.w44IP7w7064347@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmacy set sender to mmacy@FreeBSD.org using -f From: Matt Macy Date: Fri, 4 May 2018 18:25:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333257 - head/sys/conf X-SVN-Group: head X-SVN-Commit-Author: mmacy X-SVN-Commit-Paths: head/sys/conf X-SVN-Commit-Revision: 333257 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 18:25:08 -0000 Author: mmacy Date: Fri May 4 18:25:07 2018 New Revision: 333257 URL: https://svnweb.freebsd.org/changeset/base/333257 Log: fix gcc8 compile Approved by: sbruno Modified: head/sys/conf/kern.mk Modified: head/sys/conf/kern.mk ============================================================================== --- head/sys/conf/kern.mk Fri May 4 17:17:30 2018 (r333256) +++ head/sys/conf/kern.mk Fri May 4 18:25:07 2018 (r333257) @@ -65,6 +65,9 @@ CWARNEXTRA+= -Wno-error=misleading-indentation \ -Wno-error=shift-overflow \ -Wno-error=tautological-compare .endif +.if ${COMPILER_VERSION} >= 80000 +CWARNEXTRA+= -Wno-error=packed-not-aligned +.endif .else # For gcc 4.2, eliminate the too-often-wrong warnings about uninitialized vars. CWARNEXTRA?= -Wno-uninitialized From owner-svn-src-all@freebsd.org Fri May 4 18:57:06 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CF162FB5447; Fri, 4 May 2018 18:57:05 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7A69D6D941; Fri, 4 May 2018 18:57:05 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7571B12D66; Fri, 4 May 2018 18:57:05 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44Iv5gm079338; Fri, 4 May 2018 18:57:05 GMT (envelope-from mmacy@FreeBSD.org) Received: (from mmacy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44Iv5iX079337; Fri, 4 May 2018 18:57:05 GMT (envelope-from mmacy@FreeBSD.org) Message-Id: <201805041857.w44Iv5iX079337@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmacy set sender to mmacy@FreeBSD.org using -f From: Matt Macy Date: Fri, 4 May 2018 18:57:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333258 - head/sys/net X-SVN-Group: head X-SVN-Commit-Author: mmacy X-SVN-Commit-Paths: head/sys/net X-SVN-Commit-Revision: 333258 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 18:57:06 -0000 Author: mmacy Date: Fri May 4 18:57:05 2018 New Revision: 333258 URL: https://svnweb.freebsd.org/changeset/base/333258 Log: fix gcc8 warnings Approved by: sbruno Modified: head/sys/net/iflib.c Modified: head/sys/net/iflib.c ============================================================================== --- head/sys/net/iflib.c Fri May 4 18:25:07 2018 (r333257) +++ head/sys/net/iflib.c Fri May 4 18:57:05 2018 (r333258) @@ -829,6 +829,7 @@ netmap_fl_refill(iflib_rxq_t rxq, struct netmap_kring * so move head back by one unit */ head = nm_prev(head, lim); + nic_i = UINT_MAX; while (nm_i != head) { for (int tmp_pidx = 0; tmp_pidx < IFLIB_MAX_RX_REFRESH && nm_i != head; tmp_pidx++) { struct netmap_slot *slot = &ring->slot[nm_i]; @@ -876,7 +877,8 @@ netmap_fl_refill(iflib_rxq_t rxq, struct netmap_kring if (map) bus_dmamap_sync(fl->ifl_ifdi->idi_tag, fl->ifl_ifdi->idi_map, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); - ctx->isc_rxd_flush(ctx->ifc_softc, rxq->ifr_id, fl->ifl_id, nic_i); + if (__predict_true(nic_i != UINT_MAX)) + ctx->isc_rxd_flush(ctx->ifc_softc, rxq->ifr_id, fl->ifl_id, nic_i); return (0); } @@ -1409,7 +1411,7 @@ iflib_fast_intr_rxtx(void *arg) iflib_filter_info_t info = arg; struct grouptask *gtask = info->ifi_task; iflib_rxq_t rxq = (iflib_rxq_t)info->ifi_ctx; - if_ctx_t ctx; + if_ctx_t ctx = NULL;; int i, cidx; if (!iflib_started) @@ -1419,6 +1421,7 @@ iflib_fast_intr_rxtx(void *arg) if (info->ifi_filter != NULL && info->ifi_filter(info->ifi_filter_arg) == FILTER_HANDLED) return (FILTER_HANDLED); + MPASS(rxq->ifr_ntxqirq); for (i = 0; i < rxq->ifr_ntxqirq; i++) { qidx_t txqid = rxq->ifr_txqid[i]; @@ -1889,10 +1892,8 @@ _iflib_fl_refill(if_ctx_t ctx, iflib_fl_t fl, int coun #endif { struct rxq_refill_cb_arg cb_arg; - iflib_rxq_t q; cb_arg.error = 0; - q = fl->ifl_rxq; MPASS(sd_map != NULL); MPASS(sd_map[frag_idx] != NULL); err = bus_dmamap_load(fl->ifl_desc_tag, sd_map[frag_idx], @@ -3541,8 +3542,9 @@ iflib_txq_drain(struct ifmp_ring *r, uint32_t cidx, ui #endif do_prefetch = (ctx->ifc_flags & IFC_PREFETCH); avail = TXQ_AVAIL(txq); + err = 0; for (desc_used = i = 0; i < count && avail > MAX_TX_DESC(ctx) + 2; i++) { - int pidx_prev, rem = do_prefetch ? count - i : 0; + int rem = do_prefetch ? count - i : 0; mp = _ring_peek_one(r, cidx, i, rem); MPASS(mp != NULL && *mp != NULL); @@ -3552,7 +3554,6 @@ iflib_txq_drain(struct ifmp_ring *r, uint32_t cidx, ui continue; } in_use_prev = txq->ift_in_use; - pidx_prev = txq->ift_pidx; err = iflib_encap(txq, mp); if (__predict_false(err)) { DBG_COUNTER_INC(txq_drain_encapfail); @@ -3646,7 +3647,6 @@ _task_fn_tx(void *context) iflib_txq_t txq = context; if_ctx_t ctx = txq->ift_ctx; struct ifnet *ifp = ctx->ifc_ifp; - int rc; #ifdef IFLIB_DIAGNOSTICS txq->ift_cpu_exec_count[curcpu]++; @@ -3665,8 +3665,11 @@ _task_fn_tx(void *context) if (ctx->ifc_flags & IFC_LEGACY) IFDI_INTR_ENABLE(ctx); else { - rc = IFDI_TX_QUEUE_INTR_ENABLE(ctx, txq->ift_id); - KASSERT(rc != ENOTSUP, ("MSI-X support requires queue_intr_enable, but not implemented in driver")); +#ifdef INVARIANTS + int rc = +#endif + IFDI_TX_QUEUE_INTR_ENABLE(ctx, txq->ift_id); + KASSERT(rc != ENOTSUP, ("MSI-X support requires queue_intr_enable, but not implemented in driver")); } } @@ -3676,7 +3679,6 @@ _task_fn_rx(void *context) iflib_rxq_t rxq = context; if_ctx_t ctx = rxq->ifr_ctx; bool more; - int rc; uint16_t budget; #ifdef IFLIB_DIAGNOSTICS @@ -3701,9 +3703,12 @@ _task_fn_rx(void *context) if (ctx->ifc_flags & IFC_LEGACY) IFDI_INTR_ENABLE(ctx); else { - DBG_COUNTER_INC(rx_intr_enables); - rc = IFDI_RX_QUEUE_INTR_ENABLE(ctx, rxq->ifr_id); +#ifdef INVARIANTS + int rc = +#endif + IFDI_RX_QUEUE_INTR_ENABLE(ctx, rxq->ifr_id); KASSERT(rc != ENOTSUP, ("MSI-X support requires queue_intr_enable, but not implemented in driver")); + DBG_COUNTER_INC(rx_intr_enables); } } if (__predict_false(!(if_getdrvflags(ctx->ifc_ifp) & IFF_DRV_RUNNING))) @@ -4198,7 +4203,7 @@ iflib_device_probe(device_t dev) int iflib_device_register(device_t dev, void *sc, if_shared_ctx_t sctx, if_ctx_t *ctxp) { - int err, rid, msix, msix_bar; + int err, rid, msix; if_ctx_t ctx; if_t ifp; if_softc_ctx_t scctx; @@ -4308,7 +4313,6 @@ iflib_device_register(device_t dev, void *sc, if_share ctx->ifc_flags |= IFC_DMAR; #endif - msix_bar = scctx->isc_msix_bar; main_txq = (sctx->isc_flags & IFLIB_HAS_TXCQ) ? 1 : 0; main_rxq = (sctx->isc_flags & IFLIB_HAS_RXCQ) ? 1 : 0; @@ -5757,6 +5761,8 @@ mp_ndesc_handler(SYSCTL_HANDLER_ARGS) if (ctx->ifc_sctx) nqs = ctx->ifc_sctx->isc_nrxqs; break; + default: + panic("unhandled type"); } if (nqs == 0) nqs = 8; From owner-svn-src-all@freebsd.org Fri May 4 18:59:01 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A3C65FB5520; Fri, 4 May 2018 18:59:01 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 551A36E2BB; Fri, 4 May 2018 18:59:01 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4E99012D72; Fri, 4 May 2018 18:59:01 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44Ix11G079443; Fri, 4 May 2018 18:59:01 GMT (envelope-from mmacy@FreeBSD.org) Received: (from mmacy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44Ix1Tt079442; Fri, 4 May 2018 18:59:01 GMT (envelope-from mmacy@FreeBSD.org) Message-Id: <201805041859.w44Ix1Tt079442@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmacy set sender to mmacy@FreeBSD.org using -f From: Matt Macy Date: Fri, 4 May 2018 18:59:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333259 - head/sys/dev/e1000 X-SVN-Group: head X-SVN-Commit-Author: mmacy X-SVN-Commit-Paths: head/sys/dev/e1000 X-SVN-Commit-Revision: 333259 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 18:59:01 -0000 Author: mmacy Date: Fri May 4 18:59:01 2018 New Revision: 333259 URL: https://svnweb.freebsd.org/changeset/base/333259 Log: fix case where pidx_last might be used uninitialized Reviewed by: sbruno Modified: head/sys/dev/e1000/em_txrx.c Modified: head/sys/dev/e1000/em_txrx.c ============================================================================== --- head/sys/dev/e1000/em_txrx.c Fri May 4 18:57:05 2018 (r333258) +++ head/sys/dev/e1000/em_txrx.c Fri May 4 18:59:01 2018 (r333259) @@ -401,7 +401,7 @@ em_isc_txd_encap(void *arg, if_pkt_info_t pi) * needs End Of Packet (EOP) * and Report Status (RS) */ - if (txd_flags) { + if (txd_flags && nsegs) { txr->tx_rsq[txr->tx_rs_pidx] = pidx_last; DPRINTF(iflib_get_dev(sc->ctx), "setting to RS on %d rs_pidx %d first: %d\n", pidx_last, txr->tx_rs_pidx, first); txr->tx_rs_pidx = (txr->tx_rs_pidx+1) & (ntxd-1); From owner-svn-src-all@freebsd.org Fri May 4 19:21:06 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7AED3FB5AB3; Fri, 4 May 2018 19:21:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C996779298; Fri, 4 May 2018 19:21:05 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 9A5481F015; Fri, 4 May 2018 19:21:05 +0000 (UTC) (envelope-from jhb@freebsd.org) From: John Baldwin To: Peter Grehan Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333230 - head/sys/dev/pci Date: Fri, 04 May 2018 12:14:27 -0700 Message-ID: <2195289.fHIjn0Ke9p@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <201805032251.w43MpihV067395@repo.freebsd.org> References: <201805032251.w43MpihV067395@repo.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 19:21:06 -0000 On Thursday, May 03, 2018 10:51:44 PM Peter Grehan wrote: > Author: grehan > Date: Thu May 3 22:51:44 2018 > New Revision: 333230 > URL: https://svnweb.freebsd.org/changeset/base/333230 > > Log: > Allow PCI VGA devices to be detached. > > GPUs often have a VGA PCI class code and are probed/attached > by the VGA driver. Allow them to be detached so they can > be presented as passthru devices to VM guests. > > Submitted by: mmacy > Reviewed by: jhb, imp, rgrimes > MFC after: 3 weeks > Differential Revision: https://reviews.freebsd.org/D15269 I forgout about this earlier, sorry. We probably should also explicitly release any resources cached in sc->vga_bios and sc->vga_bars. In theory they should be clear by the time bus_generic_detach finishes, but perhaps we should walk the resources and whine if they aren't released and then release them. -- John Baldwin From owner-svn-src-all@freebsd.org Fri May 4 19:21:03 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A8198FB5A8D; Fri, 4 May 2018 19:21:03 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 55FD17923C; Fri, 4 May 2018 19:21:03 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 35E7A1F013; Fri, 4 May 2018 19:21:03 +0000 (UTC) (envelope-from jhb@freebsd.org) From: John Baldwin To: Sean Bruno Cc: "K. Macy" , rgrimes@freebsd.org, Matt Macy , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers Subject: Re: svn commit: r333242 - head/sys/kern Date: Fri, 04 May 2018 12:20:45 -0700 Message-ID: <2931484.uUDN2z4XQf@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <715d0d1b-d71e-b190-7855-a0d3dc6c7212@freebsd.org> References: <201805040651.w446p2iB010839@repo.freebsd.org> <715d0d1b-d71e-b190-7855-a0d3dc6c7212@freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 19:21:03 -0000 On Friday, May 04, 2018 11:28:33 AM Sean Bruno wrote: > For the "official" record: > > Approved-by: sbruno > > :-) > > sean > > p.s. silly svn didn't stop this commit, I wonder why. There is no commit hook for mentor approvals. It's on the honor system as it were. -- John Baldwin From owner-svn-src-all@freebsd.org Fri May 4 19:21:04 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C6391FB5A96; Fri, 4 May 2018 19:21:04 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from smtp.freebsd.org (unknown [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7BADF79257; Fri, 4 May 2018 19:21:04 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (ralph.baldwin.cx [66.234.199.215]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 5FB051F014; Fri, 4 May 2018 19:21:04 +0000 (UTC) (envelope-from jhb@freebsd.org) From: John Baldwin To: Matt Macy Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333242 - head/sys/kern Date: Fri, 04 May 2018 12:16:42 -0700 Message-ID: <3408582.QRuzgOyxgv@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.1-STABLE; KDE/4.14.30; amd64; ; ) In-Reply-To: <201805040651.w446p2iB010839@repo.freebsd.org> References: <201805040651.w446p2iB010839@repo.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 19:21:05 -0000 On Friday, May 04, 2018 06:51:02 AM Matt Macy wrote: > Author: mmacy > Date: Fri May 4 06:51:01 2018 > New Revision: 333242 > URL: https://svnweb.freebsd.org/changeset/base/333242 > > Log: > `dup1_processes -t 96 -s 5` on a dual 8160 > > x dup_before > + dup_after > +------------------------------------------------------------+ > | x + | > |x x x x ++ ++| > | |____AM___| |AM|| > +------------------------------------------------------------+ > N Min Max Median Avg Stddev > x 5 1.514954e+08 1.5230351e+08 1.5206157e+08 1.5199371e+08 341205.71 > + 5 1.5494336e+08 1.5519569e+08 1.5511982e+08 1.5508323e+08 96232.829 > Difference at 95.0% confidence > 3.08952e+06 +/- 365604 > 2.03266% +/- 0.245071% > (Student's t, pooled s = 250681) The log doesn't quite describe what the change is though and why it results in this change. bcopy -> memcpy to permit using the compiler builtin I understand, but using memcpy instead of a structure copy seems rather odd as I would expect the compiler to treat a structure copy as the same as __builtin_memcpy(). > Reported by: mjg@ > MFC after: 1 week > > Modified: > head/sys/kern/kern_descrip.c > > Modified: head/sys/kern/kern_descrip.c > ============================================================================== > --- head/sys/kern/kern_descrip.c Fri May 4 04:05:07 2018 (r333241) > +++ head/sys/kern/kern_descrip.c Fri May 4 06:51:01 2018 (r333242) > @@ -1503,7 +1503,7 @@ filecaps_copy(const struct filecaps *src, struct filec > > if (src->fc_ioctls != NULL && !locked) > return (false); > - *dst = *src; > + memcpy(dst, src, sizeof(*src)); > if (src->fc_ioctls == NULL) > return (true); > > @@ -1512,7 +1512,7 @@ filecaps_copy(const struct filecaps *src, struct filec > > size = sizeof(src->fc_ioctls[0]) * src->fc_nioctls; > dst->fc_ioctls = malloc(size, M_FILECAPS, M_WAITOK); > - bcopy(src->fc_ioctls, dst->fc_ioctls, size); > + memcpy(dst->fc_ioctls, src->fc_ioctls, size); > return (true); > } > > -- John Baldwin From owner-svn-src-all@freebsd.org Fri May 4 19:28:06 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 306CBFB5DB9; Fri, 4 May 2018 19:28:06 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D85647B454; Fri, 4 May 2018 19:28:05 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B527D13240; Fri, 4 May 2018 19:28:05 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44JS51i094032; Fri, 4 May 2018 19:28:05 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44JS5vo094031; Fri, 4 May 2018 19:28:05 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201805041928.w44JS5vo094031@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Fri, 4 May 2018 19:28:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333260 - head/sys/arm/freescale/imx X-SVN-Group: head X-SVN-Commit-Author: ian X-SVN-Commit-Paths: head/sys/arm/freescale/imx X-SVN-Commit-Revision: 333260 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 19:28:06 -0000 Author: ian Date: Fri May 4 19:28:05 2018 New Revision: 333260 URL: https://svnweb.freebsd.org/changeset/base/333260 Log: Properly support the GPIO_PIN_PRESET_{LOW,HIGH} options when configuring a gpio pin. If neither of the options is specified, pre-set the pin's output value to the pin's current input value, to achieve glitch-free transitions to output mode on pins that are pulled up or down at reset or via fdt pinctrl data. Modified: head/sys/arm/freescale/imx/imx_gpio.c Modified: head/sys/arm/freescale/imx/imx_gpio.c ============================================================================== --- head/sys/arm/freescale/imx/imx_gpio.c Fri May 4 18:59:01 2018 (r333259) +++ head/sys/arm/freescale/imx/imx_gpio.c Fri May 4 19:28:05 2018 (r333260) @@ -506,21 +506,41 @@ static void imx51_gpio_pin_configure(struct imx51_gpio_softc *sc, struct gpio_pin *pin, unsigned int flags) { - u_int newflags; + u_int newflags, pad; mtx_lock_spin(&sc->sc_mtx); /* - * Manage input/output; other flags not supported yet. + * Manage input/output; other flags not supported yet (maybe not ever, + * since we have no connection to the pad config registers from here). * + * When setting a pin to output, honor the PRESET_[LOW,HIGH] flags if + * present. Otherwise, for glitchless transistions on pins with pulls, + * read the current state of the pad and preset the DR register to drive + * the current value onto the pin before enabling the pin for output. + * * Note that changes to pin->gp_flags must be acccumulated in newflags * and stored with a single writeback to gp_flags at the end, to enable - * unlocked reads of that value elsewhere. + * unlocked reads of that value elsewhere. This is only about unlocked + * access to gp_flags from elsewhere; we still use locking in this + * function to protect r-m-w access to the hardware registers. */ if (flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)) { newflags = pin->gp_flags & ~(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); if (flags & GPIO_PIN_OUTPUT) { + if (flags & GPIO_PIN_PRESET_LOW) { + pad = 0; + } else if (flags & GPIO_PIN_PRESET_HIGH) { + pad = 1; + } else { + if (flags & GPIO_PIN_OPENDRAIN) + pad = READ4(sc, IMX_GPIO_PSR_REG); + else + pad = READ4(sc, IMX_GPIO_DR_REG); + pad = (pad >> pin->gp_pin) & 1; + } newflags |= GPIO_PIN_OUTPUT; + SET4(sc, IMX_GPIO_DR_REG, (pad << pin->gp_pin)); SET4(sc, IMX_GPIO_OE_REG, (1U << pin->gp_pin)); } else { newflags |= GPIO_PIN_INPUT; @@ -692,7 +712,7 @@ imx51_gpio_pin_access_32(device_t dev, uint32_t first_ sc = device_get_softc(dev); if (orig_pins != NULL) - *orig_pins = READ4(sc, IMX_GPIO_PSR_REG); + *orig_pins = READ4(sc, IMX_GPIO_DR_REG); if ((clear_pins | change_pins) != 0) { mtx_lock_spin(&sc->sc_mtx); @@ -718,7 +738,7 @@ imx51_gpio_pin_config_32(device_t dev, uint32_t first_ return (EINVAL); drclr = drset = oeclr = oeset = 0; - pads = READ4(sc, IMX_GPIO_PSR_REG); + pads = READ4(sc, IMX_GPIO_DR_REG); for (i = 0; i < num_pins; ++i) { bit = 1u << i; From owner-svn-src-all@freebsd.org Fri May 4 19:31:28 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D9787FB5FD6; Fri, 4 May 2018 19:31:28 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8A7FE7CA66; Fri, 4 May 2018 19:31:28 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 843D713297; Fri, 4 May 2018 19:31:28 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44JVSY4096408; Fri, 4 May 2018 19:31:28 GMT (envelope-from mmacy@FreeBSD.org) Received: (from mmacy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44JVS3d096407; Fri, 4 May 2018 19:31:28 GMT (envelope-from mmacy@FreeBSD.org) Message-Id: <201805041931.w44JVS3d096407@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmacy set sender to mmacy@FreeBSD.org using -f From: Matt Macy Date: Fri, 4 May 2018 19:31:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333261 - head/sys/conf X-SVN-Group: head X-SVN-Commit-Author: mmacy X-SVN-Commit-Paths: head/sys/conf X-SVN-Commit-Revision: 333261 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 19:31:29 -0000 Author: mmacy Date: Fri May 4 19:31:28 2018 New Revision: 333261 URL: https://svnweb.freebsd.org/changeset/base/333261 Log: % WITHOUT_FORMAT_EXTENSIONS= XCC=/usr/local/bin/gcc8 make -j96 buildkernel KERNCONF=GENERIC-NODEBUG -s >& log % grep "inlining failed" log | wc 234 3570 36065 Consensus on those polled is that inlining failure warnings are not useful Approved by: sbruno Modified: head/sys/conf/kern.mk Modified: head/sys/conf/kern.mk ============================================================================== --- head/sys/conf/kern.mk Fri May 4 19:28:05 2018 (r333260) +++ head/sys/conf/kern.mk Fri May 4 19:31:28 2018 (r333261) @@ -4,7 +4,7 @@ # Warning flags for compiling the kernel and components of the kernel: # CWARNFLAGS?= -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \ - -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual \ + -Wmissing-prototypes -Wpointer-arith -Wcast-qual \ -Wundef -Wno-pointer-sign ${FORMAT_EXTENSIONS} \ -Wmissing-include-dirs -fdiagnostics-show-option \ -Wno-unknown-pragmas \ From owner-svn-src-all@freebsd.org Fri May 4 19:40:36 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4760CFB62D5; Fri, 4 May 2018 19:40:36 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BB2D3814DE; Fri, 4 May 2018 19:40:35 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w44JeVMm043761; Fri, 4 May 2018 12:40:31 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w44JeV3b043760; Fri, 4 May 2018 12:40:31 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201805041940.w44JeV3b043760@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r333261 - head/sys/conf In-Reply-To: <201805041931.w44JVS3d096407@repo.freebsd.org> To: Matt Macy Date: Fri, 4 May 2018 12:40:31 -0700 (PDT) CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 19:40:36 -0000 [ Charset UTF-8 unsupported, converting... ] > Author: mmacy > Date: Fri May 4 19:31:28 2018 > New Revision: 333261 > URL: https://svnweb.freebsd.org/changeset/base/333261 > > Log: > % WITHOUT_FORMAT_EXTENSIONS= XCC=/usr/local/bin/gcc8 make -j96 buildkernel KERNCONF=GENERIC-NODEBUG -s >& log > % grep "inlining failed" log | wc > 234 3570 36065 > Consensus on those polled is that inlining failure warnings are not useful Please try to write plain english commit messages. > Approved by: sbruno > > Modified: > head/sys/conf/kern.mk > > Modified: head/sys/conf/kern.mk > ============================================================================== > --- head/sys/conf/kern.mk Fri May 4 19:28:05 2018 (r333260) > +++ head/sys/conf/kern.mk Fri May 4 19:31:28 2018 (r333261) > @@ -4,7 +4,7 @@ > # Warning flags for compiling the kernel and components of the kernel: > # > CWARNFLAGS?= -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \ > - -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual \ > + -Wmissing-prototypes -Wpointer-arith -Wcast-qual \ > -Wundef -Wno-pointer-sign ${FORMAT_EXTENSIONS} \ > -Wmissing-include-dirs -fdiagnostics-show-option \ > -Wno-unknown-pragmas \ This effects ALL compilers at this point in the file, not just gcc. -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Fri May 4 19:43:42 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9168FFB65CD for ; Fri, 4 May 2018 19:43:42 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound1a.eu.mailhop.org (outbound1a.eu.mailhop.org [52.58.109.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1959E82CCB for ; Fri, 4 May 2018 19:43:41 +0000 (UTC) (envelope-from ian@freebsd.org) X-MHO-User: 6b2fe5c7-4fd3-11e8-8e23-5bc9f169c8f5 X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Originating-IP: 67.177.211.60 X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (unknown [67.177.211.60]) by outbound1.eu.mailhop.org (Halon) with ESMTPSA id 6b2fe5c7-4fd3-11e8-8e23-5bc9f169c8f5; Fri, 04 May 2018 19:43:31 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id w44JhT67048339; Fri, 4 May 2018 13:43:29 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <1525463009.57768.281.camel@freebsd.org> Subject: Re: svn commit: r333261 - head/sys/conf From: Ian Lepore To: Matt Macy , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Date: Fri, 04 May 2018 13:43:29 -0600 In-Reply-To: <201805041931.w44JVS3d096407@repo.freebsd.org> References: <201805041931.w44JVS3d096407@repo.freebsd.org> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.18.5.1 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 19:43:42 -0000 On Fri, 2018-05-04 at 19:31 +0000, Matt Macy wrote: > Author: mmacy > Date: Fri May  4 19:31:28 2018 > New Revision: 333261 > URL: https://svnweb.freebsd.org/changeset/base/333261 > > Log: >   % WITHOUT_FORMAT_EXTENSIONS=  XCC=/usr/local/bin/gcc8 make -j96 > buildkernel KERNCONF=GENERIC-NODEBUG -s >& log >   % grep "inlining failed" log | wc >        234    3570   36065 >   Consensus on those polled is that inlining failure warnings are not > useful >    >   Approved by: sbruno This is another marginal commit message. A good commit messages starts with a sentence or two that summarizes what's been changed, followed by some non-zero amount of extra information that says why (for all but the most trivial self-obvious changes). This is pretty good on the "why". Consider how this is going to look buried in the output of "svn log kern.mk" (or on svnweb.freebsd.org) when you're skimming through the commit history looking for what changed while you're tracking down some problem. When you run into this commit in the log, you're going to have no option but to stop what you're doing and look at the diff to see if it's germane to your search, because of the missing summary information. -- Ian From owner-svn-src-all@freebsd.org Fri May 4 20:38:27 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6A9FAFB75CE; Fri, 4 May 2018 20:38:27 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1DC2A7D473; Fri, 4 May 2018 20:38:27 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1491A13DA9; Fri, 4 May 2018 20:38:27 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44KcQQk028909; Fri, 4 May 2018 20:38:26 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44KcQJs028908; Fri, 4 May 2018 20:38:26 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201805042038.w44KcQJs028908@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 4 May 2018 20:38:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333262 - head/release/tools X-SVN-Group: head X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: head/release/tools X-SVN-Commit-Revision: 333262 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 20:38:27 -0000 Author: gjb Date: Fri May 4 20:38:26 2018 New Revision: 333262 URL: https://svnweb.freebsd.org/changeset/base/333262 Log: Ensure the ports and src trees are available on GCE images, satisfying a requirement to allow FreeBSD to be considered a top-tier supported OS in Google Compute Engine. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/tools/gce.conf Modified: head/release/tools/gce.conf ============================================================================== --- head/release/tools/gce.conf Fri May 4 19:31:28 2018 (r333261) +++ head/release/tools/gce.conf Fri May 4 20:38:26 2018 (r333262) @@ -85,6 +85,29 @@ debug.trace_on_panic=1 debug.debugger_on_panic=0 EOF + # To meet GCE marketplace requirements, extract the src.txz and + # ports.txz distributions to the target virtual machine disk image + # and fetch the sources for the third-part software installed on + # the image. + if [ ! -c "${DESTDIR}/dev/null" ]; then + mkdir -p ${DESTDIR}/dev + mount -t devfs devfs ${DESTDIR}/dev + fi + if [ -e "${DESTDIR}/../ftp/src.txz" ]; then + tar fxJ ${DESTDIR}/../ftp/src.txz -C ${DESTDIR} + fi + if [ -e "${DESTDIR}/../ftp/ports.txz" ]; then + tar fxJ ${DESTDIR}/../ftp/ports.txz -C ${DESTDIR} + _INSTALLED_PACKAGES=$(chroot ${DESTDIR} pkg info -o -q -a) + for PACKAGE in ${_INSTALLED_PACKAGES}; do + chroot ${DESTDIR} \ + make -C /usr/ports/${PACKAGE} fetch + done + fi + if [ -c "${DESTDIR}/dev/null" ]; then + umount_loop ${DESTDIR}/dev + fi + ## XXX: Verify this is needed. I do not see this requirement ## in the docs, and it impairs the ability to boot-test a copy ## of the image prior to packaging for upload to GCE. From owner-svn-src-all@freebsd.org Fri May 4 20:54:29 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 92CB6FB7B5E; Fri, 4 May 2018 20:54:29 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4547484533; Fri, 4 May 2018 20:54:29 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3BE2A140EB; Fri, 4 May 2018 20:54:29 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44KsTBm038825; Fri, 4 May 2018 20:54:29 GMT (envelope-from jamie@FreeBSD.org) Received: (from jamie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44KsRtc038808; Fri, 4 May 2018 20:54:27 GMT (envelope-from jamie@FreeBSD.org) Message-Id: <201805042054.w44KsRtc038808@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jamie set sender to jamie@FreeBSD.org using -f From: Jamie Gritton Date: Fri, 4 May 2018 20:54:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333263 - in head: lib/libjail sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/compat/linprocfs sys/compat/linsysfs sys/fs/devfs sys/fs/fdescfs sys/fs/nullfs sys/fs/procfs sys/fs/pse... X-SVN-Group: head X-SVN-Commit-Author: jamie X-SVN-Commit-Paths: in head: lib/libjail sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/compat/linprocfs sys/compat/linsysfs sys/fs/devfs sys/fs/fdescfs sys/fs/nullfs sys/fs/procfs sys/fs/pseudofs sys/fs/tmpfs sys/ke... X-SVN-Commit-Revision: 333263 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 20:54:30 -0000 Author: jamie Date: Fri May 4 20:54:27 2018 New Revision: 333263 URL: https://svnweb.freebsd.org/changeset/base/333263 Log: Make it easier for filesystems to count themselves as jail-enabled, by doing most of the work in a new function prison_add_vfs in kern_jail.c Now a jail-enabled filesystem need only mark itself with VFCF_JAIL, and the rest is taken care of. This includes adding a jail parameter like allow.mount.foofs, and a sysctl like security.jail.mount_foofs_allowed. Both of these used to be a static list of known filesystems, with predefined permission bits. Reviewed by: kib Differential Revision: D14681 Modified: head/lib/libjail/jail.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c head/sys/compat/linprocfs/linprocfs.c head/sys/compat/linsysfs/linsysfs.c head/sys/fs/devfs/devfs_vfsops.c head/sys/fs/fdescfs/fdesc_vfsops.c head/sys/fs/nullfs/null_vfsops.c head/sys/fs/procfs/procfs.c head/sys/fs/pseudofs/pseudofs.h head/sys/fs/tmpfs/tmpfs_vfsops.c head/sys/kern/kern_jail.c head/sys/kern/vfs_init.c head/sys/kern/vfs_mount.c head/sys/kern/vfs_subr.c head/sys/sys/jail.h head/sys/sys/mount.h head/usr.sbin/jail/jail.8 Modified: head/lib/libjail/jail.c ============================================================================== --- head/lib/libjail/jail.c Fri May 4 20:38:26 2018 (r333262) +++ head/lib/libjail/jail.c Fri May 4 20:54:27 2018 (r333263) @@ -1048,7 +1048,13 @@ kldload_param(const char *name) else if (strcmp(name, "sysvmsg") == 0 || strcmp(name, "sysvsem") == 0 || strcmp(name, "sysvshm") == 0) kl = kldload(name); - else { + else if (strncmp(name, "allow.mount.", 12) == 0) { + /* Load the matching filesystem */ + kl = kldload(name + 12); + if (kl < 0 && errno == ENOENT && + strncmp(name + 12, "no", 2) == 0) + kl = kldload(name + 14); + } else { errno = ENOENT; return (-1); } Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Fri May 4 20:54:27 2018 (r333263) @@ -1640,9 +1640,6 @@ zfs_mount(vfs_t *vfsp) osname = spn.pn_path; #else /* !illumos */ - if (!prison_allow(td->td_ucred, PR_ALLOW_MOUNT_ZFS)) - return (SET_ERROR(EPERM)); - if (vfs_getopt(vfsp->mnt_optnew, "from", (void **)&osname, NULL)) return (SET_ERROR(EINVAL)); Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/compat/linprocfs/linprocfs.c Fri May 4 20:54:27 2018 (r333263) @@ -1652,7 +1652,7 @@ linprocfs_uninit(PFS_INIT_ARGS) return (0); } -PSEUDOFS(linprocfs, 1, PR_ALLOW_MOUNT_LINPROCFS); +PSEUDOFS(linprocfs, 1, VFCF_JAIL); #if defined(__amd64__) MODULE_DEPEND(linprocfs, linux_common, 1, 1, 1); #else Modified: head/sys/compat/linsysfs/linsysfs.c ============================================================================== --- head/sys/compat/linsysfs/linsysfs.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/compat/linsysfs/linsysfs.c Fri May 4 20:54:27 2018 (r333263) @@ -556,7 +556,7 @@ linsysfs_uninit(PFS_INIT_ARGS) return (0); } -PSEUDOFS(linsysfs, 1, PR_ALLOW_MOUNT_LINSYSFS); +PSEUDOFS(linsysfs, 1, VFCF_JAIL); #if defined(__amd64__) MODULE_DEPEND(linsysfs, linux_common, 1, 1, 1); #else Modified: head/sys/fs/devfs/devfs_vfsops.c ============================================================================== --- head/sys/fs/devfs/devfs_vfsops.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/fs/devfs/devfs_vfsops.c Fri May 4 20:54:27 2018 (r333263) @@ -83,9 +83,6 @@ devfs_mount(struct mount *mp) if (mp->mnt_flag & MNT_ROOTFS) return (EOPNOTSUPP); - if (!prison_allow(td->td_ucred, PR_ALLOW_MOUNT_DEVFS)) - return (EPERM); - rsnum = 0; injail = jailed(td->td_ucred); Modified: head/sys/fs/fdescfs/fdesc_vfsops.c ============================================================================== --- head/sys/fs/fdescfs/fdesc_vfsops.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/fs/fdescfs/fdesc_vfsops.c Fri May 4 20:54:27 2018 (r333263) @@ -81,12 +81,8 @@ static int fdesc_mount(struct mount *mp) { struct fdescmount *fmp; - struct thread *td = curthread; struct vnode *rvp; int error; - - if (!prison_allow(td->td_ucred, PR_ALLOW_MOUNT_FDESCFS)) - return (EPERM); /* * Update is a no-op Modified: head/sys/fs/nullfs/null_vfsops.c ============================================================================== --- head/sys/fs/nullfs/null_vfsops.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/fs/nullfs/null_vfsops.c Fri May 4 20:54:27 2018 (r333263) @@ -78,15 +78,12 @@ nullfs_mount(struct mount *mp) struct vnode *lowerrootvp, *vp; struct vnode *nullm_rootvp; struct null_mount *xmp; - struct thread *td = curthread; char *target; int isvnunlocked = 0, len; struct nameidata nd, *ndp = &nd; NULLFSDEBUG("nullfs_mount(mp = %p)\n", (void *)mp); - if (!prison_allow(td->td_ucred, PR_ALLOW_MOUNT_NULLFS)) - return (EPERM); if (mp->mnt_flag & MNT_ROOTFS) return (EOPNOTSUPP); Modified: head/sys/fs/procfs/procfs.c ============================================================================== --- head/sys/fs/procfs/procfs.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/fs/procfs/procfs.c Fri May 4 20:54:27 2018 (r333263) @@ -215,4 +215,4 @@ procfs_uninit(PFS_INIT_ARGS) return (0); } -PSEUDOFS(procfs, 1, PR_ALLOW_MOUNT_PROCFS); +PSEUDOFS(procfs, 1, VFCF_JAIL); Modified: head/sys/fs/pseudofs/pseudofs.h ============================================================================== --- head/sys/fs/pseudofs/pseudofs.h Fri May 4 20:38:26 2018 (r333262) +++ head/sys/fs/pseudofs/pseudofs.h Fri May 4 20:54:27 2018 (r333263) @@ -272,7 +272,7 @@ int pfs_destroy (struct pfs_node *pn); /* * Now for some initialization magic... */ -#define PSEUDOFS(name, version, jflag) \ +#define PSEUDOFS(name, version, flags) \ \ static struct pfs_info name##_info = { \ #name, \ @@ -282,8 +282,6 @@ static struct pfs_info name##_info = { \ \ static int \ _##name##_mount(struct mount *mp) { \ - if (jflag && !prison_allow(curthread->td_ucred, jflag)) \ - return (EPERM); \ return (pfs_mount(&name##_info, mp)); \ } \ \ @@ -306,7 +304,7 @@ static struct vfsops name##_vfsops = { \ .vfs_uninit = _##name##_uninit, \ .vfs_unmount = pfs_unmount, \ }; \ -VFS_SET(name##_vfsops, name, VFCF_SYNTHETIC | (jflag ? VFCF_JAIL : 0)); \ +VFS_SET(name##_vfsops, name, VFCF_SYNTHETIC | flags); \ MODULE_VERSION(name, version); \ MODULE_DEPEND(name, pseudofs, 1, 1, 1); Modified: head/sys/fs/tmpfs/tmpfs_vfsops.c ============================================================================== --- head/sys/fs/tmpfs/tmpfs_vfsops.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/fs/tmpfs/tmpfs_vfsops.c Fri May 4 20:54:27 2018 (r333263) @@ -141,7 +141,6 @@ tmpfs_mount(struct mount *mp) sizeof(struct tmpfs_dirent) + sizeof(struct tmpfs_node)); struct tmpfs_mount *tmp; struct tmpfs_node *root; - struct thread *td = curthread; int error; bool nonc; /* Size counters. */ @@ -154,9 +153,6 @@ tmpfs_mount(struct mount *mp) mode_t root_mode; struct vattr va; - - if (!prison_allow(td->td_ucred, PR_ALLOW_MOUNT_TMPFS)) - return (EPERM); if (vfs_filteropt(mp->mnt_optnew, tmpfs_opts)) return (EINVAL); Modified: head/sys/kern/kern_jail.c ============================================================================== --- head/sys/kern/kern_jail.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/kern/kern_jail.c Fri May 4 20:54:27 2018 (r333263) @@ -111,7 +111,7 @@ struct prison prison0 = { #else .pr_flags = PR_HOST|_PR_IP_SADDRSEL, #endif - .pr_allow = PR_ALLOW_ALL, + .pr_allow = PR_ALLOW_ALL_STATIC, }; MTX_SYSINIT(prison0, &prison0.pr_mtx, "jail mutex", MTX_DEF); @@ -181,7 +181,8 @@ static struct jailsys_flags pr_flag_jailsys[] = { }; const size_t pr_flag_jailsys_size = sizeof(pr_flag_jailsys); -static struct bool_flags pr_flag_allow[] = { +/* Make this array full-size so dynamic parameters can be added. */ +static struct bool_flags pr_flag_allow[NBBY * NBPW] = { {"allow.set_hostname", "allow.noset_hostname", PR_ALLOW_SET_HOSTNAME}, {"allow.sysvipc", "allow.nosysvipc", PR_ALLOW_SYSVIPC}, {"allow.raw_sockets", "allow.noraw_sockets", PR_ALLOW_RAW_SOCKETS}, @@ -189,17 +190,6 @@ static struct bool_flags pr_flag_allow[] = { {"allow.mount", "allow.nomount", PR_ALLOW_MOUNT}, {"allow.quotas", "allow.noquotas", PR_ALLOW_QUOTAS}, {"allow.socket_af", "allow.nosocket_af", PR_ALLOW_SOCKET_AF}, - {"allow.mount.devfs", "allow.mount.nodevfs", PR_ALLOW_MOUNT_DEVFS}, - {"allow.mount.nullfs", "allow.mount.nonullfs", PR_ALLOW_MOUNT_NULLFS}, - {"allow.mount.zfs", "allow.mount.nozfs", PR_ALLOW_MOUNT_ZFS}, - {"allow.mount.procfs", "allow.mount.noprocfs", PR_ALLOW_MOUNT_PROCFS}, - {"allow.mount.tmpfs", "allow.mount.notmpfs", PR_ALLOW_MOUNT_TMPFS}, - {"allow.mount.fdescfs", "allow.mount.nofdescfs", - PR_ALLOW_MOUNT_FDESCFS}, - {"allow.mount.linprocfs", "allow.mount.nolinprocfs", - PR_ALLOW_MOUNT_LINPROCFS}, - {"allow.mount.linsysfs", "allow.mount.nolinsysfs", - PR_ALLOW_MOUNT_LINSYSFS}, {"allow.reserved_ports", "allow.noreserved_ports", PR_ALLOW_RESERVED_PORTS}, }; @@ -318,7 +308,8 @@ kern_jail(struct thread *td, struct jail *j) /* Set permissions for top-level jails from sysctls. */ if (!jailed(td->td_ucred)) { for (bf = pr_flag_allow; - bf < pr_flag_allow + nitems(pr_flag_allow); + bf < pr_flag_allow + nitems(pr_flag_allow) && + bf->flag != 0; bf++) { optiov[opt.uio_iovcnt].iov_base = __DECONST(char *, (jail_default_allow & bf->flag) @@ -654,7 +645,7 @@ kern_jail_set(struct thread *td, struct uio *optuio, i pr_allow = ch_allow = 0; for (bf = pr_flag_allow; - bf < pr_flag_allow + nitems(pr_flag_allow); + bf < pr_flag_allow + nitems(pr_flag_allow) && bf->flag != 0; bf++) { vfs_flagopt(opts, bf->name, &pr_allow, bf->flag); vfs_flagopt(opts, bf->noname, &ch_allow, bf->flag); @@ -2115,7 +2106,7 @@ kern_jail_get(struct thread *td, struct uio *optuio, i goto done_deref; } for (bf = pr_flag_allow; - bf < pr_flag_allow + nitems(pr_flag_allow); + bf < pr_flag_allow + nitems(pr_flag_allow) && bf->flag != 0; bf++) { i = (pr->pr_allow & bf->flag) ? 1 : 0; error = vfs_setopt(opts, bf->name, &i, sizeof(i)); @@ -3615,38 +3606,6 @@ SYSCTL_PROC(_security_jail, OID_AUTO, mount_allowed, CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, PR_ALLOW_MOUNT, sysctl_jail_default_allow, "I", "Processes in jail can mount/unmount jail-friendly file systems (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_devfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_DEVFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the devfs file system (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_fdescfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_FDESCFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the fdescfs file system (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_nullfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_NULLFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the nullfs file system (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_procfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_PROCFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the procfs file system (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_linprocfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_LINPROCFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the linprocfs file system (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_linsysfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_LINSYSFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the linsysfs file system (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_tmpfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_TMPFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the tmpfs file system (deprecated)"); -SYSCTL_PROC(_security_jail, OID_AUTO, mount_zfs_allowed, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - NULL, PR_ALLOW_MOUNT_ZFS, sysctl_jail_default_allow, "I", - "Processes in jail can mount the zfs file system (deprecated)"); static int sysctl_jail_default_level(SYSCTL_HANDLER_ARGS) @@ -3799,23 +3758,111 @@ SYSCTL_JAIL_PARAM(_allow, reserved_ports, CTLTYPE_INT SYSCTL_JAIL_PARAM_SUBNODE(allow, mount, "Jail mount/unmount permission flags"); SYSCTL_JAIL_PARAM(_allow_mount, , CTLTYPE_INT | CTLFLAG_RW, "B", "Jail may mount/unmount jail-friendly file systems in general"); -SYSCTL_JAIL_PARAM(_allow_mount, devfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the devfs file system"); -SYSCTL_JAIL_PARAM(_allow_mount, fdescfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the fdescfs file system"); -SYSCTL_JAIL_PARAM(_allow_mount, nullfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the nullfs file system"); -SYSCTL_JAIL_PARAM(_allow_mount, procfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the procfs file system"); -SYSCTL_JAIL_PARAM(_allow_mount, linprocfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the linprocfs file system"); -SYSCTL_JAIL_PARAM(_allow_mount, linsysfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the linsysfs file system"); -SYSCTL_JAIL_PARAM(_allow_mount, tmpfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the tmpfs file system"); -SYSCTL_JAIL_PARAM(_allow_mount, zfs, CTLTYPE_INT | CTLFLAG_RW, - "B", "Jail may mount the zfs file system"); +/* + * The VFS system will register jail-aware filesystems here. They each get + * a parameter allow.mount.xxxfs and a flag to check when a jailed user + * attempts to mount. + */ +void +prison_add_vfs(struct vfsconf *vfsp) +{ + char *allow_name, *allow_noname, *mount_allowed; + struct bool_flags *bf; +#ifndef NO_SYSCTL_DESCR + char *descr; +#endif + unsigned allow_flag; + + if (asprintf(&allow_name, M_PRISON, "allow.mount.%s", vfsp->vfc_name) < + 0 || asprintf(&allow_noname, M_PRISON, "allow.mount.no%s", + vfsp->vfc_name) < 0) { + free(allow_name, M_PRISON); + return; + } + + /* + * See if this parameter has already beed added, i.e. if the filesystem + * was previously loaded/unloaded. + */ + mtx_lock(&prison0.pr_mtx); + for (bf = pr_flag_allow; + bf < pr_flag_allow + nitems(pr_flag_allow) && bf->flag != 0; + bf++) { + if (strcmp(bf->name, allow_name) == 0) { + vfsp->vfc_prison_flag = bf->flag; + goto no_add; + } + } + + /* + * Find a free bit in prison0's pr_allow, failing if there are none + * (which shouldn't happen as long as we keep track of how many + * filesystems are jail-aware). + */ + for (allow_flag = 1;; allow_flag <<= 1) { + if (allow_flag == 0) + goto no_add; + if ((prison0.pr_allow & allow_flag) == 0) + break; + } + + /* + * Note the parameter in the next open slot in pr_flag_allow. + * Set the flag last so code that checks pr_flag_allow can do so + * without locking. + */ + for (bf = pr_flag_allow; bf->flag != 0; bf++) + if (bf == pr_flag_allow + nitems(pr_flag_allow)) { + /* This should never happen, but is not fatal. */ + goto no_add; + } + prison0.pr_allow |= allow_flag; + bf->name = allow_name; + bf->noname = allow_noname; + bf->flag = allow_flag; + vfsp->vfc_prison_flag = allow_flag; + mtx_unlock(&prison0.pr_mtx); + + /* + * Create sysctls for the paramter, and the back-compat global + * permission. + */ +#ifndef NO_SYSCTL_DESCR + (void)asprintf(&descr, M_TEMP, "Jail may mount the %s file system", + vfsp->vfc_name); +#endif + (void)SYSCTL_ADD_PROC(NULL, + SYSCTL_CHILDREN(&sysctl___security_jail_param_allow_mount), + OID_AUTO, vfsp->vfc_name, CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + NULL, 0, sysctl_jail_param, "B", descr); +#ifndef NO_SYSCTL_DESCR + free(descr, M_TEMP); +#endif + if (asprintf(&mount_allowed, M_TEMP, "mount_%s_allowed", + vfsp->vfc_name) >= 0) { +#ifndef NO_SYSCTL_DESCR + (void)asprintf(&descr, M_TEMP, + "Processes in jail can mount the %s file system (deprecated)", + vfsp->vfc_name); +#endif + (void)SYSCTL_ADD_PROC(NULL, + SYSCTL_CHILDREN(&sysctl___security_jail), OID_AUTO, + mount_allowed, CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + NULL, allow_flag, sysctl_jail_default_allow, "I", descr); +#ifndef NO_SYSCTL_DESCR + free(descr, M_TEMP); +#endif + free(mount_allowed, M_TEMP); + } + return; + + no_add: + mtx_unlock(&prison0.pr_mtx); + free(allow_name, M_PRISON); + free(allow_noname, M_PRISON); +} + #ifdef RACCT void prison_racct_foreach(void (*callback)(struct racct *racct, @@ -4050,7 +4097,7 @@ db_show_prison(struct prison *pr) } db_printf(" allow = 0x%x", pr->pr_allow); for (bf = pr_flag_allow; - bf < pr_flag_allow + nitems(pr_flag_allow); + bf < pr_flag_allow + nitems(pr_flag_allow) && bf->flag != 0; bf++) if (pr->pr_allow & bf->flag) db_printf(" %s", bf->name); Modified: head/sys/kern/vfs_init.c ============================================================================== --- head/sys/kern/vfs_init.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/kern/vfs_init.c Fri May 4 20:54:27 2018 (r333263) @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -276,7 +277,10 @@ vfs_register(struct vfsconf *vfc) vfsops->vfs_extattrctl = vfs_stdextattrctl; if (vfsops->vfs_sysctl == NULL) vfsops->vfs_sysctl = vfs_stdsysctl; - + + if (vfc->vfc_flags & VFCF_JAIL) + prison_add_vfs(vfc); + /* * Call init function for this VFS... */ Modified: head/sys/kern/vfs_mount.c ============================================================================== --- head/sys/kern/vfs_mount.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/kern/vfs_mount.c Fri May 4 20:54:27 2018 (r333263) @@ -843,6 +843,16 @@ vfs_domount_first( KASSERT((fsflags & MNT_UPDATE) == 0, ("MNT_UPDATE shouldn't be here")); /* + * If the jail of the calling thread lacks permission for this type of + * file system, deny immediately. + */ + if (jailed(td->td_ucred) && !prison_allow(td->td_ucred, + vfsp->vfc_prison_flag)) { + vput(vp); + return (EPERM); + } + + /* * If the user is not root, ensure that they own the directory * onto which we are attempting to mount. */ @@ -1149,8 +1159,6 @@ vfs_domount( vfsp = vfs_byname_kld(fstype, td, &error); if (vfsp == NULL) return (ENODEV); - if (jailed(td->td_ucred) && !(vfsp->vfc_flags & VFCF_JAIL)) - return (EPERM); } /* Modified: head/sys/kern/vfs_subr.c ============================================================================== --- head/sys/kern/vfs_subr.c Fri May 4 20:38:26 2018 (r333262) +++ head/sys/kern/vfs_subr.c Fri May 4 20:54:27 2018 (r333263) @@ -683,19 +683,21 @@ vfs_suser(struct mount *mp, struct thread *td) { int error; - /* - * If the thread is jailed, but this is not a jail-friendly file - * system, deny immediately. - */ - if (!(mp->mnt_vfc->vfc_flags & VFCF_JAIL) && jailed(td->td_ucred)) - return (EPERM); + if (jailed(td->td_ucred)) { + /* + * If the jail of the calling thread lacks permission for + * this type of file system, deny immediately. + */ + if (!prison_allow(td->td_ucred, mp->mnt_vfc->vfc_prison_flag)) + return (EPERM); - /* - * If the file system was mounted outside the jail of the calling - * thread, deny immediately. - */ - if (prison_check(td->td_ucred, mp->mnt_cred) != 0) - return (EPERM); + /* + * If the file system was mounted outside the jail of the + * calling thread, deny immediately. + */ + if (prison_check(td->td_ucred, mp->mnt_cred) != 0) + return (EPERM); + } /* * If file system supports delegated administration, we don't check Modified: head/sys/sys/jail.h ============================================================================== --- head/sys/sys/jail.h Fri May 4 20:38:26 2018 (r333262) +++ head/sys/sys/jail.h Fri May 4 20:54:27 2018 (r333263) @@ -216,7 +216,10 @@ struct prison_racct { #define PR_IP6 0x04000000 /* IPv6 restricted or disabled */ /* by this jail or an ancestor */ -/* Flags for pr_allow */ +/* + * Flags for pr_allow + * Bits not noted here may be used for dynamic allow.mount.xxxfs. + */ #define PR_ALLOW_SET_HOSTNAME 0x00000001 #define PR_ALLOW_SYSVIPC 0x00000002 #define PR_ALLOW_RAW_SOCKETS 0x00000004 @@ -224,17 +227,9 @@ struct prison_racct { #define PR_ALLOW_MOUNT 0x00000010 #define PR_ALLOW_QUOTAS 0x00000020 #define PR_ALLOW_SOCKET_AF 0x00000040 -#define PR_ALLOW_MOUNT_DEVFS 0x00000080 -#define PR_ALLOW_MOUNT_NULLFS 0x00000100 -#define PR_ALLOW_MOUNT_ZFS 0x00000200 -#define PR_ALLOW_MOUNT_PROCFS 0x00000400 -#define PR_ALLOW_MOUNT_TMPFS 0x00000800 -#define PR_ALLOW_MOUNT_FDESCFS 0x00001000 -#define PR_ALLOW_MOUNT_LINPROCFS 0x00002000 -#define PR_ALLOW_MOUNT_LINSYSFS 0x00004000 #define PR_ALLOW_RESERVED_PORTS 0x00008000 #define PR_ALLOW_KMEM_ACCESS 0x00010000 /* reserved, not used yet */ -#define PR_ALLOW_ALL 0x0001ffff +#define PR_ALLOW_ALL_STATIC 0x0001807f /* * OSD methods @@ -364,6 +359,7 @@ struct ucred; struct mount; struct sockaddr; struct statfs; +struct vfsconf; int jailed(struct ucred *cred); int jailed_without_vnet(struct ucred *); void getcredhostname(struct ucred *, char *, size_t); @@ -413,6 +409,7 @@ int prison_if(struct ucred *cred, struct sockaddr *sa) char *prison_name(struct prison *, struct prison *); int prison_priv_check(struct ucred *cred, int priv); int sysctl_jail_param(SYSCTL_HANDLER_ARGS); +void prison_add_vfs(struct vfsconf *vfsp); void prison_racct_foreach(void (*callback)(struct racct *racct, void *arg2, void *arg3), void (*pre)(void), void (*post)(void), void *arg2, void *arg3); Modified: head/sys/sys/mount.h ============================================================================== --- head/sys/sys/mount.h Fri May 4 20:38:26 2018 (r333262) +++ head/sys/sys/mount.h Fri May 4 20:54:27 2018 (r333263) @@ -516,6 +516,7 @@ struct vfsconf { int vfc_typenum; /* historic filesystem type number */ int vfc_refcount; /* number mounted of this type */ int vfc_flags; /* permanent flags */ + int vfc_prison_flag; /* prison allow.mount.* flag */ struct vfsoptdecl *vfc_opts; /* mount options */ TAILQ_ENTRY(vfsconf) vfc_list; /* list of vfscons */ }; @@ -851,7 +852,8 @@ vfs_statfs_t __vfs_statfs; */ #define VFS_VERSION_00 0x19660120 #define VFS_VERSION_01 0x20121030 -#define VFS_VERSION VFS_VERSION_01 +#define VFS_VERSION_02 0x20180504 +#define VFS_VERSION VFS_VERSION_02 #define VFS_SET(vfsops, fsname, flags) \ static struct vfsconf fsname ## _vfsconf = { \ Modified: head/usr.sbin/jail/jail.8 ============================================================================== --- head/usr.sbin/jail/jail.8 Fri May 4 20:38:26 2018 (r333262) +++ head/usr.sbin/jail/jail.8 Fri May 4 20:54:27 2018 (r333263) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 5, 2017 +.Dd May 4, 2018 .Dt JAIL 8 .Os .Sh NAME @@ -545,6 +545,33 @@ is set to a value lower than 2. The devfs ruleset should be restricted from the default by using the .Va devfs_ruleset option. +.It Va allow.quotas +The jail root may administer quotas on the jail's filesystem(s). +This includes filesystems that the jail may share with other jails or +with non-jailed parts of the system. +.It Va allow.socket_af +Sockets within a jail are normally restricted to IPv4, IPv6, local +(UNIX), and route. This allows access to other protocol stacks that +have not had jail functionality added to them. +.It Va allow.reserved_ports +The jail root may bind to ports lower than 1024. +.El +.El +.Pp +Kernel modules may add their own parameters, which only exist when the +module is loaded. +These are typically headed under a parameter named after the module, +with values of +.Dq inherit +to give the jail full use of the module, +.Dq new +to encapsulate the jail in some module-specific way, +and +.Dq disable +to make the module unavailable to the jail. +There also may be other parameters to define jail behavior within the module. +Module-specific parameters include: +.Bl -tag -width indent .It Va allow.mount.fdescfs privileged users inside the jail will be able to mount and unmount the fdescfs file system. @@ -605,33 +632,6 @@ See .Xr zfs 8 for information on how to configure the ZFS filesystem to operate from within a jail. -.It Va allow.quotas -The jail root may administer quotas on the jail's filesystem(s). -This includes filesystems that the jail may share with other jails or -with non-jailed parts of the system. -.It Va allow.socket_af -Sockets within a jail are normally restricted to IPv4, IPv6, local -(UNIX), and route. This allows access to other protocol stacks that -have not had jail functionality added to them. -.It Va allow.reserved_ports -The jail root may bind to ports lower than 1024. -.El -.El -.Pp -Kernel modules may add their own parameters, which only exist when the -module is loaded. -These are typically headed under a parameter named after the module, -with values of -.Dq inherit -to give the jail full use of the module, -.Dq new -to encapsulate the jail in some module-specific way, -and -.Dq disable -to make the module unavailable to the jail. -There also may be other parameters to define jail behavior within the module. -Module-specific parameters include: -.Bl -tag -width indent .It Va linux Determine how a jail's Linux emulation environment appears. A value of From owner-svn-src-all@freebsd.org Fri May 4 21:17:30 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 05B67FB8866; Fri, 4 May 2018 21:17:29 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 91EE56B413; Fri, 4 May 2018 21:17:29 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 869C41441D; Fri, 4 May 2018 21:17:29 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44LHTuR048798; Fri, 4 May 2018 21:17:29 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44LHT6T048797; Fri, 4 May 2018 21:17:29 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201805042117.w44LHT6T048797@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 4 May 2018 21:17:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333264 - head/release/tools X-SVN-Group: head X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: head/release/tools X-SVN-Commit-Revision: 333264 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 21:17:30 -0000 Author: gjb Date: Fri May 4 21:17:29 2018 New Revision: 333264 URL: https://svnweb.freebsd.org/changeset/base/333264 Log: Fix a typo. Submitted by: lidl MFC after: 3 days MFC with: r333262 Sponsored by: The FreeBSD Foundation Modified: head/release/tools/gce.conf Modified: head/release/tools/gce.conf ============================================================================== --- head/release/tools/gce.conf Fri May 4 20:54:27 2018 (r333263) +++ head/release/tools/gce.conf Fri May 4 21:17:29 2018 (r333264) @@ -87,7 +87,7 @@ EOF # To meet GCE marketplace requirements, extract the src.txz and # ports.txz distributions to the target virtual machine disk image - # and fetch the sources for the third-part software installed on + # and fetch the sources for the third-party software installed on # the image. if [ ! -c "${DESTDIR}/dev/null" ]; then mkdir -p ${DESTDIR}/dev From owner-svn-src-all@freebsd.org Fri May 4 22:33:55 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E347FFBA23A; Fri, 4 May 2018 22:33:54 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9A3A57DED9; Fri, 4 May 2018 22:33:54 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 94DE0150F2; Fri, 4 May 2018 22:33:54 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44MXs2w089193; Fri, 4 May 2018 22:33:54 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44MXsC7089190; Fri, 4 May 2018 22:33:54 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <201805042233.w44MXsC7089190@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Fri, 4 May 2018 22:33:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333265 - head/sys/sys X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/sys X-SVN-Commit-Revision: 333265 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 22:33:55 -0000 Author: mjg Date: Fri May 4 22:33:54 2018 New Revision: 333265 URL: https://svnweb.freebsd.org/changeset/base/333265 Log: Allow the compiler to use __builtin_memcpy In particular this allows the compiler to avoid heavy-handed machinery if the to be copied buffer is small. Reviewed by: jhb Modified: head/sys/sys/systm.h head/sys/sys/zutil.h Modified: head/sys/sys/systm.h ============================================================================== --- head/sys/sys/systm.h Fri May 4 21:17:29 2018 (r333264) +++ head/sys/sys/systm.h Fri May 4 22:33:54 2018 (r333265) @@ -275,6 +275,7 @@ void bzero(void * _Nonnull buf, size_t len); void explicit_bzero(void * _Nonnull, size_t); void *memcpy(void * _Nonnull to, const void * _Nonnull from, size_t len); +#define memcpy(to, from, len) __builtin_memcpy(to, from, len) void *memmove(void * _Nonnull dest, const void * _Nonnull src, size_t n); int copystr(const void * _Nonnull __restrict kfaddr, Modified: head/sys/sys/zutil.h ============================================================================== --- head/sys/sys/zutil.h Fri May 4 21:17:29 2018 (r333264) +++ head/sys/sys/zutil.h Fri May 4 22:33:54 2018 (r333265) @@ -32,7 +32,6 @@ #include #include # define HAVE_MEMCPY -# define memcpy(d, s, n) bcopy((s), (d), (n)) # define memset(d, v, n) bzero((d), (n)) # define memcmp bcmp From owner-svn-src-all@freebsd.org Fri May 4 22:38:34 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9D61FFBA2EA; Fri, 4 May 2018 22:38:34 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-qt0-x242.google.com (mail-qt0-x242.google.com [IPv6:2607:f8b0:400d:c0d::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 40D7D7E715; Fri, 4 May 2018 22:38:34 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-qt0-x242.google.com with SMTP id g13-v6so29419349qth.8; Fri, 04 May 2018 15:38:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=74Wqc4BxTRTcIMk4wiVtzL2kHTLMjmZj2zX4bzgdBGU=; b=o+UZNtiU66OGPbBFqql+d79r0aI3xGBuaStQsPqxdjEKPwbO5PWQNawAj+3/c8sYIj lgoBiJRAd6x5oKNvmnrfamv0XPPdm0NPpMSskgGcE3K4hXYsie8NG1rLM+zJjsrAxDlV /nG+OtkOG1HYTjRRpIpxz9kphB4zJMeDzeRRWawygfkJHyI1WOpeCC2D9UR1pClbWtJp JBKFBQT1U9uX69oLJ07THUB/ZmoI8zQleWhfCkSMzpynLkemEvXZS7k/2T4jo4UPTn+w TAXvRfiLfDtbe3ycPr9xWcJX5FJaHx67VIliUdVGtqVN/cHdnzaPHQe0NeTige0B4L15 f2Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=74Wqc4BxTRTcIMk4wiVtzL2kHTLMjmZj2zX4bzgdBGU=; b=FXKHfLwmxQyfQkOEtbSkTPWDfFLZsD0Yn69d2bJjB5yEq/AascByHNN9Wt/FSPx5Xh ZwGkPwIPaZ9GsiTi6VYT68ucSDentrJOfgjHnRsSg3NPdMMClGxO0GNudflZkM5ftZW9 RGuI3h9PqJO31bxk7dhFKELzPH99r8scc1Noo40DcalYHoqlGPlKCQvqRl3W9wh4DLH/ n1aM4VgCJ4OADl7k4GLEAC7ToGuX3ewoznLqVjuoYFRD5jycnwicRf9Lx1EA9ptiMAF1 6UCVl6g5b+ud/HAx1bsvVQ5Z4yQ746RDjqFKkmUlbSLxdoGV7OmzlyRmpvo9qWdwGPxk zukQ== X-Gm-Message-State: ALQs6tAgIuzop1/b87tQ5HrZy7UAGXFZYDjmuIBOPyopJy6bYIp5Jz6v JMt4hdTeuD3S2lJIkny8KcZFS+cpuoLBoLKWDbw= X-Google-Smtp-Source: AB8JxZpaN4kJwOMtmSGms1zMknMIwzxAQABBmZooDAAs0TUwBqjQBXCkyd9HU7jXvpJeSSG/UX/7Sg2zCu+MbX1THuI= X-Received: by 2002:a0c:b2c2:: with SMTP id d2-v6mr9507555qvf.16.1525473513672; Fri, 04 May 2018 15:38:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.28.74 with HTTP; Fri, 4 May 2018 15:38:33 -0700 (PDT) In-Reply-To: <20180504155301.GA56280@spindle.one-eyed-alien.net> References: <201805040400.w4440moH025057@repo.freebsd.org> <20180504155301.GA56280@spindle.one-eyed-alien.net> From: Mateusz Guzik Date: Sat, 5 May 2018 00:38:33 +0200 Message-ID: Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys To: Brooks Davis Cc: Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 22:38:34 -0000 On Fri, May 4, 2018 at 5:53 PM, Brooks Davis wrote: > On Fri, May 04, 2018 at 04:00:48AM +0000, Mateusz Guzik wrote: > > Author: mjg > > Date: Fri May 4 04:00:48 2018 > > New Revision: 333240 > > URL: https://svnweb.freebsd.org/changeset/base/333240 > > > > Log: > > Allow __builtin_memmove instead of bcopy for small buffers of known > size > > What is the justification for forcing a size rather than using the > compiler's built-in fallback to memmove? Is the kernel compilation > environment disabling that? > > It will fallback to memmove which is super pessimized as being wrapped around bcopy. These limits will get lifted after the fallback routines get sorted out. -- Mateusz Guzik From owner-svn-src-all@freebsd.org Fri May 4 22:41:13 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 234C5FBA3C3; Fri, 4 May 2018 22:41:13 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C08CF7EE08; Fri, 4 May 2018 22:41:12 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BAB1315125; Fri, 4 May 2018 22:41:12 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44MfCFS090894; Fri, 4 May 2018 22:41:12 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44MfC9E090893; Fri, 4 May 2018 22:41:12 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <201805042241.w44MfC9E090893@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Fri, 4 May 2018 22:41:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333266 - head/sys/amd64/amd64 X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/amd64/amd64 X-SVN-Commit-Revision: 333266 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 22:41:13 -0000 Author: mjg Date: Fri May 4 22:41:12 2018 New Revision: 333266 URL: https://svnweb.freebsd.org/changeset/base/333266 Log: amd64: syscall path bcopy -> memcpy Modified: head/sys/amd64/amd64/trap.c Modified: head/sys/amd64/amd64/trap.c ============================================================================== --- head/sys/amd64/amd64/trap.c Fri May 4 22:33:54 2018 (r333265) +++ head/sys/amd64/amd64/trap.c Fri May 4 22:41:12 2018 (r333266) @@ -908,7 +908,7 @@ cpu_fetch_syscall_args(struct thread *td) error = 0; argp = &frame->tf_rdi; argp += reg; - bcopy(argp, sa->args, sizeof(sa->args[0]) * 6); + memcpy(sa->args, argp, sizeof(sa->args[0]) * 6); if (sa->narg > regcnt) { KASSERT(params != NULL, ("copyin args with no params!")); error = copyin(params, &sa->args[regcnt], From owner-svn-src-all@freebsd.org Fri May 4 22:48:11 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 43E16FBA605; Fri, 4 May 2018 22:48:11 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EEC28814AA; Fri, 4 May 2018 22:48:10 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E55801527F; Fri, 4 May 2018 22:48:10 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w44MmARu094151; Fri, 4 May 2018 22:48:10 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w44MmAbu094150; Fri, 4 May 2018 22:48:10 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <201805042248.w44MmAbu094150@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Fri, 4 May 2018 22:48:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333267 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 333267 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 22:48:11 -0000 Author: mjg Date: Fri May 4 22:48:10 2018 New Revision: 333267 URL: https://svnweb.freebsd.org/changeset/base/333267 Log: tc: bcopy -> memcpy Modified: head/sys/kern/kern_tc.c Modified: head/sys/kern/kern_tc.c ============================================================================== --- head/sys/kern/kern_tc.c Fri May 4 22:41:12 2018 (r333266) +++ head/sys/kern/kern_tc.c Fri May 4 22:48:10 2018 (r333267) @@ -1352,7 +1352,7 @@ tc_windup(struct bintime *new_boottimebin) ogen = th->th_generation; th->th_generation = 0; atomic_thread_fence_rel(); - bcopy(tho, th, offsetof(struct timehands, th_generation)); + memcpy(th, tho, offsetof(struct timehands, th_generation)); if (new_boottimebin != NULL) th->th_boottime = *new_boottimebin; From owner-svn-src-all@freebsd.org Fri May 4 22:58:22 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 67C3AFBA8F7 for ; Fri, 4 May 2018 22:58:22 +0000 (UTC) (envelope-from steven@multiplay.co.uk) Received: from mail-lf0-x236.google.com (mail-lf0-x236.google.com [IPv6:2a00:1450:4010:c07::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AC97C82D1C for ; Fri, 4 May 2018 22:58:21 +0000 (UTC) (envelope-from steven@multiplay.co.uk) Received: by mail-lf0-x236.google.com with SMTP id g12-v6so33039823lfb.10 for ; Fri, 04 May 2018 15:58:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=multiplay-co-uk.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7LkSp2Mnc7UxVgMyQYZaBWGRngsvnB2JBt/htDOCHE4=; b=dIyVXXuO3ghNqTN28gv9Gdx9uZXmqor+rJ6nG7N3wJcd3rugd5UvZ6WyNH0Mbn7vA6 3EvgtrQ1Qd3AMyaPsScxzhSISnTrBFtWh5xtlUaZddQPchD527NnW4r1xCwoh+BgGVsF AhXoXNIX+AFb/1Yh07T8p5hUfq1jGToTA0DG95EVz76Lr+lpwhcHzomKfPrRLTYHCHAg meABOmhLQUAhZCMrDMM2z5tJhH7T0rS0Unpm2LuMKsa/OYgE8eHWldcpuRmks6kfNnOg PDGkmwerLVKibfGhgRI2fwbdgyH+Sg2nvH4/8zq8f/nBRkkYLxOZA+KJ/6CCQrgYGSPP TODw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7LkSp2Mnc7UxVgMyQYZaBWGRngsvnB2JBt/htDOCHE4=; b=s/Ud8YHJhhZB6DGNFmih4gp4ddoeG5cv1mBMOEP5HG3gYdy38nRwXGJlNAkndOqMPJ BM/t1fxtYe9xZeCl+mIUU64Ag/ihE9IxaCIL/nC/hlYbW7eLb66RDMmzTnps32pgq7sK o5MmcwyCOrfElrkX/z2TBTxNIKll2Rc1K+bEcj9vVINL3a4CpIp1/atOyCpQcVWzhDQr tDzPASAsf9jZye3GJKRC8DkOA4HXcWRHyy9JbBNYi+EkGu7++C6/Q3t3NCU8Y8yuNOJW jP4PbfSSa8ZaH4dBvXWto+7Rwf4M80VlggsVkxnexJrfH88VmNg48l2jnLBZJHM3cHwk Kq0A== X-Gm-Message-State: ALQs6tD3yTQ46uop60VdSCW7vljf76YoQKE152uCoUsw42pqNSVqMdlz Z4pdDtc3WW1XJ1lof5d8mOILpJ6qz/U6op830hkDKw== X-Google-Smtp-Source: AB8JxZoHxM1SI3Pl/pG8aMngTuQ+A8VE7ha66ThsdZpOSVYX8ecDKr+hFSe/tH6TxDfTOsloavPyjszi+6S07J2pI6E= X-Received: by 2002:a19:5209:: with SMTP id m9-v6mr17573475lfb.72.1525474700004; Fri, 04 May 2018 15:58:20 -0700 (PDT) MIME-Version: 1.0 References: <201805042241.w44MfC9E090893@repo.freebsd.org> In-Reply-To: <201805042241.w44MfC9E090893@repo.freebsd.org> From: Steven Hartland Date: Fri, 04 May 2018 22:58:09 +0000 Message-ID: Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 To: Mateusz Guzik Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 22:58:22 -0000 Can we get the why in commit messages please? This sort of message doesnt provide anything more that can be obtained from reading the diff, which just leaves us wondering why? I=E2=80=99m sure there is a good reason, but without confirmation we=E2=80= =99re just left guessing. The knock on to this is if some assumption that caused the why changes, anyone looking at this will not be able to make an informed descision that that was the case. On Fri, 4 May 2018 at 23:41, Mateusz Guzik wrote: > Author: mjg > Date: Fri May 4 22:41:12 2018 > New Revision: 333266 > URL: https://svnweb.freebsd.org/changeset/base/333266 > > Log: > amd64: syscall path bcopy -> memcpy > > Modified: > head/sys/amd64/amd64/trap.c > > Modified: head/sys/amd64/amd64/trap.c > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/amd64/amd64/trap.c Fri May 4 22:33:54 2018 (r333265) > +++ head/sys/amd64/amd64/trap.c Fri May 4 22:41:12 2018 (r333266) > @@ -908,7 +908,7 @@ cpu_fetch_syscall_args(struct thread *td) > error =3D 0; > argp =3D &frame->tf_rdi; > argp +=3D reg; > - bcopy(argp, sa->args, sizeof(sa->args[0]) * 6); > + memcpy(sa->args, argp, sizeof(sa->args[0]) * 6); > if (sa->narg > regcnt) { > KASSERT(params !=3D NULL, ("copyin args with no params!")= ); > error =3D copyin(params, &sa->args[regcnt], > > From owner-svn-src-all@freebsd.org Fri May 4 22:58:42 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 41023FBA92E for ; Fri, 4 May 2018 22:58:42 +0000 (UTC) (envelope-from steven@multiplay.co.uk) Received: from mail-lf0-x234.google.com (mail-lf0-x234.google.com [IPv6:2a00:1450:4010:c07::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A7C7D82E33 for ; Fri, 4 May 2018 22:58:41 +0000 (UTC) (envelope-from steven@multiplay.co.uk) Received: by mail-lf0-x234.google.com with SMTP id y72-v6so19299816lfd.2 for ; Fri, 04 May 2018 15:58:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=multiplay-co-uk.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KqBPRKbMXWkeCiP7qcBPe+rfEwECalf4BB3wW9R480A=; b=sRzD2MTtNDv7NwFd0yH6Ek1jVaj2HGliPh4Xr1tPEqt1XmWU8NWRm3DIJW6FhIJHDt KScdKrvBKgG5tNa0g6Q+7H350XzcnLz+/VWaZQDBzYVlePtkvkcabRL7xcNMdxuP1LYk l5e6fJQd1Rq4K/pu0VLUrk5MMOf4PEhKAf9eNkF7m2tz8exsdzfY3G3okpEhphT23Otu Bjo9eL3KbvH+cTRoOeNNs6oyeqk+AxFH0CfZQ7DWarUhe9OYZDqVoeQzWbgf8VsPh6O9 UdYMdCN44wIpPR6tvQEc+2EIF8Ws1iYCu5hH1t5CVtCRadk06We7rN/Tj2o1w+CpmFEw UdAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KqBPRKbMXWkeCiP7qcBPe+rfEwECalf4BB3wW9R480A=; b=ky6q39rcUXN8YCKVnPd3l5UWFN4zMf4m/c5UYfAg84LzUKh2VdRn2tZA8w0+bxCWV9 30JLe5+d3/95KVfb3+Hi/lWtwuiaW5ZyUjuv38V5q9iKtjpDyBvsuf9Sz0zttfkdPNMx lMwNBsP3KBKR2uNMzdX09ZEPMzbkwow/G8RyDf0jf6eyj3frLqaKTxIODYb9MInjEy8l +f+Aly/OlYECMYWgzyOVtTCg34TXsqao/cnIjlCPdFys6SHB5cDz//p1FcpESE3nRtV3 hckpGKxNPnK7RX26vwwmS8hRuOHCOENkV3wawNzio73h/BaBrUCueb8QFXDW5HX94NDC LDHA== X-Gm-Message-State: ALQs6tDUPb22IcsDjg4TTraamQG75F5S4DcxxhvnNk/MY9c7Rip/6lF7 FLE1d1dwOMB2ZR7yfvuA/y4f+XRQlSrMtWVdbN99jgf/ X-Google-Smtp-Source: AB8JxZor6UYdHGIO0GOUYcc6sQ3KmQuu8p9UvLlOxLm5HBrtTomjA1dX+S01amEhdo/7s9NZ/T8E06zmgVGR9jZZYA0= X-Received: by 2002:a2e:4082:: with SMTP id r2-v6mr20932397lje.48.1525474720237; Fri, 04 May 2018 15:58:40 -0700 (PDT) MIME-Version: 1.0 References: <201805042248.w44MmAbu094150@repo.freebsd.org> In-Reply-To: <201805042248.w44MmAbu094150@repo.freebsd.org> From: Steven Hartland Date: Fri, 04 May 2018 22:58:29 +0000 Message-ID: Subject: Re: svn commit: r333267 - head/sys/kern To: Mateusz Guzik Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 22:58:42 -0000 Again why? On Fri, 4 May 2018 at 23:48, Mateusz Guzik wrote: > Author: mjg > Date: Fri May 4 22:48:10 2018 > New Revision: 333267 > URL: https://svnweb.freebsd.org/changeset/base/333267 > > Log: > tc: bcopy -> memcpy > > Modified: > head/sys/kern/kern_tc.c > > Modified: head/sys/kern/kern_tc.c > > ============================================================================== > --- head/sys/kern/kern_tc.c Fri May 4 22:41:12 2018 (r333266) > +++ head/sys/kern/kern_tc.c Fri May 4 22:48:10 2018 (r333267) > @@ -1352,7 +1352,7 @@ tc_windup(struct bintime *new_boottimebin) > ogen = th->th_generation; > th->th_generation = 0; > atomic_thread_fence_rel(); > - bcopy(tho, th, offsetof(struct timehands, th_generation)); > + memcpy(th, tho, offsetof(struct timehands, th_generation)); > if (new_boottimebin != NULL) > th->th_boottime = *new_boottimebin; > > > From owner-svn-src-all@freebsd.org Fri May 4 23:03:03 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DBD2AFBABBA for ; Fri, 4 May 2018 23:03:02 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x235.google.com (mail-io0-x235.google.com [IPv6:2607:f8b0:4001:c06::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 70FB184650 for ; Fri, 4 May 2018 23:03:02 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x235.google.com with SMTP id a10-v6so27433451ioc.9 for ; Fri, 04 May 2018 16:03:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=0QtzySXEwOv+QugdOlLF+0o6/UOj9Afwc00C6+xUCOg=; b=p/fMsHtK21SOYVjtjU/IXVOKq5mntNHM7V6nU2ed8q9YLhcEdzaNTRjLu1A56b7034 /uPSh7nn3fEEFtsvE92NvFOisv+pqpGsuciQenNzIgjyjdzw+ycOkWkmHPp3smfD1jKW Ykmm7jHftGlVHzm/a5Qa8PNbJcSVj+V/fbkOozv9v2S4l1cPEwLZSFe4p4cqUyArGzrh JPLGJcsb2w622WSu++wvTkBt/amSLikt12SebhqKOpwneEeZ3+hG5uZGYMAeEIR2hKpx pKVGraX5z9euGM1bGTVbIuqD3vBDNXPXE+kB7efeoSbz+Agy7eWqvBuyy2ksO4jSKCDX mOTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0QtzySXEwOv+QugdOlLF+0o6/UOj9Afwc00C6+xUCOg=; b=DRrWdQUarNrm1YGSzAY66AYut6DmYGKIZI/WZAxXKfiFEwxB2824ffSxtJX0KkjqJl Ld3f1ZjBL86fZtTTb9i14cXLOGsTohgkqV3jG2JBShzVUvOrGZVb/HmXSsFvOaHoCZYv 2UPvuA5hm6P2DIe57ecxcWPTKDsKQzXccTFmGhaX0Kc0Zhv4Obm1snU5iuLImC5/61G9 oP40WqM/2XWCGaBVZi3t3q0bQxsLE0uRoezyPhgtlsyHxgNA0vqP4o+RBcsiO8eAzZqZ YKx/UuzEYHK4Zm4SwITsXmWS5VGBTgvdFsUGmtXpcurHFjyYq2lg0D5ubsgf+gdqVLhm RwWA== X-Gm-Message-State: ALQs6tAUEwnUlWz03YhF/qP8nnzMYD7mgBWiP2uvrDgqBD+RbFqxneHG tRiSk0q/N9BuybMcCWAfOwhQRYtcgSVhfXiSesdR+A== X-Google-Smtp-Source: AB8JxZrsqYVcvALaNEFTJyzJYhbiI7AeKNO/ovAl+fuGJIiS/go6HJzIoQ/St8ndAp2Gp5Uvd5qTBlPnFEa2YetcAek= X-Received: by 2002:a6b:5a0d:: with SMTP id o13-v6mr31021120iob.39.1525474981528; Fri, 04 May 2018 16:03:01 -0700 (PDT) MIME-Version: 1.0 References: <201805042241.w44MfC9E090893@repo.freebsd.org> In-Reply-To: From: Warner Losh Date: Fri, 04 May 2018 23:02:50 +0000 Message-ID: Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 To: Steven Hartland Cc: Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 23:03:03 -0000 While i wholeheartedly agree, an earlier commit explained why in this case. It allows the compiler to inline for small copies. Warner On Fri, May 4, 2018, 4:58 PM Steven Hartland < steven.hartland@multiplay.co.uk> wrote: > Can we get the why in commit messages please? > > This sort of message doesnt provide anything more that can be obtained > from reading the diff, which just leaves us wondering why? > > I=E2=80=99m sure there is a good reason, but without confirmation we=E2= =80=99re just left > guessing. The knock on to this is if some assumption that caused the why > changes, anyone looking at this will not be able to make an informed > descision that that was the case. > > On Fri, 4 May 2018 at 23:41, Mateusz Guzik wrote: > >> Author: mjg >> Date: Fri May 4 22:41:12 2018 >> New Revision: 333266 >> URL: https://svnweb.freebsd.org/changeset/base/333266 >> >> Log: >> amd64: syscall path bcopy -> memcpy >> >> Modified: >> head/sys/amd64/amd64/trap.c >> >> Modified: head/sys/amd64/amd64/trap.c >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/amd64/amd64/trap.c Fri May 4 22:33:54 2018 (r333265= ) >> +++ head/sys/amd64/amd64/trap.c Fri May 4 22:41:12 2018 (r333266= ) >> @@ -908,7 +908,7 @@ cpu_fetch_syscall_args(struct thread *td) >> error =3D 0; >> argp =3D &frame->tf_rdi; >> argp +=3D reg; >> - bcopy(argp, sa->args, sizeof(sa->args[0]) * 6); >> + memcpy(sa->args, argp, sizeof(sa->args[0]) * 6); >> if (sa->narg > regcnt) { >> KASSERT(params !=3D NULL, ("copyin args with no params!"= )); >> error =3D copyin(params, &sa->args[regcnt], >> >> From owner-svn-src-all@freebsd.org Fri May 4 23:12:48 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3190FFBAEB4; Fri, 4 May 2018 23:12:48 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-qk0-x243.google.com (mail-qk0-x243.google.com [IPv6:2607:f8b0:400d:c09::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B8DA987202; Fri, 4 May 2018 23:12:47 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-qk0-x243.google.com with SMTP id p186so17914184qkd.1; Fri, 04 May 2018 16:12:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=DI7Me33TWwo7wA+idU3CooCTWjKnTbqrWX2tDhp2gfE=; b=p9RmOLbmg3SUFhhT3gb1rOB/LPitsK6PZSyOAiXcqgC/suHnZm7nnn/fjSoocKMUqX /T1M/7JWslKzlxb1VIvJFTjvpu1HDEuUcDBenr4gognw9AhOV5NzDqovAgqA9ayQFKoU wHe0TyMUgK7NeS+leLfuWvy5NroDplrl4/jwkd2tRiTkXvpDWk0dnDMYNTNyIEERRN/j sc1ZQCVrlZS/euK6+K+JJFcdGVtD3NsTv1aVNjU9RbnXkclZ35GLywCb3oRAXSGJoPDQ B3YaSAzDJsRMvUOVKUNhorLVzAK4JLWtiKeghVqhCUEZQ+65ah4lnzF3co32uAvDypzb CVYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=DI7Me33TWwo7wA+idU3CooCTWjKnTbqrWX2tDhp2gfE=; b=pUUI/K3Vt12sv337E9KvAZZW+2Z0x9Sj4ZM5trcw4rDh/6zj8e/4iZh+MhC3ZEqCJk P2adoeOO2Y7qpClNvxuGoIy0D6DmyyvpgNzKt3VMq1eo3R+/zHrvaDIIPhuj9l99jj58 begMRYuuV+jZPZuGvkkBdKvtN9nmWt5hRrUKIEGctjgbYc5jnOHr0qN8HNPTAdKtDqlM oso0Rlj/+RIP/N+ZV921i6YuY5EAb+qXaGi1snMDmEPfYqbtfr9GCAHGyTa3GsdgUs6U rzdr5voVIQVk0t6LrzmTefKQvC68uLfWqWJDSrAUe02FlZ8RUQOwmKUS2+qitKycOQc7 DtjQ== X-Gm-Message-State: ALQs6tBnSDaGqx2ijwo9/t5T7GdH4fXWvja92rxw+54AakV6eNrVWF5l kTEjFMCxUAsnQ/FCGNCBCZzNff5HVCOJzkVkSNc= X-Google-Smtp-Source: AB8JxZrvDN/zzdPqZgySTwMY9NITdPN8TBprPReglysGr0MY/lbKPQJDiGTQWJT/k9mx0PpGAsY9foliG5VhVi3u8Po= X-Received: by 10.55.147.66 with SMTP id v63mr24993686qkd.40.1525475567356; Fri, 04 May 2018 16:12:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.28.74 with HTTP; Fri, 4 May 2018 16:12:46 -0700 (PDT) In-Reply-To: References: <201805042241.w44MfC9E090893@repo.freebsd.org> From: Mateusz Guzik Date: Sat, 5 May 2018 01:12:46 +0200 Message-ID: Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 To: Steven Hartland Cc: Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 23:12:48 -0000 On Sat, May 5, 2018 at 12:58 AM, Steven Hartland < steven.hartland@multiplay.co.uk> wrote: > Can we get the why in commit messages please? > > This sort of message doesnt provide anything more that can be obtained > from reading the diff, which just leaves us wondering why? > > I=E2=80=99m sure there is a good reason, but without confirmation we=E2= =80=99re just left > guessing. The knock on to this is if some assumption that caused the why > changes, anyone looking at this will not be able to make an informed > descision that that was the case. > > bcopy is an equivalent of memmove, i.e. it accepts overlapping buffers. But if we know for a fact they don't overlap (like here), doing this over memcpy (which does not accept such buffers) only puts avoidable constraints on the optimizer. This is a rather pedestrian change which can be made in many places, I don't see the point of repeating the explanation in each one. Although I guess it would make sense to point at a specific commit which explains things. > On Fri, 4 May 2018 at 23:41, Mateusz Guzik wrote: > >> Author: mjg >> Date: Fri May 4 22:41:12 2018 >> New Revision: 333266 >> URL: https://svnweb.freebsd.org/changeset/base/333266 >> >> Log: >> amd64: syscall path bcopy -> memcpy >> >> Modified: >> head/sys/amd64/amd64/trap.c >> >> Modified: head/sys/amd64/amd64/trap.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- head/sys/amd64/amd64/trap.c Fri May 4 22:33:54 2018 (r333265= ) >> +++ head/sys/amd64/amd64/trap.c Fri May 4 22:41:12 2018 (r333266= ) >> @@ -908,7 +908,7 @@ cpu_fetch_syscall_args(struct thread *td) >> error =3D 0; >> argp =3D &frame->tf_rdi; >> argp +=3D reg; >> - bcopy(argp, sa->args, sizeof(sa->args[0]) * 6); >> + memcpy(sa->args, argp, sizeof(sa->args[0]) * 6); >> if (sa->narg > regcnt) { >> KASSERT(params !=3D NULL, ("copyin args with no params!"= )); >> error =3D copyin(params, &sa->args[regcnt], >> >> --=20 Mateusz Guzik From owner-svn-src-all@freebsd.org Fri May 4 23:39:58 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8A02EFBBA56; Fri, 4 May 2018 23:39:58 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8D6DC6E1CF; Fri, 4 May 2018 23:39:57 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w44Ndr38044527; Fri, 4 May 2018 16:39:53 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w44Ndr2E044526; Fri, 4 May 2018 16:39:53 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201805042339.w44Ndr2E044526@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 In-Reply-To: To: Mateusz Guzik Date: Fri, 4 May 2018 16:39:53 -0700 (PDT) CC: Steven Hartland , Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 23:39:58 -0000 [ Charset UTF-8 unsupported, converting... ] > On Sat, May 5, 2018 at 12:58 AM, Steven Hartland < > steven.hartland@multiplay.co.uk> wrote: > > > Can we get the why in commit messages please? > > > > This sort of message doesnt provide anything more that can be obtained > > from reading the diff, which just leaves us wondering why? > > > > I?m sure there is a good reason, but without confirmation we?re just left > > guessing. The knock on to this is if some assumption that caused the why > > changes, anyone looking at this will not be able to make an informed > > descision that that was the case. > > > > > bcopy is an equivalent of memmove, i.e. it accepts overlapping buffers. > But if we know for a fact they don't overlap (like here), doing this over > memcpy (which does not accept such buffers) only puts avoidable > constraints on the optimizer. > > This is a rather pedestrian change which can be made in many places, > I don't see the point of repeating the explanation in each one. Although > I guess it would make sense to point at a specific commit which explains > things. Though this makes sense at the present time when one is reading commits one after the other, in 2 years time when I am looking at just the log file of just one of the effected files that context is lost, so please document things in a way that the information in the log is usefull, part of the purpose of the log is to help us locate and to understand why something was done to the code. It is really rather painful to be reading logs and have to do 30 svn diffs rXXXXX to see what the log entry is trying to explain, and in this case even that does not tell why it was done. > > > On Fri, 4 May 2018 at 23:41, Mateusz Guzik wrote: > > > >> Author: mjg > >> Date: Fri May 4 22:41:12 2018 > >> New Revision: 333266 > >> URL: https://svnweb.freebsd.org/changeset/base/333266 > >> > >> Log: > >> amd64: syscall path bcopy -> memcpy > >> > >> Modified: > >> head/sys/amd64/amd64/trap.c > >> > >> Modified: head/sys/amd64/amd64/trap.c > >> ============================================================ > >> ================== > >> --- head/sys/amd64/amd64/trap.c Fri May 4 22:33:54 2018 (r333265) > >> +++ head/sys/amd64/amd64/trap.c Fri May 4 22:41:12 2018 (r333266) > >> @@ -908,7 +908,7 @@ cpu_fetch_syscall_args(struct thread *td) > >> error = 0; > >> argp = &frame->tf_rdi; > >> argp += reg; > >> - bcopy(argp, sa->args, sizeof(sa->args[0]) * 6); > >> + memcpy(sa->args, argp, sizeof(sa->args[0]) * 6); > >> if (sa->narg > regcnt) { > >> KASSERT(params != NULL, ("copyin args with no params!")); > >> error = copyin(params, &sa->args[regcnt], > >> > >> > > > -- > Mateusz Guzik -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Fri May 4 23:44:50 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 96CCBFBBCE8 for ; Fri, 4 May 2018 23:44:50 +0000 (UTC) (envelope-from juli@northcloak.com) Received: from mail-qt0-x230.google.com (mail-qt0-x230.google.com [IPv6:2607:f8b0:400d:c0d::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2E8D26E5D4 for ; Fri, 4 May 2018 23:44:49 +0000 (UTC) (envelope-from juli@northcloak.com) Received: by mail-qt0-x230.google.com with SMTP id q13-v6so28775940qtp.4 for ; Fri, 04 May 2018 16:44:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=northcloak-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=aaP2NRbHR2gjVqG9rFDivwEQtTQ+WTm9lT/VmdPuCQA=; b=nSaP31APHUmjzt1juCQP36cqM4UX05aUGzFST7wgnmkySfzxNOhgIW+9dr/3psEaDX XZN2veWrP3BGdAdTO3HdFAq9+MuO5USfLvMCkt5rKNOojOhBhCMCGgFE+eKoIMVTZA9u o6zdYCujKsNLhM3ync1XLBonRFGGAaU9CkEyWnCDo8sxUmpTLW6HWS8oIpq5ZD7gsFlZ 2YinMLMH2fJRFFSjbZyV6VCuw0xDiK1hA2QNt8PA1N4V+lINwrXrL2Jx9J3ppGjG+R0y r79ZGYO7p6da4EkDHlWsC/j1Pn317KjlkshG8u1mGlnXMJXDliXFjutI9P3blhXc5Qpt h7Og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=aaP2NRbHR2gjVqG9rFDivwEQtTQ+WTm9lT/VmdPuCQA=; b=EWxBlVxvml0rcgn5DiuHNHtEZT4pewkesiFzEdQZgK5c2GFze59XJZ+Z0rDsy8eLLN 9ZWcUtUAYCUq6eyKX5L6npTKm3gCC2T1NFQLndT52xLQab5BVce7SOSwVXnhIICqOsKW 3b5QfVGjgReONsokt4PSIFg0ZO3dFHmlzV4baPWIMcest9m4GrpW5yn0T3LTxWC3xRii R9s2oRw4iAGDkiPe4dPh2k67roQ9FXVLi0W/6Sd+PS7hYTLGIfJq4Gu0TGa154quw24S kfFFIa17rgmO9IHWDE0wEAtav0IDOor26OW46CtsnfnZfTY+48lDiCUAf7et6d/IzHWS 12iQ== X-Gm-Message-State: ALQs6tA+YnyT5E0c+Km1qjfoIgsei+Qo02pF6l2PqJ7wbseFHNyIJchg YaPFC+Upbl8XNbVEOj13uftquw4hLfsZ5fK41ZgofA== X-Google-Smtp-Source: AB8JxZovzZcmaIXKowLZMca2mLmEpzAf22pkP70bQnyQev5lT1B3mDbCl+j64GCXU76b5V1sF0GZj9rZfQ9JbzamyXA= X-Received: by 2002:aed:23a1:: with SMTP id j30-v6mr15510498qtc.361.1525477489609; Fri, 04 May 2018 16:44:49 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.69.23 with HTTP; Fri, 4 May 2018 16:44:09 -0700 (PDT) In-Reply-To: References: <201805042241.w44MfC9E090893@repo.freebsd.org> From: Juli Mallett Date: Fri, 4 May 2018 16:44:09 -0700 Message-ID: Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 To: Mateusz Guzik Cc: Steven Hartland , Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 23:44:50 -0000 On 4 May 2018 at 16:12, Mateusz Guzik wrote: > On Sat, May 5, 2018 at 12:58 AM, Steven Hartland < > steven.hartland@multiplay.co.uk> wrote: > >> Can we get the why in commit messages please? >> >> This sort of message doesnt provide anything more that can be obtained >> from reading the diff, which just leaves us wondering why? >> >> I=E2=80=99m sure there is a good reason, but without confirmation we=E2= =80=99re just left >> guessing. The knock on to this is if some assumption that caused the why >> changes, anyone looking at this will not be able to make an informed >> descision that that was the case. >> >> > bcopy is an equivalent of memmove, i.e. it accepts overlapping buffers. > But if we know for a fact they don't overlap (like here), doing this over > memcpy (which does not accept such buffers) only puts avoidable > constraints on the optimizer. > > This is a rather pedestrian change which can be made in many places, > I don't see the point of repeating the explanation in each one. Although > I guess it would make sense to point at a specific commit which explains > things. > I feel like the second paragraph in particular suggests a methodical project (maybe in a branch?) to convert or mark all instances as not-to-be-converted based on their context and practical concerns (like performance) might be better than doing a bunch of one-off commits, with batched commits to -CURRENT from time-to-time. Then it's easy to say "Phase IV of bcopy analysis in kernel: convert to memcpy for all non-overlapping small copies" with a whole bunch of changes lumped together= . From owner-svn-src-all@freebsd.org Sat May 5 00:26:47 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 93F34FBDD38 for ; Sat, 5 May 2018 00:26:47 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x234.google.com (mail-io0-x234.google.com [IPv6:2607:f8b0:4001:c06::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 03DB77945D for ; Sat, 5 May 2018 00:26:47 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x234.google.com with SMTP id c9-v6so21222980iob.12 for ; Fri, 04 May 2018 17:26:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=Sv0St9+nqGs1hYTvKmCWqU2P70RuVR5eJqFyGtL14rA=; b=H3sIzoPG8DN0wahdnoGVTivNQ0dBsbLyEMG5IQ5SVkMoKylHDWl/rI5SzjlPHPIdCd dHrxLgarr1Xj08dyJAUkfarrKXqWrc9xLfGlN49Yl6kdAf99qB9l6mt/a0flrjAmJApz 1Hkmgtx7K7fNKgefL6GxDYMYrMCfCQePr32PFyb9ERUg0gOzClz7kRpeGIWwjTy5tN0L qhz8/NWVm3/jFEft4B/QOVT1ziUpgQuxkG43KdPsHk248OKuV9VCYSxxLX7DrQwbOTr6 H7I+JjHtltdvqOaHsClnHVvlvUvVidkxg+FxGB0o9zdxeXcnAkaHpf3vm7MtYn5J3uWY G5Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=Sv0St9+nqGs1hYTvKmCWqU2P70RuVR5eJqFyGtL14rA=; b=aihN20Ky0fevgpDdhd76R7mf3STnh0ZngzKHeLaPbEVtvl22np36n1ul/LUoJJPPiV +W8R2lj6M9QJPG6xDFgXNCm8C3fylllQ5RP9J9tKp9dcDE7zB2WRULCt4VtwzO31xm0I qs101/FC5lzgrt7qZ0rvo35sx/Dbk224RGRaxXKpMUXrkSXrwTLP8Wzh4dGXo/NbU5U/ UVkyhcfCdoFnQglUb78nBqHGIysEYqk1gNt5gMFMHykpU5uifaCrjNlRLciq7SZLvM2o +pg1sTX9iQCUCvwtLlGi0z/vaR3KiHEm0UT5zmjqIRqQw+MbX9LdRnuQEXYSly4IvDoI WnjA== X-Gm-Message-State: ALQs6tA7N735CX2AW0tOEHIPRp6zRjV2BQ/HIDmDxhZ2dRot6JFsbd1p 7zCRrKc43a4T7Dvgc8LQZZMpQy96ti1XCGkOCsSuVQ== X-Google-Smtp-Source: AB8JxZqOv0dYXLxYkL/9fKHPhOzVQIxUs8oDVkD3bzMM9PbA/arGkF/ZJAgyqFNDWeIFqzKcaa6XMeGrpyqDEE+mhDU= X-Received: by 2002:a6b:d404:: with SMTP id l4-v6mr31993702iog.37.1525480006209; Fri, 04 May 2018 17:26:46 -0700 (PDT) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 2002:a4f:a65a:0:0:0:0:0 with HTTP; Fri, 4 May 2018 17:26:45 -0700 (PDT) X-Originating-IP: [2603:300b:6:5100:1052:acc7:f9de:2b6d] In-Reply-To: References: <201805042241.w44MfC9E090893@repo.freebsd.org> From: Warner Losh Date: Fri, 4 May 2018 18:26:45 -0600 X-Google-Sender-Auth: ibXL-8sv6U6ipV7aq35zy55yf7M Message-ID: Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 To: Mateusz Guzik Cc: Steven Hartland , Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 00:26:47 -0000 On Fri, May 4, 2018 at 5:12 PM, Mateusz Guzik wrote: > On Sat, May 5, 2018 at 12:58 AM, Steven Hartland < > steven.hartland@multiplay.co.uk> wrote: > >> Can we get the why in commit messages please? >> >> This sort of message doesnt provide anything more that can be obtained >> from reading the diff, which just leaves us wondering why? >> >> I=E2=80=99m sure there is a good reason, but without confirmation we=E2= =80=99re just left >> guessing. The knock on to this is if some assumption that caused the why >> changes, anyone looking at this will not be able to make an informed >> descision that that was the case. >> >> > bcopy is an equivalent of memmove, i.e. it accepts overlapping buffers. > But if we know for a fact they don't overlap (like here), doing this over > memcpy (which does not accept such buffers) only puts avoidable > constraints on the optimizer. > bcopy, in userland, is memmove. bcopy in the kernel has had a more complicated history. Today it's more like memmove, but at times in the history of BSD/Unix it's be more akin to memcpy with a companion ovbcopy used for overlapping copies. FreeBSD has almost always been more in the 'bcopy is memmove' rather than the 'bcopy is memcpy' though some of the lower-tier architectures pulled in ovbcopy which we recently GC'd from NetBSD and/or OpenBSD. Plus there's been an irrational encouragement of using bcopy over mem* which has lead to the current state of affairs. For the vast majority of uses, it hasn't really mattered much in the past. It hasn't shown up on radar. However, as its optimization has moved into the compiler I'm guessing that's changed. It's that change of heart I think that are taking people by surprise. Warner From owner-svn-src-all@freebsd.org Sat May 5 00:38:40 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CAA8DFBE20A; Sat, 5 May 2018 00:38:39 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail108.syd.optusnet.com.au (mail108.syd.optusnet.com.au [211.29.132.59]) by mx1.freebsd.org (Postfix) with ESMTP id 090177B2E0; Sat, 5 May 2018 00:38:38 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from [192.168.0.102] (c110-21-101-228.carlnfd1.nsw.optusnet.com.au [110.21.101.228]) by mail108.syd.optusnet.com.au (Postfix) with ESMTPS id 0C7531A43EF; Sat, 5 May 2018 10:38:30 +1000 (AEST) Date: Sat, 5 May 2018 10:38:29 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Conrad Meyer cc: Brooks Davis , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys In-Reply-To: Message-ID: <20180505090954.X1307@besplex.bde.org> References: <201805040400.w4440moH025057@repo.freebsd.org> <20180504155301.GA56280@spindle.one-eyed-alien.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.2 cv=cIaQihWN c=1 sm=1 tr=0 a=PalzARQSbocsUSjMRkwAPg==:117 a=PalzARQSbocsUSjMRkwAPg==:17 a=kj9zAlcOel0A:10 a=6I5d2MoRAAAA:8 a=sgXCNgMsof7162YS8y4A:9 a=CjuIK1q_8ugA:10 a=IjZwj45LgO3ly-622nXo:22 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 00:38:40 -0000 On Fri, 4 May 2018, Conrad Meyer wrote: > On Fri, May 4, 2018 at 8:53 AM, Brooks Davis wrote: >> On Fri, May 04, 2018 at 04:00:48AM +0000, Mateusz Guzik wrote: >>> Author: mjg >>> Date: Fri May 4 04:00:48 2018 >>> New Revision: 333240 >>> URL: https://svnweb.freebsd.org/changeset/base/333240 >>> >>> Log: >>> Allow __builtin_memmove instead of bcopy for small buffers of known size >> >> What is the justification for forcing a size rather than using the >> compiler's built-in fallback to memmove? It is much the same as for using 'register' -- the programmer knows more than the compiler (for 1% of the targets supported by the 1% of compilers known to the programmer). >> Is the kernel compilation >> environment disabling that? > > Yes. I think the compiler can't use its builtin bcopy() in standalone mode. Not quite. Builtin bcopy() doesn't exist even for clang (5.0.1) in hosted mode. But the question was about using __builtin_memmove(). This exists for both gcc and clang, but doesn't work right: - for gcc4.2.1, __builtin_memmove() never works right. It always falls back to memmove(). This is broken in the -ffreestanding case, since memmove() can be anything then. Actually, in the kernel a function named memmove(9) exists and has the same semantics as memmove(3), but is slightly slower. So the effect of the change for gcc-4.2.1 is to pessimize the case that was supposed to be optimized: fixed-sized moves of size <= 64 are pessimized to use memmove() instead of bcopy(), while other args still use bcopy(). - for clang-5.0.1, on x86 for most -march settings, SSE is used even with -ffreestanding. The kernel uses various -m flags to prevent use of SSE and the FPU. This forces the compiler to copy through integer registers. This reduces the number of cases that must be analyzed to see how broken the hard-coded 64 is: - with AVX present and not killed, inlining occurs up to size 256 (8 pairs of vmovups through 256-bit registers) - else with SSE present and not killed, inlining occurs up to size 128 (8 pairs of movaps through 128-bit registers). This also depends on other CPU capabilitities. E.g., this uses movaps instead of movups since movups is slower on the target CPU (core2) even in the aligned case, while vmovups doesn't have this problem. - the above cases don't apply in the kernel - on 64-bit arches, inlining occurs up to size 64 (8 pairs movq through 64-bit integer registers) - on 32-bit arches, inlining occurs up to size 64 (8 pairs movq through 32-bit integer registers). So the effect of the change for clang is to pessimize half of the cases that were supposed to be optimized on i386 (and probably similarly on other 32-bit arches): fixed-sized moves of size > 32 and <= 64 are pessimized to use memmove() instead of bcopy(). Summary: this change wouldn't have passed my review. I have used similar changes for 15-20 years but never made them production quality since there are too many variations to consider and testing showed insignificant improvements except for micro-benchmarks. This change should be harmless if done right. E.g., it could spell 64 as (8 * sizeof(register_t)) so as to not pessimize i386 and probably similarly on other 32-bit arches. It is still too chummy with the implementations. x86 compilers used to get this wrong too, and probably still do except when they can use AVX. gcc got it wrong 20-30 years ago on i386 by inlining to "rep movsl" up to sizes much larger than 32. Eventually it learned that it didn't understand memory and left this to the library. Now on x86 CPUs that have "fast-strings", inlined "rep movsb" is better than most libraries. x86 kernel "libraries" still reduce to "rep movs*" plus lots of extra instructions that more than double the overhead. With fast-strings, the problem with using "rep movsb" is almost entirely in its overhead. On Haswell, IIRC, it takes 25 cycles to start up. Then it copies 32 bytes per cycle if both the source and the target are in the L1 cache. So the copy size must be 25 * 32 = 800 just to amortize half of the startup overhead. Even copying through 32-bit integer registers is much faster than that. There are often cache misses so that all methods are slow, but micro-benchmarks rarely cover the slow cases. I don't believe the claimed speeding of using the optimized bcopy() in cpu_fetch_sycall_args() on amd64 (r333241). This changes the copy size from a variable to 6*8 bytes. It is claimed to speed up getppid() from 7.31M/sec to 10.65M/sec on Skylake. But here it and other changes in the last week give a small pessimization for getpid() on Haswell at 4.08GHz: last week, 100M getpid()'s took 8.27 seconds (12.09M/sec). Now they take 8.30 seconds (12.05M/sec). (This is with very old libraries, so there is no possibility of getpid() being done in userland.) 0.03 seconds is 122.4M cycles. So the speed difference is 1.224 cycles. Here the timing has a resolution of only 0.01 seconds, so most digits in this 1.224 are noise, but the difference is apparently a single cycle. I would have expected more like the "rep movs*" setup overhead of 25 cycles. Another way to look at this is: 12.09M/sec syscalls means 82.71 nsec or 337 cycles each. Not too bad. The cache latency for this system according to lmbench-2.0 is 1 nsec for L1, 4.5 nsec for L2, and 16.3 nsec for main memory (old lmbench doesn't understand L3...). 66 cycles for main memory. I don't quite believe that. 100-200 cycles is more common. I think Skylake is slightly slower. Anyway, there can't be many cache misses in 337 cycles. We can hope for improvements of ~25 cycles each by avoiding "rep movs*" instructions. bcopy() actually has 2 of these (it ends up with 1 rep movsb which is null except in misaligned cases. This started being pessimal with the i486 and is relatively worse with fast-strings). However, fixes in this area rarely make as much difference as hoped for, except possibly on in-order arches. On Haswell and Skylake, everything is pipelined so it extra cycles in bcopy() don't matter provided nothing depends on the result very soon, and nearby code is equally inefficient and the resources used by the bcopy() don't contend too much with the resources used by the nearby code. Resources used by bcopy() do contend a lot in practice, but not 100%. Bruce From owner-svn-src-all@freebsd.org Sat May 5 01:46:58 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2B17DFC12EF; Sat, 5 May 2018 01:46:58 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail108.syd.optusnet.com.au (mail108.syd.optusnet.com.au [211.29.132.59]) by mx1.freebsd.org (Postfix) with ESMTP id 775296BFE9; Sat, 5 May 2018 01:46:56 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from [192.168.0.102] (c110-21-101-228.carlnfd1.nsw.optusnet.com.au [110.21.101.228]) by mail108.syd.optusnet.com.au (Postfix) with ESMTPS id EEFDA1A4567; Sat, 5 May 2018 11:46:53 +1000 (AEST) Date: Sat, 5 May 2018 11:46:53 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Mateusz Guzik cc: Brooks Davis , Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys In-Reply-To: Message-ID: <20180505103837.A1307@besplex.bde.org> References: <201805040400.w4440moH025057@repo.freebsd.org> <20180504155301.GA56280@spindle.one-eyed-alien.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.2 cv=VJytp5HX c=1 sm=1 tr=0 a=PalzARQSbocsUSjMRkwAPg==:117 a=PalzARQSbocsUSjMRkwAPg==:17 a=kj9zAlcOel0A:10 a=6I5d2MoRAAAA:8 a=dNsih-8PXwqfbXkUOPYA:9 a=CjuIK1q_8ugA:10 a=IjZwj45LgO3ly-622nXo:22 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 01:46:58 -0000 On Sat, 5 May 2018, Mateusz Guzik wrote: > On Fri, May 4, 2018 at 5:53 PM, Brooks Davis wrote: > >> On Fri, May 04, 2018 at 04:00:48AM +0000, Mateusz Guzik wrote: >>> Author: mjg >>> Date: Fri May 4 04:00:48 2018 >>> New Revision: 333240 >>> URL: https://svnweb.freebsd.org/changeset/base/333240 >>> >>> Log: >>> Allow __builtin_memmove instead of bcopy for small buffers of known >> size >> >> What is the justification for forcing a size rather than using the >> compiler's built-in fallback to memmove? Is the kernel compilation >> environment disabling that? >> > It will fallback to memmove which is super pessimized as being wrapped > around bcopy. Actually, the pessimization is tiny. A quick test in userland on freefall gives: - 22.81 seconds for 10**9 bcopy()s of 128 bytes (75 cycles each; bandwidth 5.61G/sec) - 23.43 seconds for 10**9 mymemmove()s of 128 bytes where mymemmove() == kernel wrapper of bcopy() (77.3 cycles each; bandwidth 5.46G/sec) but that was only for the first run. On another run, the bcopy()s took 23.11 seconds and the mymmemove()s took 22.62 seconds. So the errors in the measurement are much larger than the 2-cycle difference. Nevertheless, I expect the difference to be about 2 cycles or 3%. Most of the bandwidth is wasted by both methods. gcc inlines memcpy() to 16 movq pairs and this takes 4.38 to 5.16 seconds (it tends to get faster with every run, which I suspect is due to SCHED_ULE affinity not understanding HTT but getting better with training -- I have been fixing this in SCHED_4BSD). - 4.38 seconds for 10**9 memcpys()s of 128 bytes (14.5 cycles each; bandwidth 29.22G/sec) Even without fancy -march, clang inlines memcpy() to movaps on vanilla amd64 since SSE is available: - 2.84-2.89 seconds for 10**9 memcpys()s of 128 bytes (9.4 cycles each; bandwidth 45.07G/sec). clang does a weird optimization for my counting loop unless its counter is declared volatile -- it doesn't optimize the loop to a single copy, but reduces the count by 10 each iteration instead of the expected 1 or everything. Semi-semi-finally, with -march=native to get AVX instead of SSE: - 1.65-1.88 seconds for 10**9 memcpys()s of 128 bytes (5.5 cycles each; bandwidth 77.57G/sec). This is still far short of the 128-non-disk-manufacturersG that is reached by Haswell at 4GHz using simple "rep movsb". The size is too small to amortize the overhead. Semi-finally, with AVX and the size doubled to 256 bytes: - 2.98-3.06 seconds for 10**9 memcpys()s of 256 bytes (9.8 cycles each; bandwidth 85.90G/sec). Finally, with the size increased to 4K and the count reduced to 10M: - 0.62-0.66 seconds for 10**7 memcpys()s of 4K bytes (204.6 cycles each; bandwidth 66.02G/sec). Oops, that wasn't final. It shows that freefall's Xeon behaves much like Haswell. The user library is clueless about all this and just uses "rep movsq" and even 4K is too small to amortize the startup overhead of not-so-fast-strings. With the size increased to 8K and the count kept at 10M: - 1.12-1.16 seconds for 10**7 memcpys()s of 8K bytes (369.6 cycles each; bandwidth 73.14G/sec). This almost reaches the AVX bandwidth. But the bandwidth is only this high with both the source and the target in the L1 cache. Doubling the size again runs out of L1. So there is no size large enough to amortize the ~25 cycle startup overhead of not-so-fast-strings. > These limits will get lifted after the fallback routines get sorted out. They should be left out to begin with. Any hard-coded limits are sure to be wrong for many cases. E.g., 32 is wrong on i386. Using __builtin_memmove() at all is a pessimization for gcc-4.2.1, but that can be fixed (reduced to a null change) by sorting out memmove(). Bruce From owner-svn-src-all@freebsd.org Sat May 5 02:58:31 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 848D6FC5347; Sat, 5 May 2018 02:58:31 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail110.syd.optusnet.com.au (mail110.syd.optusnet.com.au [211.29.132.97]) by mx1.freebsd.org (Postfix) with ESMTP id C859D7C2B6; Sat, 5 May 2018 02:58:30 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from [192.168.0.102] (c110-21-101-228.carlnfd1.nsw.optusnet.com.au [110.21.101.228]) by mail110.syd.optusnet.com.au (Postfix) with ESMTPS id 9E361108670; Sat, 5 May 2018 12:58:27 +1000 (AEST) Date: Sat, 5 May 2018 12:58:27 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: John Baldwin cc: Matt Macy , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333242 - head/sys/kern In-Reply-To: <3408582.QRuzgOyxgv@ralph.baldwin.cx> Message-ID: <20180505114700.G1307@besplex.bde.org> References: <201805040651.w446p2iB010839@repo.freebsd.org> <3408582.QRuzgOyxgv@ralph.baldwin.cx> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.2 cv=cIaQihWN c=1 sm=1 tr=0 a=PalzARQSbocsUSjMRkwAPg==:117 a=PalzARQSbocsUSjMRkwAPg==:17 a=kj9zAlcOel0A:10 a=6I5d2MoRAAAA:8 a=-tkF9WCgqhqwDzhr3awA:9 a=CjuIK1q_8ugA:10 a=IjZwj45LgO3ly-622nXo:22 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 02:58:31 -0000 On Fri, 4 May 2018, John Baldwin wrote: > On Friday, May 04, 2018 06:51:02 AM Matt Macy wrote: >> Author: mmacy >> Date: Fri May 4 06:51:01 2018 >> New Revision: 333242 >> URL: https://svnweb.freebsd.org/changeset/base/333242 >> >> Log: >> `dup1_processes -t 96 -s 5` on a dual 8160 >> >> x dup_before >> + dup_after >> +------------------------------------------------------------+ >> | x + | >> |x x x x ++ ++| >> | |____AM___| |AM|| >> +------------------------------------------------------------+ >> N Min Max Median Avg Stddev >> x 5 1.514954e+08 1.5230351e+08 1.5206157e+08 1.5199371e+08 341205.71 >> + 5 1.5494336e+08 1.5519569e+08 1.5511982e+08 1.5508323e+08 96232.829 >> Difference at 95.0% confidence >> 3.08952e+06 +/- 365604 >> 2.03266% +/- 0.245071% >> (Student's t, pooled s = 250681) > > The log doesn't quite describe what the change is though and why it results > in this change. bcopy -> memcpy to permit using the compiler builtin I understand, > but using memcpy instead of a structure copy seems rather odd as I would expect > the compiler to treat a structure copy as the same as __builtin_memcpy(). It is obvious what it does, and that it can't possibly give the claimed change, and shouldn't have passed any review. >> Reported by: mjg@ >> MFC after: 1 week >> >> Modified: >> head/sys/kern/kern_descrip.c >> >> Modified: head/sys/kern/kern_descrip.c >> ============================================================================== >> --- head/sys/kern/kern_descrip.c Fri May 4 04:05:07 2018 (r333241) >> +++ head/sys/kern/kern_descrip.c Fri May 4 06:51:01 2018 (r333242) >> @@ -1503,7 +1503,7 @@ filecaps_copy(const struct filecaps *src, struct filec >> >> if (src->fc_ioctls != NULL && !locked) >> return (false); >> - *dst = *src; >> + memcpy(dst, src, sizeof(*src)); >> if (src->fc_ioctls == NULL) >> return (true); >> This seems to have no effect except on 32-bit arches. The size of struct filecaps seems to be 36 on i386 and 40 on amd64. Thus it is automatically inlined in all cases that I checked. memcpy() in the kernel used to be and extern function, so it was just slower. But now it is a macro that reduces to __builtin_memcpy(). The implementation of this macro is broken -- it is missing parentheses for args. >> @@ -1512,7 +1512,7 @@ filecaps_copy(const struct filecaps *src, struct filec >> >> size = sizeof(src->fc_ioctls[0]) * src->fc_nioctls; >> dst->fc_ioctls = malloc(size, M_FILECAPS, M_WAITOK); >> - bcopy(src->fc_ioctls, dst->fc_ioctls, size); >> + memcpy(dst->fc_ioctls, src->fc_ioctls, size); >> return (true); >> } This is at best a very minor optimization. bcopy() was changed to a macro that uses __builtin_memmove() just before memcpy() was changed to use __builtin_memcpy(). (The first change has more technical complications and was copied from a similar change for bzero() and is has smaller bugs -- it is not missing parentheses for args, but is missing them for the nested bcopy() call like for the nested bzero() call (this looks like an endlessly recursive call and parentheses should be used to clarify that it isn't).) memcpy() might tbe faster than bcopy() since it doesn't have to work for overlapped copies. But when both reduce to builtins, in cases like the above the compiler should be able to see that the copies don't overlap and further reduce to inlined memcpy() in both cases. This shows another reason why it is wrong to not reduce bcopy() to __builtin_memmove() in all cases -- it prevents the compiler further reducing to memcpy() in the non-inlined case. bcopy() and memcpy() are almost equally pessimal on x86, but bcopy() is inherently slower. Unfortunately, there are compiler bugs in this area. -ffreestanding -mno-sse -m32 breaks __builtin_memmove() with both clang and gcc for a struct copy of size 36. For a struct copy, the result is just bad code: - gcc-4.2.1 generates 9 pairs of movl's through integer registers. Too many I think. - clang generates "rep movsl". This is much slower than even the large code generated by gcc. __builtin_memcpy() instead of __builtin_memmove() generates the same not so good code as for a struct copy. Adjusting the above analysis for this gives: - changing the struct copy to memcpy() has no effect - using __builtin_memmove() to implement bcopy() suffers from compiler bugs. The compiler not only fails to reduce to __builtin_memcpy() in most cases - the second change above does have an effect since it bypasses the compiler bugs. Further examples of the compiler bugs: - __builtin_memmove() with size 36 does work with clang on amd64 with -ffreestanding -mno-sse (but no -m32). So the kernel implementation works OK on amd64 with clang. I thought that the limit was 32 for all of these functions. The limit should obviously be larger with larger registers including AVX. In these tests, I didn't use any special inlining flags. The kernel uses expanded inlining flags which might make a difference. The -Winline flag to detect failed inlining was recently broken (removed). There should be a similar flag to detect using builtins that don't work. - __builtin_memmove() doesn't work with gcc-4.2.1 for any size on either amd64 or i386 with or without special flags (it reduces to memmove(). So the kernel implementation doesn't works on either amd64 or i386 with gcc. Bruce From owner-svn-src-all@freebsd.org Sat May 5 02:54:28 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 75C9FFC5183 for ; Sat, 5 May 2018 02:54:28 +0000 (UTC) (envelope-from shawn.webb@hardenedbsd.org) Received: from mail-wm0-x22c.google.com (mail-wm0-x22c.google.com [IPv6:2a00:1450:400c:c09::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D86887BB36 for ; Sat, 5 May 2018 02:54:27 +0000 (UTC) (envelope-from shawn.webb@hardenedbsd.org) Received: by mail-wm0-x22c.google.com with SMTP id x12-v6so9009746wmc.0 for ; Fri, 04 May 2018 19:54:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hardenedbsd-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=G7o5jbyiVnLisCRAYwBUb1O6lfSphowTm5WQ9Jq/ULI=; b=F125p/k4GvIJSuYdg13onhNlzJQTuzLKnIFwgImMEk5A9RAdbycQ+BUmZEo9D9FV/C hN2HXjIO3jBMH61pIILxEt4ZKKGCnv15n19TcmFFBLGMdo1+8e7Q+MQVu6nRoo3PvK7M 5Ma2zYADQiNr4UPaCV3oCtbcheqjnnlF1rPYe1ZjGfutJUpkeY1dv5CUNub/s/2AqhuD QLAAUib8d9DKo2CcV5vG1yB0sVZdr45KXTZinNZNWnqt9Qyno4ODYewH3kbIVT1GUKP7 niYUUdma/M6DFstWzO8gZEJKMReGPX9pb44srnkx/yS6UiUsqhRq9MsptT0GGFD3ZD0P XWJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=G7o5jbyiVnLisCRAYwBUb1O6lfSphowTm5WQ9Jq/ULI=; b=JDCJrmftMNAxGmqnPk+yxUQbEZUDAaxkomspNggd7KC7b2XudLKPo9KgsMgWu2i9GL anR9zowCd3Vd7w1wJgmcA+aDJ3d+OFUnwRxcNwGvLYoweHBe3pbPOLJpThSc7mLfsQ6H Jk9OSy6LN+/ieV/WsbLwYllJKv1Qui2DFR/rA3ZQRAnciJUGvKe2Zn8Tq9MTKVk/Er8T eHoZQ3uhgPxrV6Tbm/c1ZLktuHvD6vajimXs5+TOPDryQr5Kn/a9my3K/ZdCU+RCxIS+ hWkY+hvXCOIeyA78b/MgCIZRWgf18Oe9wKSfFG0Qn/mSpwIcg6dw6hFUI8CwRRPW61FC 2Svw== X-Gm-Message-State: ALQs6tCFT/A7WjNVcOJoxHogWQHGtyjrQpYl+ywkAs2W2nIOQ+taCuux BVFiWQdsWEgG8c2gO977CRyRLw== X-Google-Smtp-Source: AB8JxZoG9PDY6oAVfyFpbuIcuBeX8Ux0XCXfbOIcYV8HINeSD5X5zdMeTmdrBw2N8egWZUX/AoAD3A== X-Received: by 2002:a50:83a5:: with SMTP id 34-v6mr25731559edi.276.1525488865903; Fri, 04 May 2018 19:54:25 -0700 (PDT) Received: from mutt-hbsd (tor-exit.csail.mit.edu. [128.31.0.13]) by smtp.gmail.com with ESMTPSA id f16-v6sm9722245edr.32.2018.05.04.19.54.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 04 May 2018 19:54:24 -0700 (PDT) Date: Fri, 4 May 2018 22:54:12 -0400 From: Shawn Webb To: Konstantin Belousov Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r318736 - in head: cddl/lib/libzfs contrib/compiler-rt/lib/sanitizer_common contrib/openbsm/libbsm include lib/libarchive lib/libc/gen lib/libc/include lib/libc/sys lib/libkvm lib/libmi... Message-ID: <20180505025412.tnifiree3rtckrnt@mutt-hbsd> References: <201705230929.v4N9T5g1028124@repo.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="d55xq456qxp2sgxk" Content-Disposition: inline In-Reply-To: <201705230929.v4N9T5g1028124@repo.freebsd.org> X-Operating-System: FreeBSD mutt-hbsd 12.0-CURRENT FreeBSD 12.0-CURRENT X-PGP-Key: http://pgp.mit.edu/pks/lookup?op=vindex&search=0x6A84658F52456EEE User-Agent: NeoMutt/20180323 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 02:54:28 -0000 --d55xq456qxp2sgxk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, May 23, 2017 at 09:29:05AM +0000, Konstantin Belousov wrote: > Author: kib > Date: Tue May 23 09:29:05 2017 > New Revision: 318736 > URL: https://svnweb.freebsd.org/changeset/base/318736 >=20 > Log: > Commit the 64-bit inode project. > =20 > Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify > struct dirent layout to add d_off, increase the size of d_fileno > to 64-bits, increase the size of d_namlen to 16-bits, and change > the required alignment. Increase struct statfs f_mntfromname[] and > f_mntonname[] array length MNAMELEN to 1024. > =20 > ABI breakage is mitigated by providing compatibility using versioned > symbols, ingenious use of the existing padding in structures, and > by employing other tricks. Unfortunately, not everything can be > fixed, especially outside the base system. For instance, third-party > APIs which pass struct stat around are broken in backward and > forward incompatible ways. > =20 > Kinfo sysctl MIBs ABI is changed in backward-compatible way, but > there is no general mechanism to handle other sysctl MIBS which > return structures where the layout has changed. It was considered > that the breakage is either in the management interfaces, where we > usually allow ABI slip, or is not important. > =20 > Struct xvnode changed layout, no compat shims are provided. > =20 > For struct xtty, dev_t tty device member was reduced to uint32_t. > It was decided that keeping ABI compat in this case is more useful > than reporting 64-bit dev_t, for the sake of pstat. > =20 > Update note: strictly follow the instructions in UPDATING. Build > and install the new kernel with COMPAT_FREEBSD11 option enabled, > then reboot, and only then install new world. > =20 > Credits: The 64-bit inode project, also known as ino64, started life > many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick > (mckusick) then picked up and updated the patch, and acted as a > flag-waver. Feedback, suggestions, and discussions were carried > by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles), > and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial > ports investigation followed by an exp-run by Antoine Brodin (antoine). > Essential and all-embracing testing was done by Peter Holm (pho). > The heavy lifting of coordinating all these efforts and bringing the > project to completion were done by Konstantin Belousov (kib). > =20 > Sponsored by: The FreeBSD Foundation (emaste, kib) > Differential revision: https://reviews.freebsd.org/D10439 >=20 > Modified: > head/contrib/openbsm/libbsm/bsm_wrappers.c Hey Kostik, Did the OpenBSM changes ever make it upstream to the OpenBSM project? I'm looking through the commits of the OpenBSM project and it looks like they never did. Thanks, --=20 Shawn Webb Cofounder and Security Engineer HardenedBSD Tor-ified Signal: +1 443-546-8752 Tor+XMPP+OTR: lattera@is.a.hacker.sx GPG Key ID: 0x6A84658F52456EEE GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89 3D9E 6A84 658F 5245 6EEE --d55xq456qxp2sgxk Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEKrq2ve9q9Ia+iT2eaoRlj1JFbu4FAlrtHM8ACgkQaoRlj1JF bu5qhg/8DwOGuFEojTSycH+CEDKj1t8IgmyciruRsXM7LmWj/PkMiiuE3m+628dB 2h1iENd2bPeORxGl0y+Te3z3NF7JNjcyJJJ4RLztvMLKFqyZBIUxVdGypdxpic4Y XbpmKJTcnvFnzczQWuZuFv5TNtf0p1UP6h6iN801uI8CGbgV/urwFUmMtCkM/Pe8 byvOsJrCN0HjIljnS2w7Aim5TNqpEkQv87PGdm3OANvXRghjSjXZWTYRfDTIgVWu HgBkKnIRO5GnX18qAaiqS5dDCY7UG5Aj8mKhqWS/Mv/z+5D8EYrEPxCOXnDE3Koh er2kcaMng3cqIUS7NaMJYi5hfkQVe7718OukqVsnZT1Ao9UGa5H2sVYW7Dvk/rqQ 2yz46JvWIAe02vuGPbpxhxi78XU/OIpVk/DjVz2KmrskgGUi+r1vai8ITkX04MUW 6LGzLhPgIBrSyrMhnkEctBa22sDPjZjbL2QmjeWQMNnfoXDZ6GmJCQ7CP7dJxKIX w6AVq/NNuo4yuryyClgy6KdRjw3TLy4nD8K7d9KWhStCY/XfALeHMgXMPYCpGrjf qUTEKlKVhnMJLxGwQTexGgO9bPNxIXssYbaIphzLaS5xih0q0T5/eVjvvcG8Y1zl yXCCVgpSiSwM+jPwBZIK1T77XCtPnGKimru5veH/XRdUdNHsjoI= =Ll7N -----END PGP SIGNATURE----- --d55xq456qxp2sgxk-- From owner-svn-src-all@freebsd.org Sat May 5 04:21:16 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 902C0FC8A29; Sat, 5 May 2018 04:21:16 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail109.syd.optusnet.com.au (mail109.syd.optusnet.com.au [211.29.132.80]) by mx1.freebsd.org (Postfix) with ESMTP id 867AE6E8F3; Sat, 5 May 2018 04:21:15 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from [192.168.0.102] (c110-21-101-228.carlnfd1.nsw.optusnet.com.au [110.21.101.228]) by mail109.syd.optusnet.com.au (Postfix) with ESMTPS id C411DD6F3AD; Sat, 5 May 2018 14:21:06 +1000 (AEST) Date: Sat, 5 May 2018 14:21:05 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Warner Losh cc: Steven Hartland , Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 In-Reply-To: Message-ID: <20180505135330.Y2917@besplex.bde.org> References: <201805042241.w44MfC9E090893@repo.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.2 cv=cIaQihWN c=1 sm=1 tr=0 a=PalzARQSbocsUSjMRkwAPg==:117 a=PalzARQSbocsUSjMRkwAPg==:17 a=kj9zAlcOel0A:10 a=oXPNzy3kUUnsnLgNDLwA:9 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 04:21:16 -0000 On Fri, 4 May 2018, Warner Losh wrote: > While i wholeheartedly agree, an earlier commit explained why in this case. > It allows the compiler to inline for small copies. [This should have been killfiled due to top-posting.] No, it has nothing to do with that. The compiler can inline either bcopy() or memcpy(), and does so after related recent changes that implement bcopy() using builtins. What this does is work around bugs in the recent changes, and compiler bugs. bcopy() handles overlapping copies, but memcpy() doesn't, so it is not just a style bug to use memcpy() instead of bcopy(). However, if bcopy() is exposed to the compiler using builtins (note that -ffreestanding prevents even memcpy() being known to the compiler unless memcpy() is spelled __builtin_memcpy(), and there are similar but larger complications for bcopy()) then the compiler can almost always see when overlap occurs and further reduce bcopy() to __builtin_memcpy(). The full reduction should be: bcopy() -> __builtin_memmove() -> __builtin_memcpy() -> { either inline code or a call to __memcpy() } but the actual reduction is: bcopy() -> { __builtin_memmove() for small sizes, else bcopy() (bug1) } -> { __builtin_memcpy() if inlined, else a call to memmove() (bugs2,3) }, else bcopy() where bug1 is an implementation bug (not telling the compiler about large copies), bug2 is a compiler bug (forgetting that it reduced to *memcpy when calling the library to handle large sizes), and bug3 is a compiler bug (calling the library function memmove() which might be unrelated in the freestanding case). Fixing the implementation and compiler would optimize thousands of calls to bcopy() without churning the source code, but I'm a bit worried about security bugs from this. The security bugs are larger for bzero(). When bzero() was not exposed to the compiler as __builtin_memset(), it was guaranteed to always zero memory so there was no need for explicit_bzero() or explicit_memset() in the kernel, and using these was just a style bug, as is using memset() to 0 instead of bzero(). Usually the compiler doesn't have enough information to optimize away __builtin_memset(). But changing thousands of bzero()s to __builtin_memset()s is likely to find a couple of cases where the compiler does do this optimization and it breaks security. Bruce From owner-svn-src-all@freebsd.org Sat May 5 05:19:33 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9E258FCA4BE; Sat, 5 May 2018 05:19:33 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4EA187CD6E; Sat, 5 May 2018 05:19:33 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2FC1419522; Sat, 5 May 2018 05:19:33 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w455JX48090004; Sat, 5 May 2018 05:19:33 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w455JXNB090003; Sat, 5 May 2018 05:19:33 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805050519.w455JXNB090003@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Sat, 5 May 2018 05:19:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333268 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 333268 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 05:19:33 -0000 Author: avg Date: Sat May 5 05:19:32 2018 New Revision: 333268 URL: https://svnweb.freebsd.org/changeset/base/333268 Log: for bus suspend, detach and shutdown iterate children in reverse order For most buses all children are equal, so the order does not matter. Other buses, such as acpi, carefully order their child devices to express implicit dependencies between them. For such buses it is safer to bring down devices in the reverse order. I believe that this is the reason why hpet_suspend had to be disabled. Some drivers depend on a working event timer until they are suspended. But previously we would suspend hpet very early. I tested this change by makinbg hpet_suspend actually stop HPET timers and tested that too. Note that this change is not a complete solution as it does not take into account bus passes. A better approach would be to track the actual attach order of the devices and to use the reverse of that. Reviewed by: imp, mav MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D15291 Modified: head/sys/kern/subr_bus.c Modified: head/sys/kern/subr_bus.c ============================================================================== --- head/sys/kern/subr_bus.c Fri May 4 22:48:10 2018 (r333267) +++ head/sys/kern/subr_bus.c Sat May 5 05:19:32 2018 (r333268) @@ -3708,7 +3708,11 @@ bus_generic_detach(device_t dev) if (dev->state != DS_ATTACHED) return (EBUSY); - TAILQ_FOREACH(child, &dev->children, link) { + /* + * Detach children in the reverse order. + * See bus_generic_suspend for details. + */ + TAILQ_FOREACH_REVERSE(child, &dev->children, device_list, link) { if ((error = device_detach(child)) != 0) return (error); } @@ -3728,7 +3732,11 @@ bus_generic_shutdown(device_t dev) { device_t child; - TAILQ_FOREACH(child, &dev->children, link) { + /* + * Shut down children in the reverse order. + * See bus_generic_suspend for details. + */ + TAILQ_FOREACH_REVERSE(child, &dev->children, device_list, link) { device_shutdown(child); } @@ -3781,15 +3789,23 @@ int bus_generic_suspend(device_t dev) { int error; - device_t child, child2; + device_t child; - TAILQ_FOREACH(child, &dev->children, link) { + /* + * Suspend children in the reverse order. + * For most buses all children are equal, so the order does not matter. + * Other buses, such as acpi, carefully order their child devices to + * express implicit dependencies between them. For such buses it is + * safer to bring down devices in the reverse order. + */ + TAILQ_FOREACH_REVERSE(child, &dev->children, device_list, link) { error = BUS_SUSPEND_CHILD(dev, child); - if (error) { - for (child2 = TAILQ_FIRST(&dev->children); - child2 && child2 != child; - child2 = TAILQ_NEXT(child2, link)) - BUS_RESUME_CHILD(dev, child2); + if (error != 0) { + child = TAILQ_NEXT(child, link); + if (child != NULL) { + TAILQ_FOREACH_FROM(child, &dev->children, link) + BUS_RESUME_CHILD(dev, child); + } return (error); } } From owner-svn-src-all@freebsd.org Sat May 5 05:22:12 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6AA89FCA7F1; Sat, 5 May 2018 05:22:12 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1E8607D80D; Sat, 5 May 2018 05:22:12 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 000F41969C; Sat, 5 May 2018 05:22:11 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w455MBAo093860; Sat, 5 May 2018 05:22:11 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w455MBKa093858; Sat, 5 May 2018 05:22:11 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201805050522.w455MBKa093858@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Sat, 5 May 2018 05:22:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333269 - head/sys/dev/amdsbwd X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/sys/dev/amdsbwd X-SVN-Commit-Revision: 333269 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 05:22:12 -0000 Author: avg Date: Sat May 5 05:22:11 2018 New Revision: 333269 URL: https://svnweb.freebsd.org/changeset/base/333269 Log: amdsbwd: fix reboot status reporting Originally, I overlooked that PMIO register 0xc0 has a dual personality. It can either be S5/Reset Status register or Misc. Fix register (aka debug status register). The mode is controlled by bit 2 in PMIO register 0xc4. Apparently there are register programming requirements for the second personality, so many BIOSes leave the register, after programming it, in that mode. So, we need to switch the register to the correct mode. Additionally, AMDSB8_WD_RST_STS was defined incorrectly as bit 13 while it is actually bit 25 (and the register's width is 32 bits, not 16). With this change I see the following in dmesg after a reset by the watchdog: amdsbwd0: ResetStatus = 0x42000000 amdsbwd0: Previous Reset was caused by Watchdog MFC after: 2 weeks Modified: head/sys/dev/amdsbwd/amd_chipset.h head/sys/dev/amdsbwd/amdsbwd.c Modified: head/sys/dev/amdsbwd/amd_chipset.h ============================================================================== --- head/sys/dev/amdsbwd/amd_chipset.h Sat May 5 05:19:32 2018 (r333268) +++ head/sys/dev/amdsbwd/amd_chipset.h Sat May 5 05:22:11 2018 (r333269) @@ -95,9 +95,10 @@ #define AMDSB8_WDT_32KHZ 0x00 #define AMDSB8_WDT_1HZ 0x03 #define AMDSB8_WDT_RES_MASK 0x03 -#define AMDSB8_PM_RESET_STATUS0 0xc0 -#define AMDSB8_PM_RESET_STATUS1 0xc1 -#define AMDSB8_WD_RST_STS 0x20 +#define AMDSB8_PM_RESET_STATUS 0xc0 /* 32 bit wide */ +#define AMDSB8_WD_RST_STS 0x2000000 +#define AMDSB8_PM_RESET_CTRL 0xc4 +#define AMDSB8_RST_STS_DIS 0x04 /* * Newer FCH registers in the PMIO space. Modified: head/sys/dev/amdsbwd/amdsbwd.c ============================================================================== --- head/sys/dev/amdsbwd/amdsbwd.c Sat May 5 05:19:32 2018 (r333268) +++ head/sys/dev/amdsbwd/amdsbwd.c Sat May 5 05:22:11 2018 (r333269) @@ -321,16 +321,23 @@ amdsbwd_probe_sb7xx(device_t dev, struct resource *pmr static void amdsbwd_probe_sb8xx(device_t dev, struct resource *pmres, uint32_t *addr) { - uint8_t val; - int i; + uint32_t val; + int i; /* Report cause of previous reset for user's convenience. */ - val = pmio_read(pmres, AMDSB8_PM_RESET_STATUS0); + + val = pmio_read(pmres, AMDSB8_PM_RESET_CTRL); + if ((val & AMDSB8_RST_STS_DIS) != 0) { + val &= ~AMDSB8_RST_STS_DIS; + pmio_write(pmres, AMDSB8_PM_RESET_CTRL, val); + } + val = 0; + for (i = 3; i >= 0; i--) { + val <<= 8; + val |= pmio_read(pmres, AMDSB8_PM_RESET_STATUS + i); + } if (val != 0) - amdsbwd_verbose_printf(dev, "ResetStatus0 = %#04x\n", val); - val = pmio_read(pmres, AMDSB8_PM_RESET_STATUS1); - if (val != 0) - amdsbwd_verbose_printf(dev, "ResetStatus1 = %#04x\n", val); + amdsbwd_verbose_printf(dev, "ResetStatus = 0x%08x\n", val); if ((val & AMDSB8_WD_RST_STS) != 0) device_printf(dev, "Previous Reset was caused by Watchdog\n"); From owner-svn-src-all@freebsd.org Sat May 5 05:28:49 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AB7D0FCAB3A; Sat, 5 May 2018 05:28:49 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail106.syd.optusnet.com.au (mail106.syd.optusnet.com.au [211.29.132.42]) by mx1.freebsd.org (Postfix) with ESMTP id 149427E9EA; Sat, 5 May 2018 05:28:48 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from [192.168.0.102] (c110-21-101-228.carlnfd1.nsw.optusnet.com.au [110.21.101.228]) by mail106.syd.optusnet.com.au (Postfix) with ESMTPS id 989033CFA18; Sat, 5 May 2018 14:57:42 +1000 (AEST) Date: Sat, 5 May 2018 14:57:42 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Warner Losh cc: Mateusz Guzik , Steven Hartland , Mateusz Guzik , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333266 - head/sys/amd64/amd64 In-Reply-To: Message-ID: <20180505142152.W2917@besplex.bde.org> References: <201805042241.w44MfC9E090893@repo.freebsd.org> MIME-Version: 1.0 X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.2 cv=cIaQihWN c=1 sm=1 tr=0 a=PalzARQSbocsUSjMRkwAPg==:117 a=PalzARQSbocsUSjMRkwAPg==:17 a=nlC_4_pT8q9DhB4Ho9EA:9 a=pGLkceISAAAA:8 a=ASrO2z8EAAAA:8 a=cqUc1000STbUteopt-EA:9 a=45ClL6m2LaAA:10 a=hMlqHZxbFqNCaWTKXPQf:22 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 05:28:50 -0000 On Fri, 4 May 2018, Warner Losh wrote: > On Fri, May 4, 2018 at 5:12 PM, Mateusz Guzik wrote: > >> On Sat, May 5, 2018 at 12:58 AM, Steven Hartland < >> steven.hartland@multiplay.co.uk> wrote: >> >>> Can we get the why in commit messages please? >>> >>> This sort of message doesnt provide anything more that can be obtained >>> from reading the diff, which just leaves us wondering why? >>> >>> I=E2=80=99m sure there is a good reason, but without confirmation we=E2= =80=99re just left >>> guessing. The knock on to this is if some assumption that caused the wh= y >>> changes, anyone looking at this will not be able to make an informed >>> descision that that was the case. >>> >> bcopy is an equivalent of memmove, i.e. it accepts overlapping buffers. >> But if we know for a fact they don't overlap (like here), doing this ove= r >> memcpy (which does not accept such buffers) only puts avoidable >> constraints on the optimizer. Indeed, but clang already does adequate optimization for som manye cases (especially amd64), so these small changes are not much more than special micro-optimizations for gcc on 32-bit arches. I care about gcc and 32-bit arches, but you don't. > bcopy, in userland, is memmove. bcopy in the kernel has had a more > complicated history. Today it's more like memmove, but at times in the > history of BSD/Unix it's be more akin to memcpy with a companion ovbcopy > used for overlapping copies. FreeBSD has almost always been more in the I think (but don't know) that ovbcopy is a SYSVism and bcopy() always handled overlapping copies in BSD. It was not well documented that it did, but with only 1 memory-copying function that function has to handle overlapping copies or be even better documented to not handle them. > 'bcopy is memmove' rather than the 'bcopy is memcpy' though some of the > lower-tier architectures pulled in ovbcopy which we recently GC'd from > NetBSD and/or OpenBSD. In all of 4.4BSD /sys, ovbcopy is only referenced on 34 lines (almost half in tags files), mostly to implement it on some arches: - news3400, hp300, i386, luna68k: alias for bcopy - sparc64: separate from bcopy. bcopy seems to be like memcpy and doesn't handle overlapping copies. - vax/inline/machpats.c: separate and too vaxish for me to understand (seem= s to be just a prologue) - netiso/iso_pcb.c, net/slcompress.c, sparc/pmap.c. netinet/ip_output.c, netinet/ip_nroute.c: actually use it The sparc64 and vax code is an indication that bcopy didn't always handle overlapping copies in BSD. > Plus there's been an irrational encouragement of > using bcopy over mem* which has lead to the current state of affairs. You mean a rational encouragement. > For the vast majority of uses, it hasn't really mattered much in the past= =2E > It hasn't shown up on radar. It matters even less now. Deciding if the copies overlap takes about 1 branch, and with modern branch prediction that often costs about 1 cycle. The x86 library implementation wastes more like 50 cycles in other ways. > However, as its optimization has moved into > the compiler I'm guessing that's changed. It's that change of heart I thi= nk > that are taking people by surprise. I blame micro-benchmarks. Amdahls' law applies and gives a limit of about 1% for the possible improvements from optimizing bcopy(), except in micro-benchmarks. That is even though the kernel spends a relatively large amount of time in bcopy(). Userland might take 80% of the time, the kernel 20%, and bcopy() 10% of the 20% =3D 2%. After optimizing bcopy(= ) to be twice as fast (which is difficult), you have speeded up applications by 1% at most. Bruce From owner-svn-src-all@freebsd.org Sat May 5 05:31:14 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4A2DFFCAC03; Sat, 5 May 2018 05:31:14 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail105.syd.optusnet.com.au (mail105.syd.optusnet.com.au [211.29.132.249]) by mx1.freebsd.org (Postfix) with ESMTP id 672EF7F5F6; Sat, 5 May 2018 05:31:13 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from [192.168.0.102] (c110-21-101-228.carlnfd1.nsw.optusnet.com.au [110.21.101.228]) by mail105.syd.optusnet.com.au (Postfix) with ESMTPS id 22CD8104FCFA; Sat, 5 May 2018 15:31:12 +1000 (AEST) Date: Sat, 5 May 2018 15:31:11 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Mateusz Guzik cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333265 - head/sys/sys In-Reply-To: <201805042233.w44MXsC7089190@repo.freebsd.org> Message-ID: <20180505151622.Q3442@besplex.bde.org> References: <201805042233.w44MXsC7089190@repo.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.2 cv=FNpr/6gs c=1 sm=1 tr=0 a=PalzARQSbocsUSjMRkwAPg==:117 a=PalzARQSbocsUSjMRkwAPg==:17 a=kj9zAlcOel0A:10 a=y8u3x2SE7Zv_5vRtElYA:9 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 05:31:14 -0000 On Fri, 4 May 2018, Mateusz Guzik wrote: > Log: > Allow the compiler to use __builtin_memcpy > > In particular this allows the compiler to avoid heavy-handed machinery > if the to be copied buffer is small. > > Reviewed by: jhb Bugs in this: > Modified: head/sys/sys/systm.h > ============================================================================== > --- head/sys/sys/systm.h Fri May 4 21:17:29 2018 (r333264) > +++ head/sys/sys/systm.h Fri May 4 22:33:54 2018 (r333265) > @@ -275,6 +275,7 @@ void bzero(void * _Nonnull buf, size_t len); > void explicit_bzero(void * _Nonnull, size_t); > > void *memcpy(void * _Nonnull to, const void * _Nonnull from, size_t len); > +#define memcpy(to, from, len) __builtin_memcpy(to, from, len) - space instead of tab after #define. systm.h has rotted to have several other instances of this bug - space instead of tab between macro and macro expansion. This bug is less common. - args not parenthesized. I wonder how memcpy() handles attributes like _Nonnull. FreeBSD doesn't declare any attributes for builtins (is this possible?) so it gets the ones that the compiler defaults to, if any. I haven't noticed any documentation of these defaults even for compilers like gcc that have documentation. > void *memmove(void * _Nonnull dest, const void * _Nonnull src, size_t n); > > int copystr(const void * _Nonnull __restrict kfaddr, > > Modified: head/sys/sys/zutil.h > ============================================================================== > --- head/sys/sys/zutil.h Fri May 4 21:17:29 2018 (r333264) > +++ head/sys/sys/zutil.h Fri May 4 22:33:54 2018 (r333265) > @@ -32,7 +32,6 @@ > #include > #include > # define HAVE_MEMCPY > -# define memcpy(d, s, n) bcopy((s), (d), (n)) > # define memset(d, v, n) bzero((d), (n)) > # define memcmp bcmp Example of parenthesizing args in old code. Example of other style bugs for #define (spaces after '#' to indent). Reduction of portability here. I think zutil.h tries to provide its own wrappers for everything. It still does this for memset() although this is wrong when (n) != 0. I think you removed memcpy() since memcpy() is now implemented as an inconsistent macro, while memset() is still a function in systm.h so there is no conflict for memset(). Since there is no conflict, the bug is not even detected. memcmp() here is even more broken that memset(). memcmp() cannot be implemented using bcmp(), since it is tri-state while bcmp() is boolean. The system memcmp() had the same bug for a long time. Bruce From owner-svn-src-all@freebsd.org Sat May 5 08:16:20 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 854EAFA607A; Sat, 5 May 2018 08:16:20 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 29C378702D; Sat, 5 May 2018 08:16:20 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1F2B91B20E; Sat, 5 May 2018 08:16:20 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w458GJXN079655; Sat, 5 May 2018 08:16:19 GMT (envelope-from eadler@FreeBSD.org) Received: (from eadler@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w458GJHI079653; Sat, 5 May 2018 08:16:19 GMT (envelope-from eadler@FreeBSD.org) Message-Id: <201805050816.w458GJHI079653@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: eadler set sender to eadler@FreeBSD.org using -f From: Eitan Adler Date: Sat, 5 May 2018 08:16:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333270 - in head: . share/skel X-SVN-Group: head X-SVN-Commit-Author: eadler X-SVN-Commit-Paths: in head: . share/skel X-SVN-Commit-Revision: 333270 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 08:16:20 -0000 Author: eadler Date: Sat May 5 08:16:19 2018 New Revision: 333270 URL: https://svnweb.freebsd.org/changeset/base/333270 Log: [skel] Remove dot.rhosts from share/skel The rcmds were removed in r324351. Chase that removal. Deleted: head/share/skel/dot.rhosts Modified: head/ObsoleteFiles.inc head/share/skel/Makefile Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Sat May 5 05:22:11 2018 (r333269) +++ head/ObsoleteFiles.inc Sat May 5 08:16:19 2018 (r333270) @@ -38,6 +38,8 @@ # xargs -n1 | sort | uniq -d; # done +# 20180505: rhosts +OLD_FILES+=usr/share/skel/dot.rhosts # 20180502: retire ixgb OLD_FILES+=usr/share/man/man4/if_ixgb.4.gz OLD_FILES+=usr/share/man/man4/ixgb.4.gz Modified: head/share/skel/Makefile ============================================================================== --- head/share/skel/Makefile Sat May 5 05:22:11 2018 (r333269) +++ head/share/skel/Makefile Sat May 5 08:16:19 2018 (r333270) @@ -4,7 +4,7 @@ FILESGROUPS= FILES1 FILES2 FILES1= dot.cshrc dot.login dot.login_conf dot.mailrc dot.profile \ dot.shrc -FILES2= dot.mail_aliases dot.rhosts +FILES2= dot.mail_aliases FILES1DIR= ${SHAREDIR}/skel FILES2DIR= ${SHAREDIR}/skel FILES1MODE= 0644 From owner-svn-src-all@freebsd.org Sat May 5 09:02:02 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5A3E4FA7609; Sat, 5 May 2018 09:02:02 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass DE-2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9D4C16993B; Sat, 5 May 2018 09:02:01 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from thor.intern.walstatt.dynvpn.de ([77.14.80.170]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M1SLt-1eLh3P162z-00tXMc; Sat, 05 May 2018 11:01:50 +0200 Date: Sat, 5 May 2018 11:01:11 +0200 From: "O. Hartmann" To: "K. Macy" , Stephen Hurd Cc: "O. Hartmann" , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers , FreeBSD CURRENT Subject: Re: svn commit: r333175 - in head/sys: kern net netinet netinet6 sys: TRAP 12 Message-ID: <20180505110138.6cae0f75@thor.intern.walstatt.dynvpn.de> In-Reply-To: <20180503222419.4228e8e8@thor.intern.walstatt.dynvpn.de> References: <201805021936.w42JaTlq039053@repo.freebsd.org> <20180503213206.7fba052c@thor.intern.walstatt.dynvpn.de> <20180503222419.4228e8e8@thor.intern.walstatt.dynvpn.de> Organization: WALSTATT User-Agent: OutScare 3.1415926 X-Operating-System: ImNotAnOperatingSystem 3.141592527 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:MnDkm2d5rKwgZK3RWRh2AEWyuRhScfqav79bp9XhK4jIrmkKdQ1 fR1fwLfUHjwK/pj3C46HSZaM/C96yET7i8Dx1r0txRm3qurD7iX9VkuQCm9FBPb7PCgRjwd LqzoeJGpVxWBfN0i43N1QNv5CZg4ba4InY/X1tjEZ5k+mFGxPnx5JNwFqtrCJz2PecDWrd1 v1tae55kUr/mIrem+/TKQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:Hms12gabo6I=:IpjPtXHD1zzM1102MYF4wN UejCrh1Nh+ddzd/ESVG+d00fQEYJLp8Bto/Ft3Q9Zamd8cKOimCYwcoRdGL5oqlZidCvP7Vf0 iYa4ynaDKhdI0CamvKF+IdHMW/MOc4HNNLRteuw0fCc+89iD0XEF9zoR7F8bcyT36RIKWMTPm p4MvE2CaPMZfc0BSAua0tHA22ROAvwXb0RO677zglIeO6JE9N36F3Fj+l+WlDUshrFG+/MPtw NLd9mE0MuiECM2JHjlJRsfZS73uS8WfFPKeqASkJcaGEq6CGBXlTXIWlXq4YlrkDT9CLnvmRm TWju+fF6tHxSNfH+Hs/5gtreJtlrd2iN69PqePx6dXV/WvIeDh7Q0l3Y+YzIcqfU7W6aFrKHh 1r5k1SGQYHgFRlpxMpJUcfwlEtlyP7bP/tM+yKSWEJ4qqHz+6CwhY+P+guQZahoJXQFc46Ll4 rqdLZ/3R/6yQ9RIoBVlrZTyCjuiCOsWGZ8f0U2TUuEm3RkUio/SM4WJG9unECD0+DZsg1NnZY UbJA6WrMRA7Ze5RG6JnIXby4GPvPbnQpNUBQY7aKY+DlNJicqvw9J6F9kl66ZQPPNzxFUmQJv DnCtmBJtRytEWiUUusMG9vpUXuHAMhMd/b2jCFw51fTlyP6gsWHFwleZiaoRMiycVHtlnMGEu 9hCWV8ltOYLlUDFxUlGlaC2SWhGDDiV2u1bvLFAugw+TzQGvx2hkdLf8TYqKsibFh3HU1HZrg hseHuNj1sNa1x1PoUMsnvtT30p31fCj96XmX4q1dCXQJXTp41HADJfYmKZA/m27oyHF3Q1Biu pIs8ysr X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 09:02:03 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBNTEyDQoNCkFtIFRo dSwgMyBNYXkgMjAxOCAyMjoyMzo1MiArMDIwMA0KIk8uIEhhcnRtYW5uIiA8b2hhcnRtYW5uQHdh bHN0YXR0Lm9yZz4gc2NocmllYjoNCg0KDQpJJ20gbm90IGZhbWlsaWFyIHdpdGgga2VybmVsIGRl YnVnZ2luZywgc28gdGhlcmUgYXJlIHNvbWUgc3RydWdnbGVzLg0KDQpBZnRlciBjb21waWxpbmcg YSBkZWJ1Z2dpbmcga2VybmVsIG9uIA0KDQpWZXJzaW9uIFN0cmluZzogRnJlZUJTRCAxMi4wLUNV UlJFTlQgIzIgcjMzMzI2OTogU2F0IE1heSAgNSAwODoxMDozMiBDRVNUIDIwMTgNCg0KUGFuaWMg U3RyaW5nOiBMb2NrIHRjcCBub3QgZXhjbHVzaXZlbHkgbG9ja2VkIEAgL3Vzci9zcmMvc3lzL25l dGluZXQvaW5fcGNiLmM6MTM5MQ0KDQoNCkFuZCB0aGlzIGlzIHdoYXQgSSBjYW4gcHJvdmlkZSB5 b3Ugd2l0aDoNCg0KDQpSZWFkaW5nIHN5bWJvbHMgZnJvbSAvdXNyL29iai91c3Ivc3JjL2FtZDY0 LmFtZDY0L3N5cy9XQUxIQUxMLURFQlVHL2tlcm5lbC5mdWxsLi4uZG9uZS4NCg0KVW5yZWFkIHBv cnRpb24gb2YgdGhlIGtlcm5lbCBtZXNzYWdlIGJ1ZmZlcjoNCnBhbmljOiBMb2NrIHRjcCBub3Qg ZXhjbHVzaXZlbHkgbG9ja2VkIEAgL3Vzci9zcmMvc3lzL25ldGluZXQvaW5fcGNiLmM6MTM5MQ0K DQpjcHVpZCA9IDQNCnRpbWUgPSAxNTI1NTEwMjkxDQpLREI6IHN0YWNrIGJhY2t0cmFjZToNCmRi X3RyYWNlX3NlbGZfd3JhcHBlcigpIGF0IGRiX3RyYWNlX3NlbGZfd3JhcHBlcisweDJiL2ZyYW1l IDB4ZmZmZmZlMDBlNDg1ZTY3MA0KdnBhbmljKCkgYXQgdnBhbmljKzB4MWEzL2ZyYW1lIDB4ZmZm ZmZlMDBlNDg1ZTZkMA0KcGFuaWMoKSBhdCBwYW5pYysweDQzL2ZyYW1lIDB4ZmZmZmZlMDBlNDg1 ZTczMA0KX3J3X3d1bmxvY2tfY29va2llKCkgYXQgX3J3X3d1bmxvY2tfY29va2llKzB4MTM3L2Zy YW1lIDB4ZmZmZmZlMDBlNDg1ZTc2MA0KaW5fcGNiZnJlZSgpIGF0IGluX3BjYmZyZWUrMHg1MWEv ZnJhbWUgMHhmZmZmZmUwMGU0ODVlN2IwDQp0Y3BfdXNyX2RldGFjaCgpIGF0IHRjcF91c3JfZGV0 YWNoKzB4MTVlL2ZyYW1lIDB4ZmZmZmZlMDBlNDg1ZTdmMA0Kc29mcmVlKCkgYXQgc29mcmVlKzB4 MmY0L2ZyYW1lIDB4ZmZmZmZlMDBlNDg1ZTg0MA0Kc29jbG9zZSgpIGF0IHNvY2xvc2UrMHgzODcv ZnJhbWUgMHhmZmZmZmUwMGU0ODVlOGIwDQpjbG9zZWYoKSBhdCBjbG9zZWYrMHgxZjUvZnJhbWUg MHhmZmZmZmUwMGU0ODVlOTQwDQpjbG9zZWZwKCkgYXQgY2xvc2VmcCsweGEwL2ZyYW1lIDB4ZmZm ZmZlMDBlNDg1ZTk4MA0KYW1kNjRfc3lzY2FsbCgpIGF0IGFtZDY0X3N5c2NhbGwrMHg2ZDMvZnJh bWUgMHhmZmZmZmUwMGU0ODVlYWIwDQpmYXN0X3N5c2NhbGxfY29tbW9uKCkgYXQgZmFzdF9zeXNj YWxsX2NvbW1vbisweDEwMS9mcmFtZSAweGZmZmZmZTAwZTQ4NWVhYjANCi0gLS0tIHN5c2NhbGwg KDYsIEZyZWVCU0QgRUxGNjQsIHN5c19jbG9zZSksIHJpcCA9IDB4ODAxMTFhZGRhLCByc3AgPSAw eDdmZmZkZjNmNzIyOCwgcmJwID0NCjB4N2ZmZmRmM2Y3MjQwIC0tLSBLREI6IGVudGVyOiBwYW5p Yw0KDQpfX2N1cnRocmVhZCAoKSBhdCAuL21hY2hpbmUvcGNwdS5oOjIzMQ0KMjMxICAgICAgICAg ICAgIF9fYXNtKCJtb3ZxICUlZ3M6JTEsJTAiIDogIj1yIiAodGQpDQooa2dkYikgYnQNCihrZ2Ri KSBidA0KIzAgIF9fY3VydGhyZWFkICgpIGF0IC4vbWFjaGluZS9wY3B1Lmg6MjMxDQojMSAgZG9h ZHVtcCAodGV4dGR1bXA9MCkgYXQgL3Vzci9zcmMvc3lzL2tlcm4va2Vybl9zaHV0ZG93bi5jOjM2 NQ0KIzIgIDB4ZmZmZmZmZmY4MDU5N2Q1YiBpbiBkYl9kdW1wIChkdW1teT08b3B0aW1pemVkIG91 dD4sIGR1bW15Mj08dW5hdmFpbGFibGU+LA0KZHVtbXkzPTx1bmF2YWlsYWJsZT4sIGR1bW15ND08 dW5hdmFpbGFibGU+KSBhdCAvdXNyL3NyYy9zeXMvZGRiL2RiX2NvbW1hbmQuYzo1NzQNCiMzICAw eGZmZmZmZmZmODA1OTdhZTYgaW4gZGJfY29tbWFuZCAobGFzdF9jbWRwPTxvcHRpbWl6ZWQgb3V0 PiwgY21kX3RhYmxlPTxvcHRpbWl6ZWQNCm91dD4sIGRvcGFnZXI9PG9wdGltaXplZCBvdXQ+KSBh dCAvdXNyL3NyYy9zeXMvZGRiL2RiX2NvbW1hbmQuYzo0ODEgIzQNCm91dD4weGZmZmZmZmZmODA1 OTc4MTQgaW4gZGJfY29tbWFuZF9sb29wICgpIGF0IC91c3Ivc3JjL3N5cy9kZGIvZGJfY29tbWFu ZC5jOjUzNA0KIzUgIDB4ZmZmZmZmZmY4MDU5YjA0ZiBpbiBkYl90cmFwICh0eXBlPTxvcHRpbWl6 ZWQgb3V0PiwgY29kZT08b3B0aW1pemVkIG91dD4pDQphdCAvdXNyL3NyYy9zeXMvZGRiL2RiX21h aW4uYzoyNTAgIzYgIDB4ZmZmZmZmZmY4MDkyNDQ2MyBpbiBrZGJfdHJhcCAodHlwZT0zLA0KY29k ZT0tNjE0NTYsIHRmPTxvcHRpbWl6ZWQgb3V0PikgYXQgL3Vzci9zcmMvc3lzL2tlcm4vc3Vicl9r ZGIuYzo2OTcgIzcNCjB4ZmZmZmZmZmY4MGM4MGFiNyBpbiB0cmFwIChmcmFtZT0weGZmZmZmZTAw ZTQ4NWU1YTApDQphdCAvdXNyL3NyYy9zeXMvYW1kNjQvYW1kNjQvdHJhcC5jOjU1MCAjOCAgPHNp Z25hbCBoYW5kbGVyIGNhbGxlZD4gIzkgIGtkYl9lbnRlcg0KKHdoeT0weGZmZmZmZmZmODBkZDdi NTQgInBhbmljIiwgbXNnPTxvcHRpbWl6ZWQgb3V0PikgYXQgL3Vzci9zcmMvc3lzL2tlcm4vc3Vi cl9rZGIuYzo0NzkNCiMxMCAweGZmZmZmZmZmODA4ZGI1MDAgaW4gdnBhbmljIChmbXQ9PG9wdGlt aXplZCBvdXQ+LCBhcD0weGZmZmZmZTAwZTQ4NWU3MTApDQphdCAvdXNyL3NyYy9zeXMva2Vybi9r ZXJuX3NodXRkb3duLmM6ODUxICMxMSAweGZmZmZmZmZmODA4ZGI1OTMgaW4gcGFuaWMNCihmbXQ9 MHhmZmZmZmZmZjgxMjViYmQ4IDxjbnB1dHNfbXR4PiAiXDI1MVwzMTJcMzMyXDIwMFwzNzdcMzc3 XDM3N1wzNzciKQ0KYXQgL3Vzci9zcmMvc3lzL2tlcm4va2Vybl9zaHV0ZG93bi5jOjc4OSAjMTIg MHhmZmZmZmZmZjgwOGQ2NWI3IGluIF9fcndfYXNzZXJ0DQooYz0weGZmZmZmZTAwMTExZWU2NTAs IHdoYXQ9NCwgZmlsZT0weGZmZmZmZmZmODBkYzUxNTcgIi91c3Ivc3JjL3N5cy9uZXRpbmV0L2lu X3BjYi5jIiwNCmxpbmU9MTM5MSkgYXQgL3Vzci9zcmMvc3lzL2tlcm4va2Vybl9yd2xvY2suYzox NDI2ICMxMyBfcndfd3VubG9ja19jb29raWUNCihjPTB4ZmZmZmZlMDAxMTFlZTY1MCwgZmlsZT0w eGZmZmZmZmZmODBkYzUxNTcgIi91c3Ivc3JjL3N5cy9uZXRpbmV0L2luX3BjYi5jIiwNCmxpbmU9 MTM5MSkgYXQgL3Vzci9zcmMvc3lzL2tlcm4va2Vybl9yd2xvY2suYzozNjIgIzE0IDB4ZmZmZmZm ZmY4MGE2OGNhYSBpbiBpbl9wY2JmcmVlDQooaW5wPTB4ZmZmZmY4MDA2NjA1OGIxMCkgYXQgL3Vz ci9zcmMvc3lzL25ldGluZXQvaW5fcGNiLmM6MTM5MSAjMTUgMHhmZmZmZmZmZjgwYjA5YTZlIGlu DQp0Y3BfZGV0YWNoIChzbz08b3B0aW1pemVkIG91dD4sIGlucD08b3B0aW1pemVkIG91dD4pDQph dCAvdXNyL3NyYy9zeXMvbmV0aW5ldC90Y3BfdXNycmVxLmM6MjU4ICMxNiB0Y3BfdXNyX2RldGFj aCAoc289PG9wdGltaXplZCBvdXQ+KQ0KYXQgL3Vzci9zcmMvc3lzL25ldGluZXQvdGNwX3VzcnJl cS5jOjI4OSAjMTcgMHhmZmZmZmZmZjgwOTdjMzk0IGluIHNvZnJlZQ0KKHNvPTB4ZmZmZmY4MDAx OTg4ZDM1OCkgYXQgL3Vzci9zcmMvc3lzL2tlcm4vdWlwY19zb2NrZXQuYzoxMDMyICMxOCAweGZm ZmZmZmZmODA5N2Q0ODcgaW4NCnNvY2xvc2UgKHNvPTB4ZmZmZmY4MDAxOTg4ZDM1OCkgYXQgL3Vz ci9zcmMvc3lzL2tlcm4vdWlwY19zb2NrZXQuYzoxMTI2ICMxOQ0KMHhmZmZmZmZmZjgwODg1YWQ1 IGluIGZvX2Nsb3NlIChmcD08b3B0aW1pemVkIG91dD4sIHRkPTxvcHRpbWl6ZWQgb3V0PikNCmF0 IC91c3Ivc3JjL3N5cy9zeXMvZmlsZS5oOjM0OCAjMjAgX2Zkcm9wIChmcD08b3B0aW1pemVkIG91 dD4sIHRkPTxvcHRpbWl6ZWQgb3V0PikNCmF0IC91c3Ivc3JjL3N5cy9rZXJuL2tlcm5fZGVzY3Jp cC5jOjI5NTcgIzIxIGNsb3NlZiAoZnA9MHhmZmZmZjgwMDA0ZWY0ZWIwLA0KdGQ9MHhmZmZmZjgw MDE5ODkxNTYwKSBhdCAvdXNyL3NyYy9zeXMva2Vybi9rZXJuX2Rlc2NyaXAuYzoyNTM4ICMyMiAw eGZmZmZmZmZmODA4ODI5MjAgaW4NCmNsb3NlZnAgKGZkcD0weGZmZmZmODAwMTk1NTM0NTAsIGZk PTEyLCBmcD0weGZmZmZmODAwMDRlZjRlYjAsIHRkPTB4ZmZmZmY4MDAxOTg5MTU2MCwNCmhvbGRs ZWFkZXJzPTApIGF0IC91c3Ivc3JjL3N5cy9rZXJuL2tlcm5fZGVzY3JpcC5jOjEyMDggIzIzIDB4 ZmZmZmZmZmY4MGM4MjAzMyBpbg0Kc3lzY2FsbGVudGVyICh0ZD0weGZmZmZmODAwMTk4OTE1NjAp DQphdCAvdXNyL3NyYy9zeXMvYW1kNjQvYW1kNjQvLi4vLi4va2Vybi9zdWJyX3N5c2NhbGwuYzox MzUgIzI0IGFtZDY0X3N5c2NhbGwNCih0ZD0weGZmZmZmODAwMTk4OTE1NjAsIHRyYWNlZD0wKSBh dCAvdXNyL3NyYy9zeXMvYW1kNjQvYW1kNjQvdHJhcC5jOjk0NSAjMjUgPHNpZ25hbA0KaGFuZGxl ciBjYWxsZWQ+ICMyNiAweDAwMDAwMDA4MDExMWFkZGEgaW4gPz8gKCkgQmFja3RyYWNlIHN0b3Bw ZWQ6IENhbm5vdCBhY2Nlc3MgbWVtb3J5DQphdCBhZGRyZXNzIDB4N2ZmZmRmM2Y3MjI4IChrZ2Ri KSANCg0KDQoNCg0KPiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVTU0FHRS0tLS0tDQo+IEhhc2g6 IFNIQTUxMg0KPiANCj4gQW0gVGh1LCAzIE1heSAyMDE4IDEyOjUzOjA1IC0wNzAwDQo+ICJLLiBN YWN5IiA8a21hY3lAZnJlZWJzZC5vcmc+IHNjaHJpZWI6DQo+IA0KPiA+IENhbiB5b3UgZ2l2ZSBh bnkgY29udGV4dCBvbiB3aGF0IHRoZXkncmUgZG9pbmc/IEluIGFkZGl0aW9uIC0gZXZlbiBvbg0K PiA+IGEgcHJvZHVjdGlvbiBrZXJuZWwgaXQncyBwb3NzaWJsZSB0byBjb21waWxlIGluIEREQiB0 byBhdCBsZWFzdCBnZXQgYQ0KPiA+IGJhY2t0cmFjZS4gWW91ciByZXBvcnQgb25seSBnaXZlcyB1 cyBlbm91Z2ggaW5mb3JtYXRpb24gdG8ga25vdyB0aGF0ICANCj4gDQo+IE5vdCBhdCB0aGUgbW9t ZW50LiBUaGUgaW1tZWRpYXRlIGNyYXNoIGNvcnJ1cHRlZCB0aGUgL3Vzci9zcmMgZmlsZXN5c3Rl bSBzbyBJIGNhbiBub3QNCj4gcmVjb21waWxlIGEga2VybmVsLiBFdmVyeSBhdHRlbXB0IHRvIC9l dGMvbmV0c3RhcnQgdGhlIG5ldHdvcmsgb24gdGhlIGJ1Z2d5IGtlcm5lbCBlbmRzDQo+IHVwIGlu IGEgZnVydGhlciBkZXN0cnVjdGlvbiwgc28gSSBzdG9wcGVkIGF0IHRoaXMgdmVyeSBtb21lbnQg YW5kIGhvcGVmdWxseSBJIGNhbg0KPiBjb3B5IC91c3Ivc3JjIGZyb20gYSByMzMxNTMgYm94IChy MzMzMTUzIGlzIGZvciBtZSB0aGUgbGFzdCB3b3JraW5nIHJldmlzaW9uKSB2aWEgVVNCDQo+IGZs YXNoIGRyaXZlIGFuZCByZWNvbXBpbGUgdGhlIGtlcm5lbC4gQnV0IEknbGwgZ28gZm9yIHIzMzMx NTMgZmlyc3Qgc2luY2UgSSBuZWVkIHRoZQ0KPiBzZXJ2ZXIgdXAgdG9tb3Jyb3cgYW5kIEknbGwg dHJ5IG9uIHRoZSBvdGhlciBib3ggd2hpY2ggaXMgYWxzbyBhZmZlY3RlZCwgYnV0IGFsc28NCj4g ZXF1aXB0ZWQgd2l0aCB0aGUgaTM1MCBOSUMgb24gd2hpY2ggdGhlIHByb2JsZW0gb2NjdXJzIHZl cnkgcXVpY2tseS4NCj4gDQo+ID4gdGhlcmUgaXMgX2FuXyBpc3N1ZS4gSXQncyBkaWZmaWN1bHQg dG8gcHJvY2VlZCBvbiB0aGlzIGFsb25lLiBJIGRvDQo+ID4gaGF2ZSBhIHJlcG9ydCBmcm9tIHRo ZSBGcmVlQlNEIENJIGluZnJhc3RydWN0dXJlIHRoYXQgd2UncmUgbG9va2luZyBpbg0KPiA+IHRv IG5vdy4gIFdpdGggbHVjayB0aGF0IGlzIHRoZSBzYW1lIGlzc3VlLg0KPiA+IA0KPiA+IC1NDQo+ ID4gDQo+ID4gT24gVGh1LCBNYXkgMywgMjAxOCBhdCAxMjozMSBQTSwgTy4gSGFydG1hbm4gPG9o YXJ0bWFubkB3YWxzdGF0dC5vcmc+IHdyb3RlOiAgDQo+ID4gPiAtLS0tLUJFR0lOIFBHUCBTSUdO RUQgTUVTU0FHRS0tLS0tDQo+ID4gPiBIYXNoOiBTSEE1MTINCj4gPiA+DQo+ID4gPiBBbSBXZWQs IDIgTWF5IDIwMTggMTk6MzY6MjkgKzAwMDAgKFVUQykNCj4gPiA+IFN0ZXBoZW4gSHVyZCA8c2h1 cmRARnJlZUJTRC5vcmc+IHNjaHJpZWI6DQo+ID4gPiAgICANCj4gPiA+PiBBdXRob3I6IHNodXJk DQo+ID4gPj4gRGF0ZTogV2VkIE1heSAgMiAxOTozNjoyOSAyMDE4DQo+ID4gPj4gTmV3IFJldmlz aW9uOiAzMzMxNzUNCj4gPiA+PiBVUkw6IGh0dHBzOi8vc3Zud2ViLmZyZWVic2Qub3JnL2NoYW5n ZXNldC9iYXNlLzMzMzE3NQ0KPiA+ID4+DQo+ID4gPj4gTG9nOg0KPiA+ID4+ICAgU2VwYXJhdGUg bGlzdCBtYW5pcHVsYXRpb24gbG9ja2luZyBmcm9tIHN0YXRlIGNoYW5nZSBpbiBtdWx0aWNhc3QN Cj4gPiA+Pg0KPiA+ID4+ICAgTXVsdGljYXN0IGluY29ycmVjdGx5IGNhbGxzIGluIHRvIGRyaXZl cnMgd2l0aCBhIG11dGV4IGhlbGQgY2F1c2luZyBkcml2ZXJzDQo+ID4gPj4gICB0byBoYXZlIHRv IGdvIHRocm91Z2ggYWxsIG1hbm5lciBvZiBjb250b3J0aW9ucyB0byB1c2UgYSBub24gc2xlZXBh YmxlIGxvY2suDQo+ID4gPj4gICBTZXJpYWxpemUgbXVsdGljYXN0IHVwZGF0ZXMgaW5zdGVhZC4N Cj4gPiA+Pg0KPiA+ID4+ICAgU3VibWl0dGVkIGJ5OiAgICAgICBtbWFjeSA8bW1hY3lAbWF0dG1h Y3kuaW8+DQo+ID4gPj4gICBSZXZpZXdlZCBieTogICAgICAgIHNodXJkLCBzYnJ1bm8NCj4gPiA+ PiAgIFNwb25zb3JlZCBieTogICAgICAgTGltZWxpZ2h0IE5ldHdvcmtzDQo+ID4gPj4gICBEaWZm ZXJlbnRpYWwgUmV2aXNpb246ICAgICAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QxNDk2 OQ0KPiA+ID4+DQo+ID4gPj4gTW9kaWZpZWQ6DQo+ID4gPj4gICBoZWFkL3N5cy9rZXJuL3N1YnJf Z3Rhc2txdWV1ZS5jDQo+ID4gPj4gICBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ID4g Pj4gICBoZWFkL3N5cy9uZXQvaWYuYw0KPiA+ID4+ICAgaGVhZC9zeXMvbmV0aW5ldC9pZ21wLmMN Cj4gPiA+PiAgIGhlYWQvc3lzL25ldGluZXQvaWdtcF92YXIuaA0KPiA+ID4+ICAgaGVhZC9zeXMv bmV0aW5ldC9pbi5jDQo+ID4gPj4gICBoZWFkL3N5cy9uZXRpbmV0L2luX21jYXN0LmMNCj4gPiA+ PiAgIGhlYWQvc3lzL25ldGluZXQvaW5fcGNiLmMNCj4gPiA+PiAgIGhlYWQvc3lzL25ldGluZXQv aW5fdmFyLmgNCj4gPiA+PiAgIGhlYWQvc3lzL25ldGluZXQvaXBfY2FycC5jDQo+ID4gPj4gICBo ZWFkL3N5cy9uZXRpbmV0Ni9pbjYuYw0KPiA+ID4+ICAgaGVhZC9zeXMvbmV0aW5ldDYvaW42X2lm YXR0YWNoLmMNCj4gPiA+PiAgIGhlYWQvc3lzL25ldGluZXQ2L2luNl9tY2FzdC5jDQo+ID4gPj4g ICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfcGNiLmMNCj4gPiA+PiAgIGhlYWQvc3lzL25ldGluZXQ2 L2luNl92YXIuaA0KPiA+ID4+ICAgaGVhZC9zeXMvbmV0aW5ldDYvbWxkNi5jDQo+ID4gPj4gICBo ZWFkL3N5cy9uZXRpbmV0Ni9tbGQ2X3Zhci5oDQo+ID4gPj4gICBoZWFkL3N5cy9zeXMvZ3Rhc2tx dWV1ZS5oDQo+ID4gPj4NCj4gPiA+PiBNb2RpZmllZDogaGVhZC9zeXMva2Vybi9zdWJyX2d0YXNr cXVldWUuYw0KPiA+ID4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4+IC0tLSBoZWFkL3N5 cy9rZXJuL3N1YnJfZ3Rhc2txdWV1ZS5jICAgV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4ICAgICAg ICAocjMzMzE3NCkNCj4gPiA+PiArKysgaGVhZC9zeXMva2Vybi9zdWJyX2d0YXNrcXVldWUuYyAg IFdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOCAgICAgICAgKHIzMzMxNzUpDQo+ID4gPj4gQEAgLTUz LDYgKzUzLDcgQEAgc3RhdGljIHZvaWQgZ3Rhc2txdWV1ZV90aHJlYWRfZW5xdWV1ZSh2b2lkICop Ow0KPiA+ID4+ICBzdGF0aWMgdm9pZCAgZ3Rhc2txdWV1ZV90aHJlYWRfbG9vcCh2b2lkICphcmcp Ow0KPiA+ID4+DQo+ID4gPj4gIFRBU0tRR1JPVVBfREVGSU5FKHNvZnRpcnEsIG1wX25jcHVzLCAx KTsNCj4gPiA+PiArVEFTS1FHUk9VUF9ERUZJTkUoY29uZmlnLCAxLCAxKTsNCj4gPiA+Pg0KPiA+ ID4+ICBzdHJ1Y3QgZ3Rhc2txdWV1ZV9idXN5IHsNCj4gPiA+PiAgICAgICBzdHJ1Y3QgZ3Rhc2sg ICAgKnRiX3J1bm5pbmc7DQo+ID4gPj4gQEAgLTY2Miw3ICs2NjMsNyBAQCBTWVNJTklUKHRxZ19y ZWNvcmRfc21wX3N0YXJ0ZWQsIFNJX1NVQl9TTVAsIFNJX09SREVSX0YNCj4gPiA+Pg0KPiA+ID4+ ICB2b2lkDQo+ID4gPj4gIHRhc2txZ3JvdXBfYXR0YWNoKHN0cnVjdCB0YXNrcWdyb3VwICpxZ3Jv dXAsIHN0cnVjdCBncm91cHRhc2sgKmd0YXNrLA0KPiA+ID4+IC0gICAgdm9pZCAqdW5pcSwgaW50 IGlycSwgY2hhciAqbmFtZSkNCj4gPiA+PiArICAgIHZvaWQgKnVuaXEsIGludCBpcnEsIGNvbnN0 IGNoYXIgKm5hbWUpDQo+ID4gPj4gIHsNCj4gPiA+PiAgICAgICBjcHVzZXRfdCBtYXNrOw0KPiA+ ID4+ICAgICAgIGludCBxaWQsIGVycm9yOw0KPiA+ID4+IEBAIC05NzYsNCArOTc3LDEzIEBAIHZv aWQNCj4gPiA+PiAgdGFza3Fncm91cF9kZXN0cm95KHN0cnVjdCB0YXNrcWdyb3VwICpxZ3JvdXAp DQo+ID4gPj4gIHsNCj4gPiA+Pg0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICt2b2lkDQo+ ID4gPj4gK3Rhc2txZ3JvdXBfY29uZmlnX2d0YXNrX2luaXQodm9pZCAqY3R4LCBzdHJ1Y3QgZ3Jv dXB0YXNrICpndGFzaywgZ3Rhc2tfZm5fdCAqZm4sDQo+ID4gPj4gKyAgICAgY29uc3QgY2hhciAq bmFtZSkNCj4gPiA+PiArew0KPiA+ID4+ICsNCj4gPiA+PiArICAgICBHUk9VUFRBU0tfSU5JVChn dGFzaywgMCwgZm4sIGN0eCk7DQo+ID4gPj4gKyAgICAgdGFza3Fncm91cF9hdHRhY2gocWdyb3Vw X2NvbmZpZywgZ3Rhc2ssIGd0YXNrLCAtMSwgbmFtZSk7DQo+ID4gPj4gIH0NCj4gPiA+Pg0KPiA+ ID4+IE1vZGlmaWVkOiBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ID4gPj4gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQo+ID4gPj4gLS0tIGhlYWQvc3lzL2tlcm4vc3Vicl93aXRuZXNzLmMg ICAgICBXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTggICAgICAgIChyMzMzMTc0KQ0KPiA+ID4+ICsr KyBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jICAgICAgV2VkIE1heSAgMiAxOTozNjoyOSAy MDE4ICAgICAgICAocjMzMzE3NSkNCj4gPiA+PiBAQCAtNTMyLDE4ICs1MzIsMjIgQEAgc3RhdGlj IHN0cnVjdCB3aXRuZXNzX29yZGVyX2xpc3RfZW50cnkgb3JkZXJfbGlzdHNbXSA9DQo+ID4gPj4g ICAgICAgICogSVB2NCBtdWx0aWNhc3Q6DQo+ID4gPj4gICAgICAgICogcHJvdG9jb2wgbG9ja3Mg YmVmb3JlIGludGVyZmFjZSBsb2NrcywgYWZ0ZXIgVURQIGxvY2tzLg0KPiA+ID4+ICAgICAgICAq Lw0KPiA+ID4+ICsgICAgIHsgImluX211bHRpX3N4IiwgJmxvY2tfY2xhc3Nfc3ggfSwNCj4gPiA+ PiAgICAgICB7ICJ1ZHBpbnAiLCAmbG9ja19jbGFzc19ydyB9LA0KPiA+ID4+IC0gICAgIHsgImlu X211bHRpX210eCIsICZsb2NrX2NsYXNzX210eF9zbGVlcCB9LA0KPiA+ID4+ICsgICAgIHsgImlu X211bHRpX2xpc3RfbXR4IiwgJmxvY2tfY2xhc3NfbXR4X3NsZWVwIH0sDQo+ID4gPj4gICAgICAg eyAiaWdtcF9tdHgiLCAmbG9ja19jbGFzc19tdHhfc2xlZXAgfSwNCj4gPiA+PiArICAgICB7ICJp Zm5ldF9ydyIsICZsb2NrX2NsYXNzX3J3IH0sDQo+ID4gPj4gICAgICAgeyAiaWZfYWRkcl9sb2Nr IiwgJmxvY2tfY2xhc3NfcncgfSwNCj4gPiA+PiAgICAgICB7IE5VTEwsIE5VTEwgfSwNCj4gPiA+ PiAgICAgICAvKg0KPiA+ID4+ICAgICAgICAqIElQdjYgbXVsdGljYXN0Og0KPiA+ID4+ICAgICAg ICAqIHByb3RvY29sIGxvY2tzIGJlZm9yZSBpbnRlcmZhY2UgbG9ja3MsIGFmdGVyIFVEUCBsb2Nr cy4NCj4gPiA+PiAgICAgICAgKi8NCj4gPiA+PiArICAgICB7ICJpbjZfbXVsdGlfc3giLCAmbG9j a19jbGFzc19zeCB9LA0KPiA+ID4+ICAgICAgIHsgInVkcGlucCIsICZsb2NrX2NsYXNzX3J3IH0s DQo+ID4gPj4gLSAgICAgeyAiaW42X211bHRpX210eCIsICZsb2NrX2NsYXNzX210eF9zbGVlcCB9 LA0KPiA+ID4+ICsgICAgIHsgImluNl9tdWx0aV9saXN0X210eCIsICZsb2NrX2NsYXNzX210eF9z bGVlcCB9LA0KPiA+ID4+ICAgICAgIHsgIm1sZF9tdHgiLCAmbG9ja19jbGFzc19tdHhfc2xlZXAg fSwNCj4gPiA+PiArICAgICB7ICJpZm5ldF9ydyIsICZsb2NrX2NsYXNzX3J3IH0sDQo+ID4gPj4g ICAgICAgeyAiaWZfYWRkcl9sb2NrIiwgJmxvY2tfY2xhc3NfcncgfSwNCj4gPiA+PiAgICAgICB7 IE5VTEwsIE5VTEwgfSwNCj4gPiA+PiAgICAgICAvKg0KPiA+ID4+DQo+ID4gPj4gTW9kaWZpZWQ6 IGhlYWQvc3lzL25ldC9pZi5jDQo+ID4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPj4g LS0tIGhlYWQvc3lzL25ldC9pZi5jIFdlZCBNYXkgIDIgMTc6NDE6MDAgMjAxOCAgICAgICAgKHIz MzMxNzQpDQo+ID4gPj4gKysrIGhlYWQvc3lzL25ldC9pZi5jIFdlZCBNYXkgIDIgMTk6MzY6Mjkg MjAxOCAgICAgICAgKHIzMzMxNzUpDQo+ID4gPj4gQEAgLTk4NSwxMSArOTg1LDEzIEBAIHN0YXRp YyB2b2lkDQo+ID4gPj4gIGlmX3B1cmdlbWFkZHJzKHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiA+ID4+ ICB7DQo+ID4gPj4gICAgICAgc3RydWN0IGlmbXVsdGlhZGRyICppZm1hOw0KPiA+ID4+IC0gICAg IHN0cnVjdCBpZm11bHRpYWRkciAqbmV4dDsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIElGX0FERFJf V0xPQ0soaWZwKTsNCj4gPiA+PiAtICAgICBUQUlMUV9GT1JFQUNIX1NBRkUoaWZtYSwgJmlmcC0+ aWZfbXVsdGlhZGRycywgaWZtYV9saW5rLCBuZXh0KQ0KPiA+ID4+ICsgICAgIHdoaWxlICghVEFJ TFFfRU1QVFkoJmlmcC0+aWZfbXVsdGlhZGRycykpIHsNCj4gPiA+PiArICAgICAgICAgICAgIGlm bWEgPSBUQUlMUV9GSVJTVCgmaWZwLT5pZl9tdWx0aWFkZHJzKTsNCj4gPiA+PiArICAgICAgICAg ICAgIFRBSUxRX1JFTU9WRSgmaWZwLT5pZl9tdWx0aWFkZHJzLCBpZm1hLCBpZm1hX2xpbmspOw0K PiA+ID4+ICAgICAgICAgICAgICAgaWZfZGVsbXVsdGlfbG9ja2VkKGlmcCwgaWZtYSwgMSk7DQo+ ID4gPj4gKyAgICAgfQ0KPiA+ID4+ICAgICAgIElGX0FERFJfV1VOTE9DSyhpZnApOw0KPiA+ID4+ ICB9DQo+ID4gPj4NCj4gPiA+PiBAQCAtMzQyOSw2ICszNDMxLDEyIEBAIGlmX2FkZG11bHRpKHN0 cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLA0KPiA+ID4+ICAgICAgIHN0cnVj dCBzb2NrYWRkcl9kbCBzZGw7DQo+ID4gPj4gICAgICAgaW50IGVycm9yOw0KPiA+ID4+DQo+ID4g Pj4gKyNpZmRlZiBJTkVUDQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0tfQVNTRVJU KCk7DQo+ID4gPj4gKyNlbmRpZg0KPiA+ID4+ICsjaWZkZWYgSU5FVDYNCj4gPiA+PiArICAgICBJ TjZfTVVMVElfTElTVF9VTkxPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gKyNlbmRpZg0KPiA+ID4+ICAg ICAgIC8qDQo+ID4gPj4gICAgICAgICogSWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSBwcmVzZW50 LCByZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIGl0Ow0KPiA+ID4+ICAgICAgICAqIG90aGVyd2lz ZSwgYWxsb2NhdGUgc3RvcmFnZSBhbmQgc2V0IHVwIGEgbmV3IGFkZHJlc3MuDQo+ID4gPj4gQEAg LTM2MTAsNiArMzYxOCw5IEBAIGlmX2RlbG11bHRpX2lmbWEoc3RydWN0IGlmbXVsdGlhZGRyICpp Zm1hKQ0KPiA+ID4+ICAgICAgIHN0cnVjdCBpZm5ldCAqaWZwOw0KPiA+ID4+ICAgICAgIGludCBs YXN0cmVmOw0KPiA+ID4+DQo+ID4gPj4gKyNpZmRlZiBJTkVUDQo+ID4gPj4gKyAgICAgSU5fTVVM VElfTElTVF9VTkxPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gKyNlbmRpZg0KPiA+ID4+ICAgICAgIGlm cCA9IGlmbWEtPmlmbWFfaWZwOw0KPiA+ID4+ICAjaWZkZWYgRElBR05PU1RJQw0KPiA+ID4+ICAg ICAgIGlmIChpZnAgPT0gTlVMTCkgew0KPiA+ID4+IEBAIC0zNzExLDggKzM3MjIsNyBAQCBpZl9k ZWxtdWx0aV9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBpZm11bHRpYWQNCj4gPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgaWZfZnJlZW11bHRpKGxsX2lmbWEpOw0KPiA+ID4+ICAg ICAgICAgICAgICAgfQ0KPiA+ID4+ICAgICAgIH0NCj4gPiA+PiAtDQo+ID4gPj4gLSAgICAgaWYg KGlmcCAhPSBOVUxMKQ0KPiA+ID4+ICsgICAgIGlmIChpZnAgIT0gTlVMTCAmJiBkZXRhY2hpbmcg PT0gMCkNCj4gPiA+PiAgICAgICAgICAgICAgIFRBSUxRX1JFTU9WRSgmaWZwLT5pZl9tdWx0aWFk ZHJzLCBpZm1hLCBpZm1hX2xpbmspOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgaWZfZnJlZW11bHRp KGlmbWEpOw0KPiA+ID4+DQo+ID4gPj4gTW9kaWZpZWQ6IGhlYWQvc3lzL25ldGluZXQvaWdtcC5j DQo+ID4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPj4gLS0tIGhlYWQvc3lzL25ldGlu ZXQvaWdtcC5jICAgV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4ICAgICAgICAocjMzMzE3NCkNCj4g PiA+PiArKysgaGVhZC9zeXMvbmV0aW5ldC9pZ21wLmMgICBXZWQgTWF5ICAyIDE5OjM2OjI5IDIw MTggICAgICAgIChyMzMzMTc1KQ0KPiA+ID4+IEBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIGlu dCAgICAgICAgaWdtcF92M19lbnF1ZXVlX2dyb3VwX3JlY29yZChzdHJ1Y3QgbWJ1ZnEgKg0KPiA+ ID4+ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbl9tdWx0aSAqLCBjb25zdCBpbnQsIGNvbnN0 IGludCwgY29uc3QgaW50KTsNCj4gPiA+PiAgc3RhdGljIGludCAgIGlnbXBfdjNfZW5xdWV1ZV9m aWx0ZXJfY2hhbmdlKHN0cnVjdCBtYnVmcSAqLA0KPiA+ID4+ICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBpbl9tdWx0aSAqKTsNCj4gPiA+PiAtc3RhdGljIHZvaWQgIGlnbXBfdjNfcHJvY2Vzc19n cm91cF90aW1lcnMoc3RydWN0IGlnbXBfaWZzb2Z0YyAqLA0KPiA+ID4+ICtzdGF0aWMgdm9pZCAg aWdtcF92M19wcm9jZXNzX2dyb3VwX3RpbWVycyhzdHJ1Y3QgaW5fbXVsdGlfaGVhZCAqLA0KPiA+ ID4+ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnVmcSAqLCBzdHJ1Y3QgbWJ1ZnEgKiwgc3Ry dWN0IGluX211bHRpICosDQo+ID4gPj4gICAgICAgICAgICAgICAgICAgY29uc3QgaW50KTsNCj4g PiA+PiAgc3RhdGljIGludCAgIGlnbXBfdjNfbWVyZ2Vfc3RhdGVfY2hhbmdlcyhzdHJ1Y3QgaW5f bXVsdGkgKiwNCj4gPiA+PiBAQCAtMTYyLDEyICsxNjIsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBuZXRpc3JfaGFuZGxlciBpZ21wX25oID0gew0KPiA+ID4+ICAgKiB0aGVtc2VsdmVzIGFyZSBu b3QgdmlydHVhbGl6ZWQuDQo+ID4gPj4gICAqDQo+ID4gPj4gICAqIExvY2tpbmc6DQo+ID4gPj4g LSAqICAqIFRoZSBwZXJtaXR0ZWQgbG9jayBvcmRlciBpczogSU5fTVVMVElfTE9DSywgSUdNUF9M T0NLLCBJRl9BRERSX0xPQ0suDQo+ID4gPj4gKyAqICAqIFRoZSBwZXJtaXR0ZWQgbG9jayBvcmRl ciBpczogSU5fTVVMVElfTElTVF9MT0NLLCBJR01QX0xPQ0ssIElGX0FERFJfTE9DSy4NCj4gPiA+ PiAgICogICAgQW55IG1heSBiZSB0YWtlbiBpbmRlcGVuZGVudGx5OyBpZiBhbnkgYXJlIGhlbGQg YXQgdGhlIHNhbWUNCj4gPiA+PiAgICogICAgdGltZSwgdGhlIGFib3ZlIGxvY2sgb3JkZXIgbXVz dCBiZSBmb2xsb3dlZC4NCj4gPiA+PiAgICogICogQWxsIG91dHB1dCBpcyBkZWxlZ2F0ZWQgdG8g dGhlIG5ldGlzci4NCj4gPiA+PiAgICogICAgTm93IHRoYXQgR2lhbnQgaGFzIGJlZW4gZWxpbWlu YXRlZCwgdGhlIG5ldGlzciBtYXkgYmUgaW5saW5lZC4NCj4gPiA+PiAtICogICogSU5fTVVMVElf TE9DSyBjb3ZlcnMgaW5fbXVsdGkuDQo+ID4gPj4gKyAqICAqIElOX01VTFRJX0xJU1RfTE9DSyBj b3ZlcnMgaW5fbXVsdGkuDQo+ID4gPj4gICAqICAqIElHTVBfTE9DSyBjb3ZlcnMgaWdtcF9pZnNv ZnRjIGFuZCBhbnkgZ2xvYmFsIHZhcmlhYmxlcyBpbiB0aGlzIGZpbGUsDQo+ID4gPj4gICAqICAg IGluY2x1ZGluZyB0aGUgb3V0cHV0IHF1ZXVlLg0KPiA+ID4+ICAgKiAgKiBJRl9BRERSX0xPQ0sg Y292ZXJzIGlmX211bHRpYWRkcnMsIHdoaWNoIGlzIHVzZWQgZm9yIGEgdmFyaWV0eSBvZg0KPiA+ ID4+IEBAIC00NDEsNyArNDQxLDcgQEAgc3lzY3RsX2lnbXBfaWZpbmZvKFNZU0NUTF9IQU5ETEVS X0FSR1MpDQo+ID4gPj4gICAgICAgaWYgKGVycm9yKQ0KPiA+ID4+ICAgICAgICAgICAgICAgcmV0 dXJuIChlcnJvcik7DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ID4g Pj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4gPj4gICAgICAgSUdNUF9MT0NLKCk7 DQo+ID4gPj4NCj4gPiA+PiAgICAgICBpZiAobmFtZVswXSA8PSAwIHx8IG5hbWVbMF0gPiBWX2lm X2luZGV4KSB7DQo+ID4gPj4gQEAgLTQ3NSw3ICs0NzUsNyBAQCBzeXNjdGxfaWdtcF9pZmluZm8o U1lTQ1RMX0hBTkRMRVJfQVJHUykNCj4gPiA+Pg0KPiA+ID4+ICBvdXRfbG9ja2VkOg0KPiA+ID4+ ICAgICAgIElHTVBfVU5MT0NLKCk7DQo+ID4gPj4gLSAgICAgSU5fTVVMVElfVU5MT0NLKCk7DQo+ ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4gPiA+PiAgICAgICByZXR1cm4g KGVycm9yKTsNCj4gPiA+PiAgfQ0KPiA+ID4+DQo+ID4gPj4gQEAgLTU4Niw3ICs1ODYsNiBAQCBp Z2lfYWxsb2NfbG9ja2VkKC8qY29uc3QqLyBzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gPiA+PiAgICAg ICBpZ2ktPmlnaV9xaSA9IElHTVBfUUlfSU5JVDsNCj4gPiA+PiAgICAgICBpZ2ktPmlnaV9xcmkg PSBJR01QX1FSSV9JTklUOw0KPiA+ID4+ICAgICAgIGlnaS0+aWdpX3VyaSA9IElHTVBfVVJJX0lO SVQ7DQo+ID4gPj4gLSAgICAgU0xJU1RfSU5JVCgmaWdpLT5pZ2lfcmVsaW5taGVhZCk7DQo+ID4g Pj4gICAgICAgbWJ1ZnFfaW5pdCgmaWdpLT5pZ2lfZ3EsIElHTVBfTUFYX1JFU1BPTlNFX1BBQ0tF VFMpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgTElTVF9JTlNFUlRfSEVBRCgmVl9pZ2lfaGVhZCwg aWdpLCBpZ2lfbGluayk7DQo+ID4gPj4gQEAgLTYxMiwxMSArNjExLDEyIEBAIGlnbXBfaWZkZXRh Y2goc3RydWN0IGlmbmV0ICppZnApDQo+ID4gPj4gIHsNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaWdt cF9pZnNvZnRjICAgICAqaWdpOw0KPiA+ID4+ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAgICAg ICppZm1hOw0KPiA+ID4+IC0gICAgIHN0cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm0sICp0aW5t Ow0KPiA+ID4+IC0NCj4gPiA+PiArICAgICBzdHJ1Y3QgaW5fbXVsdGkgICAgICAgICAqaW5tOw0K PiA+ID4+ICsgICAgIHN0cnVjdCBpbl9tdWx0aV9oZWFkIGlubV9mcmVlX3RtcDsNCj4gPiA+PiAg ICAgICBDVFIzKEtUUl9JR01QVjMsICIlczogY2FsbGVkIGZvciBpZnAgJXAoJXMpIiwgX19mdW5j X18sIGlmcCwNCj4gPiA+PiAgICAgICAgICAgaWZwLT5pZl94bmFtZSk7DQo+ID4gPj4NCj4gPiA+ PiArICAgICBTTElTVF9JTklUKCZpbm1fZnJlZV90bXApOw0KPiA+ID4+ICAgICAgIElHTVBfTE9D SygpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZw LT5pZl9hZmRhdGFbQUZfSU5FVF0pLT5paV9pZ21wOw0KPiA+ID4+IEBAIC02MzEsMjQgKzYzMSwx NSBAQCBpZ21wX2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiA+ID4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCIlczogaWZtYV9wcm90b3NwZWMgaXMgTlVMTCIsIF9fZnVuY19fKSk7 DQo+ID4gPj4gICNlbmRpZg0KPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpbm0gPSAoc3Ry dWN0IGluX211bHRpICopaWZtYS0+aWZtYV9wcm90b3NwZWM7DQo+ID4gPj4gLSAgICAgICAgICAg ICAgICAgICAgIGlmIChpbm0tPmlubV9zdGF0ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSKSB7DQo+ ID4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xJU1RfSU5TRVJUX0hFQUQoJmln aS0+aWdpX3JlbGlubWhlYWQsDQo+ID4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlubSwgaW5tX25yZWxlKTsNCj4gPiA+PiAtICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoaW5tLT5pbm1fc3RhdGUgPT0gSUdNUF9MRUFW SU5HX01FTUJFUikNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm1fcmVs ZV9sb2NrZWQoJmlubV9mcmVlX3RtcCwgaW5tKTsNCj4gPiA+PiAgICAgICAgICAgICAgICAgICAg ICAgaW5tX2NsZWFyX3JlY29yZGVkKGlubSk7DQo+ID4gPj4gICAgICAgICAgICAgICB9DQo+ID4g Pj4gICAgICAgICAgICAgICBJRl9BRERSX1JVTkxPQ0soaWZwKTsNCj4gPiA+PiAtICAgICAgICAg ICAgIC8qDQo+ID4gPj4gLSAgICAgICAgICAgICAgKiBGcmVlIHRoZSBpbl9tdWx0aSByZWZlcmVu Y2UocykgZm9yIHRoaXMgSUdNUCBsaWZlY3ljbGUuDQo+ID4gPj4gLSAgICAgICAgICAgICAgKi8N Cj4gPiA+PiAtICAgICAgICAgICAgIFNMSVNUX0ZPUkVBQ0hfU0FGRShpbm0sICZpZ2ktPmlnaV9y ZWxpbm1oZWFkLCBpbm1fbnJlbGUsDQo+ID4gPj4gLSAgICAgICAgICAgICAgICAgdGlubSkgew0K PiA+ID4+IC0gICAgICAgICAgICAgICAgICAgICBTTElTVF9SRU1PVkVfSEVBRCgmaWdpLT5pZ2lf cmVsaW5taGVhZCwgaW5tX25yZWxlKTsNCj4gPiA+PiAtICAgICAgICAgICAgICAgICAgICAgaW5t X3JlbGVhc2VfbG9ja2VkKGlubSk7DQo+ID4gPj4gLSAgICAgICAgICAgICB9DQo+ID4gPj4gKyAg ICAgICAgICAgICBpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKCZpbm1fZnJlZV90bXApOw0KPiA+ ID4+ICAgICAgIH0NCj4gPiA+PiAtDQo+ID4gPj4gICAgICAgSUdNUF9VTkxPQ0soKTsNCj4gPiA+ PiArDQo+ID4gPj4gIH0NCj4gPiA+Pg0KPiA+ID4+ICAvKg0KPiA+ID4+IEBAIC02ODQsMTEgKzY3 NSw2IEBAIGlnaV9kZWxldGVfbG9ja2VkKGNvbnN0IHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiA+ID4+ ICAgICAgICAgICAgICAgICAgICAgICBtYnVmcV9kcmFpbigmaWdpLT5pZ2lfZ3EpOw0KPiA+ID4+ DQo+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgIExJU1RfUkVNT1ZFKGlnaSwgaWdpX2xpbmsp Ow0KPiA+ID4+IC0NCj4gPiA+PiAtICAgICAgICAgICAgICAgICAgICAgS0FTU0VSVChTTElTVF9F TVBUWSgmaWdpLT5pZ2lfcmVsaW5taGVhZCksDQo+ID4gPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAoIiVzOiB0aGVyZSBhcmUgZGFuZ2xpbmcgaW5fbXVsdGkgcmVmZXJlbmNlcyIsDQo+ID4g Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXykpOw0KPiA+ID4+IC0NCj4gPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgZnJlZShpZ2ksIE1fSUdNUCk7DQo+ID4gPj4gICAgICAg ICAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiA+PiAgICAgICAgICAgICAgIH0NCj4gPiA+PiBA QCAtNzIyLDcgKzcwOCw3IEBAIGlnbXBfaW5wdXRfdjFfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAs IGNvbnN0IHN0cnVjdCBpcA0KPiA+ID4+ICAgICAgIH0NCj4gPiA+PiAgICAgICBJR01QU1RBVF9J TkMoaWdwc19yY3ZfZ2VuX3F1ZXJpZXMpOw0KPiA+ID4+DQo+ID4gPj4gLSAgICAgSU5fTVVMVElf TE9DSygpOw0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+ID4+ICAgICAg IElHTVBfTE9DSygpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgaWdpID0gKChzdHJ1Y3QgaW5faWZp bmZvICopaWZwLT5pZl9hZmRhdGFbQUZfSU5FVF0pLT5paV9pZ21wOw0KPiA+ID4+IEBAIC03Nzgs NyArNzY0LDcgQEAgaWdtcF9pbnB1dF92MV9xdWVyeShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qg c3RydWN0IGlwDQo+ID4gPj4NCj4gPiA+PiAgb3V0X2xvY2tlZDoNCj4gPiA+PiAgICAgICBJR01Q X1VOTE9DSygpOw0KPiA+ID4+IC0gICAgIElOX01VTFRJX1VOTE9DSygpOw0KPiA+ID4+ICsgICAg IElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4gPj4NCj4gPiA+PiAgICAgICByZXR1cm4gKDAp Ow0KPiA+ID4+ICB9DQo+ID4gPj4gQEAgLTgxNiw3ICs4MDIsNyBAQCBpZ21wX2lucHV0X3YyX3F1 ZXJ5KHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaXANCj4gPiA+PiAgICAgICAgICAg ICAgIElHTVBTVEFUX0lOQyhpZ3BzX3Jjdl9ncm91cF9xdWVyaWVzKTsNCj4gPiA+PiAgICAgICB9 DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ID4gPj4gKyAgICAgSU5f TVVMVElfTElTVF9MT0NLKCk7DQo+ID4gPj4gICAgICAgSUdNUF9MT0NLKCk7DQo+ID4gPj4NCj4g PiA+PiAgICAgICBpZ2kgPSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9J TkVUXSktPmlpX2lnbXA7DQo+ID4gPj4gQEAgLTg3Miw3ICs4NTgsNyBAQCBpZ21wX2lucHV0X3Yy X3F1ZXJ5KHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaXANCj4gPiA+Pg0KPiA+ID4+ ICBvdXRfbG9ja2VkOg0KPiA+ID4+ICAgICAgIElHTVBfVU5MT0NLKCk7DQo+ID4gPj4gLSAgICAg SU5fTVVMVElfVU5MT0NLKCk7DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsN Cj4gPiA+Pg0KPiA+ID4+ICAgICAgIHJldHVybiAoMCk7DQo+ID4gPj4gIH0NCj4gPiA+PiBAQCAt ODk5LDcgKzg4NSw3IEBAIGlnbXBfdjJfdXBkYXRlX2dyb3VwKHN0cnVjdCBpbl9tdWx0aSAqaW5t LCBjb25zdCBpbnQgdA0KPiA+ID4+ICAgICAgIENUUjQoS1RSX0lHTVBWMywgIjB4JTA4eDogJXMv JXMgdGltZXI9JWQiLCBfX2Z1bmNfXywNCj4gPiA+PiAgICAgICAgICAgbnRvaGwoaW5tLT5pbm1f YWRkci5zX2FkZHIpLCBpbm0tPmlubV9pZnAtPmlmX3huYW1lLCB0aW1lcik7DQo+ID4gPj4NCj4g PiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ICsgICAgIElOX01VTFRJ X0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIHN3aXRjaCAoaW5tLT5p bm1fc3RhdGUpIHsNCj4gPiA+PiAgICAgICBjYXNlIElHTVBfTk9UX01FTUJFUjoNCj4gPiA+PiBA QCAtMTAxMSw3ICs5OTcsNyBAQCBpZ21wX2lucHV0X3YzX3F1ZXJ5KHN0cnVjdCBpZm5ldCAqaWZw LCBjb25zdCBzdHJ1Y3QgaXANCj4gPiA+PiAgICAgICAgICAgICAgICAgICAgICAgSUdNUFNUQVRf SU5DKGlncHNfcmN2X2dzcl9xdWVyaWVzKTsNCj4gPiA+PiAgICAgICB9DQo+ID4gPj4NCj4gPiA+ PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NL KCk7DQo+ID4gPj4gICAgICAgSUdNUF9MT0NLKCk7DQo+ID4gPj4NCj4gPiA+PiAgICAgICBpZ2kg PSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXSktPmlpX2lnbXA7 DQo+ID4gPj4gQEAgLTEwOTIsNyArMTA3OCw3IEBAIGlnbXBfaW5wdXRfdjNfcXVlcnkoc3RydWN0 IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0KPiA+ID4+DQo+ID4gPj4gIG91dF9sb2NrZWQ6 DQo+ID4gPj4gICAgICAgSUdNUF9VTkxPQ0soKTsNCj4gPiA+PiAtICAgICBJTl9NVUxUSV9VTkxP Q0soKTsNCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DSygpOw0KPiA+ID4+DQo+ID4g Pj4gICAgICAgcmV0dXJuICgwKTsNCj4gPiA+PiAgfQ0KPiA+ID4+IEBAIC0xMTA5LDcgKzEwOTUs NyBAQCBpZ21wX2lucHV0X3YzX2dyb3VwX3F1ZXJ5KHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBzdHJ1 Y3QNCj4gPiA+PiAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsOw0KPiA+ID4+ ICAgICAgIHVpbnQxNl90ICAgICAgICAgICAgICAgICBuc3JjOw0KPiA+ID4+DQo+ID4gPj4gLSAg ICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xP Q0tfQVNTRVJUKCk7DQo+ID4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+DQo+ ID4gPj4gICAgICAgcmV0dmFsID0gMDsNCj4gPiA+PiBAQCAtMTI0Niw3ICsxMjMyLDcgQEAgaWdt cF9pbnB1dF92MV9yZXBvcnQoc3RydWN0IGlmbmV0ICppZnAsIC8qY29uc3QqLyBzdHJ1DQo+ID4g Pj4gICAgICAgICogSWYgd2UgYXJlIGEgbWVtYmVyIG9mIHRoaXMgZ3JvdXAsIGFuZCBvdXIgbWVt YmVyc2hpcCBzaG91bGQgYmUNCj4gPiA+PiAgICAgICAgKiByZXBvcnRlZCwgc3RvcCBvdXIgZ3Jv dXAgdGltZXIgYW5kIHRyYW5zaXRpb24gdG8gdGhlICdsYXp5JyBzdGF0ZS4NCj4gPiA+PiAgICAg ICAgKi8NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ID4gPj4gKyAgICAgSU5fTVVM VElfTElTVF9MT0NLKCk7DQo+ID4gPj4gICAgICAgaW5tID0gaW5tX2xvb2t1cChpZnAsIGlnbXAt PmlnbXBfZ3JvdXApOw0KPiA+ID4+ICAgICAgIGlmIChpbm0gIT0gTlVMTCkgew0KPiA+ID4+ICAg ICAgICAgICAgICAgc3RydWN0IGlnbXBfaWZzb2Z0YyAqaWdpOw0KPiA+ID4+IEBAIC0xMzA1LDcg KzEyOTEsNyBAQCBpZ21wX2lucHV0X3YxX3JlcG9ydChzdHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25z dCovIHN0cnUNCj4gPiA+PiAgICAgICB9DQo+ID4gPj4NCj4gPiA+PiAgb3V0X2xvY2tlZDoNCj4g PiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNU X1VOTE9DSygpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgcmV0dXJuICgwKTsNCj4gPiA+PiAgfQ0K PiA+ID4+IEBAIC0xMzczLDcgKzEzNTksNyBAQCBpZ21wX2lucHV0X3YyX3JlcG9ydChzdHJ1Y3Qg aWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gPiA+PiAgICAgICAgKiByZXBvcnRlZCwgYW5k IG91ciBncm91cCB0aW1lciBpcyBwZW5kaW5nIG9yIGFib3V0IHRvIGJlIHJlc2V0LA0KPiA+ID4+ ICAgICAgICAqIHN0b3Agb3VyIGdyb3VwIHRpbWVyIGJ5IHRyYW5zaXRpb25pbmcgdG8gdGhlICds YXp5JyBzdGF0ZS4NCj4gPiA+PiAgICAgICAgKi8NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NL KCk7DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4gPj4gICAgICAgaW5t ID0gaW5tX2xvb2t1cChpZnAsIGlnbXAtPmlnbXBfZ3JvdXApOw0KPiA+ID4+ICAgICAgIGlmIChp bm0gIT0gTlVMTCkgew0KPiA+ID4+ICAgICAgICAgICAgICAgc3RydWN0IGlnbXBfaWZzb2Z0YyAq aWdpOw0KPiA+ID4+IEBAIC0xNDE4LDcgKzE0MDQsNyBAQCBpZ21wX2lucHV0X3YyX3JlcG9ydChz dHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gPiA+PiAgICAgICB9DQo+ID4gPj4N Cj4gPiA+PiAgb3V0X2xvY2tlZDoNCj4gPiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4g PiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DSygpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAg cmV0dXJuICgwKTsNCj4gPiA+PiAgfQ0KPiA+ID4+IEBAIC0xNjQ3LDYgKzE2MzMsNyBAQCBpZ21w X2Zhc3R0aW1vX3ZuZXQodm9pZCkNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaWdtcF9pZnNvZnRjICAg ICAqaWdpOw0KPiA+ID4+ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAgICAgICppZm1hOw0KPiA+ ID4+ICAgICAgIHN0cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm07DQo+ID4gPj4gKyAgICAgc3Ry dWN0IGluX211bHRpX2hlYWQgaW5tX2ZyZWVfdG1wOw0KPiA+ID4+ICAgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICBsb29wLCB1cmlfZmFzdGh6Ow0KPiA+ID4+DQo+ID4gPj4gICAgICAgbG9v cCA9IDA7DQo+ID4gPj4gQEAgLTE2NjIsNyArMTY0OSw4IEBAIGlnbXBfZmFzdHRpbW9fdm5ldCh2 b2lkKQ0KPiA+ID4+ICAgICAgICAgICAhVl9zdGF0ZV9jaGFuZ2VfdGltZXJzX3J1bm5pbmcpDQo+ ID4gPj4gICAgICAgICAgICAgICByZXR1cm47DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxU SV9MT0NLKCk7DQo+ID4gPj4gKyAgICAgU0xJU1RfSU5JVCgmaW5tX2ZyZWVfdG1wKTsNCj4gPiA+ PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0soKTsNCj4gPiA+PiAgICAgICBJR01QX0xPQ0soKTsN Cj4gPiA+Pg0KPiA+ID4+ICAgICAgIC8qDQo+ID4gPj4gQEAgLTE3MjAsNyArMTcwOCw3IEBAIGln bXBfZmFzdHRpbW9fdm5ldCh2b2lkKQ0KPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZ2ktPmlnaV92ZXJzaW9uKTsNCj4gPiA+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiA+PiAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJR01QX1ZF UlNJT05fMzoNCj4gPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ21wX3YzX3By b2Nlc3NfZ3JvdXBfdGltZXJzKGlnaSwgJnFycSwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKCZpbm1fZnJlZV90bXAsICZx cnEsDQo+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY3EsIGlubSwg dXJpX2Zhc3Roeik7DQo+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiA+PiBAQCAtMTcyOCw4ICsxNzE2 LDYgQEAgaWdtcF9mYXN0dGltb192bmV0KHZvaWQpDQo+ID4gPj4gICAgICAgICAgICAgICBJRl9B RERSX1JVTkxPQ0soaWZwKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgICAgICAgICAgaWYgKGlnaS0+ aWdpX3ZlcnNpb24gPT0gSUdNUF9WRVJTSU9OXzMpIHsNCj4gPiA+PiAtICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGluX211bHRpICAgICAgICAgKnRpbm07DQo+ID4gPj4gLQ0KPiA+ID4+ICAg ICAgICAgICAgICAgICAgICAgICBpZ21wX2Rpc3BhdGNoX3F1ZXVlKCZxcnEsIDAsIGxvb3ApOw0K PiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpZ21wX2Rpc3BhdGNoX3F1ZXVlKCZzY3EsIDAs IGxvb3ApOw0KPiA+ID4+DQo+ID4gPj4gQEAgLTE3MzcsMTggKzE3MjMsMTMgQEAgaWdtcF9mYXN0 dGltb192bmV0KHZvaWQpDQo+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgICAqIEZyZWUgdGhl IGluX211bHRpIHJlZmVyZW5jZShzKSBmb3IgdGhpcw0KPiA+ID4+ICAgICAgICAgICAgICAgICAg ICAgICAgKiBJR01QIGxpZmVjeWNsZS4NCj4gPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICov DQo+ID4gPj4gLSAgICAgICAgICAgICAgICAgICAgIFNMSVNUX0ZPUkVBQ0hfU0FGRShpbm0sICZp Z2ktPmlnaV9yZWxpbm1oZWFkLA0KPiA+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgaW5t X25yZWxlLCB0aW5tKSB7DQo+ID4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xJ U1RfUkVNT1ZFX0hFQUQoJmlnaS0+aWdpX3JlbGlubWhlYWQsDQo+ID4gPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlubV9ucmVsZSk7DQo+ID4gPj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5tX3JlbGVhc2VfbG9ja2VkKGlubSk7DQo+ID4gPj4gLSAgICAgICAg ICAgICAgICAgICAgIH0NCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgaW5tX3JlbGVhc2Vf bGlzdF9kZWZlcnJlZCgmaW5tX2ZyZWVfdG1wKTsNCj4gPiA+PiAgICAgICAgICAgICAgIH0NCj4g PiA+PiAgICAgICB9DQo+ID4gPj4NCj4gPiA+PiAgb3V0X2xvY2tlZDoNCj4gPiA+PiAgICAgICBJ R01QX1VOTE9DSygpOw0KPiA+ID4+IC0gICAgIElOX01VTFRJX1VOTE9DSygpOw0KPiA+ID4+ICsg ICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4gPj4gIH0NCj4gPiA+Pg0KPiA+ID4+ICAv Kg0KPiA+ID4+IEBAIC0xNzYwLDcgKzE3NDEsNyBAQCBpZ21wX3YxdjJfcHJvY2Vzc19ncm91cF90 aW1lcihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgY28NCj4gPiA+PiAgew0KPiA+ID4+ICAgICAgIGlu dCByZXBvcnRfdGltZXJfZXhwaXJlZDsNCj4gPiA+Pg0KPiA+ID4+IC0gICAgIElOX01VTFRJX0xP Q0tfQVNTRVJUKCk7DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0K PiA+ID4+ICAgICAgIElHTVBfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIGlm IChpbm0tPmlubV90aW1lciA9PSAwKSB7DQo+ID4gPj4gQEAgLTE4MDIsMTQgKzE3ODMsMTQgQEAg aWdtcF92MXYyX3Byb2Nlc3NfZ3JvdXBfdGltZXIoc3RydWN0IGluX211bHRpICppbm0sIGNvDQo+ ID4gPj4gICAqIE5vdGU6IFVubG9ja2VkIHJlYWQgZnJvbSBpZ2kuDQo+ID4gPj4gICAqLw0KPiA+ ID4+ICBzdGF0aWMgdm9pZA0KPiA+ID4+IC1pZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKHN0 cnVjdCBpZ21wX2lmc29mdGMgKmlnaSwNCj4gPiA+PiAraWdtcF92M19wcm9jZXNzX2dyb3VwX3Rp bWVycyhzdHJ1Y3QgaW5fbXVsdGlfaGVhZCAqaW5taCwNCj4gPiA+PiAgICAgIHN0cnVjdCBtYnVm cSAqcXJxLCBzdHJ1Y3QgbWJ1ZnEgKnNjcSwNCj4gPiA+PiAgICAgIHN0cnVjdCBpbl9tdWx0aSAq aW5tLCBjb25zdCBpbnQgdXJpX2Zhc3RoeikNCj4gPiA+PiAgew0KPiA+ID4+ICAgICAgIGludCBx dWVyeV9yZXNwb25zZV90aW1lcl9leHBpcmVkOw0KPiA+ID4+ICAgICAgIGludCBzdGF0ZV9jaGFu Z2VfcmV0cmFuc21pdF90aW1lcl9leHBpcmVkOw0KPiA+ID4+DQo+ID4gPj4gLSAgICAgSU5fTVVM VElfTE9DS19BU1NFUlQoKTsNCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJU KCk7DQo+ID4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+DQo+ID4gPj4gICAg ICAgcXVlcnlfcmVzcG9uc2VfdGltZXJfZXhwaXJlZCA9IDA7DQo+ID4gPj4gQEAgLTE5MDcsOCAr MTg4OCw3IEBAIGlnbXBfdjNfcHJvY2Vzc19ncm91cF90aW1lcnMoc3RydWN0IGlnbXBfaWZzb2Z0 YyAqaWdpLA0KPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5tLT5pbm1fc3RhdGUg PT0gSUdNUF9MRUFWSU5HX01FTUJFUiAmJg0KPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5tLT5pbm1fc2NydiA9PSAwKSB7DQo+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5tLT5pbm1fc3RhdGUgPSBJR01QX05PVF9NRU1CRVI7DQo+ID4gPj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU0xJU1RfSU5TRVJUX0hFQUQoJmlnaS0+aWdpX3JlbGlubWhl YWQsDQo+ID4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubSwgaW5tX25y ZWxlKTsNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm1fcmVsZV9sb2Nr ZWQoaW5taCwgaW5tKTsNCj4gPiA+PiAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ID4+ICAg ICAgICAgICAgICAgfQ0KPiA+ID4+ICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPj4gQEAgLTE5 MjksNyArMTkwOSw3IEBAIHN0YXRpYyB2b2lkDQo+ID4gPj4gIGlnbXBfdjNfc3VwcHJlc3NfZ3Jv dXBfcmVjb3JkKHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiA+ID4+ICB7DQo+ID4gPj4NCj4gPiA+ PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJ U1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIEtBU1NFUlQoaW5tLT5pbm1f aWdpLT5pZ2lfdmVyc2lvbiA9PSBJR01QX1ZFUlNJT05fMywNCj4gPiA+PiAgICAgICAgICAgICAg ICgiJXM6IG5vdCBJR01QdjMgbW9kZSBvbiBsaW5rIiwgX19mdW5jX18pKTsNCj4gPiA+PiBAQCAt MjAwMywxMyArMTk4MywxNSBAQCBpZ21wX3YzX2NhbmNlbF9saW5rX3RpbWVycyhzdHJ1Y3QgaWdt cF9pZnNvZnRjICppZ2kpDQo+ID4gPj4gIHsNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaWZtdWx0aWFk ZHIgICAgICAqaWZtYTsNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaWZuZXQgICAgICAgICAgICAqaWZw Ow0KPiA+ID4+IC0gICAgIHN0cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm0sICp0aW5tOw0KPiA+ ID4+ICsgICAgIHN0cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm07DQo+ID4gPj4gKyAgICAgc3Ry dWN0IGluX211bHRpX2hlYWQgaW5tX2ZyZWVfdG1wOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgQ1RS MyhLVFJfSUdNUFYzLCAiJXM6IGNhbmNlbCB2MyB0aW1lcnMgb24gaWZwICVwKCVzKSIsIF9fZnVu Y19fLA0KPiA+ID4+ICAgICAgICAgICBpZ2ktPmlnaV9pZnAsIGlnaS0+aWdpX2lmcC0+aWZfeG5h bWUpOw0KPiA+ID4+DQo+ID4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPiA+ PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gICAgICAgSUdNUF9M T0NLX0FTU0VSVCgpOw0KPiA+ID4+ICsgICAgIFNMSVNUX0lOSVQoJmlubV9mcmVlX3RtcCk7DQo+ ID4gPj4NCj4gPiA+PiAgICAgICAvKg0KPiA+ID4+ICAgICAgICAqIFN0b3AgdGhlIHYzIEdlbmVy YWwgUXVlcnkgUmVzcG9uc2Ugb24gdGhpcyBsaW5rIHN0b25lIGRlYWQuDQo+ID4gPj4gQEAgLTIw NTAsNyArMjAzMiw3IEBAIGlnbXBfdjNfY2FuY2VsX2xpbmtfdGltZXJzKHN0cnVjdCBpZ21wX2lm c29mdGMgKmlnaSkNCj4gPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICogbWVzc2FnZSBpcyBz ZW50IHVwc3RyZWFtIHRvIHRoZSBvbGQgcXVlcmllciAtLQ0KPiA+ID4+ICAgICAgICAgICAgICAg ICAgICAgICAgKiB0cmFuc2l0aW9uIHRvIE5PVCB3b3VsZCBsb3NlIHRoZSBsZWF2ZSBhbmQgcmFj ZS4NCj4gPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4gPj4gLSAgICAgICAgICAg ICAgICAgICAgIFNMSVNUX0lOU0VSVF9IRUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFkLCBpbm0sIGlu bV9ucmVsZSk7DQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGlubV9yZWxlX2xvY2tlZCgm aW5tX2ZyZWVfdG1wLCBpbm0pOw0KPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAvKiBGQUxM VEhST1VHSCAqLw0KPiA+ID4+ICAgICAgICAgICAgICAgY2FzZSBJR01QX0dfUVVFUllfUEVORElO R19NRU1CRVI6DQo+ID4gPj4gICAgICAgICAgICAgICBjYXNlIElHTVBfU0dfUVVFUllfUEVORElO R19NRU1CRVI6DQo+ID4gPj4gQEAgLTIwNjksMTAgKzIwNTEsOCBAQCBpZ21wX3YzX2NhbmNlbF9s aW5rX3RpbWVycyhzdHJ1Y3QgaWdtcF9pZnNvZnRjICppZ2kpDQo+ID4gPj4gICAgICAgICAgICAg ICBtYnVmcV9kcmFpbigmaW5tLT5pbm1fc2NxKTsNCj4gPiA+PiAgICAgICB9DQo+ID4gPj4gICAg ICAgSUZfQUREUl9SVU5MT0NLKGlmcCk7DQo+ID4gPj4gLSAgICAgU0xJU1RfRk9SRUFDSF9TQUZF KGlubSwgJmlnaS0+aWdpX3JlbGlubWhlYWQsIGlubV9ucmVsZSwgdGlubSkgew0KPiA+ID4+IC0g ICAgICAgICAgICAgU0xJU1RfUkVNT1ZFX0hFQUQoJmlnaS0+aWdpX3JlbGlubWhlYWQsIGlubV9u cmVsZSk7DQo+ID4gPj4gLSAgICAgICAgICAgICBpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4g PiA+PiAtICAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgIGlubV9yZWxlYXNlX2xpc3RfZGVm ZXJyZWQoJmlubV9mcmVlX3RtcCk7DQo+ID4gPj4gIH0NCj4gPiA+Pg0KPiA+ID4+ICAvKg0KPiA+ ID4+IEBAIC0yMTk5LDcgKzIxNzksNyBAQCBpZ21wX3YxdjJfcXVldWVfcmVwb3J0KHN0cnVjdCBp bl9tdWx0aSAqaW5tLCBjb25zdCBpbnQNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaXAgICAgICAgICAg ICAgICAqaXA7DQo+ID4gPj4gICAgICAgc3RydWN0IG1idWYgICAgICAgICAgICAgKm07DQo+ID4g Pj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ICsgICAgIElO X01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+PiAgICAgICBJR01QX0xPQ0tfQVNTRVJU KCk7DQo+ID4gPj4NCj4gPiA+PiAgICAgICBpZnAgPSBpbm0tPmlubV9pZnA7DQo+ID4gPj4gQEAg LTIyNzYsMTAgKzIyNTYsOCBAQCBpZ21wX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgaW5fbXVsdGkgKmlu bSkNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaWZuZXQgKmlmcDsNCj4gPiA+PiAgICAgICBpbnQgZXJy b3I7DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ IC0NCj4gPiA+PiAgICAgICBlcnJvciA9IDA7DQo+ID4gPj4gLQ0KPiA+ID4+ICsgICAgIElOX01V TFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gICAgICAgLyoNCj4gPiA+PiAgICAgICAgKiBUcnkg dG8gZGV0ZWN0IGlmIHRoZSB1cHBlciBsYXllciBqdXN0IGFza2VkIHVzIHRvIGNoYW5nZSBzdGF0 ZQ0KPiA+ID4+ICAgICAgICAqIGZvciBhbiBpbnRlcmZhY2Ugd2hpY2ggaGFzIG5vdyBnb25lIGF3 YXkuDQo+ID4gPj4gQEAgLTIzNzksOSArMjM1NywxMCBAQCBpZ21wX2luaXRpYWxfam9pbihzdHJ1 Y3QgaW5fbXVsdGkgKmlubSwgc3RydWN0IGlnbXBfaWYNCj4gPiA+PiAgICAgICAgICAgICAgICAq IGdyb3VwIGFyb3VuZCBmb3IgdGhlIGZpbmFsIElOQ0xVREUge30gZW5xdWV1ZS4NCj4gPiA+PiAg ICAgICAgICAgICAgICAqLw0KPiA+ID4+ICAgICAgICAgICAgICAgaWYgKGlnaS0+aWdpX3ZlcnNp b24gPT0gSUdNUF9WRVJTSU9OXzMgJiYNCj4gPiA+PiAtICAgICAgICAgICAgICAgICBpbm0tPmlu bV9zdGF0ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSKQ0KPiA+ID4+IC0gICAgICAgICAgICAgICAg ICAgICBpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPiA+PiAtDQo+ID4gPj4gKyAgICAgICAg ICAgICAgICAgaW5tLT5pbm1fc3RhdGUgPT0gSUdNUF9MRUFWSU5HX01FTUJFUikgew0KPiA+ID4+ ICsgICAgICAgICAgICAgICAgICAgICBNUEFTUyhpbm0tPmlubV9yZWZjb3VudCA+IDEpOw0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAgICBpbm1fcmVsZV9sb2NrZWQoTlVMTCwgaW5tKTsNCj4g PiA+PiArICAgICAgICAgICAgIH0NCj4gPiA+PiAgICAgICAgICAgICAgIGlubS0+aW5tX3N0YXRl ID0gSUdNUF9SRVBPUlRJTkdfTUVNQkVSOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgICAgICAgICBz d2l0Y2ggKGlnaS0+aWdpX3ZlcnNpb24pIHsNCj4gPiA+PiBAQCAtMjQ3Myw3ICsyNDUyLDcgQEAg aWdtcF9oYW5kbGVfc3RhdGVfY2hhbmdlKHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBzdHJ1Y3QNCj4g PiA+Pg0KPiA+ID4+ICAgICAgIGlmcCA9IGlubS0+aW5tX2lmcDsNCj4gPiA+Pg0KPiA+ID4+IC0g ICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9M T0NLX0FTU0VSVCgpOw0KPiA+ID4+ICAgICAgIElHTVBfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0K PiA+ID4+ICAgICAgIEtBU1NFUlQoaWdpICYmIGlnaS0+aWdpX2lmcCA9PSBpZnAsICgiJXM6IGlu Y29uc2lzdGVudCBpZnAiLCBfX2Z1bmNfXykpOw0KPiA+ID4+IEBAIC0yNTMxLDcgKzI1MTAsNyBA QCBpZ21wX2ZpbmFsX2xlYXZlKHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBzdHJ1Y3QgaWdtcF9pZnMN Cj4gPiA+PiAgICAgICAgICAgX19mdW5jX18sIG50b2hsKGlubS0+aW5tX2FkZHIuc19hZGRyKSwg aW5tLT5pbm1faWZwLA0KPiA+ID4+ICAgICAgICAgICBpbm0tPmlubV9pZnAtPmlmX3huYW1lKTsN Cj4gPiA+Pg0KPiA+ID4+IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gKyAg ICAgSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ICAgICAgIElHTVBfTE9DS19B U1NFUlQoKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIHN3aXRjaCAoaW5tLT5pbm1fc3RhdGUpIHsN Cj4gPiA+PiBAQCAtMjY1OCw3ICsyNjM3LDcgQEAgaWdtcF92M19lbnF1ZXVlX2dyb3VwX3JlY29y ZChzdHJ1Y3QgbWJ1ZnEgKm1xLCBzdHJ1Y3QNCj4gPiA+PiAgICAgICBpbl9hZGRyX3QgICAgICAg ICAgICAgICAgbmFkZHI7DQo+ID4gPj4gICAgICAgdWludDhfdCAgICAgICAgICAgICAgICAgIG1v ZGU7DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAg IGVycm9yID0gMDsNCj4gPiA+PiAgICAgICBpZnAgPSBpbm0tPmlubV9pZnA7DQo+ID4gPj4gQEAg LTMwMTgsNyArMjk5Nyw3IEBAIGlnbXBfdjNfZW5xdWV1ZV9maWx0ZXJfY2hhbmdlKHN0cnVjdCBt YnVmcSAqbXEsIHN0cnVjdA0KPiA+ID4+ICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgICBt b2RlLCBub3csIHRoZW47DQo+ID4gPj4gICAgICAgcmVjdHlwZV90ICAgICAgICAgICAgICAgIGNy dCwgZHJ0LCBucnQ7DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgp Ow0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ ID4+ICAgICAgIGlmIChpbm0tPmlubV9uc3JjID09IDAgfHwNCj4gPiA+PiAgICAgICAgICAgKGlu bS0+aW5tX3N0WzBdLmlzc19hc20gPiAwICYmIGlubS0+aW5tX3N0WzFdLmlzc19hc20gPiAwKSkN Cj4gPiA+PiBAQCAtMzIyMSw3ICszMjAwLDcgQEAgaWdtcF92M19tZXJnZV9zdGF0ZV9jaGFuZ2Vz KHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBzdHJ1DQo+ID4gPj4gICAgICAgZG9tZXJnZSA9IDA7DQo+ ID4gPj4gICAgICAgcmVjc2xlbiA9IDA7DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9M T0NLX0FTU0VSVCgpOw0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsN Cj4gPiA+PiAgICAgICBJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4NCj4gPiA+PiAgICAgICAv Kg0KPiA+ID4+IEBAIC0zMzIwLDcgKzMyOTksNyBAQCBpZ21wX3YzX2Rpc3BhdGNoX2dlbmVyYWxf cXVlcnkoc3RydWN0IGlnbXBfaWZzb2Z0YyAqaWcNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaW5fbXVs dGkgICAgICAgICAqaW5tOw0KPiA+ID4+ICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICBy ZXR2YWwsIGxvb3A7DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgp Ow0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+PiAgICAg ICBJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4NCj4gPiA+PiAgICAgICBLQVNTRVJUKGlnaS0+ aWdpX3ZlcnNpb24gPT0gSUdNUF9WRVJTSU9OXzMsDQo+ID4gPj4gQEAgLTM2MzIsNyArMzYxMSw2 IEBAIERCX1NIT1dfQ09NTUFORChpZ2lfbGlzdCwgZGJfc2hvd19pZ2lfbGlzdCkNCj4gPiA+PiAg ICAgICAgICAgICAgIGRiX3ByaW50ZigiICAgIHFpICV1XG4iLCBpZ2ktPmlnaV9xaSk7DQo+ID4g Pj4gICAgICAgICAgICAgICBkYl9wcmludGYoIiAgICBxcmkgJXVcbiIsIGlnaS0+aWdpX3FyaSk7 DQo+ID4gPj4gICAgICAgICAgICAgICBkYl9wcmludGYoIiAgICB1cmkgJXVcbiIsIGlnaS0+aWdp X3VyaSk7DQo+ID4gPj4gLSAgICAgICAgICAgICAvKiBTTElTVF9IRUFEKCxpbl9tdWx0aSkgICBp Z2lfcmVsaW5taGVhZCAqLw0KPiA+ID4+ICAgICAgICAgICAgICAgLyogc3RydWN0IG1idWZxICAg IGlnaV9ncTsgKi8NCj4gPiA+PiAgICAgICAgICAgICAgIGRiX3ByaW50ZigiXG4iKTsNCj4gPiA+ PiAgICAgICB9DQo+ID4gPj4NCj4gPiA+PiBNb2RpZmllZDogaGVhZC9zeXMvbmV0aW5ldC9pZ21w X3Zhci5oDQo+ID4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPj4gLS0tIGhlYWQvc3lz L25ldGluZXQvaWdtcF92YXIuaCAgICAgICBXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTggICAgICAg IChyMzMzMTc0KQ0KPiA+ID4+ICsrKyBoZWFkL3N5cy9uZXRpbmV0L2lnbXBfdmFyLmggICAgICAg V2VkIE1heSAgMiAxOTozNjoyOSAyMDE4ICAgICAgICAocjMzMzE3NSkNCj4gPiA+PiBAQCAtMjE0 LDcgKzIxNCw2IEBAIHN0cnVjdCBpZ21wX2lmc29mdGMgew0KPiA+ID4+ICAgICAgIHVpbnQzMl90 IGlnaV9xaTsgICAgICAgIC8qIElHTVB2MyBRdWVyeSBJbnRlcnZhbCAocykgKi8NCj4gPiA+PiAg ICAgICB1aW50MzJfdCBpZ2lfcXJpOyAgICAgICAvKiBJR01QdjMgUXVlcnkgUmVzcG9uc2UgSW50 ZXJ2YWwgKHMpICovDQo+ID4gPj4gICAgICAgdWludDMyX3QgaWdpX3VyaTsgICAgICAgLyogSUdN UHYzIFVuc29saWNpdGVkIFJlcG9ydCBJbnRlcnZhbCAocykgKi8NCj4gPiA+PiAtICAgICBTTElT VF9IRUFEKCxpbl9tdWx0aSkgICBpZ2lfcmVsaW5taGVhZDsgLyogcmVsZWFzZWQgZ3JvdXBzICov DQo+ID4gPj4gICAgICAgc3RydWN0IG1idWZxICAgIGlnaV9ncTsgICAgICAgICAvKiBnZW5lcmFs IHF1ZXJ5IHJlc3BvbnNlcyBxdWV1ZSAqLw0KPiA+ID4+ICB9Ow0KPiA+ID4+DQo+ID4gPj4NCj4g PiA+PiBNb2RpZmllZDogaGVhZC9zeXMvbmV0aW5ldC9pbi5jDQo+ID4gPj4gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID4gPj4gLS0tIGhlYWQvc3lzL25ldGluZXQvaW4uYyAgICAgV2VkIE1heSAg MiAxNzo0MTowMCAyMDE4ICAgICAgICAocjMzMzE3NCkNCj4gPiA+PiArKysgaGVhZC9zeXMvbmV0 aW5ldC9pbi5jICAgICBXZWQgTWF5ICAyIDE5OjM2OjI5IDIwMTggICAgICAgIChyMzMzMTc1KQ0K PiA+ID4+IEBAIC02MzIsMTIgKzYzMiwxMCBAQCBpbl9kaWZhZGRyX2lvY3RsKHVfbG9uZyBjbWQs IGNhZGRyX3QgZGF0YSwgc3RydWN0IGlmbmUNCj4gPiA+PiAgICAgICAgICAgICAgIHN0cnVjdCBp bl9pZmluZm8gKmlpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgICAgICAgICBpaSA9ICgoc3RydWN0 IGluX2lmaW5mbyAqKWlmcC0+aWZfYWZkYXRhW0FGX0lORVRdKTsNCj4gPiA+PiAtICAgICAgICAg ICAgIElOX01VTFRJX0xPQ0soKTsNCj4gPiA+PiAgICAgICAgICAgICAgIGlmIChpaS0+aWlfYWxs aG9zdHMpIHsNCj4gPiA+PiAtICAgICAgICAgICAgICAgICAgICAgKHZvaWQpaW5fbGVhdmVncm91 cF9sb2NrZWQoaWktPmlpX2FsbGhvc3RzLCBOVUxMKTsNCj4gPiA+PiArICAgICAgICAgICAgICAg ICAgICAgKHZvaWQpaW5fbGVhdmVncm91cChpaS0+aWlfYWxsaG9zdHMsIE5VTEwpOw0KPiA+ID4+ ICAgICAgICAgICAgICAgICAgICAgICBpaS0+aWlfYWxsaG9zdHMgPSBOVUxMOw0KPiA+ID4+ICAg ICAgICAgICAgICAgfQ0KPiA+ID4+IC0gICAgICAgICAgICAgSU5fTVVMVElfVU5MT0NLKCk7DQo+ ID4gPj4gICAgICAgfQ0KPiA+ID4+DQo+ID4gPj4gICAgICAgSUZfQUREUl9XTE9DSyhpZnApOw0K PiA+ID4+IEBAIC05OTQsMTEgKzk5MiwxMiBAQCBpbl9icm9hZGNhc3Qoc3RydWN0IGluX2FkZHIg aW4sIHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiA+ID4+ICB2b2lkDQo+ID4gPj4gIGluX2lmZGV0YWNo KHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiA+ID4+ICB7DQo+ID4gPj4gLQ0KPiA+ID4+ICsgICAgIElO X01VTFRJX0xPQ0soKTsNCj4gPiA+PiAgICAgICBpbl9wY2JwdXJnZWlmMCgmVl9yaXBjYmluZm8s IGlmcCk7DQo+ID4gPj4gICAgICAgaW5fcGNicHVyZ2VpZjAoJlZfdWRiaW5mbywgaWZwKTsNCj4g PiA+PiAgICAgICBpbl9wY2JwdXJnZWlmMCgmVl91bGl0ZWNiaW5mbywgaWZwKTsNCj4gPiA+PiAg ICAgICBpbl9wdXJnZW1hZGRycyhpZnApOw0KPiA+ID4+ICsgICAgIElOX01VTFRJX1VOTE9DSygp Ow0KPiA+ID4+ICB9DQo+ID4gPj4NCj4gPiA+PiAgLyoNCj4gPiA+PiBAQCAtMTAxMSwxMiArMTAx MCwxMiBAQCBpbl9pZmRldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gPiA+PiAgc3RhdGljIHZv aWQNCj4gPiA+PiAgaW5fcHVyZ2VtYWRkcnMoc3RydWN0IGlmbmV0ICppZnApDQo+ID4gPj4gIHsN Cj4gPiA+PiAtICAgICBMSVNUX0hFQUQoLGluX211bHRpKSBwdXJnZWlubXM7DQo+ID4gPj4gLSAg ICAgc3RydWN0IGluX211bHRpICAgICAgICAgKmlubSwgKnRpbm07DQo+ID4gPj4gKyAgICAgc3Ry dWN0IGluX211bHRpX2hlYWQgcHVyZ2Vpbm1zOw0KPiA+ID4+ICsgICAgIHN0cnVjdCBpbl9tdWx0 aSAgICAgICAgICppbm07DQo+ID4gPj4gICAgICAgc3RydWN0IGlmbXVsdGlhZGRyICAgICAgKmlm bWE7DQo+ID4gPj4NCj4gPiA+PiAtICAgICBMSVNUX0lOSVQoJnB1cmdlaW5tcyk7DQo+ID4gPj4g LSAgICAgSU5fTVVMVElfTE9DSygpOw0KPiA+ID4+ICsgICAgIFNMSVNUX0lOSVQoJnB1cmdlaW5t cyk7DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4gPj4NCj4gPiA+PiAg ICAgICAvKg0KPiA+ID4+ICAgICAgICAqIEV4dHJhY3QgbGlzdCBvZiBpbl9tdWx0aSBhc3NvY2lh dGVkIHdpdGggdGhlIGRldGFjaGluZyBpZnANCj4gPiA+PiBAQCAtMTAzNCwxNyArMTAzMywxMyBA QCBpbl9wdXJnZW1hZGRycyhzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gPiA+PiAgICAgICAgICAgICAg ICAgICAoIiVzOiBpZm1hX3Byb3Rvc3BlYyBpcyBOVUxMIiwgX19mdW5jX18pKTsNCj4gPiA+PiAg I2VuZGlmDQo+ID4gPj4gICAgICAgICAgICAgICBpbm0gPSAoc3RydWN0IGluX211bHRpICopaWZt YS0+aWZtYV9wcm90b3NwZWM7DQo+ID4gPj4gLSAgICAgICAgICAgICBMSVNUX0lOU0VSVF9IRUFE KCZwdXJnZWlubXMsIGlubSwgaW5tX2xpbmspOw0KPiA+ID4+ICsgICAgICAgICAgICAgaW5tX3Jl bGVfbG9ja2VkKCZwdXJnZWlubXMsIGlubSk7DQo+ID4gPj4gICAgICAgfQ0KPiA+ID4+ICAgICAg IElGX0FERFJfUlVOTE9DSyhpZnApOw0KPiA+ID4+DQo+ID4gPj4gLSAgICAgTElTVF9GT1JFQUNI X1NBRkUoaW5tLCAmcHVyZ2Vpbm1zLCBpbm1fbGluaywgdGlubSkgew0KPiA+ID4+IC0gICAgICAg ICAgICAgTElTVF9SRU1PVkUoaW5tLCBpbm1fbGluayk7DQo+ID4gPj4gLSAgICAgICAgICAgICBp bm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPiA+PiAtICAgICB9DQo+ID4gPj4gKyAgICAgaW5t X3JlbGVhc2VfbGlzdF9kZWZlcnJlZCgmcHVyZ2Vpbm1zKTsNCj4gPiA+PiAgICAgICBpZ21wX2lm ZGV0YWNoKGlmcCk7DQo+ID4gPj4gLQ0KPiA+ID4+IC0gICAgIElOX01VTFRJX1VOTE9DSygpOw0K PiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4gPj4gIH0NCj4gPiA+Pg0K PiA+ID4+ICBzdHJ1Y3QgaW5fbGxlbnRyeSB7DQo+ID4gPj4NCj4gPiA+PiBNb2RpZmllZDogaGVh ZC9zeXMvbmV0aW5ldC9pbl9tY2FzdC5jDQo+ID4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID4gPj4gLS0tIGhlYWQvc3lzL25ldGluZXQvaW5fbWNhc3QuYyAgICAgICBXZWQgTWF5ICAyIDE3 OjQxOjAwIDIwMTggICAgICAgIChyMzMzMTc0KQ0KPiA+ID4+ICsrKyBoZWFkL3N5cy9uZXRpbmV0 L2luX21jYXN0LmMgICAgICAgV2VkIE1heSAgMiAxOTozNjoyOSAyMDE4ICAgICAgICAocjMzMzE3 NSkNCj4gPiA+PiBAQCAtNTEsNiArNTEsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQo+ID4g Pj4gICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+DQo+ID4gPj4gICNpbmNsdWRlIDxzeXMva3RyLmg+ DQo+ID4gPj4gICNpbmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxz eXMvZ3Rhc2txdWV1ZS5oPg0KPiA+ID4+ICAjaW5jbHVkZSA8c3lzL3RyZWUuaD4NCj4gPiA+Pg0K PiA+ID4+ICAjaW5jbHVkZSA8bmV0L2lmLmg+DQo+ID4gPj4gQEAgLTU5LDYgKzYwLDggQEAgX19G QlNESUQoIiRGcmVlQlNEJCIpOw0KPiA+ID4+ICAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+DQo+ID4g Pj4gICNpbmNsdWRlIDxuZXQvdm5ldC5oPg0KPiA+ID4+DQo+ID4gPj4gKyNpbmNsdWRlIDxuZXQv ZXRoZXJuZXQuaD4NCj4gPiA+PiArDQo+ID4gPj4gICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+DQo+ ID4gPj4gICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+DQo+ID4gPj4gICNpbmNsdWRlIDxu ZXRpbmV0L2luX2ZpYi5oPg0KPiA+ID4+IEBAIC05MSwxOCArOTQsMjQgQEAgc3RhdGljIE1BTExP Q19ERUZJTkUoTV9JUE1TT1VSQ0UsICJpcF9tc291cmNlIiwNCj4gPiA+Pg0KPiA+ID4+ICAvKg0K PiA+ID4+ICAgKiBMb2NraW5nOg0KPiA+ID4+IC0gKiAtIExvY2sgb3JkZXIgaXM6IEdpYW50LCBJ TlBfV0xPQ0ssIElOX01VTFRJX0xPQ0ssIElHTVBfTE9DSywgSUZfQUREUl9MT0NLLg0KPiA+ID4+ ICsgKiAtIExvY2sgb3JkZXIgaXM6IEdpYW50LCBJTlBfV0xPQ0ssIElOX01VTFRJX0xJU1RfTE9D SywgSUdNUF9MT0NLLCBJRl9BRERSX0xPQ0suDQo+ID4gPj4gICAqIC0gVGhlIElGX0FERFJfTE9D SyBpcyBpbXBsaWNpdGx5IHRha2VuIGJ5IGlubV9sb29rdXAoKSBlYXJsaWVyLCBob3dldmVyDQo+ ID4gPj4gICAqICAgaXQgY2FuIGJlIHRha2VuIGJ5IGNvZGUgaW4gbmV0L2lmLmMgYWxzby4NCj4g PiA+PiAgICogLSBpcF9tb3B0aW9ucyBhbmQgaW5fbWZpbHRlciBhcmUgY292ZXJlZCBieSB0aGUg SU5QX1dMT0NLLg0KPiA+ID4+ICAgKg0KPiA+ID4+IC0gKiBzdHJ1Y3QgaW5fbXVsdGkgaXMgY292 ZXJlZCBieSBJTl9NVUxUSV9MT0NLLiBUaGVyZSBpc24ndCBzdHJpY3RseQ0KPiA+ID4+ICsgKiBz dHJ1Y3QgaW5fbXVsdGkgaXMgY292ZXJlZCBieSBJTl9NVUxUSV9MSVNUX0xPQ0suIFRoZXJlIGlz bid0IHN0cmljdGx5DQo+ID4gPj4gICAqIGFueSBuZWVkIGZvciBpbl9tdWx0aSBpdHNlbGYgdG8g YmUgdmlydHVhbGl6ZWQgLS0gaXQgaXMgYm91bmQgdG8gYW4gaWZwDQo+ID4gPj4gICAqIGFueXdh eSBubyBtYXR0ZXIgd2hhdCBoYXBwZW5zLg0KPiA+ID4+ICAgKi8NCj4gPiA+PiAtc3RydWN0IG10 eCBpbl9tdWx0aV9tdHg7DQo+ID4gPj4gLU1UWF9TWVNJTklUKGluX211bHRpX210eCwgJmluX211 bHRpX210eCwgImluX211bHRpX210eCIsIE1UWF9ERUYpOw0KPiA+ID4+ICtzdHJ1Y3QgbXR4IGlu X211bHRpX2xpc3RfbXR4Ow0KPiA+ID4+ICtNVFhfU1lTSU5JVChpbl9tdWx0aV9tdHgsICZpbl9t dWx0aV9saXN0X210eCwgImluX211bHRpX2xpc3RfbXR4IiwgTVRYX0RFRik7DQo+ID4gPj4NCj4g PiA+PiArc3RydWN0IG10eCBpbl9tdWx0aV9mcmVlX210eDsNCj4gPiA+PiArTVRYX1NZU0lOSVQo aW5fbXVsdGlfZnJlZV9tdHgsICZpbl9tdWx0aV9mcmVlX210eCwgImluX211bHRpX2ZyZWVfbXR4 IiwgTVRYX0RFRik7DQo+ID4gPj4gKw0KPiA+ID4+ICtzdHJ1Y3Qgc3ggaW5fbXVsdGlfc3g7DQo+ ID4gPj4gK1NYX1NZU0lOSVQoaW5fbXVsdGlfc3gsICZpbl9tdWx0aV9zeCwgImluX211bHRpX3N4 Iik7DQo+ID4gPj4gKw0KPiA+ID4+ICAvKg0KPiA+ID4+ICAgKiBGdW5jdGlvbnMgd2l0aCBub24t c3RhdGljIGxpbmthZ2UgZGVmaW5lZCBpbiB0aGlzIGZpbGUgc2hvdWxkIGJlDQo+ID4gPj4gICAq IGRlY2xhcmVkIGluIGluX3Zhci5oOg0KPiA+ID4+IEBAIC0xNTEsNiArMTYwLDcgQEAgc3RhdGlj IGludCAgICAgICAgaW5tX2lzX2lmcF9kZXRhY2hlZChjb25zdCBzdHJ1Y3QgaW5fbXVsdGkgKg0K PiA+ID4+ICBzdGF0aWMgaW50ICAgaW5tX21lcmdlKHN0cnVjdCBpbl9tdWx0aSAqLCAvKmNvbnN0 Ki8gc3RydWN0IGluX21maWx0ZXIgKik7DQo+ID4gPj4gIHN0YXRpYyB2b2lkICBpbm1fcHVyZ2Uo c3RydWN0IGluX211bHRpICopOw0KPiA+ID4+ICBzdGF0aWMgdm9pZCAgaW5tX3JlYXAoc3RydWN0 IGluX211bHRpICopOw0KPiA+ID4+ICtzdGF0aWMgdm9pZCBpbm1fcmVsZWFzZShzdHJ1Y3QgaW5f bXVsdGkgKik7DQo+ID4gPj4gIHN0YXRpYyBzdHJ1Y3QgaXBfbW9wdGlvbnMgKg0KPiA+ID4+ICAg ICAgICAgICAgICAgaW5wX2ZpbmRtb3B0aW9ucyhzdHJ1Y3QgaW5wY2IgKik7DQo+ID4gPj4gIHN0 YXRpYyB2b2lkICBpbnBfZnJlZW1vcHRpb25zX2ludGVybmFsKHN0cnVjdCBpcF9tb3B0aW9ucyAq KTsNCj4gPiA+PiBAQCAtMjE2LDYgKzIyNiw2NSBAQCBpbm1faXNfaWZwX2RldGFjaGVkKGNvbnN0 IHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiA+ID4+ICB9DQo+ID4gPj4gICNlbmRpZg0KPiA+ID4+ DQo+ID4gPj4gK3N0YXRpYyBzdHJ1Y3QgZ3JvdXB0YXNrIGZyZWVfZ3Rhc2s7DQo+ID4gPj4gK3N0 YXRpYyBzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBpbm1fZnJlZV9saXN0Ow0KPiA+ID4+ICtzdGF0aWMg dm9pZCBpbm1fcmVsZWFzZV90YXNrKHZvaWQgKmFyZyBfX3VudXNlZCk7DQo+ID4gPj4gK3N0YXRp YyB2b2lkIGlubV9pbml0KHZvaWQpDQo+ID4gPj4gK3sNCj4gPiA+PiArICAgICBTTElTVF9JTklU KCZpbm1fZnJlZV9saXN0KTsNCj4gPiA+PiArICAgICB0YXNrcWdyb3VwX2NvbmZpZ19ndGFza19p bml0KE5VTEwsICZmcmVlX2d0YXNrLCBpbm1fcmVsZWFzZV90YXNrLCAiaW5tDQo+ID4gPj4gcmVs ZWFzZSB0YXNrIik7ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICtTWVNJTklUKGlubV9pbml0LCBTSV9T VUJfU01QICsgMSwgU0lfT1JERVJfRklSU1QsDQo+ID4gPj4gKyAgICAgaW5tX2luaXQsIE5VTEwp Ow0KPiA+ID4+ICsNCj4gPiA+PiArDQo+ID4gPj4gK3ZvaWQNCj4gPiA+PiAraW5tX3JlbGVhc2Vf bGlzdF9kZWZlcnJlZChzdHJ1Y3QgaW5fbXVsdGlfaGVhZCAqaW5taCkNCj4gPiA+PiArew0KPiA+ ID4+ICsNCj4gPiA+PiArICAgICBpZiAoU0xJU1RfRU1QVFkoaW5taCkpDQo+ID4gPj4gKyAgICAg ICAgICAgICByZXR1cm47DQo+ID4gPj4gKyAgICAgbXR4X2xvY2soJmluX211bHRpX2ZyZWVfbXR4 KTsNCj4gPiA+PiArICAgICBTTElTVF9DT05DQVQoJmlubV9mcmVlX2xpc3QsIGlubWgsIGluX211 bHRpLCBpbm1fbnJlbGUpOw0KPiA+ID4+ICsgICAgIG10eF91bmxvY2soJmluX211bHRpX2ZyZWVf bXR4KTsNCj4gPiA+PiArICAgICBHUk9VUFRBU0tfRU5RVUVVRSgmZnJlZV9ndGFzayk7DQo+ID4g Pj4gK30NCj4gPiA+PiArDQo+ID4gPj4gK3ZvaWQNCj4gPiA+PiAraW5tX3JlbGVhc2VfZGVmZXJy ZWQoc3RydWN0IGluX211bHRpICppbm0pDQo+ID4gPj4gK3sNCj4gPiA+PiArICAgICBzdHJ1Y3Qg aW5fbXVsdGlfaGVhZCB0bXA7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1Rf TE9DS19BU1NFUlQoKTsNCj4gPiA+PiArICAgICBNUEFTUyhpbm0tPmlubV9yZWZjb3VudCA+IDAp Ow0KPiA+ID4+ICsgICAgIGlmICgtLWlubS0+aW5tX3JlZmNvdW50ID09IDApIHsNCj4gPiA+PiAr ICAgICAgICAgICAgIFNMSVNUX0lOSVQoJnRtcCk7DQo+ID4gPj4gKyAgICAgICAgICAgICBpbm0t PmlubV9pZm1hLT5pZm1hX3Byb3Rvc3BlYyA9IE5VTEw7DQo+ID4gPj4gKyAgICAgICAgICAgICBT TElTVF9JTlNFUlRfSEVBRCgmdG1wLCBpbm0sIGlubV9ucmVsZSk7DQo+ID4gPj4gKyAgICAgICAg ICAgICBpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKCZ0bXApOw0KPiA+ID4+ICsgICAgIH0NCj4g PiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArc3RhdGljIHZvaWQNCj4gPiA+PiAraW5tX3JlbGVh c2VfdGFzayh2b2lkICphcmcgX191bnVzZWQpDQo+ID4gPj4gK3sNCj4gPiA+PiArICAgICBzdHJ1 Y3QgaW5fbXVsdGlfaGVhZCBpbm1fZnJlZV90bXA7DQo+ID4gPj4gKyAgICAgc3RydWN0IGluX211 bHRpICppbm0sICp0aW5tOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgICBTTElTVF9JTklUKCZpbm1f ZnJlZV90bXApOw0KPiA+ID4+ICsgICAgIG10eF9sb2NrKCZpbl9tdWx0aV9mcmVlX210eCk7DQo+ ID4gPj4gKyAgICAgU0xJU1RfQ09OQ0FUKCZpbm1fZnJlZV90bXAsICZpbm1fZnJlZV9saXN0LCBp bl9tdWx0aSwgaW5tX25yZWxlKTsNCj4gPiA+PiArICAgICBtdHhfdW5sb2NrKCZpbl9tdWx0aV9m cmVlX210eCk7DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTE9DSygpOw0KPiA+ID4+ICsgICAgIFNM SVNUX0ZPUkVBQ0hfU0FGRShpbm0sICZpbm1fZnJlZV90bXAsIGlubV9ucmVsZSwgdGlubSkgew0K PiA+ID4+ICsgICAgICAgICAgICAgU0xJU1RfUkVNT1ZFX0hFQUQoJmlubV9mcmVlX3RtcCwgaW5t X25yZWxlKTsNCj4gPiA+PiArICAgICAgICAgICAgIE1QQVNTKGlubSk7DQo+ID4gPj4gKyAgICAg ICAgICAgICBpbm1fcmVsZWFzZShpbm0pOw0KPiA+ID4+ICsgICAgIH0NCj4gPiA+PiArICAgICBJ Tl9NVUxUSV9VTkxPQ0soKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiAgLyoNCj4gPiA+ PiAgICogSW5pdGlhbGl6ZSBhbiBpbl9tZmlsdGVyIHN0cnVjdHVyZSB0byBhIGtub3duIHN0YXRl IGF0IHQwLCB0MQ0KPiA+ID4+ICAgKiB3aXRoIGFuIGVtcHR5IHNvdXJjZSBmaWx0ZXIgbGlzdC4N Cj4gPiA+PiBAQCAtMjMyLDcgKzMwMSw3IEBAIGltZl9pbml0KHN0cnVjdCBpbl9tZmlsdGVyICpp bWYsIGNvbnN0IGludCBzdDAsIGNvbnN0DQo+ID4gPj4gIC8qDQo+ID4gPj4gICAqIEZ1bmN0aW9u IGZvciBsb29raW5nIHVwIGFuIGluX211bHRpIHJlY29yZCBmb3IgYW4gSVB2NCBtdWx0aWNhc3Qg YWRkcmVzcw0KPiA+ID4+ICAgKiBvbiBhIGdpdmVuIGludGVyZmFjZS4gaWZwIG11c3QgYmUgdmFs aWQuIElmIG5vIHJlY29yZCBmb3VuZCwgcmV0dXJuIE5VTEwuDQo+ID4gPj4gLSAqIFRoZSBJTl9N VUxUSV9MT0NLIGFuZCBJRl9BRERSX0xPQ0sgb24gaWZwIG11c3QgYmUgaGVsZC4NCj4gPiA+PiAr ICogVGhlIElOX01VTFRJX0xJU1RfTE9DSyBhbmQgSUZfQUREUl9MT0NLIG9uIGlmcCBtdXN0IGJl IGhlbGQuDQo+ID4gPj4gICAqLw0KPiA+ID4+ICBzdHJ1Y3QgaW5fbXVsdGkgKg0KPiA+ID4+ICBp bm1fbG9va3VwX2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIg aW5hKQ0KPiA+ID4+IEBAIC0yNDAsNyArMzA5LDcgQEAgaW5tX2xvb2t1cF9sb2NrZWQoc3RydWN0 IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hDQo+ID4gPj4gICAgICAgc3RydWN0IGlmbXVs dGlhZGRyICppZm1hOw0KPiA+ID4+ICAgICAgIHN0cnVjdCBpbl9tdWx0aSAqaW5tOw0KPiA+ID4+ DQo+ID4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPiA+PiArICAgICBJTl9N VUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gICAgICAgSUZfQUREUl9MT0NLX0FTU0VS VChpZnApOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgaW5tID0gTlVMTDsNCj4gPiA+PiBAQCAtMjY0 LDcgKzMzMyw3IEBAIGlubV9sb29rdXAoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBp bl9hZGRyIGluYQ0KPiA+ID4+ICB7DQo+ID4gPj4gICAgICAgc3RydWN0IGluX211bHRpICppbm07 DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ICsg ICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+PiAgICAgICBJRl9BRERSX1JM T0NLKGlmcCk7DQo+ID4gPj4gICAgICAgaW5tID0gaW5tX2xvb2t1cF9sb2NrZWQoaWZwLCBpbmEp Ow0KPiA+ID4+ICAgICAgIElGX0FERFJfUlVOTE9DSyhpZnApOw0KPiA+ID4+IEBAIC00NTEsNyAr NTIwLDcgQEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9h ZGRyICpnDQo+ID4gPj4gICAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ ID4+ICAgICAgIGlpID0gKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVU XTsNCj4gPiA+PiAtDQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4gPj4g ICAgICAgaW5tID0gaW5tX2xvb2t1cChpZnAsICpncm91cCk7DQo+ID4gPj4gICAgICAgaWYgKGlu bSAhPSBOVUxMKSB7DQo+ID4gPj4gICAgICAgICAgICAgICAvKg0KPiA+ID4+IEBAIC00NjAsMTEg KzUyOSwxMyBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGlu X2FkZHIgKmcNCj4gPiA+PiAgICAgICAgICAgICAgICAqLw0KPiA+ID4+ICAgICAgICAgICAgICAg S0FTU0VSVChpbm0tPmlubV9yZWZjb3VudCA+PSAxLA0KPiA+ID4+ICAgICAgICAgICAgICAgICAg ICgiJXM6IGJhZCByZWZjb3VudCAlZCIsIF9fZnVuY19fLCBpbm0tPmlubV9yZWZjb3VudCkpOw0K PiA+ID4+IC0gICAgICAgICAgICAgKytpbm0tPmlubV9yZWZjb3VudDsNCj4gPiA+PiArICAgICAg ICAgICAgIGlubV9hY3F1aXJlX2xvY2tlZChpbm0pOw0KPiA+ID4+ICAgICAgICAgICAgICAgKnBp bm0gPSBpbm07DQo+ID4gPj4gLSAgICAgICAgICAgICByZXR1cm4gKDApOw0KPiA+ID4+ICAgICAg IH0NCj4gPiA+PiAtDQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4gPiA+ PiArICAgICBpZiAoaW5tICE9IE5VTEwpDQo+ID4gPj4gKyAgICAgICAgICAgICByZXR1cm4gKDAp Ow0KPiA+ID4+ICsNCj4gPiA+PiAgICAgICBtZW1zZXQoJmdzaW4sIDAsIHNpemVvZihnc2luKSk7 DQo+ID4gPj4gICAgICAgZ3Npbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCj4gPiA+PiAgICAgICBn c2luLnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsNCj4gPiA+PiBAQCAtNDc5 LDYgKzU1MCw3IEBAIGluX2dldG11bHRpKHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3Qg aW5fYWRkciAqZw0KPiA+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIChlcnJvcik7DQo+ID4gPj4N Cj4gPiA+PiAgICAgICAvKiBYWFggaWZtYV9wcm90b3NwZWMgbXVzdCBiZSBjb3ZlcmVkIGJ5IElG X0FERFJfTE9DSyAqLw0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+ID4+ ICAgICAgIElGX0FERFJfV0xPQ0soaWZwKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIC8qDQo+ID4g Pj4gQEAgLTUwNCwxMCArNTc2LDkgQEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNv bnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ID4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICBf X2Z1bmNfXywgaWZtYSwgaW5tLCBpbmV0X250b2FfcigqZ3JvdXAsIGFkZHJidWYpKTsNCj4gPiA+ PiAgICAgICAgICAgICAgIH0NCj4gPiA+PiAgI2VuZGlmDQo+ID4gPj4gLSAgICAgICAgICAgICAr K2lubS0+aW5tX3JlZmNvdW50Ow0KPiA+ID4+ICsgICAgICAgICAgICAgaW5tX2FjcXVpcmVfbG9j a2VkKGlubSk7DQo+ID4gPj4gICAgICAgICAgICAgICAqcGlubSA9IGlubTsNCj4gPiA+PiAtICAg ICAgICAgICAgIElGX0FERFJfV1VOTE9DSyhpZnApOw0KPiA+ID4+IC0gICAgICAgICAgICAgcmV0 dXJuICgwKTsNCj4gPiA+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2xvY2tlZDsNCj4gPiA+PiAg ICAgICB9DQo+ID4gPj4NCj4gPiA+PiAgICAgICBJRl9BRERSX1dMT0NLX0FTU0VSVChpZnApOw0K PiA+ID4+IEBAIC01MjIsNiArNTkzLDcgQEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAs IGNvbnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ID4gPj4gICAgICAgaW5tID0gbWFsbG9jKHNpemVv ZigqaW5tKSwgTV9JUE1BRERSLCBNX05PV0FJVCB8IE1fWkVSTyk7DQo+ID4gPj4gICAgICAgaWYg KGlubSA9PSBOVUxMKSB7DQo+ID4gPj4gICAgICAgICAgICAgICBJRl9BRERSX1dVTkxPQ0soaWZw KTsNCj4gPiA+PiArICAgICAgICAgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4gPj4g ICAgICAgICAgICAgICBpZl9kZWxtdWx0aV9pZm1hKGlmbWEpOw0KPiA+ID4+ICAgICAgICAgICAg ICAgcmV0dXJuIChFTk9NRU0pOw0KPiA+ID4+ICAgICAgIH0NCj4gPiA+PiBAQCAtNTM5LDggKzYx MSw5IEBAIGluX2dldG11bHRpKHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRk ciAqZw0KPiA+ID4+ICAgICAgIGlmbWEtPmlmbWFfcHJvdG9zcGVjID0gaW5tOw0KPiA+ID4+DQo+ ID4gPj4gICAgICAgKnBpbm0gPSBpbm07DQo+ID4gPj4gLQ0KPiA+ID4+ICsgb3V0X2xvY2tlZDoN Cj4gPiA+PiAgICAgICBJRl9BRERSX1dVTkxPQ0soaWZwKTsNCj4gPiA+PiArICAgICBJTl9NVUxU SV9MSVNUX1VOTE9DSygpOw0KPiA+ID4+ICAgICAgIHJldHVybiAoMCk7DQo+ID4gPj4gIH0NCj4g PiA+Pg0KPiA+ID4+IEBAIC01NTAsMzYgKzYyMywyOSBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZu ZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gPiA+PiAgICogSWYgdGhlIHJlZmNv dW50IGRyb3BzIHRvIDAsIGZyZWUgdGhlIGluX211bHRpIHJlY29yZCBhbmQNCj4gPiA+PiAgICog ZGVsZXRlIHRoZSB1bmRlcmx5aW5nIGxpbmstbGF5ZXIgbWVtYmVyc2hpcC4NCj4gPiA+PiAgICov DQo+ID4gPj4gLXZvaWQNCj4gPiA+PiAtaW5tX3JlbGVhc2VfbG9ja2VkKHN0cnVjdCBpbl9tdWx0 aSAqaW5tKQ0KPiA+ID4+ICtzdGF0aWMgdm9pZA0KPiA+ID4+ICtpbm1fcmVsZWFzZShzdHJ1Y3Qg aW5fbXVsdGkgKmlubSkNCj4gPiA+PiAgew0KPiA+ID4+ICAgICAgIHN0cnVjdCBpZm11bHRpYWRk ciAqaWZtYTsNCj4gPiA+PiArICAgICBzdHJ1Y3QgaWZuZXQgKmlmcDsNCj4gPiA+Pg0KPiA+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4gLQ0KPiA+ID4+ICAgICAgIENU UjIoS1RSX0lHTVBWMywgIiVzOiByZWZjb3VudCBpcyAlZCIsIF9fZnVuY19fLCBpbm0tPmlubV9y ZWZjb3VudCk7DQo+ID4gPj4gLQ0KPiA+ID4+IC0gICAgIGlmICgtLWlubS0+aW5tX3JlZmNvdW50 ID4gMCkgew0KPiA+ID4+IC0gICAgICAgICAgICAgQ1RSMihLVFJfSUdNUFYzLCAiJXM6IHJlZmNv dW50IGlzIG5vdyAlZCIsIF9fZnVuY19fLA0KPiA+ID4+IC0gICAgICAgICAgICAgICAgIGlubS0+ aW5tX3JlZmNvdW50KTsNCj4gPiA+PiAtICAgICAgICAgICAgIHJldHVybjsNCj4gPiA+PiAtICAg ICB9DQo+ID4gPj4gLQ0KPiA+ID4+ICsgICAgIE1QQVNTKGlubS0+aW5tX3JlZmNvdW50ID09IDAp Ow0KPiA+ID4+ICAgICAgIENUUjIoS1RSX0lHTVBWMywgIiVzOiBmcmVlaW5nIGlubSAlcCIsIF9f ZnVuY19fLCBpbm0pOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgaWZtYSA9IGlubS0+aW5tX2lmbWE7 DQo+ID4gPj4gKyAgICAgaWZwID0gaW5tLT5pbm1faWZwOw0KPiA+ID4+DQo+ID4gPj4gICAgICAg LyogWFhYIHRoaXMgYWNjZXNzIGlzIG5vdCBjb3ZlcmVkIGJ5IElGX0FERFJfTE9DSyAqLw0KPiA+ ID4+ICAgICAgIENUUjIoS1RSX0lHTVBWMywgIiVzOiBwdXJnaW5nIGlmbWEgJXAiLCBfX2Z1bmNf XywgaWZtYSk7DQo+ID4gPj4gLSAgICAgS0FTU0VSVChpZm1hLT5pZm1hX3Byb3Rvc3BlYyA9PSBp bm0sDQo+ID4gPj4gLSAgICAgICAgICgiJXM6IGlmbWFfcHJvdG9zcGVjICE9IGlubSIsIF9fZnVu Y19fKSk7DQo+ID4gPj4gLSAgICAgaWZtYS0+aWZtYV9wcm90b3NwZWMgPSBOVUxMOw0KPiA+ID4+ IC0NCj4gPiA+PiArICAgICBpZiAoaWZwKQ0KPiA+ID4+ICsgICAgICAgICAgICAgQ1VSVk5FVF9T RVQoaWZwLT5pZl92bmV0KTsNCj4gPiA+PiAgICAgICBpbm1fcHVyZ2UoaW5tKTsNCj4gPiA+PiAt DQo+ID4gPj4gICAgICAgZnJlZShpbm0sIE1fSVBNQUREUik7DQo+ID4gPj4NCj4gPiA+PiAgICAg ICBpZl9kZWxtdWx0aV9pZm1hKGlmbWEpOw0KPiA+ID4+ICsgICAgIGlmIChpZnApDQo+ID4gPj4g KyAgICAgICAgICAgICBDVVJWTkVUX1JFU1RPUkUoKTsNCj4gPiA+PiAgfQ0KPiA+ID4+DQo+ID4g Pj4gIC8qDQo+ID4gPj4gQEAgLTU5Miw3ICs2NTgsNyBAQCBpbm1fY2xlYXJfcmVjb3JkZWQoc3Ry dWN0IGluX211bHRpICppbm0pDQo+ID4gPj4gIHsNCj4gPiA+PiAgICAgICBzdHJ1Y3QgaXBfbXNv dXJjZSAgICAgICAqaW1zOw0KPiA+ID4+DQo+ID4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NF UlQoKTsNCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4gPj4N Cj4gPiA+PiAgICAgICBSQl9GT1JFQUNIKGltcywgaXBfbXNvdXJjZV90cmVlLCAmaW5tLT5pbm1f c3Jjcykgew0KPiA+ID4+ICAgICAgICAgICAgICAgaWYgKGltcy0+aW1zX3N0cCkgew0KPiA+ID4+ IEBAIC02MzIsNyArNjk4LDcgQEAgaW5tX3JlY29yZF9zb3VyY2Uoc3RydWN0IGluX211bHRpICpp bm0sIGNvbnN0IGluX2FkZHJfDQo+ID4gPj4gICAgICAgc3RydWN0IGlwX21zb3VyY2UgICAgICAg IGZpbmQ7DQo+ID4gPj4gICAgICAgc3RydWN0IGlwX21zb3VyY2UgICAgICAgKmltcywgKm5pbXM7 DQo+ID4gPj4NCj4gPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+ICsg ICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIGZp bmQuaW1zX2hhZGRyID0gbnRvaGwobmFkZHIpOw0KPiA+ID4+ICAgICAgIGltcyA9IFJCX0ZJTkQo aXBfbXNvdXJjZV90cmVlLCAmaW5tLT5pbm1fc3JjcywgJmZpbmQpOw0KPiA+ID4+IEBAIC05NTks NiArMTAyNSw3IEBAIGlubV9tZXJnZShzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgLypjb25zdCovIHN0 cnVjdCBpbl9tZg0KPiA+ID4+ICAgICAgIHNjaGFuZ2VkID0gMDsNCj4gPiA+PiAgICAgICBlcnJv ciA9IDA7DQo+ID4gPj4gICAgICAgbnNyYzEgPSBuc3JjMCA9IDA7DQo+ID4gPj4gKyAgICAgSU5f TVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgLyoNCj4gPiA+ PiAgICAgICAgKiBVcGRhdGUgdGhlIHNvdXJjZSBmaWx0ZXJzIGZpcnN0LCBhcyB0aGlzIG1heSBm YWlsLg0KPiA+ID4+IEBAIC0xMTY1LDYgKzEyMzIsNyBAQCBpbl9qb2luZ3JvdXBfbG9ja2VkKHN0 cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4gPiA+PiAgICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgZXJyb3I7DQo+ID4gPj4NCj4gPiA+PiAgICAgICBJTl9NVUxUSV9MT0NL X0FTU0VSVCgpOw0KPiA+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLX0FTU0VSVCgpOw0K PiA+ID4+DQo+ID4gPj4gICAgICAgQ1RSNChLVFJfSUdNUFYzLCAiJXM6IGpvaW4gMHglMDh4IG9u ICVwKCVzKSkiLCBfX2Z1bmNfXywNCj4gPiA+PiAgICAgICAgICAgbnRvaGwoZ2luYS0+c19hZGRy KSwgaWZwLCBpZnAtPmlmX3huYW1lKTsNCj4gPiA+PiBAQCAtMTE4Niw3ICsxMjU0LDcgQEAgaW5f am9pbmdyb3VwX2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluDQo+ID4g Pj4gICAgICAgICAgICAgICBDVFIxKEtUUl9JR01QVjMsICIlczogaW5fZ2V0bXVsdGkoKSBmYWls dXJlIiwgX19mdW5jX18pOw0KPiA+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIChlcnJvcik7DQo+ ID4gPj4gICAgICAgfQ0KPiA+ID4+IC0NCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0so KTsNCj4gPiA+PiAgICAgICBDVFIxKEtUUl9JR01QVjMsICIlczogbWVyZ2UgaW5tIHN0YXRlIiwg X19mdW5jX18pOw0KPiA+ID4+ICAgICAgIGVycm9yID0gaW5tX21lcmdlKGlubSwgaW1mKTsNCj4g PiA+PiAgICAgICBpZiAoZXJyb3IpIHsNCj4gPiA+PiBAQCAtMTIwMSwxMCArMTI2OSwxMiBAQCBp bl9qb2luZ3JvdXBfbG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4g PiA+PiAgICAgICAgICAgICAgIGdvdG8gb3V0X2lubV9yZWxlYXNlOw0KPiA+ID4+ICAgICAgIH0N Cj4gPiA+Pg0KPiA+ID4+IC1vdXRfaW5tX3JlbGVhc2U6DQo+ID4gPj4gKyBvdXRfaW5tX3JlbGVh c2U6DQo+ID4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4gPiA+PiAgICAgICBp ZiAoZXJyb3IpIHsNCj4gPiA+PiArDQo+ID4gPj4gICAgICAgICAgICAgICBDVFIyKEtUUl9JR01Q VjMsICIlczogZHJvcHBpbmcgcmVmIG9uICVwIiwgX19mdW5jX18sIGlubSk7DQo+ID4gPj4gLSAg ICAgICAgICAgICBpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPiA+PiArICAgICAgICAgICAg IGlubV9yZWxlYXNlX2RlZmVycmVkKGlubSk7DQo+ID4gPj4gICAgICAgfSBlbHNlIHsNCj4gPiA+ PiAgICAgICAgICAgICAgICpwaW5tID0gaW5tOw0KPiA+ID4+ICAgICAgIH0NCj4gPiA+PiBAQCAt MTI0OSw2ICsxMzE5LDcgQEAgaW5fbGVhdmVncm91cF9sb2NrZWQoc3RydWN0IGluX211bHRpICpp bm0sIC8qY29uc3QqLyBzDQo+ID4gPj4gICAgICAgZXJyb3IgPSAwOw0KPiA+ID4+DQo+ID4gPj4g ICAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNU X1VOTE9DS19BU1NFUlQoKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIENUUjUoS1RSX0lHTVBWMywg IiVzOiBsZWF2ZSBpbm0gJXAsIDB4JTA4eC8lcywgaW1mICVwIiwgX19mdW5jX18sDQo+ID4gPj4g ICAgICAgICAgIGlubSwgbnRvaGwoaW5tLT5pbm1fYWRkci5zX2FkZHIpLA0KPiA+ID4+IEBAIC0x MjcyLDE4ICsxMzQzLDIwIEBAIGluX2xlYXZlZ3JvdXBfbG9ja2VkKHN0cnVjdCBpbl9tdWx0aSAq aW5tLCAvKmNvbnN0Ki8gcw0KPiA+ID4+ICAgICAgICAqIHRoZSB0cmFuc2FjdGlvbiwgaXQgTVVT VCBOT1QgZmFpbC4NCj4gPiA+PiAgICAgICAgKi8NCj4gPiA+PiAgICAgICBDVFIxKEtUUl9JR01Q VjMsICIlczogbWVyZ2UgaW5tIHN0YXRlIiwgX19mdW5jX18pOw0KPiA+ID4+ICsgICAgIElOX01V TFRJX0xJU1RfTE9DSygpOw0KPiA+ID4+ICAgICAgIGVycm9yID0gaW5tX21lcmdlKGlubSwgaW1m KTsNCj4gPiA+PiAgICAgICBLQVNTRVJUKGVycm9yID09IDAsICgiJXM6IGZhaWxlZCB0byBtZXJn ZSBpbm0gc3RhdGUiLCBfX2Z1bmNfXykpOw0KPiA+ID4+DQo+ID4gPj4gICAgICAgQ1RSMShLVFJf SUdNUFYzLCAiJXM6IGRvaW5nIGlnbXAgZG93bmNhbGwiLCBfX2Z1bmNfXyk7DQo+ID4gPj4gICAg ICAgQ1VSVk5FVF9TRVQoaW5tLT5pbm1faWZwLT5pZl92bmV0KTsNCj4gPiA+PiAgICAgICBlcnJv ciA9IGlnbXBfY2hhbmdlX3N0YXRlKGlubSk7DQo+ID4gPj4gKyAgICAgaW5tX3JlbGVhc2VfZGVm ZXJyZWQoaW5tKTsNCj4gPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DSygpOw0KPiA+ID4+ ICAgICAgIENVUlZORVRfUkVTVE9SRSgpOw0KPiA+ID4+ICAgICAgIGlmIChlcnJvcikNCj4gPiA+ PiAgICAgICAgICAgICAgIENUUjEoS1RSX0lHTVBWMywgIiVzOiBmYWlsZWQgaWdtcCBkb3duY2Fs bCIsIF9fZnVuY19fKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIENUUjIoS1RSX0lHTVBWMywgIiVz OiBkcm9wcGluZyByZWYgb24gJXAiLCBfX2Z1bmNfXywgaW5tKTsNCj4gPiA+PiAtICAgICBpbm1f cmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPiA+Pg0KPiA+ID4+ICAgICAgIHJldHVybiAoZXJyb3Ip Ow0KPiA+ID4+ICB9DQo+ID4gPj4gQEAgLTEzMTUsMTggKzEzODgsNiBAQCBpbl9hZGRtdWx0aShz dHJ1Y3QgaW5fYWRkciAqYXAsIHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiA+ID4+ICB9DQo+ID4gPj4N Cj4gPiA+PiAgLyoNCj4gPiA+PiAtICogTGVhdmUgYW4gSVB2NCBtdWx0aWNhc3QgZ3JvdXAsIGFz c3VtZWQgdG8gYmUgaW4gZXhjbHVzaXZlICgqLEcpIG1vZGUuDQo+ID4gPj4gLSAqIFRoaXMgS1BJ IGlzIGZvciBsZWdhY3kga2VybmVsIGNvbnN1bWVycyBvbmx5Lg0KPiA+ID4+IC0gKi8NCj4gPiA+ Pg0KPiA+ID4+ICoqKiBESUZGIE9VVFBVVCBUUlVOQ0FURUQgQVQgMTAwMCBMSU5FUyAqKioNCj4g PiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ ID4+IHN2bi1zcmMtaGVhZEBmcmVlYnNkLm9yZyBtYWlsaW5nIGxpc3QNCj4gPiA+PiBodHRwczov L2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8vc3ZuLXNyYy1oZWFkDQo+ID4gPj4g VG8gdW5zdWJzY3JpYmUsIHNlbmQgYW55IG1haWwgdG8gInN2bi1zcmMtaGVhZC11bnN1YnNjcmli ZUBmcmVlYnNkLm9yZyIgICAgDQo+ID4gPg0KPiA+ID4NCj4gPiA+IEFmdGVyIChhcm91bmQhKSB0 aGlzIHVwZGF0ZSwgc29tZSBib3hlcyB3aXRoIGkzNTAgZHVhbCBwb3J0IE5JQ3MgaW1tZWRpYXRl bHkgY3Jhc2gNCj4gPiA+IHdpdGggRmF0YWwgdHJhcCAxMjogcGFnZSBmYXVsdCBhbmQgc29tZXRo aW5nIHdpdGgNCj4gPiA+DQo+ID4gPiBjdXJyZW50IHByb2Nlc3M6IChpc2Mtd29ya2VyMDAwNikN Cj4gPiA+DQo+ID4gPiAuLi4uDQo+ID4gPg0KPiA+ID4gVGhvc2UgYm94ZXMgZG8gbm90IGhhdmUg ZGVidWdnaW5nIGtlcm5lbC4gVGhlIHN5bXB0b21icyBhcmUgdGhlIHNhbWUuIFNpbmdsZSB1c2Vy DQo+ID4gPiBrZXJuZWwgd29ya3MsIGJ1dCB0aGUgbW9tZW50IEkgcGVyZm9ybSAvZXRjL25ldHN0 YXJ0IGFuZCBhbnkga2luZCBvZiBuZXQgdHJhZmZpYw0KPiA+ID4gZXN0YWJsaXNoZXMsIHRoaXMg Y3JhcCBiYWlscyBvdXQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+IC0gLS0NCj4gPiA+IE8uIEhhcnRt YW5uDQo+ID4gPg0KPiA+ID4gSWNoIHdpZGVyc3ByZWNoZSBkZXIgTnV0enVuZyBvZGVyIMOcYmVy bWl0dGx1bmcgbWVpbmVyIERhdGVuIGbDvHINCj4gPiA+IFdlcmJlendlY2tlIG9kZXIgZsO8ciBk aWUgTWFya3QtIG9kZXIgTWVpbnVuZ3Nmb3JzY2h1bmcgKMKnIDI4IEFicy4gNCBCRFNHKS4NCj4g PiA+IC0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQo+ID4gPg0KPiA+ID4gaUxVRUFSTUtB QjBXSVFRWlZaTXpBdHdDMlQvODZUclM1MjhmeUZoWWxBVUNXdXRqdGdBS0NSRFM1MjhmeUZoWQ0K PiA+ID4gbEFrekFmOVBoYUZUd05oUUQyekY3eFNISjJ3ZnZMdG9VRWpabHpHc3VzQUNwMXBhN0pB ZnowUHl2K2xtK1hOSg0KPiA+ID4gdkxFbHJJZjFDbUR6dUE4eWJsWi94L3dPVlNKa0FmOUMrNTBE VkV0R3E1SC9iSFNETnd6bXFyajhZZ0I3WHBTcw0KPiA+ID4gUE1SWGMrSXdJYTFKZ2kyeU0rNlRD U05TczFONWJFVWhVOUJpOGVYeTZZMEZTa0FaZVYrcw0KPiA+ID4gPVMwYkMNCj4gPiA+IC0tLS0t RU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18NCj4gPiA+IHN2bi1zcmMtaGVhZEBmcmVlYnNkLm9yZyBtYWls aW5nIGxpc3QNCj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFpbG1hbi9saXN0aW5m by9zdm4tc3JjLWhlYWQNCj4gPiA+IFRvIHVuc3Vic2NyaWJlLCBzZW5kIGFueSBtYWlsIHRvICJz dm4tc3JjLWhlYWQtdW5zdWJzY3JpYmVAZnJlZWJzZC5vcmciICAgIA0KPiANCj4gDQo+IA0KPiAt IC0tIA0KPiBPLiBIYXJ0bWFubg0KPiANCj4gSWNoIHdpZGVyc3ByZWNoZSBkZXIgTnV0enVuZyBv ZGVyIMOcYmVybWl0dGx1bmcgbWVpbmVyIERhdGVuIGbDvHINCj4gV2VyYmV6d2Vja2Ugb2RlciBm w7xyIGRpZSBNYXJrdC0gb2RlciBNZWludW5nc2ZvcnNjaHVuZyAowqcgMjggQWJzLiA0IEJEU0cp Lg0KPiAtLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiANCj4gaUxVRUFSTUtBQjBXSVFR WlZaTXpBdHdDMlQvODZUclM1MjhmeUZoWWxBVUNXdXR2OHdBS0NSRFM1MjhmeUZoWQ0KPiBsSWUx QWZ3T0NBaWdwWGF3WjdLQWpMTnBXalJUNERzcnpmcWNDNTdNb3ppVlF5SytYOXFvUUEydjBwbFZO cFAwDQo+IEZMcWg1ZGtSWGlpT0xyeXI5YXVJTFVLeUxDTnlBZndMN2NGZTFZUlg3Vm5zSzV3Ly84 WG0yNXRKNzRDWEM4UDANCj4gZ2FvU3F2RHFDS1dUajZpTitRL1Bqb05vaFdvSUs3NnRpWkFXUGpr YUhldUZieXBQYTJHKw0KPiA9RXBKYQ0KPiAtLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gc3ZuLXNy Yy1oZWFkQGZyZWVic2Qub3JnIG1haWxpbmcgbGlzdA0KPiBodHRwczovL2xpc3RzLmZyZWVic2Qu b3JnL21haWxtYW4vbGlzdGluZm8vc3ZuLXNyYy1oZWFkDQo+IFRvIHVuc3Vic2NyaWJlLCBzZW5k IGFueSBtYWlsIHRvICJzdm4tc3JjLWhlYWQtdW5zdWJzY3JpYmVAZnJlZWJzZC5vcmciDQoNCg0K DQotIC0tIA0KTy4gSGFydG1hbm4NCg0KSWNoIHdpZGVyc3ByZWNoZSBkZXIgTnV0enVuZyBvZGVy IMOcYmVybWl0dGx1bmcgbWVpbmVyIERhdGVuIGbDvHINCldlcmJlendlY2tlIG9kZXIgZsO8ciBk aWUgTWFya3QtIG9kZXIgTWVpbnVuZ3Nmb3JzY2h1bmcgKMKnIDI4IEFicy4gNCBCRFNHKS4NCi0t LS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQoNCmlMVUVBUk1LQUIwV0lRUVpWWk16QXR3QzJU Lzg2VHJTNTI4ZnlGaFlsQVVDV3UxeThnQUtDUkRTNTI4ZnlGaFkNCmxGRW9BZjRpVys0dFNBT2NH MEVRMS9ZMlBOcUxDWDRBbnBZVGxTbGFFQ3h0RmxEWi9YYk5PdzNUeVZCOVJiUUMNCnFHRTlVeDJ4 UUJENDhhMU5iMUlIVlZDOWppN2pBZ0NMT1h6S1VxbWNYa1BOdmpTZ1pXWitTZHlkNTVDaG9MZ1kN ClNreVk4RlNVM0dFRG0yOFdnYVhqUTRvSmgrNy9GZjY5TnN1RFpsdDdpQzI0S1pkUktIMDANCj00 YlkrDQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCg== From owner-svn-src-all@freebsd.org Sat May 5 12:00:56 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 303B0FABDBA; Sat, 5 May 2018 12:00:56 +0000 (UTC) (envelope-from danfe@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DA1AC7197E; Sat, 5 May 2018 12:00:55 +0000 (UTC) (envelope-from danfe@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1033) id C7BDFB8A3; Sat, 5 May 2018 12:00:55 +0000 (UTC) Date: Sat, 5 May 2018 12:00:55 +0000 From: Alexey Dokuchaev To: Bruce Evans Cc: Conrad Meyer , svn-src-head@freebsd.org, svn-src-all@freebsd.org, Brooks Davis , src-committers Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys Message-ID: <20180505120055.GA81833@FreeBSD.org> References: <201805040400.w4440moH025057@repo.freebsd.org> <20180504155301.GA56280@spindle.one-eyed-alien.net> <20180505090954.X1307@besplex.bde.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180505090954.X1307@besplex.bde.org> User-Agent: Mutt/1.9.2 (2017-12-15) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 12:00:56 -0000 On Sat, May 05, 2018 at 10:38:29AM +1000, Bruce Evans wrote: > ... > Summary: this change wouldn't have passed my review. I have used similar > changes for 15-20 years but never made them production quality since there > are too many variations to consider and testing showed insignificant > improvements except for micro-benchmarks. Perhaps Foundation could sponsor your work to make them production quality Bruce. :-) Seriously though, I'm a bit worried to see these commits happening at the same time correctness of the implementation is still under discussion and disputes. Shall I expect that after my next -CURRENT update things would suddenly stop working? [1] ./danfe [1] https://bugzilla.redhat.com/show_bug.cgi?id=638477 From owner-svn-src-all@freebsd.org Sat May 5 15:42:59 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3FB8DFB1309; Sat, 5 May 2018 15:42:59 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CF93580A2E; Sat, 5 May 2018 15:42:58 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C42F61FA0F; Sat, 5 May 2018 15:42:58 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w45FgwRZ009695; Sat, 5 May 2018 15:42:58 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w45Fgw5f009693; Sat, 5 May 2018 15:42:58 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201805051542.w45Fgw5f009693@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Sat, 5 May 2018 15:42:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333271 - in head/sys/powerpc: aim powerpc X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: in head/sys/powerpc: aim powerpc X-SVN-Commit-Revision: 333271 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 15:42:59 -0000 Author: jhibbits Date: Sat May 5 15:42:58 2018 New Revision: 333271 URL: https://svnweb.freebsd.org/changeset/base/333271 Log: Add POWER9 to the POWER8 bootstrap case blocks POWER8 and POWER9 have similar configuration requirements for hypervisor setup, and in the cases here they're identical. Add the POWER9 constant to the POWER8 list so it's initialized correctly. Reviewed by: nwhitehorn Modified: head/sys/powerpc/aim/mp_cpudep.c head/sys/powerpc/powerpc/cpu.c Modified: head/sys/powerpc/aim/mp_cpudep.c ============================================================================== --- head/sys/powerpc/aim/mp_cpudep.c Sat May 5 08:16:19 2018 (r333270) +++ head/sys/powerpc/aim/mp_cpudep.c Sat May 5 15:42:58 2018 (r333271) @@ -85,6 +85,7 @@ cpudep_ap_early_bootstrap(void) break; case IBMPOWER8: case IBMPOWER8E: + case IBMPOWER9: #ifdef __powerpc64__ if (mfmsr() & PSL_HV) { isync(); @@ -397,6 +398,7 @@ cpudep_ap_setup() case IBMPOWER7PLUS: case IBMPOWER8: case IBMPOWER8E: + case IBMPOWER9: #ifdef __powerpc64__ if (mfmsr() & PSL_HV) { mtspr(SPR_LPCR, mfspr(SPR_LPCR) | LPCR_LPES | Modified: head/sys/powerpc/powerpc/cpu.c ============================================================================== --- head/sys/powerpc/powerpc/cpu.c Sat May 5 08:16:19 2018 (r333270) +++ head/sys/powerpc/powerpc/cpu.c Sat May 5 15:42:58 2018 (r333271) @@ -638,6 +638,7 @@ cpu_powerx_setup(int cpuid, uint16_t vers) switch (vers) { case IBMPOWER8: case IBMPOWER8E: + case IBMPOWER9: mtspr(SPR_LPCR, mfspr(SPR_LPCR) | LPCR_PECE_WAKESET); isync(); break; From owner-svn-src-all@freebsd.org Sat May 5 15:48:40 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ABD8EFB1459; Sat, 5 May 2018 15:48:40 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 59DDF825C7; Sat, 5 May 2018 15:48:40 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 54BF01FA12; Sat, 5 May 2018 15:48:40 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w45Fme14009946; Sat, 5 May 2018 15:48:40 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w45Fmet6009943; Sat, 5 May 2018 15:48:40 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201805051548.w45Fmet6009943@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Sat, 5 May 2018 15:48:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333272 - in head/sys/powerpc: include powerpc X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: in head/sys/powerpc: include powerpc X-SVN-Commit-Revision: 333272 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 15:48:40 -0000 Author: jhibbits Date: Sat May 5 15:48:39 2018 New Revision: 333272 URL: https://svnweb.freebsd.org/changeset/base/333272 Log: Break out the cpu_features setup to its own function, to be run earlier The new POWER9 MMU configuration is slightly different from current setups. Rather than special-casing on POWER9, move the initialization of cpu_features and cpu_features2 to as early as possible, so that platform and MMU configuration can be based upon CPU features instead of specific CPUs if at all possible. Reviewed by: nwhitehorn Modified: head/sys/powerpc/include/md_var.h head/sys/powerpc/powerpc/cpu.c head/sys/powerpc/powerpc/machdep.c Modified: head/sys/powerpc/include/md_var.h ============================================================================== --- head/sys/powerpc/include/md_var.h Sat May 5 15:42:58 2018 (r333271) +++ head/sys/powerpc/include/md_var.h Sat May 5 15:48:39 2018 (r333272) @@ -63,6 +63,7 @@ void decr_init(void); void decr_ap_init(void); void decr_tc_init(void); +void cpu_feature_setup(void); void cpu_setup(u_int); struct trapframe; Modified: head/sys/powerpc/powerpc/cpu.c ============================================================================== --- head/sys/powerpc/powerpc/cpu.c Sat May 5 15:42:58 2018 (r333271) +++ head/sys/powerpc/powerpc/cpu.c Sat May 5 15:48:39 2018 (r333272) @@ -231,6 +231,8 @@ static int cpu_feature_bit(SYSCTL_HANDLER_ARGS); static char model[64]; SYSCTL_STRING(_hw, HW_MODEL, model, CTLFLAG_RD, model, 0, ""); +static const struct cputab *cput; + u_long cpu_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU; u_long cpu_features2 = 0; SYSCTL_OPAQUE(_hw, OID_AUTO, cpu_features, CTLFLAG_RD, @@ -245,14 +247,37 @@ SYSCTL_PROC(_hw, OID_AUTO, floatingpoint, CTLTYPE_INT SYSCTL_PROC(_hw, OID_AUTO, altivec, CTLTYPE_INT | CTLFLAG_RD, 0, PPC_FEATURE_HAS_ALTIVEC, cpu_feature_bit, "I", "CPU supports Altivec"); +/* + * Phase 1 (early) CPU setup. Setup the cpu_features/cpu_features2 variables, + * so they can be used during platform and MMU bringup. + */ void +cpu_feature_setup() +{ + u_int pvr; + uint16_t vers; + const struct cputab *cp; + + pvr = mfpvr(); + vers = pvr >> 16; + for (cp = models; cp->version != 0; cp++) { + if (cp->version == vers) + break; + } + + cput = cp; + cpu_features |= cp->features; + cpu_features2 |= cp->features2; +} + + +void cpu_setup(u_int cpuid) { - u_int pvr, maj, min; - uint16_t vers, rev, revfmt; uint64_t cps; - const struct cputab *cp; const char *name; + u_int maj, min, pvr; + uint16_t rev, revfmt, vers; pvr = mfpvr(); vers = pvr >> 16; @@ -274,13 +299,8 @@ cpu_setup(u_int cpuid) min = (pvr >> 0) & 0xf; } - for (cp = models; cp->version != 0; cp++) { - if (cp->version == vers) - break; - } - - revfmt = cp->revfmt; - name = cp->name; + revfmt = cput->revfmt; + name = cput->name; if (rev == MPC750 && pvr == 15) { name = "Motorola MPC755"; revfmt = REVFMT_HEX; @@ -305,8 +325,6 @@ cpu_setup(u_int cpuid) printf(", %jd.%02jd MHz", cps / 1000000, (cps / 10000) % 100); printf("\n"); - cpu_features |= cp->features; - cpu_features2 |= cp->features2; printf("cpu%d: Features %b\n", cpuid, (int)cpu_features, PPC_FEATURE_BITMASK); if (cpu_features2 != 0) @@ -316,8 +334,8 @@ cpu_setup(u_int cpuid) /* * Configure CPU */ - if (cp->cpu_setup != NULL) - cp->cpu_setup(cpuid, vers); + if (cput->cpu_setup != NULL) + cput->cpu_setup(cpuid, vers); } /* Get current clock frequency for the given cpu id. */ Modified: head/sys/powerpc/powerpc/machdep.c ============================================================================== --- head/sys/powerpc/powerpc/machdep.c Sat May 5 15:42:58 2018 (r333271) +++ head/sys/powerpc/powerpc/machdep.c Sat May 5 15:48:39 2018 (r333272) @@ -275,6 +275,8 @@ powerpc_init(vm_offset_t fdt, vm_offset_t toc, vm_offs bzero(__bss_start, _end - __bss_start); #endif + cpu_feature_setup(); + #ifdef AIM aim_early_init(fdt, toc, ofentry, mdp, mdp_cookie); #endif From owner-svn-src-all@freebsd.org Sat May 5 16:00:04 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3EBF4FB1B0D; Sat, 5 May 2018 16:00:04 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DCCD584C5D; Sat, 5 May 2018 16:00:03 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D796C1FBAC; Sat, 5 May 2018 16:00:03 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w45G03Ek014908; Sat, 5 May 2018 16:00:03 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w45G03M5014901; Sat, 5 May 2018 16:00:03 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201805051600.w45G03M5014901@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Sat, 5 May 2018 16:00:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333273 - in head/sys/powerpc: aim include pseries X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: in head/sys/powerpc: aim include pseries X-SVN-Commit-Revision: 333273 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 16:00:05 -0000 Author: jhibbits Date: Sat May 5 16:00:02 2018 New Revision: 333273 URL: https://svnweb.freebsd.org/changeset/base/333273 Log: Add support for powernv POWER9 MMU initialization The POWER9 MMU (PowerISA 3.0) is slightly different from current configurations, using a partition table even for hypervisor mode, and dropping the SDR1 register. Key off the newly early-enabled CPU features flags for the new architecture, and configure the MMU appropriately. The POWER9 MMU ignores the "PSIZ" field in the PTCR, and expects a 64kB table. As we are enabled for powernv (hypervisor mode, no VMs), only initialize partition table entry 0, and zero out the rest. The actual contents of the register are identical to SDR1 from previous architectures. Along with this, fix a bug in the page table allocation with very large memory. The table can be allocated on any 256k boundary. The bootstrap_alloc alignment argument is an int, and with large amounts of memory passing the size of the table as the alignment will overflow an integer. Hard-code the alignment at 256k as wider alignment is not necessary. Reviewed by: nwhitehorn Tested by: Breno Leitao Relnotes: Yes Modified: head/sys/powerpc/aim/mmu_oea64.c head/sys/powerpc/aim/mmu_oea64.h head/sys/powerpc/aim/moea64_native.c head/sys/powerpc/include/pte.h head/sys/powerpc/include/spr.h head/sys/powerpc/pseries/mmu_phyp.c Modified: head/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea64.c Sat May 5 15:48:39 2018 (r333272) +++ head/sys/powerpc/aim/mmu_oea64.c Sat May 5 16:00:02 2018 (r333273) @@ -159,8 +159,8 @@ struct mtx moea64_slb_mutex; /* * PTEG data. */ -u_int moea64_pteg_count; -u_int moea64_pteg_mask; +u_long moea64_pteg_count; +u_long moea64_pteg_mask; /* * PVO data. Modified: head/sys/powerpc/aim/mmu_oea64.h ============================================================================== --- head/sys/powerpc/aim/mmu_oea64.h Sat May 5 15:48:39 2018 (r333272) +++ head/sys/powerpc/aim/mmu_oea64.h Sat May 5 16:00:02 2018 (r333273) @@ -81,8 +81,8 @@ extern u_int moea64_pte_overflow; extern int moea64_large_page_shift; extern uint64_t moea64_large_page_size; -extern u_int moea64_pteg_count; -extern u_int moea64_pteg_mask; +extern u_long moea64_pteg_count; +extern u_long moea64_pteg_mask; extern int n_slbs; #endif /* _POWERPC_AIM_MMU_OEA64_H */ Modified: head/sys/powerpc/aim/moea64_native.c ============================================================================== --- head/sys/powerpc/aim/moea64_native.c Sat May 5 15:48:39 2018 (r333272) +++ head/sys/powerpc/aim/moea64_native.c Sat May 5 16:00:02 2018 (r333273) @@ -115,6 +115,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -129,6 +130,9 @@ __FBSDID("$FreeBSD$"); #define VSID_HASH_MASK 0x0000007fffffffffULL +/* POWER9 only permits a 64k partition table size. */ +#define PART_SIZE 0x10000 + static __inline void TLBIE(uint64_t vpn) { #ifndef __powerpc64__ @@ -183,6 +187,7 @@ TLBIE(uint64_t vpn) { /* * PTEG data. */ +static volatile struct pate *moea64_part_table; static volatile struct lpte *moea64_pteg_table; static struct rwlock moea64_eviction_lock; @@ -400,9 +405,15 @@ moea64_cpu_bootstrap_native(mmu_t mmup, int ap) * Install page table */ - __asm __volatile ("ptesync; mtsdr1 %0; isync" - :: "r"(((uintptr_t)moea64_pteg_table & ~DMAP_BASE_ADDRESS) - | (uintptr_t)(flsl(moea64_pteg_mask >> 11)))); + if (cpu_features2 & PPC_FEATURE2_ARCH_3_00) { + mtspr(SPR_PTCR, + ((uintptr_t)moea64_part_table & ~DMAP_BASE_ADDRESS) | + flsl((PART_SIZE >> 12) - 1)); + } else { + __asm __volatile ("ptesync; mtsdr1 %0; isync" + :: "r"(((uintptr_t)moea64_pteg_table & ~DMAP_BASE_ADDRESS) + | (uintptr_t)(flsl(moea64_pteg_mask >> 11)))); + } tlbia(); } @@ -433,11 +444,28 @@ moea64_bootstrap_native(mmu_t mmup, vm_offset_t kernel * as a measure of last resort. We do this a couple times. */ - moea64_pteg_table = (struct lpte *)moea64_bootstrap_alloc(size, size); + if (cpu_features2 & PPC_FEATURE2_ARCH_3_00) { + moea64_part_table = + (struct pate *)moea64_bootstrap_alloc(PART_SIZE, PART_SIZE); + if (hw_direct_map) + moea64_part_table = + (struct pate *)PHYS_TO_DMAP((vm_offset_t)moea64_part_table); + } + /* + * PTEG table must be aligned on a 256k boundary, but can be placed + * anywhere with that alignment. + */ + moea64_pteg_table = (struct lpte *)moea64_bootstrap_alloc(size, 256*1024); if (hw_direct_map) moea64_pteg_table = (struct lpte *)PHYS_TO_DMAP((vm_offset_t)moea64_pteg_table); DISABLE_TRANS(msr); + if (cpu_features2 & PPC_FEATURE2_ARCH_3_00) { + bzero(__DEVOLATILE(void *, moea64_part_table), PART_SIZE); + moea64_part_table[0].pagetab = + ((uintptr_t)moea64_pteg_table & ~DMAP_BASE_ADDRESS) | + (uintptr_t)(flsl((moea64_pteg_count - 1) >> 11)); + } bzero(__DEVOLATILE(void *, moea64_pteg_table), moea64_pteg_count * sizeof(struct lpteg)); ENABLE_TRANS(msr); Modified: head/sys/powerpc/include/pte.h ============================================================================== --- head/sys/powerpc/include/pte.h Sat May 5 15:48:39 2018 (r333272) +++ head/sys/powerpc/include/pte.h Sat May 5 16:00:02 2018 (r333273) @@ -64,6 +64,12 @@ struct lpteg { struct lpte pt[8]; }; +/* Partition table entry */ +struct pate { + u_int64_t pagetab; + u_int64_t proctab; +}; + #endif /* LOCORE */ /* 32-bit PTE definitions */ Modified: head/sys/powerpc/include/spr.h ============================================================================== --- head/sys/powerpc/include/spr.h Sat May 5 15:48:39 2018 (r333272) +++ head/sys/powerpc/include/spr.h Sat May 5 16:00:02 2018 (r333273) @@ -243,6 +243,7 @@ #define LPCR_LPES 0x008 /* Bit 60 */ #define SPR_LPID 0x13f /* Logical Partitioning Control */ +#define SPR_PTCR 0x1d0 /* Partition Table Control Register */ #define SPR_IBAT0U 0x210 /* .68 Instruction BAT Reg 0 Upper */ #define SPR_IBAT0U 0x210 /* .6. Instruction BAT Reg 0 Upper */ #define SPR_IBAT0L 0x211 /* .6. Instruction BAT Reg 0 Lower */ Modified: head/sys/powerpc/pseries/mmu_phyp.c ============================================================================== --- head/sys/powerpc/pseries/mmu_phyp.c Sat May 5 15:48:39 2018 (r333272) +++ head/sys/powerpc/pseries/mmu_phyp.c Sat May 5 16:00:02 2018 (r333273) @@ -403,7 +403,7 @@ mphyp_pte_insert(mmu_t mmu, struct pvo_entry *pvo) return (0); } KASSERT(result == H_PTEG_FULL, ("Page insertion error: %ld " - "(ptegidx: %#zx/%#x, PTE %#lx/%#lx", result, pvo->pvo_pte.slot, + "(ptegidx: %#zx/%#lx, PTE %#lx/%#lx", result, pvo->pvo_pte.slot, moea64_pteg_count, pte.pte_hi, pte.pte_lo)); /* From owner-svn-src-all@freebsd.org Sat May 5 16:08:16 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6332AFB213F; Sat, 5 May 2018 16:08:16 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-qk0-x243.google.com (mail-qk0-x243.google.com [IPv6:2607:f8b0:400d:c09::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id F38CD86902; Sat, 5 May 2018 16:08:15 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-qk0-x243.google.com with SMTP id d74so18925252qkg.4; Sat, 05 May 2018 09:08:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=23tVexABLoi4rZXuFdeInEykvLBzVi8tiFCvwT4bI34=; b=spqOq3UpTNZ0NSCCvFg25D8ny1x3Gyv5hEQewEQmcjmhBd4D4OcGdU3LsM01nHvHnY EuxBEM+Eksf18NgSzc7kj8b6nfvTtkBwB20aPF1pRzqDBQsTPeEfjtSWqE2m3GhnLL7w JaRGngJJbwncZbJR3U3i6G3QQvzEVvQLQRhq5oAMf3juvP7xdRx1qV6HUw/Z/cIbSO/3 eC+vsJDypo6MFdSNGZWUlGAF6+QiKEgfUIfpzzOetaoar9NhdPYV0u0iw9rgU4sKfCw+ Pwkvui9jM262P8UjK7ip6JxyG8ULLnabeqNYDoVfQzuZWS1dBUNU9mKOqhQRhMGO4b84 rbTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=23tVexABLoi4rZXuFdeInEykvLBzVi8tiFCvwT4bI34=; b=NHHS99yCbQlVY1kDKYj0Ce+Et3omo5Gt1tKBz5EANGGqqVi0L+qQ56p6ZqCm1Tuj0F 8FP82Z9s3g6f2a+oFGjhfvPGFkNwf+yfmWYQe1Uw+2hramzdumtdgMspq/xt/0khOdhR 2FhYl0vsjGJjlOCbwRM+hF1oYbJ3+5Pm/B9ifSB4rQYU1wIkZ+IvGarTmsl9bgA/3TvU wUynewngKj/0whff8jDL40QgF+BwocbLZiEIWUCl9gV/xejIBLXVRzuaONZFGNz9IMpN ipky73lywqE65ds1bT3EnPghXoDNQQ78koD/3uKst+WYAL+Q/j1z1y4sXWsgRG3X0dHw h4GA== X-Gm-Message-State: ALQs6tBd6bouzcZehAdb+pq+rLFuVCoDfa4h9dxle3ADnb34oDPTF2MO IsXk5+5gpxJMYba4czlu9Eikjmg/pZbQpdTyNV2Bsg== X-Google-Smtp-Source: AB8JxZomAH58B2xKBWFSJ7mZ4VQkazX+/tPn3SDf/B/Wme+u0p+ryWvrbg0mqVi3OQiyc8q+LzrX8wE/vjjJNdaRldk= X-Received: by 10.55.104.81 with SMTP id d78mr24424591qkc.127.1525536494946; Sat, 05 May 2018 09:08:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.28.74 with HTTP; Sat, 5 May 2018 09:08:14 -0700 (PDT) In-Reply-To: <20180505090954.X1307@besplex.bde.org> References: <201805040400.w4440moH025057@repo.freebsd.org> <20180504155301.GA56280@spindle.one-eyed-alien.net> <20180505090954.X1307@besplex.bde.org> From: Mateusz Guzik Date: Sat, 5 May 2018 18:08:14 +0200 Message-ID: Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys To: Bruce Evans Cc: Conrad Meyer , Brooks Davis , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 16:08:16 -0000 On Sat, May 5, 2018 at 2:38 AM, Bruce Evans wrote: I don't believe the claimed speeding of using the optimized bcopy() > in cpu_fetch_sycall_args() on amd64 (r333241). This changes the copy > size from a variable to 6*8 bytes. It is claimed to speed up getppid() > from 7.31M/sec to 10.65M/sec on Skylake. But here it and other changes > in the last week give a small pessimization for getpid() on Haswell > at 4.08GHz: last week, 100M getpid()'s took 8.27 seconds (12.09M/sec). > Now they take 8.30 seconds (12.05M/sec). (This is with very old > libraries, so there is no possibility of getpid() being done in > userland.) 0.03 seconds is 122.4M cycles. So the speed difference > is 1.224 cycles. Here the timing has a resolution of only 0.01 seconds, > so most digits in this 1.224 are noise, but the difference is apparently > a single cycle. I would have expected more like the "rep movs*" setup > overhead of 25 cycles. > > The mail below only deals with performance claims on amd64. I'll see about gcc 4.2.1 vs 32-bit archs later and other claims later. It is unclear to me whether you actually benchmarked syscall performance before and after the change nor how you measured a slowdown in getpid. This mail outlines what was tested and how. If you want, you can mail me off list and we can arrange so that you get root access to the test box and can measure things yourself, boot your own kernel and whatnot. My preferred way of measurement is with this suite: https://github.com/antonblanchard/will-it-scale Unfortunately it requires a little bit of patching to setup. Upside is cheap processing: there is a dedicated process/thread which collects results once a second, other than that the processes/threads running the test only do the test and bump the iteration counter. getppid looks like this: while (1) { getppid(); (*iterations)++; } If you are interested in trying it out yourself without getting access to the box in question I'm happy to provide a bundle which should be easily compilable. Perhaps you are using the tool which can be found here: tools/tools/syscall_timing It reports significantly lower numbers (even 20% less) because the test loop itself has just more overhead. For the first testing method results are as I wrote in the commit message, with one caveat that I disabled frequency scaling and they went down a little bit (i.e. NOT boosted freq, but having it disabled makes things tad bit slower; *boosted* numbers are significantly bigger but also not reliable). The syscall path has long standing pessimization of using a function pointer to get to the arguments. This fact was utilized to provide different implementations switchable at runtime (thanks to kgdb -w and the set command). The variants include: 1. cpu_fetch_syscall_args This is the routine as present in head, i.e. with inlined memcpy 2. cpu_fetch_syscall_args_bcopy State prior to my changes, i.e. a bcopy call with a variable size 3. cpu_fetch_syscall_args_oolmemcpy Forced to not be inlined memcpy with a constant size, the code itself is the same as for regular memcpy 4. cpu_fetch_syscall_args_oolmemcpy_es Forced to not be inlined memcpy with a constant size, the code itself was modified to utilize the 'Enhanced REP MOVSB/STOSB' bit present on Intel cpus made past 2011 or so. The code can be found here: https://people.freebsd.org/~mjg/copyhacks.diff (note: declarations where not added, so WERROR= or similar is needed to get this to compile) Variants were switched at runtime like this: # kgdb -w (kgdb) set elf64_freebsd_sysvec.sv_fetch_syscall_args=cpu_fetch_syscall_args_bcopy The frequency is fixed with: # sysctl dev.cpu.0.freq=2100 PTI was disabled (vm.pmap.pti=0 in loader.conf). Now, quick numbers from will it scale: (kgdb) set elf64_freebsd_sysvec.sv_fetch_syscall_args=cpu_fetch_syscall_args_bcopy min:7017152 max:7017152 total:7017152 min:7023115 max:7023115 total:7023115 min:7018879 max:7018879 total:7018879 (kgdb) set elf64_freebsd_sysvec.sv_fetch_syscall_args=cpu_fetch_syscall_args min:9914511 max:9914511 total:9914511 min:9915234 max:9915234 total:9915234 min:9914583 max:9914583 total:9914583 But perhaps you don't trust this tool and prefer the in-base one. Note higher overhead of the test infra, thus lower numbers. (kgdb) set elf64_freebsd_sysvec.sv_fetch_syscall_args=cpu_fetch_syscall_args_bcopy getppid 20 1.061986919 6251542 0.000000169 (kgdb) set elf64_freebsd_sysvec.sv_fetch_syscall_args=cpu_fetch_syscall_args_oolmemcpy getppid 79 1.062522431 6245666 0.000000170 (kgdb) set elf64_freebsd_sysvec.sv_fetch_syscall_args=cpu_fetch_syscall_args_oolmemcpy_es getppid 107 1.059988384 7538473 0.000000140 (kgdb) set elf64_freebsd_sysvec.sv_fetch_syscall_args=cpu_fetch_syscall_args getppid 130 1.059987532 8057928 0.000000131 As you can see the original code (doing bcopy) is way slower than the inlined variant. Not taking advantage of the EMRS bit can be now fixed at runtime thanks to recently landed ifunc support. bcopy code can be further depessimized: ENTRY(bcopy) PUSH_FRAME_POINTER xchgq %rsi,%rdi xchg is known to be slow, the preferred way is to swap registers "by hand". the fact that the func always has to do is is a bug on its own. Interestingly memmove *does not have* to do it, so this provides even more reasons to just remove this function in the first place. movq %rdi,%rax subq %rsi,%rax cmpq %rcx,%rax /* overlapping && src < dst? */ jb 1f Avoidable (for memcpy-compatible callers) branch, although statically predicted as not taken (memcpy friendly). shrq $3,%rcx /* copy by 64-bit words */ rep movsq movq %rdx,%rcx andq $7,%rcx /* any bytes left? */ rep movsb The old string copy. Note that reordering andq prior to rep movsb can help some microarchitectures. The movsq -> movsb combo induces significant stalls in the cpu frontend. If the target size is a multiple of 8 and is known at compilation time, we can get away with calling a variant which only deals with this case and thus avoid the extra penalty. Either way, the win *is here* and is definitely not in the range of 3%. -- Mateusz Guzik From owner-svn-src-all@freebsd.org Sat May 5 16:14:40 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1A6B1FB2465; Sat, 5 May 2018 16:14:40 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-qk0-x242.google.com (mail-qk0-x242.google.com [IPv6:2607:f8b0:400d:c09::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A183168FBC; Sat, 5 May 2018 16:14:39 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-qk0-x242.google.com with SMTP id a202so18955555qkg.3; Sat, 05 May 2018 09:14:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ZHpw9VLX3+uMNAuqU4Bzl5HZUBhwx2C2Ij4CZV2Fsak=; b=bKKxpwEBVIIpyrw8L00yEsUZx/6qCiwYNP1P4T7ufKOurFCnVe97qeiAAyVsoRvn9T Gy+53iX6vQrSVd8LBX+xEVd38bRgninRbnmduvwIeZYhcJ34sQ/AxTE2UDMxcd14BIXJ mPZO+v8JdF3HgY9jFSHxgjNoQkMjQUwuDQkcB0iybNwzQD/lWZ+DLsLKY9Jg+RZd4Qtj vb0uKJdNtSWb6WLe5BwpbiBH6Qfx5oRdSzeyzw6WuJSmxRR2AMq5wJvekMpWWBuzYY7J 2aAc/Ly3HXLLu0O3RzH9x4Tfuz60xAjMg7bZ/okglXEEalNUDN6QZYG+SpiMa0w8EL6g +mUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ZHpw9VLX3+uMNAuqU4Bzl5HZUBhwx2C2Ij4CZV2Fsak=; b=baug3NpH60/MKNBasH/jWJDD1k16jtZgXxFV/FkOutGL+iYcakTqP9hijxQA5aDruI WqEpuLIu88YWcEt1wxjnxZfUMvyhjRmLj8dnjdw73untODybRj0d4ywon2LF+pNTmE59 EWgbCNmUVWOxocDxS2MIv3EQX14YMUsc/E/0PgClTVkwbnLO8U9SjZrtQcbPoCLllAjj UZKdK9GDsCUMXpbsHaowqlDMyKrcr1RqjhXlUJDEIMwsJDmUXDST3euO9Dz1BKzxhNlR +JsZx5UrFNZAtNxX9FMygS1PqSdZwT9DLJqlDBXmE6Ikd3e7ikeVpNZgXHfHU9ucTc+E xxTA== X-Gm-Message-State: ALQs6tC2Bj7Cbr+RXfHRhnGaMEFZOFSYn0qZilPKIQdW3xHd1hGnNCbR DTrHWhYZSxuvxG5fG5/wVJlDwQ/6RV/HWweExU0= X-Google-Smtp-Source: AB8JxZqAvAe2XnaDnKsA/6WQLtJKl+qL7jGbBny/RIqBm03w+W8eOJAyQ012k/v0Tk0wMPFLw7lF7e5VEkmt90jsgqQ= X-Received: by 10.55.147.66 with SMTP id v63mr27033272qkd.40.1525536878900; Sat, 05 May 2018 09:14:38 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.28.74 with HTTP; Sat, 5 May 2018 09:14:38 -0700 (PDT) In-Reply-To: <20180505120055.GA81833@FreeBSD.org> References: <201805040400.w4440moH025057@repo.freebsd.org> <20180504155301.GA56280@spindle.one-eyed-alien.net> <20180505090954.X1307@besplex.bde.org> <20180505120055.GA81833@FreeBSD.org> From: Mateusz Guzik Date: Sat, 5 May 2018 18:14:38 +0200 Message-ID: Subject: Re: svn commit: r333240 - in head/sys: powerpc/powerpc sys To: Alexey Dokuchaev Cc: Bruce Evans , Conrad Meyer , svn-src-head@freebsd.org, svn-src-all@freebsd.org, Brooks Davis , src-committers Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 16:14:40 -0000 On Sat, May 5, 2018 at 2:00 PM, Alexey Dokuchaev wrote: > On Sat, May 05, 2018 at 10:38:29AM +1000, Bruce Evans wrote: > > ... > > Summary: this change wouldn't have passed my review. I have used similar > > changes for 15-20 years but never made them production quality since > there > > are too many variations to consider and testing showed insignificant > > improvements except for micro-benchmarks. > > Perhaps Foundation could sponsor your work to make them production quality > Bruce. :-) > > Seriously though, I'm a bit worried to see these commits happening at the > same time correctness of the implementation is still under discussion and > disputes. Shall I expect that after my next -CURRENT update things would > suddenly stop working? [1] > > ./danfe > > [1] https://bugzilla.redhat.com/show_bug.cgi?id=638477 > > Nothing of the sort was done here. They had a memcpy function which internally behaved like memmove. They changed to behave like mere memcpy (i.e. assume non-overlapping buffers). This caused buggy code to run into trouble. bcopy has memmove semantics and this change keeps that. The only difference is that instead of always generating a call, the compiler is allowed to perform the copy in place in certain cases. This is precisely what happens almost everywhere and it was not happening in the kernel because of a giant hammer -fno-builtin flag (added to reduce changes the compiler will do stuff the kernel does not want to deal with). -- Mateusz Guzik From owner-svn-src-all@freebsd.org Sat May 5 18:39:55 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 972DDFB63C8; Sat, 5 May 2018 18:39:55 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4707068463; Sat, 5 May 2018 18:39:55 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4166A215DC; Sat, 5 May 2018 18:39:55 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w45IdtxN098933; Sat, 5 May 2018 18:39:55 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w45IdtoO098932; Sat, 5 May 2018 18:39:55 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201805051839.w45IdtoO098932@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Sat, 5 May 2018 18:39:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333274 - head/share/mk X-SVN-Group: head X-SVN-Commit-Author: sbruno X-SVN-Commit-Paths: head/share/mk X-SVN-Commit-Revision: 333274 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 18:39:55 -0000 Author: sbruno Date: Sat May 5 18:39:54 2018 New Revision: 333274 URL: https://svnweb.freebsd.org/changeset/base/333274 Log: Remove accidentally committed debug statement that induced the following warning: make[3]: "/usr/src/share/mk/bsd.prog.mk" line 274: warning: duplicate script for target "_scriptsinstall" ignored make[3]: "/usr/src/share/mk/bsd.prog.mk" line 274: warning: using previous script for "_scriptsinstall" defined here Reviewed by: kevans Modified: head/share/mk/bsd.prog.mk Modified: head/share/mk/bsd.prog.mk ============================================================================== --- head/share/mk/bsd.prog.mk Sat May 5 16:00:02 2018 (r333273) +++ head/share/mk/bsd.prog.mk Sat May 5 18:39:54 2018 (r333274) @@ -271,7 +271,6 @@ SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP} SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE} STAGE_AS_${script:T}= ${SCRIPTSDIR_${script:T}}/${SCRIPTSNAME_${script:T}} _scriptsinstall: _SCRIPTSINS_${script:T} - echo ">SFD>F>DF YES" _SCRIPTSINS_${script:T}: ${script} ${INSTALL} ${TAG_ARGS} -o ${SCRIPTSOWN_${.ALLSRC:T}} \ -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \ From owner-svn-src-all@freebsd.org Sat May 5 20:08:04 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A8A5BFB8C79; Sat, 5 May 2018 20:08:04 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 59F6A796AA; Sat, 5 May 2018 20:08:04 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 534CC22448; Sat, 5 May 2018 20:08:04 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w45K84e6044762; Sat, 5 May 2018 20:08:04 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w45K83nx044756; Sat, 5 May 2018 20:08:03 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201805052008.w45K83nx044756@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sat, 5 May 2018 20:08:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333275 - head/sbin/nvmecontrol X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sbin/nvmecontrol X-SVN-Commit-Revision: 333275 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 20:08:05 -0000 Author: mav Date: Sat May 5 20:08:03 2018 New Revision: 333275 URL: https://svnweb.freebsd.org/changeset/base/333275 Log: Add NVMe Namespace Management support to nvmecontrol(8). This allows create/delete/attach/detach namespaces on new NVMe controllers. This is only a first user-level part of the bigger change set. Kernel part required to detect and handle the configuration changes without reboot is completely independent and will be added separately. Submitted by: Matt Williams (original version) Differential Revision: https://reviews.freebsd.org/D11399 Added: head/sbin/nvmecontrol/ns.c (contents, props changed) Modified: head/sbin/nvmecontrol/Makefile head/sbin/nvmecontrol/devlist.c head/sbin/nvmecontrol/nvmecontrol.c head/sbin/nvmecontrol/nvmecontrol.h Modified: head/sbin/nvmecontrol/Makefile ============================================================================== --- head/sbin/nvmecontrol/Makefile Sat May 5 18:39:54 2018 (r333274) +++ head/sbin/nvmecontrol/Makefile Sat May 5 20:08:03 2018 (r333275) @@ -3,7 +3,7 @@ PACKAGE=runtime PROG= nvmecontrol SRCS= nvmecontrol.c devlist.c firmware.c format.c identify.c logpage.c \ - perftest.c reset.c nvme_util.c power.c util.c wdc.c + perftest.c reset.c ns.c nvme_util.c power.c util.c wdc.c MAN= nvmecontrol.8 .PATH: ${SRCTOP}/sys/dev/nvme Modified: head/sbin/nvmecontrol/devlist.c ============================================================================== --- head/sbin/nvmecontrol/devlist.c Sat May 5 18:39:54 2018 (r333274) +++ head/sbin/nvmecontrol/devlist.c Sat May 5 20:08:03 2018 (r333275) @@ -107,6 +107,8 @@ devlist(int argc, char *argv[]) sprintf(name, "%s%d%s%d", NVME_CTRLR_PREFIX, ctrlr, NVME_NS_PREFIX, i+1); read_namespace_data(fd, i+1, &nsdata); + if (nsdata.nsze == 0) + continue; printf(" %10s (%lldMB)\n", name, nsdata.nsze * Added: head/sbin/nvmecontrol/ns.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sbin/nvmecontrol/ns.c Sat May 5 20:08:03 2018 (r333275) @@ -0,0 +1,474 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2017 Netflix, Inc + * Copyright (C) 2018 Alexander Motin + * + * 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, + * without modification, immediately at the beginning of the file. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "nvmecontrol.h" + +/* handles NVME_OPC_NAMESPACE_MANAGEMENT and ATTACHMENT admin cmds */ + +#define NSCREATE_USAGE \ +" nvmecontrol ns create -s size [-c cap] [-f fmt] [-m mset] [-n nmic] [-p pi] [-l pil] nvmeN\n" + +#define NSDELETE_USAGE \ +" nvmecontrol ns delete -n nsid nvmeN\n" + +#define NSATTACH_USAGE \ +" nvmecontrol ns attach -n nsid [-c ctrlrid] nvmeN \n" + +#define NSDETACH_USAGE \ +" nvmecontrol ns detach -n nsid [-c ctrlrid] nvmeN\n" + +void nscreate(int argc, char *argv[]); +void nsdelete(int argc, char *argv[]); +void nsattach(int argc, char *argv[]); +void nsdetach(int argc, char *argv[]); + +static struct nvme_function ns_funcs[] = { + {"create", nscreate, NSCREATE_USAGE}, + {"delete", nsdelete, NSDELETE_USAGE}, + {"attach", nsattach, NSATTACH_USAGE}, + {"detach", nsdetach, NSDETACH_USAGE}, + {NULL, NULL, NULL}, +}; + +static void +nscreate_usage(void) +{ + fprintf(stderr, "usage:\n"); + fprintf(stderr, NSCREATE_USAGE); + exit(1); +} + +static void +nsdelete_usage(void) +{ + fprintf(stderr, "usage:\n"); + fprintf(stderr, NSDELETE_USAGE); + exit(1); +} + +static void +nsattach_usage(void) +{ + fprintf(stderr, "usage:\n"); + fprintf(stderr, NSATTACH_USAGE); + exit(1); +} + +static void +nsdetach_usage(void) +{ + fprintf(stderr, "usage:\n"); + fprintf(stderr, NSDETACH_USAGE); + exit(1); +} + +struct ns_result_str { + uint16_t res; + const char * str; +}; + +static struct ns_result_str ns_result[] = { + { 0x2, "Invalid Field"}, + { 0xa, "Invalid Format"}, + { 0xb, "Invalid Namespace or format"}, + { 0x15, "Namespace insufficent capacity"}, + { 0x16, "Namespace ID unavaliable"}, + { 0x18, "Namespace already attached"}, + { 0x19, "Namespace is private"}, + { 0x1a, "Namespace is not attached"}, + { 0x1b, "Thin provisioning not supported"}, + { 0x1c, "Controller list invalid"}, + { 0xFFFF, "Unknown"} +}; + +static const char * +get_res_str(uint16_t res) +{ + struct ns_result_str *t = ns_result; + + while (t->res != 0xFFFF) { + if (t->res == res) + return (t->str); + t++; + } + return t->str; +} + +/* + * NS MGMT Command specific status values: + * 0xa = Invalid Format + * 0x15 = Namespace Insuffience capacity + * 0x16 = Namespace ID unavailable (number namespaces exceeded) + * 0xb = Thin Provisioning Not supported + */ +void +nscreate(int argc, char *argv[]) +{ + struct nvme_pt_command pt; + struct nvme_controller_data cd; + struct nvme_namespace_data nsdata; + int64_t nsze = -1, cap = -1; + int ch, fd, result, lbaf = 0, mset = 0, nmic = -1, pi = 0, pil = 0; + + if (optind >= argc) + nscreate_usage(); + + while ((ch = getopt(argc, argv, "s:c:f:m:n:p:l:")) != -1) { + switch (ch) { + case 's': + nsze = strtol(optarg, (char **)NULL, 0); + break; + case 'c': + cap = strtol(optarg, (char **)NULL, 0); + break; + case 'f': + lbaf = strtol(optarg, (char **)NULL, 0); + break; + case 'm': + mset = strtol(optarg, NULL, 0); + break; + case 'n': + nmic = strtol(optarg, NULL, 0); + break; + case 'p': + pi = strtol(optarg, NULL, 0); + break; + case 'l': + pil = strtol(optarg, NULL, 0); + break; + default: + nscreate_usage(); + } + } + + if (optind >= argc) + nscreate_usage(); + + if (cap == -1) + cap = nsze; + if (nsze == -1 || cap == -1) + nscreate_usage(); + + open_dev(argv[optind], &fd, 1, 1); + read_controller_data(fd, &cd); + + /* Check that controller can execute this command. */ + if (((cd.oacs >> NVME_CTRLR_DATA_OACS_NSMGMT_SHIFT) & + NVME_CTRLR_DATA_OACS_NSMGMT_MASK) == 0) + errx(1, "controller does not support namespace management"); + + /* Allow namespaces sharing if Multi-Path I/O is supported. */ + if (nmic == -1) { + nmic = cd.mic ? (NVME_NS_DATA_NMIC_MAY_BE_SHARED_MASK << + NVME_NS_DATA_NMIC_MAY_BE_SHARED_SHIFT) : 0; + } + + memset(&nsdata, 0, sizeof(nsdata)); + nsdata.nsze = (uint64_t)nsze; + nsdata.ncap = (uint64_t)cap; + nsdata.flbas = ((lbaf & NVME_NS_DATA_FLBAS_FORMAT_MASK) + << NVME_NS_DATA_FLBAS_FORMAT_SHIFT) | + ((mset & NVME_NS_DATA_FLBAS_EXTENDED_MASK) + << NVME_NS_DATA_FLBAS_EXTENDED_SHIFT); + nsdata.dps = ((pi & NVME_NS_DATA_DPS_MD_START_MASK) + << NVME_NS_DATA_DPS_MD_START_SHIFT) | + ((pil & NVME_NS_DATA_DPS_PIT_MASK) + << NVME_NS_DATA_DPS_PIT_SHIFT); + nsdata.nmic = nmic; + nvme_namespace_data_swapbytes(&nsdata); + + memset(&pt, 0, sizeof(pt)); + pt.cmd.opc_fuse = NVME_CMD_SET_OPC(NVME_OPC_NAMESPACE_MANAGEMENT); + + pt.cmd.cdw10 = 0; /* create */ + pt.buf = &nsdata; + pt.len = sizeof(struct nvme_namespace_data); + pt.is_read = 0; /* passthrough writes data to ctrlr */ + if ((result = ioctl(fd, NVME_PASSTHROUGH_CMD, &pt)) < 0) + errx(1, "ioctl request to %s failed: %d", argv[optind], result); + + if (nvme_completion_is_error(&pt.cpl)) { + errx(1, "namespace creation failed: %s", + get_res_str((pt.cpl.status >> NVME_STATUS_SC_SHIFT) & + NVME_STATUS_SC_MASK)); + } + printf("namespace %d created\n", pt.cpl.cdw0); + exit(0); +} + +void +nsdelete(int argc, char *argv[]) +{ + struct nvme_pt_command pt; + struct nvme_controller_data cd; + int ch, fd, result, nsid = -2; + char buf[2]; + + if (optind >= argc) + nsdelete_usage(); + + while ((ch = getopt(argc, argv, "n:")) != -1) { + switch ((char)ch) { + case 'n': + nsid = strtol(optarg, (char **)NULL, 0); + break; + default: + nsdelete_usage(); + } + } + + if (optind >= argc || nsid == -2) + nsdelete_usage(); + + open_dev(argv[optind], &fd, 1, 1); + read_controller_data(fd, &cd); + + /* Check that controller can execute this command. */ + if (((cd.oacs >> NVME_CTRLR_DATA_OACS_NSMGMT_SHIFT) & + NVME_CTRLR_DATA_OACS_NSMGMT_MASK) == 0) + errx(1, "controller does not support namespace management"); + + memset(&pt, 0, sizeof(pt)); + pt.cmd.opc_fuse = NVME_CMD_SET_OPC(NVME_OPC_NAMESPACE_MANAGEMENT); + pt.cmd.cdw10 = 1; /* delete */ + pt.buf = buf; + pt.len = sizeof(buf); + pt.is_read = 1; + pt.cmd.nsid = (uint32_t)nsid; + + if ((result = ioctl(fd, NVME_PASSTHROUGH_CMD, &pt)) < 0) + errx(1, "ioctl request to %s failed: %d", argv[optind], result); + + if (nvme_completion_is_error(&pt.cpl)) { + errx(1, "namespace deletion failed: %s", + get_res_str((pt.cpl.status >> NVME_STATUS_SC_SHIFT) & + NVME_STATUS_SC_MASK)); + } + printf("namespace %d deleted\n", nsid); + exit(0); +} + +/* + * Attach and Detach use Dword 10, and a controller list (section 4.9) + * This struct is 4096 bytes in size. + * 0h = attach + * 1h = detach + * + * Result values for both attach/detach: + * + * Completion 18h = Already attached + * 19h = NS is private and already attached to a controller + * 1Ah = Not attached, request could not be completed + * 1Ch = Controller list invalid. + * + * 0x2 Invalid Field can occur if ctrlrid d.n.e in system. + */ +void +nsattach(int argc, char *argv[]) +{ + struct nvme_pt_command pt; + struct nvme_controller_data cd; + int ctrlrid = -2; + int fd, ch, result, nsid = -1; + uint16_t clist[2048]; + + if (optind >= argc) + nsattach_usage(); + + while ((ch = getopt(argc, argv, "n:c:")) != -1) { + switch (ch) { + case 'n': + nsid = strtol(optarg, (char **)NULL, 0); + break; + case 'c': + ctrlrid = strtol(optarg, (char **)NULL, 0); + break; + default: + nsattach_usage(); + } + } + + if (optind >= argc) + nsattach_usage(); + + if (nsid == -1 ) + nsattach_usage(); + + open_dev(argv[optind], &fd, 1, 1); + read_controller_data(fd, &cd); + + /* Check that controller can execute this command. */ + if (((cd.oacs >> NVME_CTRLR_DATA_OACS_NSMGMT_SHIFT) & + NVME_CTRLR_DATA_OACS_NSMGMT_MASK) == 0) + errx(1, "controller does not support namespace management"); + + if (ctrlrid == -1) { + /* Get full list of controllers to attach to. */ + memset(&pt, 0, sizeof(pt)); + pt.cmd.opc_fuse = NVME_CMD_SET_OPC(NVME_OPC_IDENTIFY); + pt.cmd.cdw10 = htole32(0x13); + pt.buf = clist; + pt.len = sizeof(clist); + pt.is_read = 1; + if (ioctl(fd, NVME_PASSTHROUGH_CMD, &pt) < 0) + err(1, "identify request failed"); + if (nvme_completion_is_error(&pt.cpl)) + errx(1, "identify request returned error"); + } else { + /* By default attach to this controller. */ + if (ctrlrid == -2) + ctrlrid = cd.ctrlr_id; + memset(&clist, 0, sizeof(clist)); + clist[0] = htole16(1); + clist[1] = htole16(ctrlrid); + } + + memset(&pt, 0, sizeof(pt)); + pt.cmd.opc_fuse = NVME_CMD_SET_OPC(NVME_OPC_NAMESPACE_ATTACHMENT); + pt.cmd.cdw10 = 0; /* attach */ + pt.cmd.nsid = (uint32_t)nsid; + pt.buf = &clist; + pt.len = sizeof(clist); + + if ((result = ioctl(fd, NVME_PASSTHROUGH_CMD, &pt)) < 0) + errx(1, "ioctl request to %s failed: %d", argv[optind], result); + + if (nvme_completion_is_error(&pt.cpl)) { + errx(1, "namespace attach failed: %s", + get_res_str((pt.cpl.status >> NVME_STATUS_SC_SHIFT) & + NVME_STATUS_SC_MASK)); + } + printf("namespace %d attached\n", nsid); + exit(0); +} + +void +nsdetach(int argc, char *argv[]) +{ + struct nvme_pt_command pt; + struct nvme_controller_data cd; + int ctrlrid = -2; + int fd, ch, result, nsid = -1; + uint16_t clist[2048]; + + if (optind >= argc) + nsdetach_usage(); + + while ((ch = getopt(argc, argv, "n:c:")) != -1) { + switch (ch) { + case 'n': + nsid = strtol(optarg, (char **)NULL, 0); + break; + case 'c': + ctrlrid = strtol(optarg, (char **)NULL, 0); + break; + default: + nsdetach_usage(); + } + } + + if (optind >= argc) + nsdetach_usage(); + + if (nsid == -1) + nsdetach_usage(); + + open_dev(argv[optind], &fd, 1, 1); + read_controller_data(fd, &cd); + + /* Check that controller can execute this command. */ + if (((cd.oacs >> NVME_CTRLR_DATA_OACS_NSMGMT_SHIFT) & + NVME_CTRLR_DATA_OACS_NSMGMT_MASK) == 0) + errx(1, "controller does not support namespace management"); + + if (ctrlrid == -1) { + /* Get list of controllers this namespace attached to. */ + memset(&pt, 0, sizeof(pt)); + pt.cmd.opc_fuse = NVME_CMD_SET_OPC(NVME_OPC_IDENTIFY); + pt.cmd.nsid = htole32(nsid); + pt.cmd.cdw10 = htole32(0x12); + pt.buf = clist; + pt.len = sizeof(clist); + pt.is_read = 1; + if (ioctl(fd, NVME_PASSTHROUGH_CMD, &pt) < 0) + err(1, "identify request failed"); + if (nvme_completion_is_error(&pt.cpl)) + errx(1, "identify request returned error"); + if (clist[0] == 0) { + ctrlrid = cd.ctrlr_id; + memset(&clist, 0, sizeof(clist)); + clist[0] = htole16(1); + clist[1] = htole16(ctrlrid); + } + } else { + /* By default detach from this controller. */ + if (ctrlrid == -2) + ctrlrid = cd.ctrlr_id; + memset(&clist, 0, sizeof(clist)); + clist[0] = htole16(1); + clist[1] = htole16(ctrlrid); + } + + memset(&pt, 0, sizeof(pt)); + pt.cmd.opc_fuse = NVME_CMD_SET_OPC(NVME_OPC_NAMESPACE_ATTACHMENT); + pt.cmd.cdw10 = 1; /* detach */ + pt.cmd.nsid = (uint32_t)nsid; + pt.buf = &clist; + pt.len = sizeof(clist); + + if ((result = ioctl(fd, NVME_PASSTHROUGH_CMD, &pt)) < 0) + errx(1, "ioctl request to %s failed: %d", argv[optind], result); + + if (nvme_completion_is_error(&pt.cpl)) { + errx(1, "namespace detach failed: %s", + get_res_str((pt.cpl.status >> NVME_STATUS_SC_SHIFT) & + NVME_STATUS_SC_MASK)); + } + printf("namespace %d detached\n", nsid); + exit(0); +} + +void +ns(int argc, char *argv[]) +{ + + dispatch(argc, argv, ns_funcs); +} Modified: head/sbin/nvmecontrol/nvmecontrol.c ============================================================================== --- head/sbin/nvmecontrol/nvmecontrol.c Sat May 5 18:39:54 2018 (r333274) +++ head/sbin/nvmecontrol/nvmecontrol.c Sat May 5 20:08:03 2018 (r333275) @@ -58,6 +58,7 @@ static struct nvme_function funcs[] = { {"format", format, FORMAT_USAGE}, {"power", power, POWER_USAGE}, {"wdc", wdc, WDC_USAGE}, + {"ns", ns, NS_USAGE}, {NULL, NULL, NULL}, }; Modified: head/sbin/nvmecontrol/nvmecontrol.h ============================================================================== --- head/sbin/nvmecontrol/nvmecontrol.h Sat May 5 18:39:54 2018 (r333274) +++ head/sbin/nvmecontrol/nvmecontrol.h Sat May 5 20:08:03 2018 (r333275) @@ -74,6 +74,9 @@ struct nvme_function { #define WDC_USAGE \ " nvmecontrol wdc (cap-diag|drive-log|get-crash-dump|purge|purge-montior)\n" +#define NS_USAGE \ +" nvmecontrol ns (create|delete|attach|detach)\n" + void devlist(int argc, char *argv[]); void identify(int argc, char *argv[]); void perftest(int argc, char *argv[]); @@ -83,6 +86,7 @@ void firmware(int argc, char *argv[]); void format(int argc, char *argv[]); void power(int argc, char *argv[]); void wdc(int argc, char *argv[]); +void ns(int argc, char *argv[]); int open_dev(const char *str, int *fd, int show_error, int exit_on_error); void parse_ns_str(const char *ns_str, char *ctrlr_str, uint32_t *nsid); From owner-svn-src-all@freebsd.org Sat May 5 20:16:10 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9DA8BFB90B5; Sat, 5 May 2018 20:16:09 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47C9F7AFA7; Sat, 5 May 2018 20:16:09 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 425F2225DC; Sat, 5 May 2018 20:16:09 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w45KG9Uq049713; Sat, 5 May 2018 20:16:09 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w45KG9Wr049709; Sat, 5 May 2018 20:16:09 GMT (envelope-from np@FreeBSD.org) Message-Id: <201805052016.w45KG9Wr049709@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Sat, 5 May 2018 20:16:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333276 - in head/sys: conf dev/cxgbe dev/cxgbe/common dev/cxgbe/firmware modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware modules/cxgbe/t6_firmware X-SVN-Group: head X-SVN-Commit-Author: np X-SVN-Commit-Paths: in head/sys: conf dev/cxgbe dev/cxgbe/common dev/cxgbe/firmware modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware modules/cxgbe/t6_firmware X-SVN-Commit-Revision: 333276 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 20:16:10 -0000 Author: np Date: Sat May 5 20:16:08 2018 New Revision: 333276 URL: https://svnweb.freebsd.org/changeset/base/333276 Log: cxgbe(4): Update all firmwares to 1.19.1.0. These firmwares and the following list of changes are from the public ChelsioUwire-3.7.1.0 release. T6 Firmware ================================================================================ Version : 1.19.1.0 Date : 04/23/2018 ================================================================================ Fixes ----- BASE: - Fixed traffic stall when rate-limit is modified while running traffic. - Fixes a firmware crash in FW_ETH_TX_EO_WR handling. - Fixes host DCB support when FW_PORT_CMD is used. ETH: - Exit Auto-Negotiation if we don't receive base page from peer within 10s. This fixes some cases where in we keep on restarting auto negotiation without ever exiting, resulting in link failure. - Fixes an issue where VF packets counter were not increasing if VF packets coalesced WR is used by driver. OFLD: - Kernel and user mode NVMEoF performance enhancements. FOiSCSI: - Fixes fw crash when trying to connect to non-existence IPv6 iSNS target. ================================================================================ Version : 1.18.9.0 Date : 03/27/2018 ================================================================================ Fixes ----- BASE: - For Ethernet frames less than 64B, pad them with zero bytes as per IEEE spec (RFC 894). - Added a new parameter iqtype to FW_IQ_CMD to identify the ingress NIC or offload queues. This fixes an issue where driver was receiving interrupt with no new messages in queue. - FW_PARAMS_CMD processes all the valaid paramaters and returns value 0UL for any unknown parameter. OFLD: - Fixes connection failure during SRQ reuse. - Fixes incorrect cqe in case of WRITE with immediate operation. FOiSCSI: - Fixes a fw crash when wrong node-id is passed to FW_FOISCSI_CTRL_WR. FOFCoE: - Fixes a fw hang while creating NPIV. Enhancements ------------ ETH: - A new WR FW_ETH_TX_PKTS_VM_WR added to support VM packet coalescing. ================================================================================ Version : 1.18.4.0 Date : 02/28/2018 ================================================================================ Fixes ----- BASE: - Fixed Rate limiting not working for 101Mbps<=rate limit<=163Mbps range. - Fixed starting more than 32 VMs on PF4 causing firmware hang. ETH: - Fixed link failure due to FEC mismatch with optics. - Fixed link failure with link toggle stress tests. - Only BaseR FEC is supported for 50G. - Fixed a bug in next page handling which sometimes causes link down. - Fixed port down due to failre to read eeprom contents of some modules. - Fixed a bug causing adapter to fail with spider configuration. FOiSCSI: - Fixed a bug causing login failure when connecting to multiple targets. Enhancements ------------ BASE: - Added a new firmware API to retrieve the maximum temperaturethreshold for the chip (FW_PARAM_DEV_DIAG_MAXTMPTHRESH). ETH: - Added support for user to contol pause negotiation during auto negotiation. FOiSCSI: - Added a new facility to redirect few fw events to offload rx queue (based on driver's configration) - Driver can ignore providing ipv6 prefix len during ipv6 address configuration. ================================================================================ Version : 1.17.14.0 Date : 12/27/2017 ================================================================================ FIXES ----- BASE: - Fixed an FLR failure during simulteneous power up of VM. - Fixed an issue in vlan acl which was limiting vlan range to 1024. ETH: - Enabled RS-FEC for 25G active copper cable and 25GBASE-SR. - When auto negotiation is enabled, final pause settings are resolved based on local and peer pause settings. - Handle NACK for an I2C access. OFLD - Fixed rdma connection cleanup in SO adpater. - Fixed rdma connections during read invalidate. - Fixed the crash when invalid BW rate is passed to fw. - Fixed the traffic hang when BW allocation is changed from switch during traffic. FOFCoE: - Fixed an issue where initiator remains logged-in even after LLDP is disabled on switch. ENHANCEMENTS ------------ BASE: - Added support for 248 VFs. - Added fw driver periodic calibration for MC. ETH: - Added XLAUI port type support. - Added raw mac entry deletion support (FW_VI_MAC_ID_BASED_FREE). OFLD: - Inline IPSec support added (flag F_FW_ULPTX_WR_DATA indicates the inline IPSec WR). - New work request FW_RI_RDMA_WRITE_CMPL_WR (write with completion) added to T5 Firmware ================================================================================ Version : 1.19.1.0 Date : 04/23/2018 ================================================================================ Fixes ----- BASE: - Fixes a firmware crash in FW_ETH_TX_EO_WR handling. - Fixes host DCB support when FW_PORT_CMD is used. ETH: - Fixes an issue where VF packets counter were not increasing if VF packets coalesced WR is used by driver. OFLD: - Fixes an issue where fw hangs if max traffic rate passed is 0. FOiSCSI: - Fixes fw crash when trying to connect to non-existence IPv6 iSNS target. ================================================================================ Version : 1.18.9.0 Date : 03/27/2018 ================================================================================ Fixes ----- BASE: - For Ethernet frames less than 64B, pad them with zero bytes as per IEEE spec (RFC 894). - Added a new parameter iqtype to FW_IQ_CMD to identify the ingress NIC or offload queues. This fixes an issue where driver was receiving interrupt with no new messages in queue. ETH: - Pad the Ethernet packets of size less than 64B with zeros. This fixes the incorrect checksum generation of packets less then 64B. FOiSCSI: - Fixes a fw crash when wrong node-id is passed to FW_FOISCSI_CTRL_WR. FOFCoE: - Fixes a fw hang while creating NPIV. Enhancements ------------ ETH: - A new WR FW_ETH_TX_PKTS_VM_WR added to support VM packet coalescing. ================================================================================ Version : 1.18.4.0 Date : 02/28/2018 ================================================================================ Fixes ----- BASE: - Fixed starting more than 32 VMs on PF4 causing firmware hang. FOiSCSI: - Fixed a bug causing login failure when connecting to multiple targets. Enhancements ------------ BASE: - Added a new firmware API to retrieve the maximum temperaturethreshold for the chip (FW_PARAM_DEV_DIAG_MAXTMPTHRESH). ETH: - Added support for user to contol pause negotiation during auto negotiation. FOiSCSI: - Added a new facility to redirect few fw events to offload rx queue (based on driver's configration) - Driver can ignore providing ipv6 prefix len during ipv6 address configuration. ================================================================================ Version : 1.17.14.0 Date : 12/27/2017 ================================================================================ FIXES ----- BASE: - Fixed an issue in vlan acl which was limiting vlan range to 1024. ETH: - Corrected lane inversion logic. - Fixed improper LED behavior in T580 cards. - When auto negotiation is enabled, final pause settings are resolved based on local and peer pause settings. - Handle NACK for an I2C access. OFLD - Fixed rdma connections during read invalidate. FOiSCSI: - Fixed a connections hang when link is toggled frequently. FOFCoE: - Fixed an issue where initiator remains logged-in even after LLDP is disabled on switch. ENHANCEMENTS ------------ BASE: - Added support for 124 VFs. ETH: - Added XLAUI port type support. - Added raw mac entry deletion support (FW_VI_MAC_ID_BASED_FREE). OFLD: - New work request FW_RI_RDMA_WRITE_CMPL_WR (write with completion) added to optimize NVMEoF write. T4 Firmware ================================================================================ Version : 1.19.1.0 Date : 04/23/2018 ================================================================================ Fixes ----- BASE: - Fixes a firmware crash in FW_ETH_TX_EO_WR handling. - Fixes host DCB support when FW_PORT_CMD is used. FOiSCSI: - Fixes fw crash when trying to connect to non-existence IPv6 iSNS target. ================================================================================ Version : 1.18.9.0 Date : 03/27/2018 ================================================================================ Fixes ----- BASE: - Added a new paramter iqtype to FW_IQ_CMD to identify the ingress NIC or offload queues. This fixes an issue where driver was receiving interrupt with no new messages in queue. FOFCoE: - Fixes a fw hang while creating NPIV. Enhancements ------------ ETH: - A new WR FW_ETH_TX_PKTS_VM_WR added to support VM packet coalescing. ================================================================================ Version : 1.18.4.0 Date : 02/28/2018 ================================================================================ Enhancements ------------ BASE: - Added a new firmware API to retrieve the maximum temperaturethreshold for the chip (FW_PARAM_DEV_DIAG_MAXTMPTHRESH). ================================================================================ Version : 1.17.14.0 Date : 12/27/2017 ================================================================================ FIXES ----- BASE: - Fixed an issue in vlan acl which was limiting vlan range to 1024. MFC after: 3 days Sponsored by: Chelsio Communications Added: head/sys/dev/cxgbe/firmware/t4fw-1.19.1.0.bin.uu (contents, props changed) head/sys/dev/cxgbe/firmware/t5fw-1.19.1.0.bin.uu (contents, props changed) head/sys/dev/cxgbe/firmware/t6fw-1.19.1.0.bin.uu (contents, props changed) Deleted: head/sys/dev/cxgbe/firmware/t4fw-1.16.63.0.bin.uu head/sys/dev/cxgbe/firmware/t5fw-1.16.63.0.bin.uu head/sys/dev/cxgbe/firmware/t6fw-1.16.63.0.bin.uu Modified: head/sys/conf/files head/sys/dev/cxgbe/common/t4_hw.c head/sys/dev/cxgbe/firmware/t4fw_interface.h head/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt head/sys/dev/cxgbe/t4_main.c head/sys/modules/cxgbe/t4_firmware/Makefile head/sys/modules/cxgbe/t5_firmware/Makefile head/sys/modules/cxgbe/t6_firmware/Makefile Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Sat May 5 20:08:03 2018 (r333275) +++ head/sys/conf/files Sat May 5 20:16:08 2018 (r333276) @@ -1461,7 +1461,7 @@ t4fw.fwo optional cxgbe \ no-implicit-rule \ clean "t4fw.fwo" t4fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t4fw-1.16.63.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t4fw-1.19.1.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t4fw.fw" @@ -1495,7 +1495,7 @@ t5fw.fwo optional cxgbe \ no-implicit-rule \ clean "t5fw.fwo" t5fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t5fw-1.16.63.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t5fw-1.19.1.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t5fw.fw" @@ -1529,7 +1529,7 @@ t6fw.fwo optional cxgbe \ no-implicit-rule \ clean "t6fw.fwo" t6fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t6fw-1.16.63.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t6fw-1.19.1.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t6fw.fw" Modified: head/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- head/sys/dev/cxgbe/common/t4_hw.c Sat May 5 20:08:03 2018 (r333275) +++ head/sys/dev/cxgbe/common/t4_hw.c Sat May 5 20:16:08 2018 (r333276) @@ -3722,8 +3722,6 @@ int t4_link_l1cfg(struct adapter *adap, unsigned int m fec = FW_PORT_CAP_FEC_RS; else if (lc->requested_fec & FEC_BASER_RS) fec = FW_PORT_CAP_FEC_BASER_RS; - else if (lc->requested_fec & FEC_RESERVED) - fec = FW_PORT_CAP_FEC_RESERVED; if (!(lc->supported & FW_PORT_CAP_ANEG) || lc->requested_aneg == AUTONEG_DISABLE) { @@ -7720,8 +7718,6 @@ static void handle_port_info(struct port_info *pi, con fec |= FEC_RS; if (lc->advertising & FW_PORT_CAP_FEC_BASER_RS) fec |= FEC_BASER_RS; - if (lc->advertising & FW_PORT_CAP_FEC_RESERVED) - fec |= FEC_RESERVED; lc->fec = fec; } Added: head/sys/dev/cxgbe/firmware/t4fw-1.19.1.0.bin.uu ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/cxgbe/firmware/t4fw-1.19.1.0.bin.uu Sat May 5 20:16:08 2018 (r333276) @@ -0,0 +1,9747 @@ +/*- + * Copyright (c) 2018 Chelsio Communications, Inc. + * 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. + */ +begin-base64 644 t4fw +AAAEOgETAQAAAQkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAABB0ELAQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IFR1ZSBBcHIgMTAgMDU6 +MDY6MzIgUERUIDIwMTggb24gdm5jNC5hc2ljZGVzaWduZXJzLmNvbTovaG9tZS9maXJtd2FyZS9j +dnMvZnctcmVsZWFzZSksIFZlcnNpb24gVDR4eCAwMS4xMy4wMS4wMAAAAAAAAAAAAAAAAPpruZRg +AMgA4QB78AAQAADhADC4eP///x/84UCAAAAB4QB7cAAAEAAf//0o4QGUcCAAAADhAZwE4QB5AAAC +AEDhAHmAAAYAQAACAAoABgAK4QB5BAAMAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA +AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//jhAAAAAA +H/+OFAAAAAAf/44YAAAAAB//jhwf/8AAAAAAAAAAAADAABL/zRP/zZMgEv/NE//NhCAEMwGTIBH/ +zBL/zJIQEf/MEv/MkhAR/8wB9DER/8siCv+SEADkMQAFMQECABL/yALnMQIWABH/x4EQAQFfwCEC +EQHJERH/xBL/xJIQEf/EEv/EkhBgAA8R/78S/8OSEBH/vxL/wpIQgRAR/8HAIJIREv/AkhLAIJIT +Ev+/khCCEALyUGUv9xH/vccvkhAR/7ySEBL/vBP/vJMgwDKTIRP/u5MigiIS/7oT/7qTICMiIRT/ +uQQzAck4E/+4gzADgxQIMxEU/7akM5MhE/+qkyJgAAjCMJMhE/+nkyIS/7GQIJAhkCKQI5AkkCWQ +JpAnkCiQKZAqkCuQLJAtkC6QLyAmECAmEYIiEv+kwDAtNzAtNzQtNzgtNzwjPQFyM+0AAgAS/6HA +MC83AC83EC83IC83MCM9AXIz7QACABL/l8AwKDcwKDc0KDc4KDc8Iz0BcjPtEv+VwDAnNwAnNxAn +NyAnNzAjPQFyM+0S/5AV/5AW/5HAMNcgBWYBYAAZAAAAAAAAAAQ2BQACANMP0w8FMwxuOxQHRxQH +BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF +IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9 +AXIz7QACABL/ay0nAMARAUkxAEgxAQIAwAAU/2gE0jEV/2eUUBT/ZwTTMRX/ZpRQFP9mBNQxFf9m +lFAU/2UE1TEV/2WUUBD/ZQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/AAA +H/wAAOMACfgf/AAAH/wAAOMACfgf/AAAH/wAAOMACfgf/4AAH/+FsOMACfgf/4WwH/+FsOMAD6gf +/4WwH/+FsOMAD6gf/4WwH/+HQOMAD6gf/4dAH/+OBOMAETgf/44QH/+yMOMAGAgf/7IwH/+yMOMA +PCgf/8AAH//+FeMAPCggAAAAIAABauMAekAgAAF4IAABfOMAe6wgAAF8IAABheMAe7AgAAGYIAAB +nOMAe7wgAAGcIAABpeMAe8AgAAG4IAABvOMAe8wgAAG8IAABxeMAe9AgAAHYIAAB2OMAe9wgAAHc +IAAB4uMAe9wgAAH4IAAB+OMAe+QgAAH8IAAB/OMAe+QgAAIYIAACGOMAe+QgAAIcIAACHOMAe+Qg +AAI4IAACOOMAe+QgAAI8IAACPOMAe+QgAAJYIAACWOMAe+QgAAJcIAACYuMAe+QgAAJ4IAACeOMA +e+wgAAJ8IAACguMAe+wgAAKYIAIPE+MAe/QgAwAAIAMXYOMCiHAgAxdgIAMXYOMCn9AgAxdgIAcH +5OMCn9AgBwfwIAcLYOMGkGAgCAAAIAgS8OMGk9AgCBLwIAksXuMGpsAgCSxgIAktLOMHwDAgCwAA +IAsAAOMHwPwgCwAAIAsAAOMHwPwgCwAAIAt3GOMHwPwAAAAAAAAAAAAAAAAgABQWIAAUCCAAF/Ig +ABQIIAAXbSAAFAggABS6IAAXBSAAFoogABQIIAAWOSAAFfIgABWFIAAT9SAAFS8gABQIIAAUCCAA +FAggABTaAAAAAP///////w/8///w////APz///////8P/P//8P///wD8IADIliAAyh4gAMpOIADK +FCAAyb8gAMm1IADJhCAAyXogAMlwIADJHyAAykwgAMkVIADI5SAAyk4gAMjbIADIyQEQGAEABAAA +AAAAIAAAAEAAAgIFBQgICwsODhERFBQXFxoaHR0gICMjJiYpKSwsLy8yMjU1ODg7OwAAAAAAAAAg +BRoMIAHEHCAAPbAgAZAYIAG++CABuWggAXYAIARFiB//6dQgALEoIADLAB//3LAgAHaQIABoqAAA +AAAAAAAAIAGR0CAAnRwgAJZgAAAAAB//1TQf/8U8H//CWB//wDAgAFuIIABO5CAATBAgALy4H//j +iCAG3ZAAAAAAAAAAACAAUpggAF7EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIADFKCABqRggANVY +IADUfB//8LAf/8/YH//LkCAAk9ggBZpQIAFBOCABKaggAQ44IAEFkCAA+rQgAO0sIADYSCAFHgAg +AyggIAE2nCADVFggAfUEIAB2UAAAAAAgANW8IAYQHCAAyAggAZu0IAACmCAAtngAAAAAAAAAAB// +89AgANV0IAMq0AAAAAAAAAAAIAOsuCAAKjQgA6sAIAAotAAAAAAgADToIAAzHCAAMWQAAAAAIAA9 +VCABOmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBBF4IAUZrAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA6yCADtYAgADeYAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAACAAPbAgAK6kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsA +AAAgAxS0CAAAACADFMAIAAAAIAMUzAoAAAAgAxTYDAAAACADFOQSAAAAIAMU9A0AAAAgAxUIDgAA +ACADFRgTAAAAIAMVKAoAAAAgAxU8DgAAACADFUgYAAAAIAMVWA0AAAAgAxV0DgAAACADFYQQAAAA +IAMVlBIAAAAgAxWoDgAAACADFbwQAAAAIAMVzBEAAAAgAxXgCgAAACADFfQLAAAAIAMWAA0AAAAg +AxYMFAAAACADFhwKAAAAIAMWNA8AAAAgAxZABgAAACADFlAGAAAAIAMWWAYAAAAgAxZgBgAAACAD +FmgGAAAAIAMWcAkAAAAgAxZ4BgAAACADFoQEAAAAIAMWjAYAAAAgAxaUCwAAACADFpwLAAAAIAMW +qAQAAAAgAxaMBAAAACADFrQJAAAAIAMWvAkAAAAgAxbIAAAAAAAAAAANAAAAIAMW1AoAAAAgAxbk +BgAAACADFvACAAAAIAMW+AMAAAAgAxCMAQAAACADFvwAAAAAAAAAANdqpHjox7dWJCBw28G9zu71 +fA+vR4fGKqgwRhP9RpUBaYCY2ItE96///1uxiVzXvmuQESL9mHGTpnlDjkm0CCH2HiViwECzQCZe +WlHptseq1i8QXQJEFFPYoeaB59P7yCHhzebDNwfW9NUNh0VaFO2p4+kF/O+j+GdvAtmNKkyK//o5 +Qodx9oFtnWEi/eU4DKS+6kRL3s+p9rtLYL6/vHAom37G6qEn+tTvMIUEiB0F2dTQOebbmeUfonz4 +xKxWZfQpIkRDKv+Xq5Qjp/yToDllW1nDjwzMkv/v9H2FhF3Rb6h+T/4s5uCjAUMUTggRofdTfoK9 +OvI1KtfSu+uG05EHDBEWBwwRFgcMERYHDBEWBQkOFAUJDhQFCQ4UBQkOFAQLEBcECxAXBAsQFwQL +EBcGCg8VBgoPFQYKDxUGCg8VH//AAAAEACAgBwtgIAcQ0B/83gAf/6gEIAcLsB//qSQf/6ygA4AA +AIEAAAAA//gAAQAAAAAQAACBBAEAgQQAAAEEAAABBAEAgAAAAAAF//8GAAAABAEACB//gMAqAAAA +H//PNAIAAACAEAAAQUAAAEFAAQCDAAAB//+//7////8f/5RYBAAACCADDqiBgAAADAAAAB//jqD/ +/wAA//8A/wABAAAAAP//H/+vkB//pFwP///////QdB//Yhwf/ODoIAcJPP//vwwf/2KcH/+p3B// +mmQf/OIAAAAIyOD//gDhAZIAH/+UxAD///8f/5kMH/+qAARBAAilAAAAwAAAAMAEAAAwAAAAH/+q +kAAAHdAAAP+AIAcH8CALR0DhAC4AH/+qhB//pjwf/6swH/+moB//qoDgAACg4QAwuOAAAAAAAIAA +4QBgEAAAQADhAhAA4QIwAOECUADhAnAA4QAQCB/84UDhAHtwH/+x8B//segf/OAIH/+x7B//sggf +/7IAH/+yBB//siAf/7IYH/+yHB//qAQf/6+QIAcLsB/83gAf/6kkH/+ooB//qcAf/5kcH/+vDB// +pcQgCwBgH/+rXAAA/4AAAB6wH/+OoB//q2gf/6tkH/+ryB//rJAqAAAAIAsEYCALBJAEAAAIBQAA +AIP/AACBAAAAABAAACALBNAgCwQwIAAJ+CADDbgf/4TwH/+AwB//rKBnRSMB782riZi63P4QMlR2 +H/+AAAAAPyggAxCMz////yALBfAQAAAAP////wIAAABAAAAAGgAAAB/84HQgoAAAH/+nuCAAHeAg +AB98gAAAAAAAgAD//v//AAAQAABAAAAgADn8IAAjCCAAAAAgACNwIAsIwP//f///+///D/aAACAL +CPAgCwkgAAEAAAAEAAAf/6goIAtTYCALCbAgADToIAA2OCAAMxwgCwtQIAsKECALCqAgADFkIAsK +8FMAAAAA////UgAAAFEAAAAgAf5YH/+p2CAAOWAgBA1gH/+p0CALC3Af/5kUH/+ppCALDZAUAAAA +gAAAAnxQAACAAAAQgAAABoAAsAAAAAoAAP80kv//8A+AALEA4QGaAAACAAAgCw0gH/+WiAAAfkAg +Cw1gH/+p1AD/wAABAAAAKAAAAOAAAAAmAAAAAAD//x//j3AGAAAABYAAAB//pYgrAAAAIABWACAL +VkAf/6dUA4AAAAf///8EAQAINQAAAAMAAAAAP///gEAAAAgP//8f////QUAAAEFAAQAABf//AQQB +AAEEAAAAAMAAH/+puD0AAAAf/5UABwAAAIEEAQCBBAAAH/+pkAAAOpjDAAAAAAAP/wBDAAAf/6cY +AAAIAAQAAAAgC1agH/+xZB//r7Af/5RYAAYAAOEAegAf/5TAH/+pxB//qgAf/5kkH/+ZECALVtAA +AweAIAtXQAgAAAAf/5bwACAAAAAACQAAADAC//z4f8AAAACj/7sAo/+6AA0AAADgAwAAg/+2AA// +//8P//gA/wAAACALV4AgCw7QIAsPACALWBAADwAAAAoAAP//AA8D/8AAg//AACALWJAgC1kAH/+q +SB//sCD/YPAAH/+wAB//jiAEgAAIH/+AUABEAAABgMIAAACBAB//jmAf/4Bg/x///wDAAADwAAAA +gYAAAP9///8f/6Rc/7//////AAAAgAAAAACG3R//mlwf/OIAH/+PYO4AAAAAAAnMH/ziDA8AAAAg +Cw9AAAAIzB//q1Qf/5pkIAsRMCADCDDg//4AIAtM0B//muAf/5T8H/+AcCAHCZAAADAAAAAnEB// +3CAgC2OQIAtjYB//qrQf/5T0AAD//h//mQTerb7vNAAAAD8AAAAAAIkGAJkAAB//rygQAAcCAcCA +AB//rwSZAAAAH/+v5ACIAAiCgAABH/+veP//8AADFQAAAxEAAAAPA/8gAQHsIAEF2CkAAAAAAIkU +IAEKrCADC3QAAEAAIAMOoAwAAAAgARWwH/+wQAAAIaAgAwuEH/+qGB//rkgf/6nc/wD/APDw8PCq +qqqqzMzMzB//pcgAA///AAAn/yADC8ggC2PgIAEmCAAPQkAgA1t4H/+qeAAJAAAAAEgAggAAACAB +Omgf/6osOwAACA4AAADQAAAAH/+AsAAAIooAAAhQAAAfQB//qeQgCyKwIAsi0CALIvD/3///AAkA +CB//r3QwAAAAfwAAAB//qBQgCyYQAAAP/iALJUAgCyWgIAsl4AAA4AD///f/IAsmoCADYqwAAIP/ +IAcPmBWgAAAgBxCQH/+vOAAACAYAAIjMH/+WoAAEA/8KAAAAIAcMKCAHDcggBwxwH/+ZoIP/twCD +/7YgIAsm0OEAAAAzAAAAH/+vQB//sDQD/+AAf///AAA/9pAAACKYA//wACALSiAgC0ngIAtKQB// +sUAf/688AA///x//qeAgC2ZAH/+ZRCAAerggBwkYIAAFiB//pKAf/5YcH/+UjB//qRQgCydQwAQA +AB//p9Af/6fEH/+n3B//rfAf/61kIAPm4CALJ5AgAw9QH/+l3CAAe5jgAQAAH/+aYCALZwAgCyfQ +IADBkB//mlggAL6QH/+QqCALZoAgC2bQH/+WwCALKeAf/480H/+Q7CALPkAgCz5wSAAAACAB0Bgf +/6dkIAHSHB//lUgf/6Y8H/+lJB//pOwAABhQAAAWTB//qDQgBwukH/+lfB//lMThAC4AH/+oQOEA +XgDhAg4A//+//+EADgDhAY4A//++/x//pgwgAddgIAHjdOAFAAAD/wAAH/+lRCADDqgf/L//PAAA +AB//gLiDAAAAH/+lLA88AAAgC0mggoAAACACBVQgAggIH/+qxCACC8AAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAACBgAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAgYAAAAAAAAD/////////////////////H//8AB///AAf//vIH//7 +yB//+8gf//vIH//1SB//+Hgf//bQH//20B//9tAgBt+AAAAAAAAAAAAAAAAAAAAAACAG4sggBuLI +AAAAAAAAAAAAAAAAAAAAACAG34AgBt+AH//5dB//+XQf//l0H//5dB//+XQf//l0AAAAACAB2HgA +AAAAAAAAAAAAAAAAAAAAAgEAAAAAAAAAAAAAAAAAAAEDEREICBAJAwEAAAAAAAAEAAAAAAAAAIGA +AAAAAAAQBQAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABgFAAAAgAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAACAKABHxaxPxa9MPA+YxAQIAFvFpF/Fqd2sGkGC0Zndj+FQPEFXRwg8UAGP/+QAA +AGwQCCggBZQVJCAH9mCkFaAZRQD5AA2NYUQBAIgiGvFdF/Fc7fFdHAsOAAAMSRGnmSuSnsDp/2AM ++6AMpQApkp0KSworssMLmQHpFgQkjJmAAInY9yAM+JIAnQAvcq5k8UEf8U4qcq0v8n/vqwEEw/0A +AP9ACX5iAJ0AmNj/QAmGYgCdAIoVKSAUqpkJCUcpJBT1IAu10gCdABvxQS8iFi0hKYkUGPFAr92Y +kPpDyBWgDiUA7pYCLu/CgAD9IGYV4AxlAO3xOR1WAoAADKoCjBSakesAFQTIQQAA+IJoHeBKBQCd +xurGByZIgQAA6+MFDNAEgAAKAmEKAmEKAmEKAmHApOpqNgHAQQAAbakFCACGCQJhKCEpH/El+EUE +FeAMFQD5ACAVoA0FAPogiBXviAEACYgu+kPIFa+IAQD4RSQdoAYFAPYgBhWgHuUA5hYCLEVCgADo +FgEl2YEAAFiJ8P6AABc3xQEA98AAR3ANlQDt5p0oBAqAAPmABMFSAJ0AwCDRDwAAAAAA6iQACdgE +gADsEgUq6ASAAFiLu9Kg0Q8AAAAAwLAMnzTv1ggt9sYAAPpAaB2gG8UA/AACHaANFQBYkixj/8EA +AOokAArYBIAAWI1o0qDRDwD/+bQNoAkFAOokAAJYYQAA/AACHaANlQBYkiBj/5HAoFnMEh3w54nY ++T/yuJAMpQBj/6TaIFgLfGP+hYonjRXAwOqsIC7YBIAAWIVT0qDRD2wQBi4iECQWAeUhGirQBIAA +JiAH9kEoFeAfxQDqFgAqx8KAAP8CUg3hZgEABwlC8SBwDeKFAQBkge3U8CkgBfxASBWgG4UA/p4A +DbAaRQD7IA9tIgCdAOXwxB4L1gAA5/DDG08CgAD0wAwKEgCdAKWZLZKe96ARw1IAnQApkp0Hagoq +osMKmQHulAAEjiGAAIwpiyoMBz4Muwz3YAkD4gCdACogTi0gTLGo+6ANxCALFQAoJE4qMAEpIhjz +QA3OkgCdACsgBy0hJPhgJBWgDFUA/UAEBTC7EQDgqhEN2oKAAAuqAhvwqQqIAiohBywhCQvdAvsG +AAx6qgEA6/CkHVMCgAAKzAIqISKY4IggnOOd5AuqApri/QAAFDAKZQAKiAKY4S0iEJ3lLCA4G/CZ ++AAiHaBNFQD5wSYVoMwZAAzYOR3wlJToDL05+aYADrALBQCb5xjwiZ3m7fCKFOAFAAAsJhib65nq +6AAVB0jBAAAJAIrt5g4hyEEAAO/mDyd5AQAACSCGDwJjCQCGDwJhDG4Rpe7q5p0jgKmAAIgpLyA4 +p4iYKfPgB/eSAJ0AiRAJCUf5IAbhUgCdAMAg0Q8AnhLqJAAL2ASAAFiOSI4S/00QDeAfxQDsEgEp +UASAAO0SACnYBIAAWIse0qDRDx7wYYro90AGGJIAnQAMaRGlmSuSnvdgBmtSAJ0AKZKdB2sKK7LD +C5kBZJC7sKyc6O6UAAzzhgAAYAAoAPPf8HBSAJ0ACVQM9J0AFa/4FgAAAAAAAOsSAClQBIAAWIzA +0qDRDwDqJAADWGEAAPwAIh2gDWUAWJF6Y/9ujSLA5A7dAvxARhXv/ZIAAAAA+EOoFaTZAQAA0QQA +vBoMiAL4Q6YVr/jaAIonjRHAwOqsIC7YBIAAWISq0qDRD9ogWIq1Y/79AAD/91ANoAkFAMCgWctY +HvAsiuj5X/mYkB/FAP/9OA2gCQUAwJDAugurNPvBBhXv/P4AAAAAbBAOlRsoIhAuIgknITUpIAcj +Fg0qMgL+YIgV4A0VAPxgaB2ntQEA4yEaJdv5AAAL2zn6IYYV4ZkBAOf/Ngm3woAA/sJSDeOqAQAO +DkLxwHAN4tMBAGTUGyYgBcHo+f4ADzAXRQD2wCHdYgCdAIciix304XwN4A6FACuwAZ8R82Ae5xIA +nQCZEJkZmhMY7/7t7/4SKA0AAOUWCiyvAoAA6FUIDN+CgACtu+sWCCJwBQAAiRmeF40a9SAGqhIA +nQArUp6GGP1gCiPiAJ0AL1KdJmLDBv8BZPPxGe/tiZj3IAmgkgCdACqCrmShURrv6SOCrSqifx3v +5go7AesWBCTb/QAA+mAJ3iIAnQCb2PpgHSYiAJ0AhymGKgwDPgdmDPLACaPiAJ0AKRoA8yIyDeD6 +9QArIBacEvtgCeUiAJ0AixGGwyogOPfg5hWgBgUA9+EmFaBHBQD74QYV4KoZAAp2ORfv1pYVLSIX +Fu/TnfotIhud+4nECnY5lhb5YA/K4gCdAIscnh7sFgIljVmAAGABHBnvv4mYapEuixoqUp6PGHuj +Sy1SnS/yww/dAZ0UhhTr77cU0/0AAO9kAAMB6YAAmrhl/xNgAwKeHvwgRhWgCgUAWcrZGe+uiZgY +76qMEu4SDiSO2wAA//9cDaAPBQDAoPoghhWv/uYAHe+lwLoLmzT7oQYV7/72AAAAAAD/+xQNoA8F +AACeHp8f/CBGFaAKBQBZysUZ75qMEo8fiZiOHhjvlfk/9XiSAJ0AYAJ2wKCaFIsUFu+SwNoNnTTt +Zggt9i4AAGACXZ4enx+cEuokAAnYBIAAWI1ojBKPH+4SDiV1uYAAYAIVKiAHnh6fH/ogAAUwDAUA +WI1AZKNuKiAHKyAW/GBoHaGqAQBYjRGMEo8f/iHIFa/6agAAAAAAAIsSiBOMEYYVjhas3QhmAvfG +AA8/iAUAKCQ7DJYMlrQtJhvtIhApUASAAFiL5o4ejBIY72kqVp2KKSkgOKOq6iYJJPmWgAAmITWP +xCshGikiEOb/Ng3vwoAAf9sKCgpCyKQLDUJk0FP+ICYV4B2FAPn+AA7wChUA+iGGFaAGNQD2IWYV +r/YGAIonnx+LHeqsICpgBIAAWIhqjx+aEi0iG/lAiBXv/XYA2iBYidEY70qMEo4e+kEoFa/+PgBx +nqgKvwz//QAV7/6KAIsTihUtIhAZ708LqgIb708KaAKGHBrvRgmIAunvRRsKfgAAIxYQJRYRJiAH +hcAjIQf2QSQV4GYRAOtVAQsygoAA9qYACrozAQDmISIpmwKAAAN3AgpVAiMhJAlmApXwhSCX85by +/eCmFeOYAQDo9gYsygKAAAk5AuMSECJT+QAA6fYEKq4CgADl5QIGQIEAAOX2ASfIwQAA5RIRIhQ1 +AABtqQUIAIYJAmEmIBSkZgYGRyYkFPTAB3XSAJ0AiRcpVp0oIhexiOgmFyGAqYAAiykqIDiju5sp +80AHn5IAnQCMHGXAz8Ag0Q8tIE5k3CEOeAL4QEYVoACGAAAAAAAA8x/fAFIAnQAOPwz//QAV7+9W +AAAAAAAA6xINKVAEgADtEgsqYASAAFiJt9Kg0Q8A6xILKVAEgABYi27SoNEPAPpAaB2gG8UA/AAi +HaANFQBYkChj/8GLEPpAaB2gDBUA7RIKJdhhAABYkCJj/6kAACYgO2RgYeokAA5YBIAA/CAoFa+J +BQDpJDsscASAAFiLW/og5hWgCwUAKyYb+kdmHe/8LgAAAAAA6xIEKVAEgABYCXNj/weKJ+tEAApo +BIAA+0QAFaAMBQBYg0nSoNEPANogWIlVY/8IIxYQh8AjIAcmISL64AQD8DMRAOMhBynagoAAC3cC +CncCiycqIQn4xgALejMBAOmxFSmbAoAAA6oCIyEkl/CHIJrzmPbt9gUl2IEAAPfgRhWvzQUA/WAE +BfNoAQDrnQgLMgKAAAYzAuP2BCu+AoAAB+cC5/YBJmCBAADjEhAm6QEAAO3LQn5ABIAALEz+DMYR +pobm0zp3yMEAAPSf8akSAJ0AbckFCACGCQJhY/4kixD6QGgdoAwVAPtiQBXgDQUAWI/WY/55AAD5 +jwAMf/76AAjcDAxNFG3ZBQgghgkCY+/JCAXBAQAA7UwMBMjBAAD1n+8BEgCdACrM/m2pBQhAhgkC +ZWP9zAAAbBAGKCAFwZQPAgD5ABeNZ6UBACoWA/VADxESAJ0AiiLm7oQdFiYAACwgc402KiId+4AE +ANAMFQDnIAcuWAqAAPtABAVwCIUA+40ADTAOBQD5QGgd4A81APuNAAywC1UA+W0AD/F3AQDpjjkL +3wKAAKa7Ge5wLLKer+4f7m//gBR7ogCdACuynQl8CizCwwy7AeQWAiWSMYAAJSBzLRYB/EOoFaAE +FQDgUQQCwAUAAPyAAQJf9fUA9JcACnSIAQAoJHMV7l8EzAHsJh0tyASAAOTuXhUDSYAA7hYALdAE +gAD6QAgV4AwVAFgkdY4QH+5SLSEJLCAHKCEiKSEk+9y6BeDMEQDkiAIOYoKAAAyZAowRC5kCmaCJ +IJii/UBmFeALJQDspgUszgKAAAuZApmh5QAVBUhhAAAJAIoprCAqIAcb7k0KKkAKqhALqgKakC0i +APphABWgGIUA9SBGFaADNQDolgMu7gKAAOPdAgSYQQAA7ZYBJMihAAAKQIgDCIoKIIgDBIoKAIgD +AIoFAIkJAIoMexEGuwgutp2J+PcgB8CSAJ0ALGKuZMFtHO4kK2KtLMJ/DLsB47QABYsxgACwne32 +CCWHQYAALiAUs+4ODkcuJBT1wArN0gCdAI8T+eAG6VIAnQDAQMw5KCAUbosEiSJkkUPSQNEPAAAA +ACsgTooisLsLC0frJE4lcBiAAMm08V/wZ1IAnQAsIEwPAgD9f+/yogCdAI0nx+MOrgHuJgIm0MEA +AFiOi+buEBUBEYAAKKAABogKiIzsoActWASAAPpAaB2gDUUAC4AAZa/hiSdknboqmRTKpoqZZK2w +KKAABogKiIzsoActWASAAPpAaB2gDTUAC4AAZa/hY/2PAAD//1gNoAoFAMCgWckSH+3mifj5P/fw +kgCdAMAwKiAUiROzqiokFPU/+VkSAJ0AiieNEiwKAOqsIC7YBIAAWIJQ9UBoHa/8TgAAAACLImSw +o+QSAid1sYAA6iQACdgEgADtVAAKYASAAFiIi9Kg0Q8A6iQACtgEgABYikLSoNEPAP/19A2gCwUA +//poDaALBQDAygycNOz2CC30/gAAY/972iBYCFtj/qKKJ/IAIh3gCwUA+0QAFaAMFQBYhZwZ7cuZ +oC4iAPoDgh3gDBUA+duQBaANFQDopgIvdgKAAOPuAg14BIAA7vYBKVAEgABYjuXSQNEPK3wY6iQA +D2gEgAD8IAYV4AwVAFiO344Q/9tOBe/9AgBsEAQoIBTTD++LHWoYBIAAiif6YGgd4AwFAOqsICno +BIAAWIIS0qDRD4sic75LFO2ZikhqoUgb7ZUssq7Kxx3tliyyrS3Sfw3LAX3AG7Cunkh9wCEvIBTv +JBQv2tQAANogWAgmY/+owLDAigioNOhGCC3/FgAAiSLJkMAg0Q8AwKBZyK+KSGuhrGP/6fpAaB2g +G8UA/AAiHaANFQBYjrTAINEPAGwQCCwiDy8gByghNCcyB/5DRBWn1QEA+b/AFeALFQDpuTkJsASA +AOsiCSpQBIAA+CCGFeAEFQDodzYPT8KAAPciUg3h/wEACwlC8SBwDeKOAQBkgnLBtOx7Hw6UfAAA +LCBP0w/pIE0mYAUAAAwMRywkT/0gFROiAJ0ALCAF+4ATbWIAnQCNIvogBhWv+zUA/WAOSOIAnQAo +IhmOMvnAFQUiAJ0AiTgY7VQc7VDkkitv34KAAJoQmBGsu+jtSxVIDQAAmRPrFgIvpwKAAKhE9eAN +EhIAnQCLEypCnvtAG0viAJ0AihIpQp0qosMKmQHulAAEkrGAAIwpiyoMBT7TDwy7DPVgCdviAJ0A +LRoA9aHyDeD49QArIBb5YBmlIgCdACwhIhntRighByohJCshCfxA8BXqiAEA6aoCDEMCgAAIuwIZ +7T8Y7TANLUDpzAIO6oKAAAjdAp3giSCc4prk+8BmFeAKVQDr7TcczgKAAAqZApnhiC+Y5SwgOPfB +BhXgDQUA/cDmFeAKJQD92l4F4EklAPjAiBWgzBkADJo5mOkM2zmNZZ3qHe0p/MDIFaAJBQDs5gsj +h+GAAAqcEA3MApzsjBGJaJfvme6IaSjmEI1qLeYR7AAVB0khAAAJAIqIZ/jgC+OiAJ0AH+0OCr0C +D90CnebAxfyTphWhCQUA9SHyDeD49QArIBb5YBPFIgCdACwiGYopKyBPKSA45aoIBmAFAADsJhkl +2/0AACskT5op8yAPx5IAnQCLFGWx9sAg0Q+fFZ8WnhfqJAAK2ASAAFiKx44X7xIFJXWRgACMFGXP +24on2zDsEgAlUMEAAFiF3MAg0Q8a7N+KqPdAEMCSAJ0AjBMrQp79YBF7ogCdAIsSKUKdK7LDHezW +C5kB5JIbZWP9AACc2O6UAAzyZgAAYACWKCA58R/4DhIAnQD/++QNoAkVAAAAAADzn+xIUgCdAAnn +DPb9gBXv9foAiTdkndPwANgNoAoVAAAAAAAAAMGze8kULCA6mhD+IMYV4A31AP2AEL1iAJ0A6iQA +CtgEgABYiS7SoNEPAMGtjDcrIQmNOI4y668RDd0CgAAPuwLkuwIJUASAAFiJFMAg0Q8AAAD//1gN +oBqFAOokAAfYYQAA/CBoFeAMFQBYjdxj/v0AAAq4ApjmwNX8k6YV4QwFAHXLDSsgFikK//lgDjVi +AJ0AihRkoV2LaoxnimmrewfMDJxn92DSDeAOBQCxqoxlm2qLZppprOqre3e7AbGqjimbZpplLSA4 +pe6eKfOgCjeSAJ0AiScomRTKgYuZyb0Z7JgosACfFZ8WCYgKiIwssAf6QGgdoA01AAuAAI8ViyLH +o/tf8kjiAJ0AKCE0h2cuIRqKL4sp6Hc2D2fCgAB3ywoLCULIlA4LQmSwtcHU+v4ADrAMFQD8IIYV +r/KaANogWIb0Y/4DiifqrDArWASAAFiM1tKg0Q8AAAD/8ogNoAkFAJ8VKiAHnxaeF/ogAAUwDAUA +WIoijhfvEgUtZbYAAOokAAfYSQAA/AAiHaANBQBYjZNj/dcqIAf8oGgdoaoBAFiJ7WP9ep8V/iDG +FeAKBQBZx38a7FOKqI8V+V/uoJIAnQD/98QNoAkFAMCQHOxNwLoLqzT7gQYV7/d+AAAAAAAA81/6 +MFIAnQAJ5wz2/YAV7/zuAIonnxXvFgYp2ASAAOwSACVQwQAAWIU61qD+IKgV7/oWAJ8V7xYGKVAE +gABYhrz+IKgV7/q2AAAAwVP6QGgdoAsFAPwAAh2gDTUAWH9FKyAFjxaKEPV/2lViAJ0AY/0ZKiAH +nxWfFvygaB2hqgEAWIm8/iCoFe/4ogBsEA6ILycgBS4hNCkgB5Uc8iFmFeAGFQDygGgd50UBAO0S +CyJ7+QAAD285nx0vIRqM1JwT7dABLqgEgAD/gQAOMZkBAO4iCS+3woAA/MJSDaCtMQAODkLxwHAN +4m8BAGRkacH0CM+N/uAlzWIAnQCOIg8CAPXGzA3gD4UALBYB86AhlxIAnQCZEJkZmhLm7AARwA0A +AJga6Ov9HP+CgACm/+8WCCznAoAAqMzsFg4h6AUAAIYZnReKHvTABiISAJ0Aixoqop6GGC8SDvtA +CWviAJ0AJmLDL/KdBv8BZPRqGevtiZj3IAjgkgCdACqCruTr6hUJsYAALoKtJEJ/F+vlBOsB6xYE +JLP9AAD1wAj2IgCdAJZ49cAg3iIAnQCKKYkqDAQ+CpkM9SAIu6IAnQArGgD1YfINoPz1ACsgFv1g +CQUiAJ0AjhEqIDj8CAIdoAcFAPfg5hXhCQUA9qCIFaCqGQDqlzkL2ASAAArLOZsVlxb3wBISogCd +AIsdZLHZYAEBGevEiZhqkTKKHosajBgqop4swsN7o0aLHiuynQy7AZsUjhTq67wUs/0AAO/kAAcB +yYAAlqhl/yVgA438IeYV4AoFAFnG3hnrs4mYGOuw7RIPJI7bAAD//2wNoA8FAMCg+iCGFa/+9gAc +66rAugubNPuBBhXv/wYAAAAA//twDaAPBQCdH/4iBhXgCgUAWcbMGeugLxIQiZiNHxjrnPk/9lCS +AJ0AYAMKwKCaFIsUHuuZwMoMnDTs5ggt9xYAAGAC8Z0fLxYQ6iQAClgEgABYiXAvEhDtEg8ldrGA +AGACfgAqIAedHy8WEPogAAUwDAUAWIlHLxIQ7RIPLXZWAABgBAwAnR/8ICgVr4kFAOkkOyK4QQAA +5wMeB7CBAAAGAmGOV5z4hlSJVq7ODGYMllR86wftFg8kyAUAAJ5XhhaOFZlWBu4CFuuIjBHtIg8p +UASAAObuAgrYBIAAWIfnjR8Y62uJHvszphWhBwUAdHsNKyAWKgr/+2AELSIAnQCKKSsgOKSq6iYJ +KAQKgADzYAQ/kgCdAC8hNIxULiEaiS/vzDYPX8KAAHy7CgoKQsikDgZCZGB0/CAmFaAfRQD5ngAP +8AsVAPohphXgCjUA+iGGFa/1jgAAAAAAnR+KJy8WEIsb6qwgKeAEgABYhGLvEhAtKASAAPwh6BXv +/C4AAAAqIAf8gGgdoaoBAFiI1xjrQPwh6BXv/aoA2iBYhcIY6zyNH/pBKBWv/b4AcZ6HCuwM/Z2A +Fa/+BgAc6z4Y60KLEo4V+gAiHaAJBQALqTgH7gIa6zf31ooF4AYFAAmGOQbuAoYdG+s56fwgIsBB +AADn7gILC54AACYgB4VQBiZA61UBCzKCgAAGVQIKVQIqIQcrISInIQn2QegVqqoBAOy7Ag1TAoAA +CncCKiEklfCFIJfzm/L34KYVo74BAO72Bi3aAoAAC6oC6vYEKq4CgADl1QIB0/0AAOX2ASGMNQAA +bakFCACGCQJhiB4nEgf3E6YV4QYFAPTB8g2g+fUAKyAW+WAKpWIAnQAqIBSjqgoKRyokFPVACH3S +AJ0AyE+MKSsgOKTMnCnzYAknkgCdAI0dZdEAwCDRDyYgTmRryw/oAvhARhWgAIoAAAAAAAAA8x/c +kFIAnQAO/Az9nYAVr+4eAIQcBARHaEIVhhOIVMCRBpY5CGYo9qCGFaACBQDRD4onixvqrCAp4ASA +AFiD+osTjKTA0QvbOQy7KPtAhhXgAgUA0Q8AAOsSDClQBIAAWIdQ0qDRDwD6QGgdoBvFAPwAIh2g +DRUAWIwKY/+UixD6QGgdoAwVAO0SCiXYYQAAWIwEY/98AAAmIDsPAgAPAgBkYHj8ICgVr4oFACok +OwgghgkCY+z2CCrYBIAA7SIPKVAEgABYhzn6IOYVoAsFAPpHZh3v+xoA6xIEKVAEgABYBVNj/uaK +J+s0AAnoBIAA+0QAFaAMBQBYfynSoNEPANogWIU1Y/7XAAAqIAf8gGgdoaoBAFiIQWP+ngAAIxYS +JyEHg1AlIAf2QSQVqncBAOszAQu7AoAA+kDoFeBVEQDnZgIKqoKAAAUzAgozAiohIocvJbEVDKoC +LCEkk/CDIJryl/WW8+72BimeAoAA86YACfPeAQDj9gEu6gKAAO3MAgXYgQAA/eCGFa/MBQAMuwGr +XeMSEibpAQAA7YtBfGAEgACwOAyGEabGdtM69H/vSJIAnQBtiQUMQIYJAmVj/dgAAIsQ+kBoHaAM +FQD7YkAV4A0FAFiLs2P+NwAAAAAA9Q8ADn/+/gAM3QwNSBRtiQUMYIYJAmfv3ggFyQEAAOg8DAdA +gQAA9Z/seJIAnQCwz235BQmAhggCaWP9fAAAAGwQBiggBSMgByQKA/0PQERRMwEAKCAiZIBvAioC +WHzm/UzAgNANFQAsICEY6l0PAgDsMxEGfVaAAKgzKTKeDwIAbpNFKzKdZLA/+kAIFaD+5QAOzgH9 +xgAO8A8FAPxEJh3gCQUA+CAGFeAMBQD4ICYV4A6VAPggRhXgDQUAWIMs9HOmFaACBQDRD8Ag0Q8A +AGwQCiogBfhA8BXgDBUA+GBoHae1AQDoFgAl2/kAAOvLOQoYBIAA6xYFLCAEgAD9QcAEUZkBAMHD +/UAf5SIAnQCNIu/qNB6b5gAA6+oxEbARAADmFgQs94KAAK/u7hYDLNcCgACrquoWByzABIAAhxf1 +AAQiEgCdAIoUJ3KehhOPF/rgB1uiAJ0AJmLDL/KdBv8B7xYGJ5nRgAAlIRuKQocphioFpTb1TwAO +cQsFAHyzAdWgmBoHZgz0wAXj4gCdACoaAPVCMg3g/PUAKyAWmBr9YAX1IgCdAIpC+qAOUqIAnQAb +6iWHQwt3AYsV6BYKJYkJgABgALgAGuoIiqjoFgolDN+AAIsXjBSGEyuyno8XJmLDfLNDL/KdHOn/ +Bv8B5PA5ZVv9AACbyO8WBi/7bgAAYAKbAAAAAPghZhXgCgUAWcUgGun1iqiJG+gSCiUO3wAA//9M +DaAPBQDA8Bzp78C6C6s0+4EGFe//BgAAAAAA//x4DaAPBQCZG+okAArYBIAAWIfEiRvoEgoleamA +AGACLyogB5kb+iAABTAMBQBYh52JG+gSCi15hgAAYAMQAPDgBEBSAJ0ALSEajCmXGPghRhWi7QEA +6RYLLwPOAACXGPghRhWi7AEA6RYLJwM5gACYGukWCy7/woAAdftVDtUM+dPEBaC36QDmQgMt3IKA +AAt5ApkYCGYB9oBmFaAA3gCKJ5kbixDqrCAp4ASAAFiC1okb+CFIFaALJQDrpAItIASAAOqiAiOG +AoAAjCmXGJgamRuOGI8W5a0MClgEgADlzAgJUASAAO1GAiroBIAA7CYJKeAEgABYgvKIGokbjxf7 +86YVoQ4FAHXrCCsgFiYK/3a5CsCh+iCmFa/3jgAAKiAH/KBoHaGqAQBYhzSJG/ghSBWv/4YAjykY +6bWJFqX/nymMQ4tAjRXnxAAEyIEAAPwOAAU36wEA7hYBLojOAAAnIAcHB0EIdwoncqHurRANU8KA +AO2qAgJAQQAA6ncBAdP9AADnxwIBjD0AAG2pBQgAhgkCYYtAwICYEhnpoRrpny8hGoYWHumcJCEH +GOmZ/CAoFaHXMQD/oABGukQBAO3QgConAoAA7MwPJnBBAAD4hgAKNMwdAORmACZgBQAADDwMFOl1 +DV0M6CIAL/oCgACfZpdnnmOdZQykOQmJAulmBCxGAoAA5GYCIdAFAAAIqAKYYSYgFONmCA0gBIAA +5iQUKAQKgADzYAQCkgCdAIgX9ROmFaEHBQD04fIN4Pn1ACsgFvlgBNViAJ0AiBLSgNEPihVkoJ7A +INEPAAAAAADqJAAE2GEAAPwgiBXgDBUAWIqEY//biif8ISYVp9tBAOqsICgECoAA9aAEYdIAnQCM +FisKAezMICnoBIAAWH24mhL6gAgV7/vaAACLFuxNEQlQBIAA/WAARfAMFQBYe4z0gGAVr/2uAGW8 +BPlf4AjSAJ0ALyAg8f/ft5IAnQBj/3UAKiAH/KBoHaGqAQBYhsOIEtKA0Q+KJ9ww6xIAJVCBAABY +gkHAsvtARh3gAgUA0Q8AAAAAAAAA6zQADjgEgAD8YGgd4AwFAFh9ldtA7DQACugEgADqFgIr8ASA +AO8SBilQBIAAWIJf+oAIFe/7IgDqJAAE2EkAAPwAIh2gDQUAWIpIY/7rAABsEAiSFJMVGekeiED4 +IEYVr8sFAOsqAQJwIQAA+iBmFaeIQQDkgcBiUBEAAI8TLSEFqYwswACv3wTMC+/8QC5YBIAA/4AN +iuIAnQD6ICYVoGgBAP4AIh3gDQUABv04C98L690KB9ghAACCFZ4Q+QAARXAMJQDyQQAV4A8FAPJA +gBWgAg4AjRQOVQz/4CAVoAMFAO/kAARABQAA8Q5gDeB+AQCGEyKgAC3RBQQiC+bWCAlYBIAA4hYG +IzEBAAD2QAZ6ogCdAAgGQPIAIh2gDQUABi04C9IL690KAVghAAD3IBAVoAIVAAcjOIcVB2YLF+jz +pzcncKAGMgoGMwvsfAgBmCEAAI7QCwCJBe42LiYAAwCLItIA6qwBJMgFAAD0X/sj4gCdAAUpDA4q +DPugBhWgBxUA9WAoFeAGBQAJdjgIaAgisgAF5QgltgF+WwIiLAHitgAmfRKAABbo2osSHujZ5rYB +B5AFAAAGIgKGFe67AQxuAoAADbsCkmD6gAYV4SwdANEPixD8ICgV7/1SAAAA/E8ADf/8xgCFFRno +qwXFC/gAChXgAgUAsSLlgx4JD+gAAB3ow4YSGujD7W0BB9gFAAANuwKNFepmAQxOAoAACWYC69YA +JhAFAAD2gAYVoSIdANEPAAAAAOoWAS1oBIAA+8BoHe/51gD9jwAN//k+AGwQDPhASBWgCgUA6yAH +KcgEgADygGgd58UBAP2fwBWgBBUA7Ew5DLgEgAD8ISYVobsBAPMbXA3gDAUAmhacFZkTmxSbGx3o +oS4gFhXofBjonugWCC3/goAApf8V6HcY6HjvFgotpwKAAPSAAEJw//UAf+ETAioCWDKIGOhxHeiT +6hYIJSoRgABgABcAAGZjy/jAHyiQ+vUAKSAW+yAZTSIAnQCJiPcgBhCSAJ0AK1KuHOhlZLDRLMJ/ +K1KtDLsBZLDHsJmZiBzogmSzSyzAgCzMN/4haBWkzB0ArDzrFgImYB0AAPXABYISAJ0ALkKe/cAI +K6IAnQCMGitCnSzCwwy7AesWACWZUYAAKnEMiXeZEf1ADpxiAJ0ALHAQ63IDJglBgAD5n/so0gCd +AC5yA2Tg0I8WZfGuhhGPGI0U7hIAKVAEgADm/zYL2ASAAO8WASngBIAAWDA6GOg6Hehc568ubTAE +gABgAvIAAMCgWcNfGOg0iYgd6FX5P/mIkgCdAP/9CA2gCwUAwLDAqgqZNPkBBhXv/M4AAGqRJCtC +nnyzQYwaK0KdLMLDDLsB5LA1ZPP9AAD/AQYVr/0qAAAAAAD8IaYVoAoFAFnDSBjoHYmIHeg/7BIN +JI8TAAD//IwNoAsFAMCwwPoPnzT/AQYV7/xSAAAAAAAAAP/8GA2gCwUAAAAAihjAsZsW+V/5KuIA +nQDA4J4W+V/4yuIAnQDrdAAJUASAAO0SCSngBIAAWDB2/gAiHeAHFQDnFgktOASAAP9AZhXv+7oA +ZLBJjxX+ACIdoAwFAA/sOGTAiogRhhjqJAAL2ASAAO0SBCngBIAA6GY2CPAEgADmFgEg+BEAAFgx +Bujn7x0wBIAA/dAgBe/3/gAAAACLGA8CAPlhVg3gDAUAeaMCLAoB+AAiHeAOBQAMnjjsFgUnfKGA +AOt0AAlQBIAA7RIJKeAEgABYMaX3QGgd4AsVAPohJhXgChUA+uBmFa/9pgCLEBXn8yohB4lwHOfv +/8+uBeqqAQD/QAAVOJkBAOyqAgTAPQAA/CEoFaSIHQDqtgAkQAkAAAg4DI4gmbPoXzkBs/0AAO+2 +Ai92AoAA7m4CBahBAADutgEuDvYAACgSA+iMICGUVQAA6jz+KsgEgABtqQUIAIYJAmErPP4MuxGr +W5sQKCAULCAEo4j1gAihEgCdAAgJRykkFPUgCjZSAJ0AiHIoJhwpcgHoFgctqASAAPMgCjBSAJ0A +8TX4DeAHBQCnZiZGnSogFisK/3uhCusSASlQBIAAWDUQjBllwOPAINEP6xIBKVAEgABYNQsuIBYY +55r9z3gF4P/1AP/f5RxiAJ0AY/yHiBllj9IqcBDbcPxgaB2gCRUA+1/gFaANBQDqnTgJUASAAFgv +LMAg0Q8AAAD6QGgdoBvFAPwAIh2gDRUAWIi8Y/+9AAAd56gt0IDrEgQm6N0AAPpAaB2k3R0A/GAA +RvAMFQDt3Acl2GEAAFiIsWP/jy4gFi8K///f+vRiAJ0A6xIBKVAEgABYNOPAINEPixAMbBGsu/og +BhXv+5IAKCQUjXDxv/i6kgCdAPpAaB2gDAUAWHm69sBgFa/8EgCKJ+s0AAnoBIAA+0QAFaAMBQBY +e9fSoNEPAAAAAAAAAOsSAilQBIAAWAH1+iAIFe/6vgAAAAAAAOokAAxgBIAAWANuiBeJcZoc56QA +DV8CgADrVQgE9U2AAOtUAAlQBIAA/QBoHeAMBQBYAzP3QABD//o6AIon/KBoHaALJQDqrCAp6ASA +AFgvHitwEPl/8TDSAJ0AKXAVCQhFZI4YK3EJHOdhKnEML3ARjicMqgyr/w+ICf3CpBWvzQUA7uwg +JHiJAADt7gEEQEkAAAr4Oah9rs7u7EAm6IEAAO7bWn7QBIAADuowG+dRLaEB/UAEFaH5MQAL/wor +Ihfv8qEuZAKAAAzdAgvuDA/uLK7dqF79wCQd792BAP3ABB3v9nIAixT6QGgdoAwVAPtiQBXgDQUA +WIhQY/4NAAD9rwANP/6aAGwQBCMgACQK7XQxBiIhA7wi0Q+EIYYg8kBoFaAIJQD3ZAACsJRxAPkP +AAxzNgEA9GAAQfNmgQDl5y4cAQqAAABmGvZgAQG9RAEA5SIBAag5AADlIgwBmGkAAAQkLAQzKKMi +0Q9sEAiKIicgB4kwlRX4QtAVoXcBAPFdTA3omQEA+CAmFeD89QB8gR0FC0f7f8AV4AkVAOubOQlQ +BIAAWDSJ81MwDeD89QAa5uuIqBbm6PcADZiSAJ0ALmKuGeboZOHbKZJ/JWKtCVUBZFHRKIz/KKYI +6VQAAo2BgAAb5wMlsIDt5twSqN0AAPggBhXkVR0A5UUIC88CgADmmQgCqA0AAPTgCJISAJ0AKJKe +9QATO+IAnQAlkp0NeAoogsMIVQFkUYgpIBb9IyYNoOvVACowEPtAElRiAJ0AKzELvLvaIFg0NSgg +FCwgBKSI9YAMQReYAQApJBT1IA4uUgCdAIoVHubajREoIQcc5r8Z5tb/oeAV6ogBAP8AABQ0/x0A +6YgCB/gFAAAPTwyYUIsgD+w5/KBmFeeqAQDsVgIt3gKAAOtLAgLIQQAA61YBIcBBAAD5QAlxUgCd +AOhBDWJT/QAAbakFCACGCQJhwICYFOkgBCJb/QAADLsRq1v1IAkJEgCdAIgyKCYc6TIBJdhBAACb +EygWAvMgCbhQBQUAZpFQpUyIFAx9Eabd7NadLBAEgADRDwAAAAAA9wAOkJIAnQAMeRGmmS6SnvXA +DvviAJ0AJZKdDXsKK7LDC1UBZFHNsI2dqGVe3WAAYwAAAAAAAADqJAAJ2ASAAO0SBSpgBIAAWIE5 +0qDRDwDAoFnBphrmeoio+R/yGJD89QD/+VgNoAUFAAAAAAAAAPpAaB2gG8UA/AAiHaANFQBYh6Zj +/7HAUMDqDog0+UEGFa/4rgAd5o4t0IAt3Df64wAV5N0dAO1NCAlQBIAA/aBgFeAMFQBYh5lj/3sA +AAAA+EKGHa/6DgAAAACKJ/0gaB2gCxUA6qwgKmgEgABYes76IIYVr/tKAIsw82AIopIAnQDiEgQr +5wKAAKbMJMad0Q8AAAAAAAAA6xIAKVAEgABYAOVj/jAAAOokAAxgBIAAWAJgiTGLE4gS7KwRDSgE +gADsuwgE9Z2AANog/QBoHeAMBQBYAieIFKWlpUwMfRGm3ezWnSwQBIAA0Q8AAAAAAP/2lA2gBQUA +jTWMNB7mW/pg6BXgCSUA/HAAB7CtcQD7LwAMu4whAPsgBADTzAEA6MwID/gKgAD/gAEGfd0BAO67 +AQZwOQAA7rsMBmBpAAANvSwNzCj9YABFv/W6AAAAAOokAAPYSQAA/AAiHaANBQBYh1Jj/mHAoFnB +RBrmGYioHeYX+R/xCJD89QD/+PANoAUFAMBQwLoLizT7QQYV7/i2ALBLDLsR61sICVAEgAD7YgAV +4AwFAFh4XLNM4hIEK+8CgACm3SzWndEPAGwQBIk3F+YqKzAW+cxCBaMqBQAKKigLtgnoqAgLNwKA +AKhm52cICQEKgAD0+GgVoAwVAODNGgMzUwAA7nLEIzIBAADmQRZ0wCEAAIsymOCek5aSDbsCKHbE +mzLRDx/mFa+vKfLBALEE7fLFLnAKgAAOmQL5+CYV7/71AA7dAw2ZAR7mDeVyxClvAoAArt2Z0I8y +mFDmhgApAQqAAOWGAS4gCoAABP8CKHbEnzLRDwAAbBAKGeYCCSkKKJJ/4hYIKVAEgAD7AAQA0AYV +AOYWCisoCoAA+CCGFeBVTQDi5fkRY7kAABvl6/nLkgWjLQUA7aooDT8CgAApkn+cFRzl8qh36HK5 +JMv9AAD9QABCM5kBAJkZ5EKhJmIRAACsrJwXq6r6IMYVoGMFAPiABAIwAGoAihrAsP3/4h2gYwUA +7FUDBQMJgACbGi1yuAReAQ7dAZ0QAQCHAzZgaD7VihiLF40V+CDIFa//9QDjOQkB8oEAAO4WCSzP +AoAA6YgIDwEKgADiiAgEYwsAAOiCoStICoAAD5kD6UQBBmIBAAALgABj/6SKGYsUsaoKCkMqtn/R +D2wQBBvlxSoiAA8CACuyfx7lw/tPAA1zLwUAD68oDv4IKeLDKOLC/ct8Be/79QALmQPpiwENZwKA +AP2AAEZ/9PUA/YAIFaADFQD5DuAd4A0FABnltBjlo/kAAEZ/LAEA7PwIBf1EgADLKQjqMCnCwy/i +xAmIDOj7E36BCoAAL+LCADgaBIgDCP8BL+bC/aAgFeG7HQDksCxmYMEAAH+3FGP/xAAACeow+Zhm +Fe//hgAAAAAAAP2gIBXhux0A5b/cZmDBAABYNOLAINEPAGwQBCYhCfhCkBXv+AUAJyAV6JgBCzYC +gADomQwLuQKAAAdmAvhChh3gBwUAJzQA+GBmHaAEFQAEZgKWMRXlVSRWrdEPAAAAAGwQBBblhBXl +XtMPpiIFNQIlJoAkIoBnQAttCAUoIoBngAJj//PRDwBsEAQT5XsiNopj//wAAAAAbBAEKCAFJSAH +ijX1/6IdoAMlAP0BIBHRVQEAwCDRDwCIKRnlcJor+wAHrCIAnQAJWQkpnQIqkQgpkQT7IARLogCd +AIoicK5/2iBYd6SLIg8CAAO6AWSvwoonBLsB6yYCJVDBAABYhbfj5TwVARGAACigAAOICoiM7KAH +LVgEgAD6QGgdoA1FAAuAAGWv4YknZJ+HKpkUyqaKmWSvfSigAAOICoiM7KAHLVgEgAD6QGgdoA01 +AAuAAGWv4WP/XAAA//9YDaAKBQDaIFh3lysgIuq7DAlQBIAAWHjh2lD6ACId4AwFAFh6mosiA7oB +83/7JmIAnQAsIAcEvQGdIvV/+NChzAEA68wfKVAEgAD8AAId4AwVAFiGN8Ag0Q8AAAAA6yAiKVAE +gABYeM0qIAXB436hDGioKYsi82AEBX/8ZgAvIDrAj3j56vpAaB2gCwUA/AACHaANJQBYeARj/9cA +APpAaB2gCwUA/AACHaANJQBYd31j/78AAGwQCogrHeUMLiAhizf8YMgVoP/lAA/uAS4kIQ3MAQy7 +DOuJCHjIBIAAwCDRDwMAhgkCYZsVKCAFJSAHx034IQYV4AMlAP0cAEHRVQEAiimbK/tAB9xiAJ0A +G+UEC1sJK70CLLEIK7EE/WAEY6IAnQCMIg8CAHDOf9ogWHc6iyIPAgADugFkr6CKJwS7AesmAiVQ +wQAAWIVN4+TSFQERgAAooAADiAqIjOygBy1YBIAA+kBoHaANRQALgABlr+GJJ2SfZSqZFMqmiplk +r1sooAADiAqIjOygBy1YBIAA+kBoHaANNQALgABlr+Fj/zoAAP//WA2gCgUA2iBYdy0rICLquwwJ +UASAAFh4d9pQ+gAiHeAMBQBYejCLIgO6AfN/+yZiAJ0ALCAHBL0BnSL1f/fAocwBAOvMHylQBIAA +/AACHeAMFQBYhc3AINEPAAAAAOsgIilQBIAAWHhjKiAFweN+oQxoqCmLIvNgBAV//GYALyA6wI94 ++er6QGgdoAsFAPwAAh2gDSUAWHeaY//XAAD6QGgdoAsFAPwAAh2gDSUAWHcTY/+/AABsEAQc5LEr +MgQpMBb9YAQFtZkdAPUgCACSAJ0A6uSsFIiBgAD/yVYFr/3lAOTkgxSktQAALKF+aZUdfLMKKswE ++2AIo6IAnQArIAawuwsLR+skBiWCwYAAwCDRDwAsoX7sswx2eBEAAP9gB+PiAJ0AKCAGsIgICEfo +JAYsfuYAAIkniyIqmRQNuwGbIouZZKC2KLAABIgKiIzaIP1g8BWgDTUAC4AAwCDRDwAAiyKKJw27 +AesmAiVQwQAAWITayawooAAEiAqIjOygBy1YBIAA+kBoHaANRQALgABlr+GJJ9MPZJ9yKpkUZKBk +iplkr2cooAAEiAqIjOygBy1YBIAA+kBoHaANNQALgABlr+Fj/0YAAAAAAAAA6iQACdgEgADsRAAK +6ASAAFh4IcAg0Q8A6iQACdgEgADsRAAK6ASAAFv/RcAg0Q8A//0UDaALBQD//mQNoAoFAIg3IuJ/ +CYgR+EAAQT/7kgCINyLifwmIEfhAAEE/+/IAbBAEGuQ+KKLfZIALCeowK6LgC5kMZ5AB0Q9YekXR +DwBsEAQd5E4nIAcc5CT+QQQV4OcRAA7cOZwwiCD7yCoF4AolAPpgRhXgGQUA6TYDLEYCgAAKiQL4 +YCYV4XcBAOYgeSu8AoAA9+YAD3ANBQD8BAIdoAs1AOnkOhMCOYAAnTWcMwuKAhbkN5oxGuQ3Bu4C +JiEJnjSaNgRmAiIgB505lTv4xgALcSIBAOY2CikUAoAAAv8CCf8C7zYILZAEgADRDywhCCshCZ01 +lTcHzAIEuwIJuwIJzAKcNOs2Bi0QBIAA0Q8AbBAEGOQKHuQcLCAHHePzGeQe+kEEFeD8EQD/zQAO +8cwBAO02AC5kAoAADLsCCbsC44CAKbAEgAAd4938QAgVoA4FAJ5l7WYCIbjdAAD6wIYV5HcdAOp8 +/y5mAoAA7HwCDVcCgADsZgElU+EAAJpjAgSJmWaTZwYgi+UhCSRD9wAA9MFmFaQzHQDlZgorkASA +AOgABQMowQAAbTkCBQJh0Q8AAABsEAYd4/kLKxGtsyoyfxnj9xfj2IigwED44ABE8AYVAOm5CAQB +qYAALDJ4LzJ7+YAFnGIAnQBl8RgsNnwrMnkrNnvdQA3kFgECAJSgDeQWwMn8QAX8IgCdAC8ye8HA +7ePkF4OxgAAiMnwqIQSOIPPh/g2mugEAJDZ89G9mFaAAHgAuNnztrwEFw/0AAAj/Au8lBCWMYQAA +IjJ8sMzvMnshAQGAAMnIY/+/AADaIFh6XWWgxCohBP9BIAwWmgEAyJnRDwDaIFh6UNEPANogWHoS +0Q8AAAAAAAD6QGgdoAsFAFh64dEPLiz46tKILwEKgAD8wAEF3/z1AAy7AwuqASrWiFnEAiQ2fCQ2 +e/pv6BWv/NIAAAAV43kvUFhk8GpZuf9Yecooct/TD8iBWHmfKVBYZJ8lWHmZyK4V468sUmuwzOxW +ayYCyYAAWHkhY/8KAAAAABzjqf5viBWgClUA/G9IFeALRQDtFgAha+UAAFnBFfpv6BWv+yIALjJ7 +4jZ8L3oOAAAiNnvRDx/jnS/yrnH2i/arBh2v/iIAAAAAAFm5xvqtZhWv/pIAbBAEFOOVGeOP6ONw +GV7CgACktCNCf6mI6LgIAYIhgAAqMgB4qQIqQnsc44crMQQqRn8MugHqNQQp0ASAAFh6D86pKTEE +/yEADBbZAQDI19EP2jBYegPRD9owWHnF0Q8A+kBoHaALBQBYepXRDyNGf9EPAABsEATwYPAN7/n1 +AIgiCTkDCYgBKCYCiicPAgAPAgAqrDBYg7nj4z4VARGAACigAAOICoiM7KAHLVgEgAD6QGgdoA1F +AAuAAGWv4Ykn0w/LkiqZFMqlipnJrCigAAOICoiM7KAHLVgEgAD6QGgdoA01AAuAAGWv4dEPAAAA +//9cDaAKBQDRDwAAbBAIHeMzG+NXFuNV9cYgBaAYxQDjLOgl04EAAPhADcwnMwEADDURpFXoUp4p +ZsKAAKbEKUB/+QAQU+IAnQAoUp1kgf+bEeoLHg1IBIAAmRAKIIYLAmULAmMNAIcJAmEJAmHtxwgJ +AQqAAP/GfgXgDhUA4+MIH3AKgACeE6/P/iCGFe//9QD/1wAPcAZFAP4gRhWgAMIAAAAAAIqZyawo +oAADiAqIjOygBy1YBIAA+kBoHaANNQALgABlr+EpQiBkkO8tQHwsQH0e4ykN2wkHuwru3ggF2GMA +AIqyLuCAZKE4/cf+DaAIFQAvCgANjzgP/wkH/wov/Rgv/Jwv8hssCgEM3APx4SAN58wBAAzLCQe7 +CuxEfCXYYwAAwND8j6Yd4AwFAI2w71KeJvP/AAAu4P//4AR7ogCdAC9Snfbf4BWg+PUA8efADedm +AQB4YXTqEgQmQAUAAOhEfSbj4QAAWHmSiRPSoOsSAiSAaYAAKqICC6oBKiYCiicqrDBYg0DJrCig +AAOICoiM7KAHLVgEgAD6QGgdoA1FAAuAAGWv4YknZJ8XKpkUZa7v//u4DaAKBQCMEYsQDICGDGCG +CwJpCwJn0Q+PEY0QLkR/D8CGD6CGDQJtDQJr0Q+bEeoHHg1ABIAAmBAKAIYLAmMLAmEN4IcIAm/o +7AAJ0ASAAFm5J2Svr+3isxmvAoAA5FUICWbCgAD3gABCP/kyAMCx+7cADfAMBQD8j6Ydp7sBACtE +fAu7CfdgAQXwDAUA+2MAJe/7mgAAAAtghgtAhgoCZwoCZdEPAABsEAQY4n0CA0cMMxGoMysyhBni +iyiwAIqxCYgKCiGMAgo+iIwDAj78QGgdoA0lAAuAACI2hNEPAGwQBBTibwIDRwwzEaQzJDKEikEm +QAAoQAj6mGgdoKklAAIFPgMCPnmBJRjidwhoCoiM6lQAClgEgAD8QGgdoA0lAAuAACI2hNEPAAAA +AAAA6yQAClAEgABYeVnzQGgdr/8uAABsEARZvKYS4lUT4nUMAgApIoIJGo4DqAqIhAuAAGP/6wAA +AABsEAQT4oQjMX6iMtEPAAAAEuKTA+gwBO4wBbEwkyCUIZUiEuKPE+JShCAEMwKTIBLijcA6hCAE +MwKTIBLii8AwKDdAKDdEKDdIKDdMIz0BcjPtEuKGwDCTIMcvE+KFAyMDEuKEhCAENAGUIBLig4Qg +BDQBlCAS4oGEIAQ0AZQgEuKAhCAENAGUIMcvwDEDIwMS4n2EIAQ0AZQgY//8AAAAEuJ6gyADExQP +MxGTIBLid8AwIyYAV//WEOJ2kQCSAZMClAMR4nSCEAHqMKIRAfAxwEAE5BYAAgAR4nCCECMaAAMi +ApIQEeJtwCGSEATkMYQDgwKCAYEAANIwASMAAAAAEOJokQCSAZMClAMR4maCEAHqMKIRAfExwEAE +5BYAAgAR4l6CECMqAAMiApIQEeJewCGSEATkMYQDgwKCAYEAANMwATMAAAAAEOJZkQCSAZMClAMR +4leCEAHqMKIRAfIxwEAE5BYAAgAR4kyCECNKAAMiApIQEeJPwCGSEATkMYQDgwKCAYEAANQwAUMA +AAAAAFyUAV2UAl6UA1+UAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAABckAFdkAJekANfkABTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAnJQAHZABnZQCnpQDn5QECJQFCZQGCpQHC5QAQwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyQAZ2QAp6QBx2QA5+QBHiQBXmQBnqQB3uQAFMAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADclAAdkAHdlALelAPflAQElAUFlAYGlAcH +lAgIlAkJlAoKlAsLlABDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3JAB3ZAC3pALHZAD35AEtJAF +tZAGtpAHt5AIuJAJuZAKupALu5AAUwAAAB///UAA0jEQ//4KAAAAAAAf//2IANMxEP/+CgAAAAAA +H//90ADUMRD//goAAAAAAAD0MAoAAAAAAPQwCgAAAAAA9DAKAAAAAGwQCCcgB4giFuEr+8JOBeF3 +AQDlgPFr1wKAABjhJC6AgOaqCAdw3QAA/VPIFaTuHQCuTu3hHxdwCQAA/4AIS6AJpQAqop0LfAos +wsMMqgHqFgIlB/mAAIjY9wAI8JIAnQAvYq7s4RUXhcGAACpirSzCf+yrAQRz/QAA/UAFJiIAnQCe +2P1ABS4iAJ0ALyAUpP8PD0cvJBT14AeuUgCdAPggSBXnhQEA+QAHcVIAnQDoPBAiDD0AALBKbakF +CACGCQJhwFCIEo0y7SYcIkv9AADrMgEszwKAAKmImBPzYApAUAoFAOoWAC2LSgAAixDrSwgL5wKA +AObMCAXb/QAA68adKpAEgADRD+okAAnYBIAA7EQACugEgABYe0HSoNEPAMCwCYw07NYILfseAACN +ImXf1fpAaB2gG8UA/AAiHaANFQBYgbJj/7///AwNoAoFAAAAjiJl77AtgIAt3Df64wAV5N0dAO1N +CAlQBIAA/aBAFeAMFQBYgaVj/4zAoFm7lx3gzIjY+R/2wJAJpQBj/5zaIFv7AWP/BgCOJ54RiOn7 +wqQV78kFAOXpFCdggQAACckB6b0IClcCgADqVQwEQEEAAJjpCFUy5eUUJukBAAD9AAg64gCdAGir +PairK7zw+6AE0+IAnQDvEgIiDHUAALBObekFCACGDwJhK8IBC6sI5ckEJdvBAAD9YAbMYgCdAOvG +AS3ABIAAZFCp9QBoHe/6lgAAAAAAAOokAA7gBIAA7BYELFgEgABb/FaLMYgTjRTqFgAtZwKAAOyI +CAX0/YAA2iD7AGgd4AwFAFv8HY0Q7a0ICpAEgADtTQgL9wKAAObuCAbr/QAALead0Q8I3Qz6IEgV +5P0dANMPbfkFCCCGCwJjKxIC708MBMEBAADtuwgHjEEAAC78/23pBQhAhgsCZS/JBA2oDKiYKIww +6MYBL/rWAAAqnECawfuABhWgCAUA+YCEHa/9FgALiAz5wSYVr/vaACicQPmAJhWv/LIAbBAEHeBy +GuBzHOBxLdK4KqF/LMKPo93qOgwO7kKAAP2AAEZwCwUAK8QEK8QFWRXQ+kBoHaALBQBb/MrRDwAA +AGwQBBjgZSmCfyowBy2RAi6RBP0gpBWgDwUA65IAJokRgADu7P8mk/0AAOKVAi93AoAA7rsIDmcC +gAD9bwANsADGACuRBS2RBLG7/7/gFa+7AQDrlQUvdwKAAP1gBrxiAJ0AjJDuzAgN3wKAAAvLDAsA +hw/fYOsABwbzJ4AAHuBHKZEFK+J/CZkRqdnt4n0lhhGAAIzRi9CbwIvQnLGf0J/RK+J/sLsr5n/1 +oAYcH7kBAIzZ+aMAFa/JBQD5AAQEfxIFAKLSKyY6/6IEHeVJBQDp1REkIQEAAOTWBy0vAoAA5NYG +KlgEgAD1gATkIgCdACXVEOhYCAR4GwAA7IxAJ/oBAAD94ARjogCdAMky6UQABQCBgABtqQUDAIYJ +AmErIkKrWP8ABYxiAJ0A6CZCJpPhAADRDy+VBf/8mA2gCwUAwKX9wC4FoDslAFm9YMAg0Q8t4oCM +0YvQm8CL0Jyxn9Cf0SvigrC7+9BGFe/8+gAAwMD7D+gVoA0VAFhznMAg0Q8AAAAAAAAA79YJJpPh +AADRDwDLMPpgaB3gbEUA7Kw2CnAEgABtyQULIIYOAmP4YABF8F5FAH6hDS+srNMPbfkFC0CGBAJl +KY376SZCJpPhAADRDwAAAADkJkImk+EAANEPAABsEASCIwICQdEPAABsEASFI4MgFN/r+ECEFaFV +AQDq3+karsKAAORUCAGAuYAA+wAEBDaYOQAJiAIoJQQiQn/RDx3f4BPf4R/f4SZCfishBC5Cf5Jg +liGj//1gBAX2yzkADLsCr1/vJgAnKAUAACVGfyJGfuslBCqQBIAA0Q8AAGwQBIogZaBQHd/S6iID +KfbCgACu3f2v6BXgDBUA/IBABjGqAQAGqgINyCwI3SgnJQXtzAwEWAUAAP1tAAw/+8UA66oBDE5C +gAAJWQIDqgKaIwmIAiglBNEPjyMb374PD0EL/hGr6y2yfxnfuCyyfnLZGdnA8yPeDaAMBQDAwCy2 +fyy2fvpACBWgAEYA2MDzDEYNoAwFAHLRHI0hmtCOICmyfZ3hnCDsJgEky/0AAPlvphXv/VoAGd+k +GN+kqYio6HihIOq2fy+BLgAAza0qsn1qohgtsnv9b+YV4ABKAAAAAAAAAOy2fyf/KYAA+kAIFa/+ +pgAc35WIIayZqen5DwAM8AwFAAnIOPlvxhWv/ioAbBAE9b8iBeAGFQD0QGgdoAI1APaAQAMwAB4A +ALAiKFJ/6GP3cquBAADRDwBsEAT0Q6gVoyMBAPJaAAk4Ux0ABCIKhCaCIQVEKApEEaQi0Q9sEASI +JxvfffUCghXvxwUA4oIJKTAEgADpgRUkIIEAAOdEAQKpAQAA5YUUIRMBAADihgkiIQEAAPRBUg2g +CkUAApIIIoYJCwCH7d9tGSgEgABtqgIFAmGdIIxgwNTjJgIuZgKAAA3MApwh0Q9sEAouIgIqIhgP +AgDx3YwN5zUBABzfYS4iAP1ACBXgOwUA/0CwFeAKVQBZvJwqIhIkIAf6PgAEMAc1APUADFiRRAEA +CshR9QAMcJIAnQAc31P+TTAVoAsVAPh/wBXhakEA/MBoHeAKVQDpuTkPRwKAAPjGAAswOwUA6RYA +K3gEgABZvIYc3zHq3zMaSASAAPSAB2oSAJ0ADEsRqrstsp73oAvp0gCdACuynQxNCi3Sww27AekW +CCWKSYAALCEHHd84DAxK7984HmcCgAANzAKcsBzfNf5ACBWjPQUA/WDmFeAJBQCZuOm2BitXAoAA +mrn9YKYVoBqFAJqzGd8s7+4CD0YCgACetCm2AgeIAii2ASgSCBnfEO/fJhxHAoAACYgIJ4adLiIS +KiIQD+4C7iYSKVgEgABY5Lb0YARREgCdAIonDwIADwIAjaz7RgAVoAsFAOreDAbrIQAADts5WH8G +/b4qBaA7BQDtJAANGASAAP5gaB2gClUAWbxI0jDRDwAe3vSN6OQWCCgECoAA96AEuJIAnQAMmxGq +uy+ynvfgBUnSAJ0AK7KdDJ8KL/LDD7sB5LCXZsP9AACY6OkWCC335gAAYAA5wCDRDykaAAmqAvpC +RhWv+b4AKyoAC6oC+kJGFa/5sgAAAPoAoh2gOwUA7N7yGWgEgABZvChgABQAAOokAAJYYQAA/AAC +HaANNQBYf6ZoMkLAINEPAAAAAAAA//o8DaALBQDAoFm5lB7eyBreyY3oHN7EiRj5v/q4kgCdAP/9 +1A2gCwUAwLDAygzcNP3BBhWv/ZoAH97OnxSOINog/b2sBeAMFQDtFgYvdgKAAOzuAgDYQQAA7hYF +KugEgABYfqDAINEPAAAAbBAYkhCOIBXey4kjiyGKIioWIisWJPgkZhXgBBUA9CDmFaAIBQD4IKYV +oAxFAPwhRhWgDTUAnRn0IMYV4A8lAJ8Y9b16BeAPpQD+IgYV4A21APwiJhXgDMUA/CJGFaAIhQD4 +IcYVoASVAPQh5hWgCXUA+CGmFeALVQD6IWYV4AplAPohhhWgC9UA+iJmFeAK5QAqFhT1vVIFoAn1 +APgiphXgCEUAmBSGFisSJIkVJ2F+LBIiImF/B5koL1CAqSn4nYgVo5kBAAOZCu6SAC9QBIAAJmI+ +LRIjqO4LYACOFywSJC0SIgfuKC9Qga4u+J2oFaPuAQAD7gqO4CoWFuoSIy1YBIAAqO4LYACOGCwS +Fi0SJAfuKC9Qgq4u+J3IFaPuAQAD7gqO4CoWF+oSIi1YBIAACO4IC2AAjhksEhctEhYH7igvUIOu +Lvid6BWj7gEAA+4KjuAqFhjqEiQtWASAAKjuC2AAjhosEhgtEhcH7igvUISuLvieCBWj7gEAA+4K +juAqFhnqEhYtWASAAKjuC2AAjhssEhktEhgH7igvUIWuLvieKBWj7gEAA+4KjuAqFhrqEhctWASA +AAjuCAtgAI4cLBIaLRIZB+4oL1CGri74nkgVo+4BAAPuCo7gKhYb6hIYLVgEgACo7gtgAI4dLBIb +LRIaB+4oL1CHri74nmgVo+4BAAPuCo7gKhYc6hIZLVgEgACo7gtgAI4eLBIcLRIbB+4oL1CIri74 +nogVo+4BAAPuCi7iACoWHeoSGi1YBIAAqO4LYACOHywSHS0SHAfuKC9Qia4u+J6oFaPuAQAD7gou +4gAqFh7qEhstWASAAKjuC2AALhIQLBIeLRIdB+4oL1CKri74nsgVo+4BAAPuCi7iACoWH+oSHC1Y +BIAACO4IC2AALhIRLBIfLRIeB+4oL1CLri74nugVo+4BAAPuCi7iACoWIOoSHS1YBIAACO4IC2AA +LhISLBIgLRIfB+4oL1CMri74nwgVo+4BAAPuCo7gKhYh6hIeLVgEgACo7gtgACwSIS4SEy0SIC9Q +jQfuKChC+a4u+iBmFaPuAQAD7gqO4OoSHy1YBIAAmxGo7gtgAIwRLhIULRIhL1COB+4oKEL6ri76 +IEYVo+4BAAPuCo7g6hIgLVgEgAArFiOo7gtgAC4SFSwSI40TB+4oL1CPri74n2gVo+4BAAPuCo7g +6hIhLTgEgAAnFiLo7ggL2ASAAAtgAI4RKhYkKRISLRIVjxUrEhMsEhToEhEn+EEAAO8WBSXYQQAA +6xYTJmBBAADsFhQkQEEAAOgWESboQQAA7RYVJMhBAAApFhKNH4kciBuMHosd7xIQJEBBAADoFgsm +YEEAAOwWDiXYQQAA6xYNJ/hBAADvFhAkyEEAAOkWDCboQQAAnR+JFo0ZjxrrEgciIQEAAOwSCCbo +QQAA7RYJJ/hBAADvFgoiqEEAAO8SBCZgQQAA7BYIJdhBAADrFgckyCEAAOkWBif7/QAA7xYEL+Im +AACJEI8TixKOkIiTjJKNkauIp8yq3a/unpCdkZySmJPRDwBsEAQpIhX4oAAE8Dh1AOmMDAEgQQAA +8yAART+LBQDrpBAlUEUAAPkABdNiAJ0AKwoAWbVPLCIVKyIU7c0RCUAEgAD8QkYV7oA9AP1rAA2w +CTUA+kJmFeAKJQBtqgyOhA4Oju6GBCRAEQAADwIA0w/TD22aIemCBCRAQQAAioGLgoyDCQmOCgqO +CwuODAyOmYCagZuCnIPrRAAJUASAAFv+toogiCKJIY8jCAiOCQmODw+OCgqOmiCfIykmAegmAilA +BIAAGd19AgCGAwJh+AAKFeAJtQBtmgIIAIrRDwAAAAAAAAD9gQAVoAsFAFm1IPhAaB2gCUUA0w9t +miHpggQkQEEAAIqBi4KMgwkJjgoKjgsLjgwMjpmAmoGbgpyD6iQAClgEgABb/pTaQP/7/A2gPIUA +AGwQBikiFfhCiBWgRgUA0w/4gABFdZkBAAlmDHSrAbGIKiYVBioM6CYUJVFBAAD2gAezogCdAOs0 +AAtgBIAAWbT0+EBoHaAJRQDTD9MPbZoh6YIEJEBBAACKgYuCjIMJCY4KCo4LC44MDI6ZgJqBm4Kc +gyUsEOokAArYBIAAW/5xBkcM9uAFjtIAnQDmNAgK0ASAAPbgaB2gAwUA5BYAKkAEgAD4yGgdoAlF +AAoCZwhAhgoCZQgghgoCYwgAhuoMAAlABIAAbZoh6YIEJEBBAACKgYuCjIMJCY4KCo4LC44MDI6Z +gJqBm4Kcg+okAArYBIAAW/5U6lQAAZgFAADmbMAiIQEAAO9tmmpABIAAixAKPBELywjsfAwK0ASA +AFm0vNEPAAAAAAAA6zQACmAEgABZtLfRDwAAAPZgAEYwAwUA/CAGFa//JgBsEAQY3REZ3Q8a3Q0T +3RCTI5gimSH6QAYVoAsFACsmFSsmFNEPAAAAbBAG3iDk4hAqYASAAOdCByvQBIAA+7n8BeAYNQDj +QhUpkASAAOdyDiL76QAAePsnGNz+CPgKiICaE5wS7hYBLAAigAAAkxAqsp3sVAAJWASAAFm2jWSl +x/KCphXgAgUA0Q8AAAAAK+ISC5tS7hYBJf9BgAAa3OfjFgApWASAAOqivyrgBIAAWbaAZKV6Gtzg +2yDqosEq4ASAAFm2eyN9BeSmz2GaAQAAGtza2yDqosMq4ASAAFm2dPdH4A3jhgUAGtzU2yDqosUq +4ASAAFm2bmSmxBrcz9sg6qLHKuAEgABZtmn7QEKIEgCdACsw5cFY9WAr4GIAnQBptyElNOWLEPqC +phXgAgUA0Q+TECqylexUAAlYBIAAWbZcZKcCixD6gqYV4AIFANEPAJMQKrKj7FQACVgEgABZtlRl +rxr6IGgdoAu1AFjhMPoAIh3gAwUA6rM4BQDhgADqEgIrWASAAFm0wMipHNyxjREMrDYs1hdlMyWN +EPyCphXgAgUA0Q8uQG5k7tKTECqyuexUAAlYBIAAWbY9Za6/+iBoHaAbZQBY4Rn6ACId4AIFAOqy +OAUAqYAA6hICK1gEgABZtKosfQMqxShlItGNEPyCphXgAgUA0Q8AAJMQKrKr7FQACVgEgABZtilk +orca3IrbINMP6qKXKuAEgABZtiRlrlr6IGgdoAtVAFjhAPoAIh3gAgUA6rI4BSfpgADqEgIrWASA +AFm0kCxAb/GAJz7SAJ0AZKTfihP6AKId4AzVAFjg3dKg0Q+TECqysexUAAlYBIAAWbYOZa7H+iBo +HaAbJQBY4OpkojUrQG5kt2/qEgIrWASAAFm0fCxCFgrMNixGFosQ+oKmFeACBQDRD5MQKrKv7FQA +CVgEgABZtfxkojMa3F3bIOqiqSrgBIAAWbX3Za5t+iBoHaAL5QBY4NRkodvqEgIrWASAAFm0Zyt9 +Aiq1FIsQ+oKmFeACBQDRD5MQKrKh7FQACVgEgABZtehkoioa3EjbIOqirSrgBIAAWbXjZKOHGtxE +2yDTD+qimyrgBIAAWbXeZa4H+iBoHaALdQBY4LpkoXUrQG5ktuMa3DmLEuqi5ytgBIAAWbXUZaZG +K0BvwMgMuwIrRG+LEPqCphXgAgUA0Q8AAJMQKrK37FQACVgEgABZtclkoe8a3CrbINMP6qKZKuAE +gABZtcRlrZ/6IGgdoAtlAFjgoGShDStAbmS2ahrcH4sS6qLnK2AEgABZtbpkpnkrQG8sCv0MuwEr +RG+LEPqCphXgAgUA0Q8AkxAqsp/sVAAJWASAAFm1r2ShtxrcENsg0w/qopMq4ASAAFm1qmSi2hrc +Ctsg6qKzKuAEgABZtaVkrF8a3AbbIOqiuyrgBIAAWbWgZaxMGtwBixLqotUrYASAAFm1m2WkUosR +K7ISC5lSyJlokgf5IA9h0gCdAIwRK8YS8oKmFeACBQDRD5MQKrKP7FQACVgEgABZtY5koXoa2+7b +IOqikSrgBIAAWbWJZay0+iBoHaALJQBY4GXKohrb5osS6qLnK2AEgABZtYFlrJSKE/oAQh3gDNUA +WOBH0qDRD8Ag0Q8AAAD6IGgdoAv1AFjgV2Sv6uoSAitYBIAAWbPr6xIAI+ALAAAqxRX6gqYV4AIF +ANEPAAD6IGgdoBsVAFjgS2Svui1AbmTVBilAb/E/4ZeSAJ0A8T/hV9IAnQDqEgIrWASAAFmz2S5C +FwruNi5GF4sQ+oKmFeACBQDRDwD6IGgdoAulAFjgOWSvci9AbtMPZPR26hICK1gEgABZs8soQTT7 +AA8CogCdAIoT+gFCHeAM1QBY4BjSoNEPAAAA+iBoHaAbVQBY4ClkrzLqEgEqWASAAOwSAitoBIAA +WN+IixD6gqYV4AIFANEPAAAA+iBoHaALlQBY4B1krwIpQG5klBka252LEuqi5ytgBIAAWbU3ZaJc +K0BvjRD8gqYV4AwVAAy7AvqN5h3gAgUA0Q8AAAAAAAAA+iBoHaALFQBY4Atkrroa24yLEtMP6qLn +K2AEgABZtSZlqymKE/oAIh3gDNUAWN/s0qDRDwAAAADqEgIrWASAAFmzlPVAFfKSAJ0Axy/RDwD6 +IGgdoAuFAFjf9/oAIh3gAgUA6rI4BQFJgAAsQG4PAgBkw4Ma23vrEgIrYASAAFm1DmWibi1Ab8Do +Dt0CLURvZS41jxD+gqYV4AIFANEPAOoSASpYBIAAWN/tZa+cKzDlY/pzAAAAAPogaB2gGwUAWN/d +ZK4CKEBu0w9kgvXqEgIrWASAAFmzbylCGIsQK0YVCpk2+IMGFeACBQDRDwAA+iBoHaALNQBY389k +rcoa21CLEtMP6qLNK2AEgABZtOrj21UdBy4AAIsRK7ISC8lRyJlokgf5P/kR0gCdAI4RjBADvQEt +5hL8gqYVoAIFANEPZS2EjxD+gqYV4AIFANEP6hICK1gEgABZs04qRTSCEPKCphWgAgUA0Q8lfQT0 +sAAV4AsFAPqgaB2gjAUAWbLf6hICKtgEgABY3+srMOXAxAy7Avp8Jh2nuwEA+nymHe/l/gAtMOX6 +IEgVoA4lAA7dAu005StYBIAAWbM2KzDl+nyGHa/lbgAAihJZpkkvMOJ/qRSKElmmRtyg6hICI9gT +AABZtLVkobfAov22PgWgOwUAWbhIxy/RDxrbEYsS6qLPK2AEgABZtKxlrj6LESuyEgvJUWiRCmiS +B/k/8WnSAJ0AHtsSA70BDt0CjhGMEC3mEvyCphWgAgUA0Q+KE/oBIh3gDNUAWN9m0qDRDwAAAPog +aB2gC0UAWN93ZKxqGtr4ixLTD+qizStgBIAAWbSS49sAHQVmAACLESuyEgvpUciZaJIH+T/uEdIA +nQCOEYwQA70BLeYS/IKmFaACBQDRDxra54sS6qLXK2AEgABZtIJlrZaLESuyEguZUmiRCmiSB/k/ +7CnSAJ0AH9rqghHvvwID6BcAAO8mEibqAQAALNDlwOEOzAIs1OXygqYV4AIFANEPihP6AQId4AzV +AFjfONKg0Q8jfQUjPIArMOXAwQy7AgsLR/p8ph3v4BIAAAAa2siLEuqizytgBIAAWbRiZa0XixEr +shIL6VFokQpokgf5P+gx0gCdAB3aywO8AQ3MAo0RLNYSixD6gqYV4AIFANEPAAAAAAD24ABDMAsF +APrAaB2gjAUAWbJgwVDqEgIrWASAAFjfbCsw5QW7Avp8Jh2nuwEA+nymHe/eEgAAACsw5cDIDLsC +CwtH+nymHe/dvgCKE/oA4h3gDNUAWN8I0qDRD4oT+gICHeAMxQBY3wTSoNEPihP6AUId4AzFAFjf +ANKg0Q+KE/oBIh3gDMUAWN770qDRDwCKE/oBAh3gDMUAWN730qDRD4oT+gJCHeAMxQBY3vPSoNEP +AIoT+gIiHeAMxQBY3u7SoNEPihP6AMId4AzFAFje6tKg0Q+KE/oA4h3gDMUAWN7m0qDRD4oT+gDC +HeAM1QBY3uHSoNEPAGwQCCMgB9og8iAAAfALhQDtFAAJ4ASAAFh72O3agBUGyYAAjCANzAKcoBva +fYon6BIAKc8CgAALmQjolgAlAJGAAC6iDC+sMP/ABOViAJ0A8UXADeADBQAjpRT7RAAV78wFAAy7 +AeiiDCXZAQAAm6nrpgglSMEAAHmJXxzaQv200gXv/vUAnqCTJ+rTenVYIQAALcJ9Gdpkm9GZoyjC +fSimAi/Cf+vGfSf4BQAAL8Z/IyQEIyQFkyIjJCAjJCEjJCIjJCOTKZMqkyuTLCMlGvJDZB3gAgUA +0Q8AANogWPNV+kDoFa/+XgDaIFjzUtogWPNGiidj/1gAjiJk4FMFD0do8mjAINEPAC7CgOvmASZo +CwAAnaMpwoCZoijCguvGgCRABQAAKMaCIyQEIyQFkyIjJCAjJCEjJCIjJCOTKZMqkyuTLCMlGvJD +ZB3gAgUA0Q8rIAfaIPogAAXwDAUA+2MAFeANBQBYetdj/5Af2hCfFI4g2iD9tFoF4AwVAO0WBi92 +AoAA7O4CANhBAADuFgUq6ASAAFh54cAg0Q9sEASIImWAnyYgBxfZ8QYGQeoyBStHAoAAp4grgp4k +rB/5s9AF5EQdAHSzfyiCnQlrCiuywwuIAe2EAAQDwYAAHNnzDACHbUkCCAJhiDQe2fOe0CkiABzZ +9OrWAybYQQAA7NYCLM4CgADpSQIB4IEAAOnWASlQBIAAC4AADGgR9wAARHf1AQDkhp0nlHUAAIon ++gFCHeAMBQD7RAAVoA2lAFht4NKg0Q/AINEP//4gDaAIBQDqJAAKaASAAPrDABXgDAUAWHqYwCDR +DwBsEASHJyp5FB/ZzvjipBXvzQUA6HIIJVAHAADscgslUoEAAOqTd3PYgQAADbsBq5nowXR0yQEA +AC6NAep1FCdSgQAA6pNxfDAEgAB5oX2aeO8ABQs4BIAABwJhBwJhBwJhBwJhBwJhBwJhBwJhBwJh +BwJhBwJhF9mzl2CFIJNllGTzs6IFoAelAOJmAiquAoAAB1UC5WYBKxAEgADRD8Ag0Q8AAAAAAAD3 +gGgdoAgFAPjhZhWv/nIACJoMCroMKq0BKqzg+uEGFa/+IgAsvED84QYVr/32AABsEATHjwhYAwg4 +AghIA6ho6CIIC4EKgAACIhiiMtEPAGwQBAQ4AwhYA6ho6CIIC4EKgAACIhiiMtEPAABsEAQEOAMI +WAEISAOoaOgiCAuBCoAAAiIYojLRDwAAAGwQBAVIAwg4AQhYA6ho6CIIC4EKgAACIhiiMtEPAAAA +bBAEE9mdAyIC0Q8AbBAOIyIQKDAFKQqSeYkbKSIS/yKgAxCGBQDl2ZUU4DaAAHCXCiowbmihGcAg +0Q8A69mRFL3YgAALmwH6QkYV4AIFANEPIyIYHtmMjTqMIiQKAf+mAA6wvVEA7TYKJgbRgAACKgJY +8oEY2YUvMhEI/wIvNhGJImSQyRjZWpgUjiDaIO/ZfxDYQQAA7xYGL3YCgAD1xgAPMAwVAP4gphWg +DSUAWHkswCDRDwCOPoQ3G9lv5EIOJ3AFAADr6wIA4MEAAP5hxhWv/fUA/CGmFeibHQDpxAIpUASA +APuAZh3omR0A+YAmHeiZHQDpxAAg2IEAAFjw8SgiEg8CAAWIAuaIAgnQBIAA6CYSIlgLAABY/Fv8 +JAAVoA01AP4AAh2gDwUA6dlZHVgEgADpFgApUASAAFm3PMAg0Q8A2iBY25hlrzNj/ucrIAfaIPog +AAXwDAUA+2MAFeANBQBYeehj/xoAAGwQBCUxDdMP0w8MVRHqJAAK2ASAAFg78+ukAAUCOYAAGNkY +KjENCACH6LQABQBpgABtqQIIAmEqMQ1tqQUEAIYLAmHaIPygaB2gCwUAWDuqKSISKvp/CpkB+EJG +FeACBQDRD8cv0Q8AbBAIIyIYGdkuKDIRCYgC6DYRKVAEgABY8mskIAfaIPQgAAIwC4UA7RQACmAE +gABYem/spAAFChGAABnZFIgg6YgCCdAEgAD5gAYVoBulAFm3mB3ZD4w+6hIAKl8CgACtu+q2ACYA +eYAA6zIQKVAEgAALwACKJ+SgDmV4wQAAjqz/wActYgCdAPFGYA3gBAUAJKUU+0QAFe/MBQAMuwHo +ogwl2QEAAJup66YIJUjBAAD5AAVFYgCdABzYz/2x7AXv/vUAnqDkJgclWCEAAPugBiOiAJ0ALcJ9 +Gdjwm9GZoyjCfZiiL8J/68Z9J/gFAAAvxn+ULpQvJCYQJCYRJCYSJCYTJCYUJCYVJCYWJCYXJCYY +JCYZJCYaJCYcJCYdJCYeJCYfJCQEJCQFlCIkJCAkJCEkJCIkJCOUKZQqlCuULCQlGiQlG/pgaB2g +CwUA/AACHaANJQBY9Z3AINEP2iBY8dH6QOgVr/1OANogWPHO2iBY8cGKJ2P/DxjYyy8yEY4iCP8C +7zYRJwGZgAAFCUdokkPAINEPKMKA64YBJngLAACfoy7CgJ6iLcKC68aAJugFAAD9kEYV7/zyACsg +B9og+iAABfAMBQD7YwAV4A0FAFh5WWP/tR/YkZ8UjiDaIP2xcgXgDBUA7RYGL3YCgADs7gIA2EEA +AO4WBSroBIAAWHhjwCDRDwAAAGwQBhnYhJkQiCD8gGgd4AwVAOMWAixGAoAA7IgCCVAEgADoFgEo +2ASAAFh4VtEPAGwQDCsiGCuyByuyDioiECiwIi2wISywIC6wHCOwHe+wHi5mAoAA7cwCD3YCgAAD +7gItsADjsB8vdgKAAA/uAu+wIy5mAoAA6MwCD3YCgADj7gIOZgKAAA/MAv+PAAw13QEA/QRAIFAz +9QAvohJ+8QgP6AxmgAIuphIuohN84QgOyQxmkAIsphP9rMAGUCo1APugDKwgLEUA/aAOBCAuZQD/ +oA9sID8lAP+gEWxiAJ0Ac9EQwKL9sOwFoDsFAFm1i8cv0Q8osBgpsBnqsBosRgKAAAmIAumwGyxG +AoAACogCCIgRCYgCsYj4QsYVoAIFANEPIyIQZDBxKbAQKrARLbAa7LASLM4CgAAKmQLqsBMszgKA +AAyZAuywGSzOAoAACpkC6rAYJIUpAAAIqhEMqgLssBstVgKAAA2qAgiqEQyqArGq6iYWJISlAAAp +IhLr2FEUwCiAAAubASsmEiwwBS0Klf2ACxRiAJ0AwCDRDwAALLAULbAV7rAWLmYCgAANzALtsBcu +ZgKAAA7MAgjMEQ3MAv2WoABQhQUALSIShDfkQg4m4x6AAPwkgBXo7B0A/6BGHa//9QDvFggpUASA +AP2gZh2ozh0A/aAmHajMHQDs1AAlyCEAAOkGAADAYQAA6IMeANhBAABY77QoIhLliAICWAsAAOgm +EilQBIAAWPsf/CIAFaANNQD+AAIdoA8FAOnYHR1YBIAA6RYAKVAEgABZtgBj/zUAAAAqsBgssBnt +sBotVgKAAAyqAuywGy1WAoAADaoCCKoRDKoCsarqJhYpUASAAFjf6MAg0Q8ssBgtsBnusBouZgKA +AA3MAu2wGy5mAoAADswCCMwRDcwCsczsJhYpUASAAFjfecAg0Q8AAC2wGC6wGe+wGi7uAoAADt0C +7rAbLu4CgAAP3QII3REO3QKx3e0mFilQBIAAWN+fwCDRDwAAAAD6YGgdoAtlAFj7FcAg0Q8AAC6w +GC+wGeiwGi92AoAAD+4C77AbL3YCgAAI7gII7hEP7gKx7u4mFilQBIAAWN8WwCDRD2wQCCggBCQi +GPevsAWgGYUAeYEDwCDRD4pK/17ADNCL5QAvQHh78essIAUY19ju19gWfxGAACUiEikiEysxCwhV +ASUmEo05q5l96DcuIhEpJhPyoAXeUgCdAGTg5orsfKexiOv7wGgdoAsFAPwAAh2gDSUAC4AAwJDp +JhEskASAANEPAP2viAWgCiUA/kAIFaA7BQBZtNIpIhApkAUqCpX7P/uEIgCdAIpK81/7NNIAnQAj +IhiNOowiwEH3pgAOsL1RAO02CiYEiYAA2iBY8KQf16guMhEP7gIuNhGIImSAgh3XfZ0UiSDaIOzX +ohDYQQAA7BYGLM4CgAD1JgAMsA0lAPggphXgDBUAWHdPwCDRDxzXoY3g/8CwFaAKVQD0IAYV4DsF +AFm0ri4iEsCQ+EImFe+/9QAP7gHuJhIskASAANEPANogW/7rZa9KwJDpJhEskASAANEP2iBY2c1l +r3tj/rAAKyAH2iD6IAAF8AwFAPtjABXgDQUAWHgdY/9hAGwQCiggBCoiGCkKGOmBCH04BIAAwCDR +D4uq/37ADNCN5QAsoHh9westIAUe13zv13wW/xGAACsiEpoYDrsCKyYS82Amo1IAnQCOLIg2JTAg ++mFEFa/0xQD/AAsNJWUBAAoKTiqs2/VABAUwhLUA9YAUVCIAnQAPuwL7wABEsDwVAPhBhhXgJCUA ++kJGFeAqFQD6wkYNoC9VAH9hCnxhB/TAKw0iAJ0ALjAwKDAxKSBo6jAyL3YCgAAI7gLoMDMvdgKA +AAruAujuEQTIGQAA6O4CDIIKgAD0RkQVoZ6dAPUgI1dQDAUA/TAAFDWuAQAIqgIZ10ydGZsWiZMb +10rlFgcqbkKAAASZLOiy3iSDcYAAlxUlsvsrsvWqiOVSFCxGQoAA+WAARbAPFQBtmUwpUQSHUP8g +ABS1ih0A6XcIDEeCgAAIdwwnff/25+gV5JoBAACRBAD4Guh3AQyCCoAA/YAgFaF3nQDqSggDgHGA +AIi6cokEib5+kXur2/2uVgWgCiUA/EAIFeA7BQBZtDUqIAUrIhibFZoZHNcljxWIGYkgjvDv8Hgr +aASAAPggBhXgCiUA+CAmFaA7BQBZtCkoIhAogAUpCpX5H/JUYgCdAIkYiZrzP/H00gCdAPpAaB2g +CwUA/AACHaANJQBYA3fAINEPAAAA7xIIJfz5gAAv8HgtsAX6QiYV4Iq1APvgGkUgmKUA+aAaBCCZ +tQD5oBnEYgCdACoKlvugGWwiAJ0ALAqZ/aAglSIAnQDC0fzACARgDoUAwvX+wAe0YgCdACgwQSww +QC0wPCkwPe8wPi5mAoAA6MwCDu4CgAAJ3QIoMD/pMEIu7gKAAA/dAu8wQy5mAoAA6cwCDu4CgADo +3QIOZgKAAA/MAg3IDOoiECQEi4AAL6ISffEID9gMZoACLaYSLaITfNEIDckMZpACLKYTjLwOzAL9 +YYYVoCpVAPrABHQiAJ0Aw9H8wAn0YgCdAMLh/sAQFCIAnQDC8v7AHURiAJ0AKBAQZI0dYAMVAAAA ++ABiHePL4QD9P+t2IgCdACkwJCwwJegwJizOAoAADJkC7DAnLM4CgAAImQIImRHsmQIFQBEAAPkN +AA1/9P4AAAAALTAjwPEN/TkttEEssEH8IgYdoCpVAPrf96UiAJ0AKDAh8R/7f9IAnQAoMEEsMEAt +MDwpMD3vMD4uZgKAAOjMAg7uAoAACd0CKDA/6TBCLu4CgAAP3QLvMEMuZgKAAOnMAg7uAoAA6N0C +DmYCgAAPzAINyQzqIhAkhIuAAC+iEn3xCA/YDGaAAi2mEi2iE3zRCA3JDGaQAiymEy0wOC8wOYy8 +6DA6Lu4CgAAP3QLvMDsu7gKAAAjdAurWjh7uAoAAD90C7swCBugFAAAtJhacvPthZhWv+3oALjAk +LzAlLDAh6DAmL3YCgAAP7gLvMCcvdgKAAAjuAgjuEQ/uAvGAFUYSAJ0ALzBMKDBN6TBOL/4CgAAI +/wLoME8v/gKAAAn/Agj/Eej/Ag8THgAAKiIQ6qIYJ5LxgAD/QBKz4gCdAC+2Ei0wSCgwSekwSi7u +AoAACN0C6DBLLu4CgAAJ3QLu1mYe7gKAAAjdAi22FCgwNiwwNCowNfxm8BXgCQUA6bYVLmYCgAAK +zALpthMuZgKAAAjMAu62Cy5mAoAADcwC/WGmFa/4QgAvMDgoMDnpMDov/gKAAAj/AugwOy/+AoAA +Cf8CCP8RCP8C7tZMF/gFAAAvJhb/YWYVr/duACoiEdMPZKFFiqcroR4oCpD5YAfqogCdAC0KYP96 +ABWgCiUA/ayABaA7BQBZs0Zj/HIAAP/uhA2v+vUAAAAc1jrpEgYu8ASAAP1gCBXgClUA+CAGFeA7 +BQBZszstIhL6QggVoE4FAA7dAi0mEi4wQSswQCwwPC8wPe0wPi3eAoAA7rsCDmYCgAAPzAIuMD/v +MEIuZgKAAA3MAu0wQy3eAoAA77sCDmYCgADuzAIN3gKAAA27Agy9DPe/0gASAJ0ALaISfNEIDc8M +ZvACLKYSLKIT+5/RNGIAnQAMuAxmihv7QmYV4AIFANEPAAD6IQgV4AkFACkmESqyByk8IPtByBWg +DDUAbcoFCQCGCgJhwCDRD4mu0w/5JgAV4AxlACo8IG3JBQoghgkCY8Ag0Q8c1f/oEgcveASAAP9g +CBWgCiUA+CAGFaA7BQBZsv9j+1WKGCwxC4qnv8z7Q8QV68whAAzNESncMPl/9ZPiAJ0Aia7lz6pk +yMEAAGP5gAAsMDgtMDnuMDouZgKAAA3MAu0wOy5mAoAADswCCMwRDcwC6tXkFmAFAAAsJhb7YWYV +r/0qACoiECqiGMOw+iAGFafcHQD9q7gFoAolAFmy32P61S8wTCgwTSoiEOkwTi/+AoAACP8C6DBP +L/4CgAAJ/wLqohgv/gKAAPnmAA+//vYAAABsEASJJyuZFOqSCSWASYAAyKFY91bRDwBsEASIIiMg +B/EAoA3hMwEAwCDRDwAAiScomRT3IcgVp6UBAOSSCSQJ6YAAFdVvF9Vr+UAJ0VIAnQD0YAY6EgCd +AAw5EaWZK5KeBzwKLMLD92AJilIAnQArkp0MuwFksNYpIED1IAgokIolAPUgBGkSAJ0A9aAEKpAK +BQDdQP6BBBXgDBUA+kBoHafqAQBYdgsk+pcm+mjuIhIpnwKAAPRgAEHwD0UA7zadIRkhAADzx0YN +4AUFACoiEqarLLInJLR9LrImnsAtsiac0SW2JuW2JyVTgQAAWbPCKSISwIHzLwAM8A8FAAmPOGT/ +yeQkBSlQBIAAWbO6wCDRDwD6wFAVr/3uABzVOIrIaqF/DDkRpZkrkp4HPQrt0sMoBAqAAPdgBBpS +AJ0AK5KdDbsBZLB3sK6eyGW/KIhA6zwYKVAEgAD/qu4F54jBAPhIBh2gDBUA/oAGFeANRQBYdfnA +INEPAAAAAP/7DA2gBAUAY/8LKSBACJkQ+IAGFe/7AgAAAAAAAAAA//tUDaALBQDAoFmv4BzVFIrI ++V/7kJIAnQD//kgNoAsFAMCwwNoNrTT9gQYV7/4OAAAAAGwQBogiLCAH8QCADeHMAQDAINEPiSct +mRQFDkfmkgkmhKGAAPnABmlSAJ0ALyBBFNUA69T8HhgEgADx7GwN4AVFAPYAAh3gDQUA7MoRBiW5 +AACkqiiingvOCi7iw/UACVviAJ0AKqKdDqoB26DsFgAlBoGAAC8gQWXw8gcOR+9hCCtoBIAA+kBo +HaAMFQBYdZ0MORGkmfUzphXvmHUA6CQFKVAEgABZs2DAINEPAAAAAAAAAP/9sA2gBgUAH9Tcjvj3 +wAZ4kgCdAAw6EaSqKKKe9QAHQ+IAnQAqop0LOAoogsMIqgHkoNZnS/0AAPnhBhXv/eoAKiBACKoQ ++sAGFa/8tgAAj54t8AQn8AUe1Rjl8AYu7gKAAAfdAu/wBy7uAoAABd0CCN0RD90CDt0BJdxn9I4A +CvCHlQD0oIAV7/w2AI1gixDs1QoZUASAAPtjABXn3cEA7SRAKugEgAD8wAYVoAwVAFh1iMAg0Q8A +ACzcSOvcZylwBIAA/sBoHeS7HQBZslr7QGgd7/vOAP/7bA2gCgUAnRH8IAYVoAoFAFmvbh/UoowQ +jviNERvUnvnf+MCSAJ0A//rIDaAKBQDAoMCKCOg0+eEGFa/6jgBsEASIIiMgB/EAgA3hMwEAwCDR +D4knKJkU5pIJJAcZgAD1qSAFp5UBAPkgBtlSAJ0A5dSJEaWZAAAMORGkmSqSnvdABtpSAJ0AK5Kd +BTwKLMLDDLsBZLB9LSBB8aucDeAKBQDdYP7BBBXn6gEA+kBoHaAMFQBYdTAMOBH1AABEMA9FAP8T +phXvnnUA7iQFKVAEgABZsvLAINEPABfUcYp490AEIJIAnQAMORGkmSuSngU8CuzCwygECoAA92AE +ClIAnQArkp0MuwHksHVla/0AAJ14Zb+Bj2DrPBgpUASAAP+pZAWn/8EA/kgGHeAMFQD+wAYVoA1F +AFh1MMAg0Q8A//x0DaAGBQAoIEAIiBD4wAYVr/x+AAAA+hEiHa/9HgD//MQNoAsFAMCgWa8Yinj5 +X/uokgCdAP/+YA2gCwUAAMCwwJoJqTT44QYV7/4iAABsEASKKiiiGCiABSkKc3mBJoknK5kU7JIJ +JYCxgADbIP4AQh2gjeUAWHPhwCDRDwD//6gNoAwFAIivG9SI6yYLIXiBAAD/AAYV4AwFAOgmCSVI +4QAA+EEGFeANJQD/QeYV756FAO4kBSlYBIAAWHHswCDRD2wQBIgiyIfAINEPAAAAAACJNyQgByqZ +FPWoRAXhRAEA7ZIJJQVBgADq1BsaTwKAAKWZK5KeCkwK7MLDKAQKgAD3YASCUgCdACuSnQy7AWSw +gvpAaB2gDFUA/mEEFeCO5QBYdMT4YQgV4A8FAOgyCSp3AoAA9cAAR3ANRQDt5p0kgIGAAJ87mYCK +OJihnzifOYs8JDBF/2VgB9+ctQAsNAWNLi4sOP+/+vUiAJ0A+J/6sNIAnQD6QggVoAs1AFj3WcAg +0Q/aMFmydGP/0//9YA2gDQUA60wYKVAEgAD8ACIdoA1FAFh0xMAg0Q8AbBAEKTAT8SEgDeD1hQD1 +IAZ4kgCdAMAg0Q8AAIQniDAqMBGETuI8GCQtfIAA+gACHeBMBQDqRAQiKA8AAOgwEiKosQAA6EQF +KtAEgABZq6UkTQP0jYAVoAsFAPqAaB2hDAUAWaug2lDsMBEpWASAAFj2+9pA7DASIdlhAABY9vjA +INEPAAAAAPwcAh2gCwUA6kQCIjALAADoMBIjMzEAAOhEAytQBIAAWauOJE0D9JWAFaALBQD6gGgd +oIwFAFmridpg7DARKVgEgABY9uWlO+wwEipQBIAAWPbhwCDRDwAAhCeETsCw6jARIkgXAAD7LEYd +oOwFAOgwEiI4EwAA6JRjK9AEgABZq3cmTQX23AAVoAsFAPrAaB2gjAUAWatx2nDsMBEh2GEAAFj2 +zaU77DASK1AEgABY9srqJAAKWASAAFj4XsAg0Q8AAABsEAQX05sW0+sncsMmYomkdwl3EadmhG3y +QGAlqIMdAPCCgA3nxMEALCRSi20LC18rJFOKbQqKFCokVIltKSRVKCRWIyRX0Q8AAAAA8krmHeiD +HQD4SsYdoEUFAPRKRh3gDwUA/kpmHeAuhQD+SoYdr/2FAC0kVdEPAAAAbBAGiCLxAXAN5zUBANog +WOypiSLLlWgyTsAg0Q8AAADqIhApWASAAFjWQWgyaYonjKz7RgAVoAsFAOrNDAZjIQAADcs5WHNy +0qDRDwArIAfaIPogAAXwDAUA+2MAFeANBQBYdDhpMrAf03GfEI4g2iD9p2QF4AwVAO0WAi92AoAA +7O4CCNgEgADuFgEq6ASAAFhzQsAg0Q/AINEPbBAGIyIYGtOHiTqIIsBB+yYADLC5UQDpNgokASGA +ANogWOx9HNOBKzIRDLsCKzYRjSJk0EYFDkdo4lzAINEP2iBY1cH/XowN5/UBAGjyeBzTc4onKzIR +iKzsuwIFUMEAAPpiJhXgCwUA6okMBEMhAAAJizlYcz/SoNEPACsgB9og+iAABfAMBQD7YwAV4A0F +AFh0BWP/nQAe0z6eEI0g2iDs02IY2ASAAOwWAi7uAoAA9aYADrAMFQDtFgEq6ASAAFhzD8Ag0Q/A +INEPbBA2iTUlMgD3pugFoAQFAPem5gXgCIUA+QiyDeJVCQDbMPomABWhXAUAWarX+iYAFeAYZQDo +tBEqUASAAFj2R5YQ/CYAFaANJQD7QGgd4A4FAPpAaB2gDxUAWbEqwCDRDykwEGiRUvUgBikSAJ0A +aJQDwCDRD4g2JHKLDwIACYgRCEQIJBZgJEIKJEIJ61QAClAEgABY+TfpEmAtfCYAACmQBSoKlXqZ +yPosCBWgCyUAWPZVwCDRDwAAKjITWPkz5KQACtgEgABY+Splr1HaMFj4n2Svm4uni74sso782QAH +MA11AP+gBw4iAJ0A/ABiHejsuQD/oAaOIgCdABjS4/1gQCWgDgUALsQRKIK/K3KL+KAARDANJQDm +FgAsRkKAAPlgAEWwDwUAWbD2wCDRDxTTK4c2JEKLCXcRp0QkFmCESodIhEnrVAAKUASAAFj5CWWu +yyoSYIqniq4pooDHuAuZASmmgIswCxtCD7sRC5kCKaaAKDIAEtLT/wIAB9ADFQArEmArsAUsCpJ8 +sUOMcmTApNpwWOvtjXJk0KqSGI5w2nDv0wwQ2IEAAO8WCi92AoAA88YAD3AMFQD+ISYVoA0lAFhy +nMAg0Q9Y93DAINEPAGR+nCRyGBrS4IlKiHL7JgAMsLlRAOlGCiQDwYAA2nBY69Yc0torQhEMuwIr +RhGNcmTQapIUjnDacO/S1RDYQQAA7xYGL3YCgADzxgAPcAwVAP4gphWgDSUAWHKCwCDRDwAAAAAA +AOpyECvYBIAAWNVhwCDRDwArcAfacPogAAXwDAUA+2MAFeANBQBYc19j/znacFjVBWWvlGP+AwAA +K3AH2nD6IAAF8AwFAPtjABXgDQUAWHNVY/95AGwQBIguIyw4c4EtKSISep8yiy6Is+okAApgBIAA +67zgKugEgAALgACMIu0gBS4AXgAAyNOOLnPp18Ag0Q8AAAAAAAAA/EAIFeAKVQD9pYQFoDsFAFmv +usAg0Q8AbBAYJRYZlB4rIAcjFh6HNegyBCn4BIAA/+HkFeADFQDyIgYV4bsBAPojBhXgyFEALBYa +/CPIFaDYWQD8I6YV4L95ACsWFSrAAP+DsBWj9vUA/YekFeB3+QD8ImYV7DgdAP4gBh2ge3UA7MIf +JFRCgAAPCEn4IeYVoAAeAACWHxnSnygSGfwiJhWgDwUA+S/kFeAEBQD7QBG8Z4gBAC8WFAk5DPgi +5hWvmQEAKRYW9QBIMRIAnQCKIvtAVGCSAJ0A8OcQDeAOBQDuFhIjgFGAAAM6AlkBfsBQ8oVADeAG +BQAtEh4t0IMNXUIvEh0rEhr+AGIdoAwlAO/sOQvQBIAAWQFdpqbwgQAN4Ar1ACkSHimSKihsMAmG +OXagbPQhphWkth0A4xYMJdgFAAD6I2YV4AGaAAAALBIT0w8PAgD7gEYYEgCdAC0SHg8CAI3V8b/7 +u1IAnQDrEhMp0ASAAPwiKBWgDhUA7hYSKOgEgABZAYn7QE3gUgCdAP4AYh3gBQUACvU6ZFGhw2CU +HfIhhhXkhh0AKBYbKRIYE9IBHtH97NH+HKAEgAD1IAniEgCdAOsSGyy3AoAAo2YqYp77QFJL4gCd +ACZinQ6YCiiCwwhmAQZrAu/CCC2wBIAA+2BOYBIAnQArFgX34E7QkgCdACkyrhrSRPsgTEgSAJ0A +LjKtLaJf7esBB9P9AAD9wEuuYgCdAJrI/cBL1mIAnQCNHiwgFK3MDAxHLCQU9YBNZlIAnQAuEh3I +6ykSFsCD+QBOqOIAnQBkUPIqEhoPAgDIoWRQY+tkAAlQBIAA/ABiHaAdhQBZAXruEg8teASAAOYS +DCK52YAAHNIkLRIV+aO4BeAKBQCa8przmvSa9elpAg9EAoAA6fYALuiCgADo3QIK9sKAAP+mAA6w +G8UA/eAmFeAKVQBZrwwrEhf5YEkpUgCdAMAg7BIbKm8CgACj3SzWndEPLhIeLuCD/kUABzAEFQD+ +IoYVr/b6AI/I9+BKIJIAnQDpEhsqNwKAAKNmKGKe+QBKe+IAnQArYp0OTQot0sMNuwHWsPtgSggS +AJ0AsP6eyPrAaB3v+r4AAPybTA3gNgUA//bUDaANBQAvEhJk8HbrEgUpUASAAPwAYh2gHYUAWQE/ +GdHtFtHrjhwoEAAmYp8J7gIZ0cAIHxTmhgsP+wKAAOn/AgR8nIAALBIR7RITI1v/AAAosj8rsX2e +oJ+hnaKco5uk+UCmFaAAbgAsEhEtEhMrYQWIY56gn6GbopijnaScpSasGC0SFYwfAt0Q7RYILmQC +gADsFgkrsD4AAC4SHRjRh/4hiBXgCgUA6hYGL3GCgACeFwj/Av4hRhXgDyUAnxvrZAAJUASAAPwA +Yh2gHYUAWQESix0vEh6JFuYSHiWRQYAAJmCD7/IFJJF5gACIHQZOQOSCGG9zAoAAKBIeKICCCAZA +CmYQjBcG7QL9hgAOcN+hAPOoABawj5EA/YYADnDfiQDjiBAO6IKAAPmmAA6wj5kABIgQCMwCKBIe +ixoNzAKIhPtABhXj/fUAnaKcpRzRo/1AZhWpiAEAmKQY0Z+YoS4SC+mcASUwYQAA6RYGJ3P9AADu +FgsvekYAAC8SFPXgLPiSAJ0A9eAtsRIAnQD14C5xkgCdAPXgLzISAJ0A9eAv8pIAnQD14DCzEgCd +APXgMXOSAJ0Ajh3TD2TgTy8SHi/yKmTwRutkAAlQBIAA/ABiHaAdhQBZANAoEh4b0YGMGvkFSBWj +/fUAnaL9QAYVrAkFAJmj+0AmFemYsQDppgQsRYKAAOimBSUwYQAA62QACVAEgAD8AGIdoB2FAFkA +vh3RcY8YjBn2IUgVoAkFAJkRmRKZE5kUmaT5QKYV7/v1AJuim6OWoO/MAgr2woAADswC7hIeJTBh +AADtzAIA2CEAAOymASDoQQAA6hwEIOAxAABY/tj5QGgd4AgVAOqJOQ0oBIAA6RYhJSM5gAAkFiL6 +ACId4AoFAAm6OOUWIyVjmYAAE9FRjRmEHBjRIR/RUOUSHSongoAA+IYACjYMBQD4IQgVoAoVAOWl +OQrwwoAABfw5+cYADzAJNQD9xgAO8AglAAWYOSgWIA7OAi4WHP2GAA5wBQUA/CPmFaAEfgAAAAAA +AAD/92wNoAYFAMDg//fIDaAGBQCIHfwjyBXkDAUA9mAABzK2KQDxCwAN4AYFAC3SKu3GOQ3bgoAA +LBAA/2AABHDfyQDr3RAOYgKAAOzuAgxFAoAA+cYADzDPwQD1kAAWMI95AP2GAA5w36kA/0CmFaDv +sQDg7hEO68KAAP+mAA6w74EA7IgRD3ZCgAD/BgAMMe9pAATuEf8GAAww77kA7YgCD3JCgAAOvgIM +iAKNGp2gHNDfnKEI7gL+xgAPMAglAAjuAp6kGNEKmKIe0Qn/QGYVr/YuAAAAAAD6AAId4AYFAP/9 +TA2gDgUAAAAAAAAAmaGUoJ6inqOepJ6lnaadp52onakvEiDlXAElMKEAAP6gEZxiAJ0A62QACVAE +gAD8AIIdoC2FAFkAO+RQUWrOwoAA9KAKYJIAnQArEh/H7/smAAzwDQUA45kCC/0uAACNEywSHo4S +jxGLzCzCEJmhm6n1QAYVoAgFAJiimKafo56knaecpYwU/UEGFa/+JgAtEh0sEhwb0NwMmQLrmQIG +hBmAAPDiQA3v/vUAmaGUoJ6inqOepP9AphWgDQUAnaadp52o/UEmFe/9NgAvEh4iFiUr8hYm8Tgi +8Tos8hXo8TkrNAKAAAYiAibxOy3yG+7yGixEAoAACGYCKPIXL/IZn6Keo52knKabp5iolqWZoZSg +kqnyJKgVr/v2AAAAAAAAAADw4kAN7/v1AJmhlKCbopujm6T7QKYV4AgFAJimmKeYqPlBJhWv+zoA +LBIejRIvwTsmwTkowTguwTrrwhgrNAKAAOb/AgxEAoAACO4CJsIUiMwswhCbpJinlqiZoZ2ilKCc +o5+lnqmMFP1AxhWv+hoAKxId7BIcJYNRgAAb0JrH7/0mAAywDQUA65kCA4DxgACZoZSgnqKeo56k +nqWdpp2nnaj9QSYV7/kyAC4SHiIWJS3iEiziEyviGIjthu4v4hSC7y7iEZ6inaOcpJulmKaWp5+p +maGUoJKo8iSoFa/4VgArEh/H3/smAAzwDAUA45kCA4DxgACZoZSgnaKdo52knaWcppynnKj9QSYV +r/eaAJmhlKCOE/4gKBXgCAUAmKKYo5ikmKaYp5ion6X/QSYVr/cKACoSHhnQbIqlE9AGJRIj5BIi +JUwwgADj0AITg+GAABzQZoscDLsC+z9GFe/ifgAlEhDA0vetAAr/4wIAAMCl/aC+BaAbxQDuPhEJ +6ASAAFmtRmP25foiyBWgDgUAnhGeEp4TnhRY/cQkFiLlFiMlX2GAAPoiyBWgCwUAWP23JBYi9CRm +Fe/vWgAvEhH7/7nQkgCdAGP2tRrQI4gcCogC+T9GFa/gngAAwKBZcfzIpxvQRCuwgGSxLCoSFlj9 +r+kSIS1cHgAA+iLIFaALFQBY/aL4JCgV7+3CANxg6hIMKVgEgAD8I8gV4A4VAFj+VPdAaB2v6fIA +AADcYOoSDClYBIAA/CPIFeAONQBY/kz3QGgdr+l2AAAAANxg6hIMKVgEgAD8I8gV4A51AFj+RPdA +aB2v6PYAAAAA3GDqEgwpWASAAPwjyBXgDrUAWP4890BoHa/odgAAAADcYOoSDClYBIAA/CPIFeAO +xQBY/jT3QGgdr+f2AAAAANxg6hIMKVgEgAD8I8gV4A7VAFj+LPdAaB2v53YAAAAA3GDqEgwpWASA +APwjyBXgDvUAWP4k90BoHa/m9gDrEhMp0ASAAOwSESjoBIAAWP7yY/YxAAArEh6MHu0SGSlQBIAA +WGns0qDRDwAAAAD7n/AFoUsVAFmXQSwaAAysAvuf5gWhSxUAWZdBY/6zAMCwwNoN/TSdyPt/tHCS +AJ0A+kBoHaAbxQD8AAIdoA0VAFhwVGP/oAAAACsSGPpAaB2gDAUA7RIbJdhhAABYcE1j/4TAoFmq +PxzPdI/I+f+w4JIAnQBj/7jaIFvpqWP2T4onjR7AwOqsIC7YBIAAWGOA0qDrEhsqZwKAAKPMK8ad +0Q8AAAAAAAD/1wwNoAYFAAAAAN2Q/Z+WBaAKRQD6AwId4A5FAFmsr//YZA2gBUUAwKBZqiQcz1iP +yB7PVfn/tXiSAJ0A/9tYDaAGBQAAAAD/2vQNoAsFAMDaDf00/YEGFe/a+gAAAABsEAQUz7eCICRC +fxPPtgQiDAMiAtEPAABsEA4kIhTbIOwUAApQBIAAWQ3H1aD1QAgUIgCdABjPTugABQDIQQAACQJh +CQJhCQJhCQJhH8+oHs+oHc+ljCCdFv4hRhWgCEUA7xYELmYCgAAIyAKYFS9QBy0RAPufQAWh/wEA +48wCD/wCgAAP3QIO3QKdGCkgPfwh5hWgCyUAmx0KmQLpFgwoBAqAAPRgBVGSAJ0AiUcomRTkgJNk +8IEAAIuZjOD/+AId4CSFAO/vAQWCOYAAbQgue8E8KLAALbAHdIEzKuEF76kIDu8CgADtuwgEyQEA +AOm7FX3oBIAA69QABoCpgABj/8oAAAAAAAD7bwAOv/+uAPuPAAxwCQUACJs4ZbBE6xwQKtAEgAD8 +AIIdoA0lAFgeeNEPGs9xKUEp+z/3xSIAnQBj/+wAAAAA//28DaALBQAAACocSvpHwBXgDGUAWaa2 +Y/9IwnaKuAqNV3fRYirhBa+m5rp6dekBAADr1AAGgZGAAHvBKiiwANMP0w90gSAtsAcPAgAM3RHt +uwgDSQEAAOm7JH3oBIAA69QADv62AAD7jwAM8AgFAAmLOGS/X2P/owAAAAAAAAD7bwAOv/9yAC0g +PQoIQ3jZkymwL2iTjYogCKoRCjoCmrvRDwAAAAAA+68ADr/+GgBsEAYoIAUsIAfBlA8CAPkAEHVh +zAEAKSICZZHDLTABFs7H687DHjgEgAD/oUAG0A+lAC4gTmXiV+7OwB5PAoAA9YAK8hIAnQCmmSiS +npwQC8sK9wARlNIAnQArssMqkp0LqwHrFgEljkmAAIro90AOuJIAnQAoYq7tzrIUC/mAACxirS3S +f+3LAQVD/QAA/YALXmIAnQCY6P2AC2ZiAJ0AKSAUpJkJCUcpJBT1IA110gCdAB7OthvOrIwg+CAo +FeAKBQAqtjbuzAIObgKAACy2PP2eGAWgDkUADt0C7bY1LOgEgADsDx4OUASAAA0CZwxAhg0CZQwg +hg0CYwwAhu0MAAThAQAACuCGHs7/DAJvCsCGDAJtCqCGDAJrCoCGDAJpKiAHKDABLCEJLSEk+CAA +BDCqEQDqqhAMRAKAAAqIAioxAQjdAg7dAhjO8C4hIi2WII0gLJYjKpYkCO4CLpYi/aAAFrAOJQAO +3QItliHsMgMl0HsAAOyWJSTIBwAA6gAVBMphAAAJAIoMfBGmzP+TphXntQEA+WAGiVIAnQDAINEP +iuj3QAfAkgCdAAx5EaaZLZKeC3sKK7LD96AIRNIAnQAtkp0L2wFksPywrZ3o6xYBLfTGAAD8IAYV +oAFWAADqJAAJ2ASAAOxEAAroBIAAWGit0qDRDwAAAADAsA+pNOnmCC305gAA+kBoHaAbxQD8ACId +oA0VAFhvHmP/wQAA6iQACtgEgABYalrSoNEPAIsQ+kBoHaAMFQD7YwAV4A2lAFhvFGP/l8CgWakG +Hs46iuj5X/D4kA+lAGP/qtogW+hw//k0DaAPpQAAiifrRAAKaASAAPtEABWgDAUAWGJE0qDRDwAA +AAD/91wNoAsFAMC4C5sC+kBGFe/9HgAAAAD8IAYVoAoFAFmo7h7OI4rojBAbzh/5X/eYkA+lAP/8 +OA2gCwUAAMCwD600/cEGFe/8AgAAbBAGKCAFJiAH5zQACtgEgAD4AoId4AU1APkAD51hZgEACwhH +aIIUiiIXzg8YzgzkZAAFA8mAAMAg0Q8AKyIdZbHhiCeDiPsCpBXvzAUA6YILJHCBAAAM7AHsuwgK +fwKAAOwWACXZAQAA8yAN/GIAnQAtiRSj+q/dLYUU+2AN66IAnQDJdclD2TBtSQUHAIYJAmGK4A8C +AA8CAK+q+0AQrGIAnQD7wAYVr/3+AOxqEQMk8QAAB6oIK6KeDwIA92AK2dIAnQAqop0IaworssML +qgFloE/rbBgpUASAAPwAIh2gDTUAWG62wCDRDwAbzd6JuPcgDKCSAJ0ADEoRB6oILKKe94ANAdIA +nQAqop0ITAoswsMMqgHkoY5k6/0AAC22CGSvrxnN+5mgiCD/nIgF4AsVAOumAixGAoAABYgCmKGI +My/yf/+bzAWoiB0AqP+fo+4AFQVIQQAA/5uyBeAIBQCxiOmDHgwP6AAAn6YZzjT5QQYV4BgFAJin +jiAI7hEF7gKeqQxNEafdJdadjiIsIAaJJwvuAuvOKxZgBQAA7CQGJMiBAACIkf0gghXvzAUADJwB +7iYCJENBAADolgEm6MEAAO2VBCZhAQAAfIsiKpEFHc21qKiYkZ2AjCDrhgIuZgKAAAXMAv0AJhWg +AgUA0Q8dza2dgIwgG84T64YCLmYCgAAFzAL9ACYVoAIFANEP2iBYaavSoNEPAAAA//rEDaAKBQBY +ACdj/hcAAPMgaB3gDgUA/wFmFa/3vgDjugwDgbmAAApLFOy8ECvABIAA7Ew2CcgEgADTD23JBQgA +hgkCYYkQqnjrTQwEyQEAAG3ZBQgghgkCY4sQCvwMrLsrvED7wAYV7/aKAMCgWahBG811ibgYzXL5 +P/L4kgCdAP/5/A2gCgUAwKDA2g2dNP1hBhXv+cIAjxAv/ED/wAYV7/WmAAAAbBAGEs1oF83f9Zri +BaATlQD4UMgVoKYlACoign+nICsign+3GCoihCygCCWgB3bBN4hEwKALgAAFMwxlP9rRDy0ihCki +hyoih/lgAAT7qoEAepkwCuowK0JFw8IMuyirqvqcBhWv/uoALqELLuz4Dg5D7uz8Iuv9AAD/ogAK +v/7OAAAAAAwCAC8ign//xSXQB25bv9xw+gCiHaALBQD+oAAXMP8FAFmqkSVc8cpbKApxmBHAoVmg +P/ogKBXgCfUACVk2mRAJuwz6ICYV4AoFAFmELIoQClUMZV/XwKFZoDX6DiId4AoFAFmEJmP/ZQAA +bBAGKCAFLyAHwZT5ABTNYf8BAPQgJhWnhQEAmBL1AA+5EgCdAIkiFs0j680fH6AEgADtzR8ckZYA +APXgD0IQB7UA7xYAL9cCgACmqiyingv7Ciuyw/eAFbviAJ0ALKKdC8sB57QABZKJgACO2PfAEviS +AJ0ALGKu6s2IFhApgAAvYq0rovPr/AEHQ/0AAPvgD45iAJ0AmNj74A+mYgCdACsgFCkwB6uZCQlH +KSQU9SARtdIAnQAfzXmfcIkg/ACCHeAFFQDldgIszgKAAA2ZAplxiDYZzXOMrv+aKAWiiB0ACYgB +qMz84GYVoCsFAO4AFQPIQQAACQCKm3cZzQTpdgYh4MEAAOwHHgPAgQAACAJj7uMFA+DBAAAMAmEv +dhCIIOV2EixGAoAADYgCKHYRjDOKrAyMFKyq6nYTI/mBAADuABUD0UEAAAoAiil2Fut2FyHQQQAA *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Sat May 5 22:40:41 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5737FFBDA89; Sat, 5 May 2018 22:40:41 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EF8FE79B3B; Sat, 5 May 2018 22:40:40 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EA76023C67; Sat, 5 May 2018 22:40:40 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w45MeeR6020556; Sat, 5 May 2018 22:40:40 GMT (envelope-from mmacy@FreeBSD.org) Received: (from mmacy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w45MeeKM020551; Sat, 5 May 2018 22:40:40 GMT (envelope-from mmacy@FreeBSD.org) Message-Id: <201805052240.w45MeeKM020551@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmacy set sender to mmacy@FreeBSD.org using -f From: Matt Macy Date: Sat, 5 May 2018 22:40:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333277 - in head/sys: netinet netinet6 X-SVN-Group: head X-SVN-Commit-Author: mmacy X-SVN-Commit-Paths: in head/sys: netinet netinet6 X-SVN-Commit-Revision: 333277 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 May 2018 22:40:41 -0000 Author: mmacy Date: Sat May 5 22:40:40 2018 New Revision: 333277 URL: https://svnweb.freebsd.org/changeset/base/333277 Log: Currently in_pcbfree will unconditionally wunlock the pcbinfo lock to avoid a LOR on the multicast list lock in the freemoptions routines. As it turns out, tcp_usr_detach can acquire the tcbinfo lock readonly. Trying to wunlock the pcbinfo lock in that context has caused a number of reported crashes. This change unclutters in_pcbfree and moves the handling of wunlock vs runlock of pcbinfo to the freemoptions routine. Reported by: mjg@, bde@, o.hartmann at walstatt.org Approved by: sbruno Modified: head/sys/netinet/in_mcast.c head/sys/netinet/in_pcb.c head/sys/netinet/ip_var.h head/sys/netinet6/in6_mcast.c head/sys/netinet6/in6_var.h Modified: head/sys/netinet/in_mcast.c ============================================================================== --- head/sys/netinet/in_mcast.c Sat May 5 20:16:08 2018 (r333276) +++ head/sys/netinet/in_mcast.c Sat May 5 22:40:40 2018 (r333277) @@ -1639,16 +1639,29 @@ inp_findmoptions(struct inpcb *inp) * SMPng: NOTE: assumes INP write lock is held. */ void -inp_freemoptions(struct ip_moptions *imo) +inp_freemoptions(struct ip_moptions *imo, struct inpcbinfo *pcbinfo) { + int wlock; if (imo == NULL) return; + + INP_INFO_LOCK_ASSERT(pcbinfo); + wlock = INP_INFO_WLOCKED(pcbinfo); + if (wlock) + INP_INFO_WUNLOCK(pcbinfo); + else + INP_INFO_RUNLOCK(pcbinfo); + KASSERT(imo != NULL, ("%s: ip_moptions is NULL", __func__)); IN_MULTI_LIST_LOCK(); STAILQ_INSERT_TAIL(&imo_gc_list, imo, imo_link); IN_MULTI_LIST_UNLOCK(); taskqueue_enqueue(taskqueue_thread, &imo_gc_task); + if (wlock) + INP_INFO_WLOCK(pcbinfo); + else + INP_INFO_RLOCK(pcbinfo); } static void Modified: head/sys/netinet/in_pcb.c ============================================================================== --- head/sys/netinet/in_pcb.c Sat May 5 20:16:08 2018 (r333276) +++ head/sys/netinet/in_pcb.c Sat May 5 22:40:40 2018 (r333277) @@ -1388,14 +1388,12 @@ in_pcbfree(struct inpcb *inp) if (imo == NULL && im6o == NULL) return; #endif - INP_INFO_WUNLOCK(pcbinfo); #ifdef INET6 - ip6_freemoptions(im6o); + ip6_freemoptions(im6o, pcbinfo); #endif #ifdef INET - inp_freemoptions(imo); + inp_freemoptions(imo, pcbinfo); #endif - INP_INFO_WLOCK(pcbinfo); } /* Modified: head/sys/netinet/ip_var.h ============================================================================== --- head/sys/netinet/ip_var.h Sat May 5 20:16:08 2018 (r333276) +++ head/sys/netinet/ip_var.h Sat May 5 22:40:40 2018 (r333277) @@ -175,6 +175,7 @@ struct ip; struct inpcb; struct route; struct sockopt; +struct inpcbinfo; VNET_DECLARE(int, ip_defttl); /* default IP ttl */ VNET_DECLARE(int, ipforwarding); /* ip forwarding */ @@ -201,7 +202,7 @@ extern struct pr_usrreqs rip_usrreqs; #define V_rsvp_on VNET(rsvp_on) #define V_drop_redirect VNET(drop_redirect) -void inp_freemoptions(struct ip_moptions *); +void inp_freemoptions(struct ip_moptions *, struct inpcbinfo *); int inp_getmoptions(struct inpcb *, struct sockopt *); int inp_setmoptions(struct inpcb *, struct sockopt *); Modified: head/sys/netinet6/in6_mcast.c ============================================================================== --- head/sys/netinet6/in6_mcast.c Sat May 5 20:16:08 2018 (r333276) +++ head/sys/netinet6/in6_mcast.c Sat May 5 22:40:40 2018 (r333277) @@ -1585,13 +1585,20 @@ in6p_findmoptions(struct inpcb *inp) * SMPng: NOTE: assumes INP write lock is held. */ void -ip6_freemoptions(struct ip6_moptions *imo) +ip6_freemoptions(struct ip6_moptions *imo, struct inpcbinfo *pcbinfo) { struct in6_mfilter *imf; size_t idx, nmships; + int wlock; if (imo == NULL) return; + INP_INFO_LOCK_ASSERT(pcbinfo); + wlock = INP_INFO_WLOCKED(pcbinfo); + if (wlock) + INP_INFO_WUNLOCK(pcbinfo); + else + INP_INFO_RUNLOCK(pcbinfo); nmships = imo->im6o_num_memberships; for (idx = 0; idx < nmships; ++idx) { @@ -1608,6 +1615,10 @@ ip6_freemoptions(struct ip6_moptions *imo) free(imo->im6o_mfilters, M_IN6MFILTER); free(imo->im6o_membership, M_IP6MOPTS); free(imo, M_IP6MOPTS); + if (wlock) + INP_INFO_WLOCK(pcbinfo); + else + INP_INFO_RLOCK(pcbinfo); } /* Modified: head/sys/netinet6/in6_var.h ============================================================================== --- head/sys/netinet6/in6_var.h Sat May 5 20:16:08 2018 (r333276) +++ head/sys/netinet6/in6_var.h Sat May 5 22:40:40 2018 (r333277) @@ -807,6 +807,7 @@ in6m_rele_locked(struct in6_multi_head *inmh, struct i struct ip6_moptions; struct sockopt; +struct inpcbinfo; /* Multicast KPIs. */ int im6o_mc_filter(const struct ip6_moptions *, const struct ifnet *, @@ -823,7 +824,7 @@ void in6m_print(const struct in6_multi *); int in6m_record_source(struct in6_multi *, const struct in6_addr *); void in6m_release_deferred(struct in6_multi *); void in6m_release_list_deferred(struct in6_multi_head *); -void ip6_freemoptions(struct ip6_moptions *); +void ip6_freemoptions(struct ip6_moptions *, struct inpcbinfo *); int ip6_getmoptions(struct inpcb *, struct sockopt *); int ip6_setmoptions(struct inpcb *, struct sockopt *);