From owner-svn-src-stable@freebsd.org Sun Apr 16 05:14:44 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 72C74D40760; Sun, 16 Apr 2017 05:14:44 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id 342465E2; Sun, 16 Apr 2017 05:14:44 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G5Ehsx027561; Sun, 16 Apr 2017 05:14:43 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G5EhKp027557; Sun, 16 Apr 2017 05:14:43 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160514.v3G5EhKp027557@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 05:14: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: r316998 - in stable/11: contrib/compiler-rt/lib/builtins lib/libc/arm/aeabi X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 05:14:44 -0000 Author: mmel Date: Sun Apr 16 05:14:42 2017 New Revision: 316998 URL: https://svnweb.freebsd.org/changeset/base/316998 Log: MFC r313823,r313866: r313823: Pull in r285478 from upstream compiler-rt trunk (by Saleem Abdulrasool): r313866: Publish __aeabi_uidiv and __aeabi_idiv as compatible symbols from libc. Added: stable/11/lib/libc/arm/aeabi/aeabi_int_div.S - copied unchanged from r313866, head/lib/libc/arm/aeabi/aeabi_int_div.S Modified: stable/11/contrib/compiler-rt/lib/builtins/assembly.h stable/11/lib/libc/arm/aeabi/Makefile.inc stable/11/lib/libc/arm/aeabi/Symbol.map Directory Properties: stable/11/ (props changed) Modified: stable/11/contrib/compiler-rt/lib/builtins/assembly.h ============================================================================== --- stable/11/contrib/compiler-rt/lib/builtins/assembly.h Sun Apr 16 04:36:22 2017 (r316997) +++ stable/11/contrib/compiler-rt/lib/builtins/assembly.h Sun Apr 16 05:14:42 2017 (r316998) @@ -164,6 +164,7 @@ #define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target) \ .globl SYMBOL_NAME(name) SEPARATOR \ SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ + DECLARE_SYMBOL_VISIBILITY(SYMBOL_NAME(name)) SEPARATOR \ .set SYMBOL_NAME(name), SYMBOL_NAME(target) SEPARATOR #if defined(__ARM_EABI__) Modified: stable/11/lib/libc/arm/aeabi/Makefile.inc ============================================================================== --- stable/11/lib/libc/arm/aeabi/Makefile.inc Sun Apr 16 04:36:22 2017 (r316997) +++ stable/11/lib/libc/arm/aeabi/Makefile.inc Sun Apr 16 05:14:42 2017 (r316998) @@ -28,5 +28,6 @@ SRCS+= aeabi_memcmp.S \ aeabi_memmove.S \ aeabi_memset.S -SYM_MAPS+=${LIBC_SRCTOP}/arm/aeabi/Symbol.map +SRCS+= aeabi_int_div.S +SYM_MAPS+=${LIBC_SRCTOP}/arm/aeabi/Symbol.map Modified: stable/11/lib/libc/arm/aeabi/Symbol.map ============================================================================== --- stable/11/lib/libc/arm/aeabi/Symbol.map Sun Apr 16 04:36:22 2017 (r316997) +++ stable/11/lib/libc/arm/aeabi/Symbol.map Sun Apr 16 05:14:42 2017 (r316998) @@ -69,4 +69,11 @@ FBSDprivate_1.0 { __aeabi_memset; __aeabi_memset4; __aeabi_memset8; + + /* + * A workaround for DEFINE_AEABI_FUNCTION_ALIAS() bug. + * - see aeabi_int_div.S + */ + __aeabi_idiv; + __aeabi_uidiv; }; Copied: stable/11/lib/libc/arm/aeabi/aeabi_int_div.S (from r313866, head/lib/libc/arm/aeabi/aeabi_int_div.S) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/11/lib/libc/arm/aeabi/aeabi_int_div.S Sun Apr 16 05:14:42 2017 (r316998, copy of r313866, head/lib/libc/arm/aeabi/aeabi_int_div.S) @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2017 Michal Meloun + * 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$"); + +/* + * Due to bug in libcompiler_rt, all symbols declared by + * DEFINE_AEABI_FUNCTION_ALIAS() are not hidden. All these but + * __aeabi_uidiv_compat and/or __aeabi_idiv_compat are explicitly + * exported from libc and don't causes problems. + * + * As workaround, export these from libc as compatible symbols, + * in global namespace + */ + +ENTRY(__aeabi_uidiv_compat) + .symver __aeabi_uidiv_compat, __aeabi_uidiv@ + b __udivsi3 +END(__aeabi_uidiv_compat) + +ENTRY(__aeabi_idiv_compat) + .symver __aeabi_idiv_compat, __aeabi_idiv@ + b __divsi3 +END(__aeabi_idiv_compat) + + .section .note.GNU-stack,"",%progbits From owner-svn-src-stable@freebsd.org Sun Apr 16 05:17:49 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AF015D40894; Sun, 16 Apr 2017 05:17:49 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id 7E4A3841; Sun, 16 Apr 2017 05:17:49 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G5HmVP027731; Sun, 16 Apr 2017 05:17:48 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G5HmKx027730; Sun, 16 Apr 2017 05:17:48 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160517.v3G5HmKx027730@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 05:17:48 +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: r316999 - stable/11/lib/libc/arm X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 05:17:49 -0000 Author: mmel Date: Sun Apr 16 05:17:48 2017 New Revision: 316999 URL: https://svnweb.freebsd.org/changeset/base/316999 Log: MFC r313873: Publish fp[get][set]sticky() for ARMv6. Modified: stable/11/lib/libc/arm/Symbol_vfp.map Directory Properties: stable/11/ (props changed) Modified: stable/11/lib/libc/arm/Symbol_vfp.map ============================================================================== --- stable/11/lib/libc/arm/Symbol_vfp.map Sun Apr 16 05:14:42 2017 (r316998) +++ stable/11/lib/libc/arm/Symbol_vfp.map Sun Apr 16 05:17:48 2017 (r316999) @@ -8,3 +8,8 @@ FBSD_1.0 { fpsetmask; fpsetround; }; + +FBSD_1.5 { + fpgetsticky; + fpsetsticky; +}; From owner-svn-src-stable@freebsd.org Sun Apr 16 05:59:30 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E4E06D40304; Sun, 16 Apr 2017 05:59:30 +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 mx1.freebsd.org (Postfix) with ESMTPS id 9A1C7AEC; Sun, 16 Apr 2017 05:59:30 +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 v3G5xTUq043945; Sun, 16 Apr 2017 05:59:29 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G5xTKV043944; Sun, 16 Apr 2017 05:59:29 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201704160559.v3G5xTKV043944@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 16 Apr 2017 05:59: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: r317000 - stable/11/usr.sbin/bhyve X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 05:59:31 -0000 Author: mav Date: Sun Apr 16 05:59:29 2017 New Revision: 317000 URL: https://svnweb.freebsd.org/changeset/base/317000 Log: MFC r316427, r316428: Add Log directory and SATA NCQ Send and Receive Log. Those are used at least by Linux guests to detect queued TRIM support. Modified: stable/11/usr.sbin/bhyve/pci_ahci.c Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.sbin/bhyve/pci_ahci.c ============================================================================== --- stable/11/usr.sbin/bhyve/pci_ahci.c Sun Apr 16 05:17:48 2017 (r316999) +++ stable/11/usr.sbin/bhyve/pci_ahci.c Sun Apr 16 05:59:29 2017 (r317000) @@ -932,19 +932,36 @@ static void ahci_handle_read_log(struct ahci_port *p, int slot, uint8_t *cfis) { struct ahci_cmd_hdr *hdr; - uint8_t buf[512]; + uint32_t buf[128]; + uint8_t *buf8 = (uint8_t *)buf; + uint16_t *buf16 = (uint16_t *)buf; hdr = (struct ahci_cmd_hdr *)(p->cmd_lst + slot * AHCI_CL_SIZE); - if (p->atapi || hdr->prdtl == 0 || cfis[4] != 0x10 || - cfis[5] != 0 || cfis[9] != 0 || cfis[12] != 1 || cfis[13] != 0) { + if (p->atapi || hdr->prdtl == 0 || cfis[5] != 0 || + cfis[9] != 0 || cfis[12] != 1 || cfis[13] != 0) { ahci_write_fis_d2h(p, slot, cfis, (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR); return; } memset(buf, 0, sizeof(buf)); - memcpy(buf, p->err_cfis, sizeof(p->err_cfis)); - ahci_checksum(buf, sizeof(buf)); + if (cfis[4] == 0x00) { /* Log directory */ + buf16[0x00] = 1; /* Version -- 1 */ + buf16[0x10] = 1; /* NCQ Command Error Log -- 1 page */ + buf16[0x13] = 1; /* SATA NCQ Send and Receive Log -- 1 page */ + } else if (cfis[4] == 0x10) { /* NCQ Command Error Log */ + memcpy(buf8, p->err_cfis, sizeof(p->err_cfis)); + ahci_checksum(buf8, sizeof(buf)); + } else if (cfis[4] == 0x13) { /* SATA NCQ Send and Receive Log */ + if (blockif_candelete(p->bctx) && !blockif_is_ro(p->bctx)) { + buf[0x00] = 1; /* SFQ DSM supported */ + buf[0x01] = 1; /* SFQ DSM TRIM supported */ + } + } else { + ahci_write_fis_d2h(p, slot, cfis, + (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR); + return; + } if (cfis[2] == ATA_READ_LOG_EXT) ahci_write_fis_piosetup(p); From owner-svn-src-stable@freebsd.org Sun Apr 16 06:00:15 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6882BD4038E; Sun, 16 Apr 2017 06:00:15 +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 mx1.freebsd.org (Postfix) with ESMTPS id 2050BC3D; Sun, 16 Apr 2017 06:00:15 +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 v3G60E25044077; Sun, 16 Apr 2017 06:00:14 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G60EBi044076; Sun, 16 Apr 2017 06:00:14 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201704160600.v3G60EBi044076@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 16 Apr 2017 06:00:14 +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: r317001 - stable/10/usr.sbin/bhyve X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 06:00:15 -0000 Author: mav Date: Sun Apr 16 06:00:14 2017 New Revision: 317001 URL: https://svnweb.freebsd.org/changeset/base/317001 Log: MFC r316427, r316428: Add Log directory and SATA NCQ Send and Receive Log. Those are used at least by Linux guests to detect queued TRIM support. Modified: stable/10/usr.sbin/bhyve/pci_ahci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bhyve/pci_ahci.c ============================================================================== --- stable/10/usr.sbin/bhyve/pci_ahci.c Sun Apr 16 05:59:29 2017 (r317000) +++ stable/10/usr.sbin/bhyve/pci_ahci.c Sun Apr 16 06:00:14 2017 (r317001) @@ -936,19 +936,36 @@ static void ahci_handle_read_log(struct ahci_port *p, int slot, uint8_t *cfis) { struct ahci_cmd_hdr *hdr; - uint8_t buf[512]; + uint32_t buf[128]; + uint8_t *buf8 = (uint8_t *)buf; + uint16_t *buf16 = (uint16_t *)buf; hdr = (struct ahci_cmd_hdr *)(p->cmd_lst + slot * AHCI_CL_SIZE); - if (p->atapi || hdr->prdtl == 0 || cfis[4] != 0x10 || - cfis[5] != 0 || cfis[9] != 0 || cfis[12] != 1 || cfis[13] != 0) { + if (p->atapi || hdr->prdtl == 0 || cfis[5] != 0 || + cfis[9] != 0 || cfis[12] != 1 || cfis[13] != 0) { ahci_write_fis_d2h(p, slot, cfis, (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR); return; } memset(buf, 0, sizeof(buf)); - memcpy(buf, p->err_cfis, sizeof(p->err_cfis)); - ahci_checksum(buf, sizeof(buf)); + if (cfis[4] == 0x00) { /* Log directory */ + buf16[0x00] = 1; /* Version -- 1 */ + buf16[0x10] = 1; /* NCQ Command Error Log -- 1 page */ + buf16[0x13] = 1; /* SATA NCQ Send and Receive Log -- 1 page */ + } else if (cfis[4] == 0x10) { /* NCQ Command Error Log */ + memcpy(buf8, p->err_cfis, sizeof(p->err_cfis)); + ahci_checksum(buf8, sizeof(buf)); + } else if (cfis[4] == 0x13) { /* SATA NCQ Send and Receive Log */ + if (blockif_candelete(p->bctx) && !blockif_is_ro(p->bctx)) { + buf[0x00] = 1; /* SFQ DSM supported */ + buf[0x01] = 1; /* SFQ DSM TRIM supported */ + } + } else { + ahci_write_fis_d2h(p, slot, cfis, + (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR); + return; + } if (cfis[2] == ATA_READ_LOG_EXT) ahci_write_fis_piosetup(p); From owner-svn-src-stable@freebsd.org Sun Apr 16 06:35:10 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F1732D40EE8; Sun, 16 Apr 2017 06:35:10 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id B2C225DF; Sun, 16 Apr 2017 06:35:10 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G6Z9wB060870; Sun, 16 Apr 2017 06:35:09 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G6Z9J4060866; Sun, 16 Apr 2017 06:35:09 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160635.v3G6Z9J4060866@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 06:35: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: r317002 - in stable/11/sys/arm: arm include X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 06:35:11 -0000 Author: mmel Date: Sun Apr 16 06:35:09 2017 New Revision: 317002 URL: https://svnweb.freebsd.org/changeset/base/317002 Log: MFC r306631,r306640,r306641,r306650,r306656: r306631: Use C99 designated initializers to create the armv6 cpu_functions structs. This will help with a later cleanup of what functions we implement. r306640: Only define the CF_* macros on ARMv4/v5. They are unused on armv6. r306641: Remove the parts of cpu_functions from armv6 that are unused on that architecture. r306650: Add the Cortex-A{53,57,72} ID register values. These can all run 32-bit code so could run a 32-bit kernel. r306656: Use the cortex functions when booting on one of the Cortex-A ARMv8 CPUs. This list is incomplete, however we don't have the ID values for the missing Cortex-A32 or A35. Modified: stable/11/sys/arm/arm/cpufunc.c stable/11/sys/arm/arm/genassym.c stable/11/sys/arm/include/armreg.h stable/11/sys/arm/include/cpufunc.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/arm/arm/cpufunc.c ============================================================================== --- stable/11/sys/arm/arm/cpufunc.c Sun Apr 16 06:00:14 2017 (r317001) +++ stable/11/sys/arm/arm/cpufunc.c Sun Apr 16 06:35:09 2017 (r317002) @@ -241,50 +241,23 @@ struct cpu_functions sheeva_cpufuncs = { #ifdef CPU_MV_PJ4B struct cpu_functions pj4bv7_cpufuncs = { - /* CPU functions */ - - armv7_drain_writebuf, /* cpwait */ - /* MMU functions */ - - cpufunc_control, /* control */ - armv7_setttb, /* Setttb */ - - /* TLB functions */ - - armv7_tlb_flushID, /* tlb_flushID */ - armv7_tlb_flushID_SE, /* tlb_flushID_SE */ - armv7_tlb_flushID, /* tlb_flushD */ - armv7_tlb_flushID_SE, /* tlb_flushD_SE */ + .cf_control = cpufunc_control, + .cf_setttb = armv7_setttb, /* Cache operations */ - armv7_icache_sync_range, /* icache_sync_range */ - - armv7_dcache_wbinv_all, /* dcache_wbinv_all */ - armv7_dcache_wbinv_range, /* dcache_wbinv_range */ - armv7_dcache_inv_range, /* dcache_inv_range */ - armv7_dcache_wb_range, /* dcache_wb_range */ - - armv7_idcache_inv_all, /* idcache_inv_all */ - armv7_idcache_wbinv_all, /* idcache_wbinv_all */ - armv7_idcache_wbinv_range, /* idcache_wbinv_all */ - - (void *)cpufunc_nullop, /* l2cache_wbinv_all */ - (void *)cpufunc_nullop, /* l2cache_wbinv_range */ - (void *)cpufunc_nullop, /* l2cache_inv_range */ - (void *)cpufunc_nullop, /* l2cache_wb_range */ - (void *)cpufunc_nullop, /* l2cache_drain_writebuf */ + .cf_l2cache_wbinv_all = (void *)cpufunc_nullop, + .cf_l2cache_wbinv_range = (void *)cpufunc_nullop, + .cf_l2cache_inv_range = (void *)cpufunc_nullop, + .cf_l2cache_wb_range = (void *)cpufunc_nullop, + .cf_l2cache_drain_writebuf = (void *)cpufunc_nullop, /* Other functions */ - - armv7_drain_writebuf, /* drain_writebuf */ - - (void *)cpufunc_nullop, /* sleep */ + .cf_drain_writebuf = armv7_drain_writebuf, + .cf_sleep = (void *)cpufunc_nullop, /* Soft functions */ - armv7_context_switch, /* context_switch */ - - pj4bv7_setup /* cpu setup */ + .cf_setup = pj4bv7_setup }; #endif /* CPU_MV_PJ4B */ @@ -444,111 +417,50 @@ struct cpu_functions fa526_cpufuncs = { #if defined(CPU_ARM1176) struct cpu_functions arm1176_cpufuncs = { - /* CPU functions */ - - cpufunc_nullop, /* cpwait */ - /* MMU functions */ - - cpufunc_control, /* control */ - arm11x6_setttb, /* Setttb */ - - /* TLB functions */ - - arm11_tlb_flushID, /* tlb_flushID */ - arm11_tlb_flushID_SE, /* tlb_flushID_SE */ - arm11_tlb_flushD, /* tlb_flushD */ - arm11_tlb_flushD_SE, /* tlb_flushD_SE */ + .cf_control = cpufunc_control, + .cf_setttb = arm11x6_setttb, /* Cache operations */ - - arm11x6_icache_sync_range, /* icache_sync_range */ - - arm11x6_dcache_wbinv_all, /* dcache_wbinv_all */ - armv6_dcache_wbinv_range, /* dcache_wbinv_range */ - armv6_dcache_inv_range, /* dcache_inv_range */ - armv6_dcache_wb_range, /* dcache_wb_range */ - - armv6_idcache_inv_all, /* idcache_inv_all */ - arm11x6_idcache_wbinv_all, /* idcache_wbinv_all */ - arm11x6_idcache_wbinv_range, /* idcache_wbinv_range */ - - (void *)cpufunc_nullop, /* l2cache_wbinv_all */ - (void *)cpufunc_nullop, /* l2cache_wbinv_range */ - (void *)cpufunc_nullop, /* l2cache_inv_range */ - (void *)cpufunc_nullop, /* l2cache_wb_range */ - (void *)cpufunc_nullop, /* l2cache_drain_writebuf */ + .cf_l2cache_wbinv_all = (void *)cpufunc_nullop, + .cf_l2cache_wbinv_range = (void *)cpufunc_nullop, + .cf_l2cache_inv_range = (void *)cpufunc_nullop, + .cf_l2cache_wb_range = (void *)cpufunc_nullop, + .cf_l2cache_drain_writebuf = (void *)cpufunc_nullop, /* Other functions */ - - arm11_drain_writebuf, /* drain_writebuf */ - - arm11x6_sleep, /* sleep */ + .cf_drain_writebuf = arm11_drain_writebuf, + .cf_sleep = arm11x6_sleep, /* Soft functions */ - - arm11_context_switch, /* context_switch */ - - arm11x6_setup /* cpu setup */ + .cf_setup = arm11x6_setup }; #endif /*CPU_ARM1176 */ #if defined(CPU_CORTEXA) || defined(CPU_KRAIT) struct cpu_functions cortexa_cpufuncs = { - /* CPU functions */ - - cpufunc_nullop, /* cpwait */ - /* MMU functions */ - - cpufunc_control, /* control */ - armv7_setttb, /* Setttb */ - - /* - * TLB functions. ARMv7 does all TLB ops based on a unified TLB model - * whether the hardware implements separate I+D or not, so we use the - * same 'ID' functions for all 3 variations. - */ - - armv7_tlb_flushID, /* tlb_flushID */ - armv7_tlb_flushID_SE, /* tlb_flushID_SE */ - armv7_tlb_flushID, /* tlb_flushD */ - armv7_tlb_flushID_SE, /* tlb_flushD_SE */ + .cf_control = cpufunc_control, + .cf_setttb = armv7_setttb, /* Cache operations */ - armv7_icache_sync_range, /* icache_sync_range */ - - armv7_dcache_wbinv_all, /* dcache_wbinv_all */ - armv7_dcache_wbinv_range, /* dcache_wbinv_range */ - armv7_dcache_inv_range, /* dcache_inv_range */ - armv7_dcache_wb_range, /* dcache_wb_range */ - - armv7_idcache_inv_all, /* idcache_inv_all */ - armv7_idcache_wbinv_all, /* idcache_wbinv_all */ - armv7_idcache_wbinv_range, /* idcache_wbinv_range */ - /* * Note: For CPUs using the PL310 the L2 ops are filled in when the * L2 cache controller is actually enabled. */ - cpufunc_nullop, /* l2cache_wbinv_all */ - (void *)cpufunc_nullop, /* l2cache_wbinv_range */ - (void *)cpufunc_nullop, /* l2cache_inv_range */ - (void *)cpufunc_nullop, /* l2cache_wb_range */ - (void *)cpufunc_nullop, /* l2cache_drain_writebuf */ + .cf_l2cache_wbinv_all = cpufunc_nullop, + .cf_l2cache_wbinv_range = (void *)cpufunc_nullop, + .cf_l2cache_inv_range = (void *)cpufunc_nullop, + .cf_l2cache_wb_range = (void *)cpufunc_nullop, + .cf_l2cache_drain_writebuf = (void *)cpufunc_nullop, /* Other functions */ - - armv7_drain_writebuf, /* drain_writebuf */ - - armv7_cpu_sleep, /* sleep */ + .cf_drain_writebuf = armv7_drain_writebuf, + .cf_sleep = armv7_cpu_sleep, /* Soft functions */ - - armv7_context_switch, /* context_switch */ - - cortexa_setup /* cpu setup */ + .cf_setup = cortexa_setup }; #endif /* CPU_CORTEXA */ @@ -767,6 +679,9 @@ set_cpufuncs(void) case CPU_ID_CORTEXA9: case CPU_ID_CORTEXA12: case CPU_ID_CORTEXA15: + case CPU_ID_CORTEXA53: + case CPU_ID_CORTEXA57: + case CPU_ID_CORTEXA72: case CPU_ID_KRAIT300: cpufuncs = cortexa_cpufuncs; get_cachetype_cp15(); Modified: stable/11/sys/arm/arm/genassym.c ============================================================================== --- stable/11/sys/arm/arm/genassym.c Sun Apr 16 06:00:14 2017 (r317001) +++ stable/11/sys/arm/arm/genassym.c Sun Apr 16 06:35:09 2017 (r317002) @@ -92,11 +92,13 @@ ASSYM(M_DATA, offsetof(struct mbuf, m_da ASSYM(M_NEXT, offsetof(struct mbuf, m_next)); ASSYM(IP_SRC, offsetof(struct ip, ip_src)); ASSYM(IP_DST, offsetof(struct ip, ip_dst)); +#if __ARM_ARCH < 6 ASSYM(CF_CONTEXT_SWITCH, offsetof(struct cpu_functions, cf_context_switch)); ASSYM(CF_DCACHE_WB_RANGE, offsetof(struct cpu_functions, cf_dcache_wb_range)); ASSYM(CF_IDCACHE_WBINV_ALL, offsetof(struct cpu_functions, cf_idcache_wbinv_all)); ASSYM(CF_L2CACHE_WBINV_ALL, offsetof(struct cpu_functions, cf_l2cache_wbinv_all)); ASSYM(CF_TLB_FLUSHID_SE, offsetof(struct cpu_functions, cf_tlb_flushID_SE)); +#endif ASSYM(TD_PCB, offsetof(struct thread, td_pcb)); ASSYM(TD_FLAGS, offsetof(struct thread, td_flags)); Modified: stable/11/sys/arm/include/armreg.h ============================================================================== --- stable/11/sys/arm/include/armreg.h Sun Apr 16 06:00:14 2017 (r317001) +++ stable/11/sys/arm/include/armreg.h Sun Apr 16 06:35:09 2017 (r317002) @@ -152,6 +152,9 @@ #define CPU_ID_CORTEXA15R1 (CPU_ID_CORTEXA15 | (1 << CPU_ID_VARIANT_SHIFT)) #define CPU_ID_CORTEXA15R2 (CPU_ID_CORTEXA15 | (2 << CPU_ID_VARIANT_SHIFT)) #define CPU_ID_CORTEXA15R3 (CPU_ID_CORTEXA15 | (3 << CPU_ID_VARIANT_SHIFT)) +#define CPU_ID_CORTEXA53 (CPU_ID_ARM_LTD | CPU_ID_CPUID_SCHEME | 0xd030) +#define CPU_ID_CORTEXA57 (CPU_ID_ARM_LTD | CPU_ID_CPUID_SCHEME | 0xd070) +#define CPU_ID_CORTEXA72 (CPU_ID_ARM_LTD | CPU_ID_CPUID_SCHEME | 0xd080) #define CPU_ID_KRAIT300 (CPU_ID_QUALCOM | CPU_ID_CPUID_SCHEME | 0x06f0) /* Snapdragon S4 Pro/APQ8064 */ Modified: stable/11/sys/arm/include/cpufunc.h ============================================================================== --- stable/11/sys/arm/include/cpufunc.h Sun Apr 16 06:00:14 2017 (r317001) +++ stable/11/sys/arm/include/cpufunc.h Sun Apr 16 06:35:09 2017 (r317002) @@ -58,14 +58,16 @@ breakpoint(void) struct cpu_functions { /* CPU functions */ - +#if __ARM_ARCH < 6 void (*cf_cpwait) (void); +#endif /* MMU functions */ u_int (*cf_control) (u_int bic, u_int eor); void (*cf_setttb) (u_int ttb); +#if __ARM_ARCH < 6 /* TLB functions */ void (*cf_tlb_flushID) (void); @@ -138,6 +140,7 @@ struct cpu_functions { void (*cf_idcache_inv_all) (void); void (*cf_idcache_wbinv_all) (void); void (*cf_idcache_wbinv_range) (vm_offset_t, vm_size_t); +#endif void (*cf_l2cache_wbinv_all) (void); void (*cf_l2cache_wbinv_range) (vm_offset_t, vm_size_t); void (*cf_l2cache_inv_range) (vm_offset_t, vm_size_t); @@ -150,9 +153,11 @@ struct cpu_functions { void (*cf_sleep) (int mode); +#if __ARM_ARCH < 6 /* Soft functions */ void (*cf_context_switch) (void); +#endif void (*cf_setup) (void); }; From owner-svn-src-stable@freebsd.org Sun Apr 16 06:51:07 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C962DD403D2; Sun, 16 Apr 2017 06:51:07 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id A4855E07; Sun, 16 Apr 2017 06:51:07 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G6p6OX065221; Sun, 16 Apr 2017 06:51:06 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G6p6NL065218; Sun, 16 Apr 2017 06:51:06 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160651.v3G6p6NL065218@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 06:51: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: r317003 - in stable/11/sys/arm: arm include X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 06:51:07 -0000 Author: mmel Date: Sun Apr 16 06:51:06 2017 New Revision: 317003 URL: https://svnweb.freebsd.org/changeset/base/317003 Log: MFC r306704,r308406: r306704: ARM: Remove next bunch of unused cpu_functions from ARMv6. r308406: Only include sys/boot.h if LINUX_BOOT_ABI is defined Modified: stable/11/sys/arm/arm/cpufunc.c stable/11/sys/arm/arm/machdep.c stable/11/sys/arm/include/cpufunc.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/arm/arm/cpufunc.c ============================================================================== --- stable/11/sys/arm/arm/cpufunc.c Sun Apr 16 06:35:09 2017 (r317002) +++ stable/11/sys/arm/arm/cpufunc.c Sun Apr 16 06:51:06 2017 (r317003) @@ -241,9 +241,6 @@ struct cpu_functions sheeva_cpufuncs = { #ifdef CPU_MV_PJ4B struct cpu_functions pj4bv7_cpufuncs = { - /* MMU functions */ - .cf_control = cpufunc_control, - .cf_setttb = armv7_setttb, /* Cache operations */ .cf_l2cache_wbinv_all = (void *)cpufunc_nullop, @@ -253,7 +250,6 @@ struct cpu_functions pj4bv7_cpufuncs = { .cf_l2cache_drain_writebuf = (void *)cpufunc_nullop, /* Other functions */ - .cf_drain_writebuf = armv7_drain_writebuf, .cf_sleep = (void *)cpufunc_nullop, /* Soft functions */ @@ -417,9 +413,6 @@ struct cpu_functions fa526_cpufuncs = { #if defined(CPU_ARM1176) struct cpu_functions arm1176_cpufuncs = { - /* MMU functions */ - .cf_control = cpufunc_control, - .cf_setttb = arm11x6_setttb, /* Cache operations */ .cf_l2cache_wbinv_all = (void *)cpufunc_nullop, @@ -429,7 +422,6 @@ struct cpu_functions arm1176_cpufuncs = .cf_l2cache_drain_writebuf = (void *)cpufunc_nullop, /* Other functions */ - .cf_drain_writebuf = arm11_drain_writebuf, .cf_sleep = arm11x6_sleep, /* Soft functions */ @@ -439,9 +431,6 @@ struct cpu_functions arm1176_cpufuncs = #if defined(CPU_CORTEXA) || defined(CPU_KRAIT) struct cpu_functions cortexa_cpufuncs = { - /* MMU functions */ - .cf_control = cpufunc_control, - .cf_setttb = armv7_setttb, /* Cache operations */ @@ -456,7 +445,6 @@ struct cpu_functions cortexa_cpufuncs = .cf_l2cache_drain_writebuf = (void *)cpufunc_nullop, /* Other functions */ - .cf_drain_writebuf = armv7_drain_writebuf, .cf_sleep = armv7_cpu_sleep, /* Soft functions */ Modified: stable/11/sys/arm/arm/machdep.c ============================================================================== --- stable/11/sys/arm/arm/machdep.c Sun Apr 16 06:35:09 2017 (r317002) +++ stable/11/sys/arm/arm/machdep.c Sun Apr 16 06:51:06 2017 (r317003) @@ -76,7 +76,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#if defined(LINUX_BOOT_ABI) #include +#endif #include #include #include @@ -412,7 +414,7 @@ arm_vector_init(vm_offset_t va, int whic icache_sync(va, (ARM_NVEC * 2) * sizeof(u_int)); vector_page = va; - +#if __ARM_ARCH < 6 if (va == ARM_VECTORS_HIGH) { /* * Enable high vectors in the system control reg (SCTLR). @@ -427,6 +429,7 @@ arm_vector_init(vm_offset_t va, int whic */ cpu_control(CPU_CONTROL_VECRELOC, CPU_CONTROL_VECRELOC); } +#endif } static void Modified: stable/11/sys/arm/include/cpufunc.h ============================================================================== --- stable/11/sys/arm/include/cpufunc.h Sun Apr 16 06:35:09 2017 (r317002) +++ stable/11/sys/arm/include/cpufunc.h Sun Apr 16 06:51:06 2017 (r317003) @@ -60,14 +60,12 @@ struct cpu_functions { /* CPU functions */ #if __ARM_ARCH < 6 void (*cf_cpwait) (void); -#endif /* MMU functions */ u_int (*cf_control) (u_int bic, u_int eor); void (*cf_setttb) (u_int ttb); -#if __ARM_ARCH < 6 /* TLB functions */ void (*cf_tlb_flushID) (void); @@ -149,7 +147,9 @@ struct cpu_functions { /* Other functions */ +#if __ARM_ARCH < 6 void (*cf_drain_writebuf) (void); +#endif void (*cf_sleep) (int mode); From owner-svn-src-stable@freebsd.org Sun Apr 16 07:21:22 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 577FED40A72; Sun, 16 Apr 2017 07:21:22 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id 25B9CCC8; Sun, 16 Apr 2017 07:21:22 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G7LL3e080339; Sun, 16 Apr 2017 07:21:21 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G7LLb6080335; Sun, 16 Apr 2017 07:21:21 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160721.v3G7LLb6080335@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 07:21:21 +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: r317004 - in stable/11/sys: amd64/amd64 amd64/include/pc arm/arm arm/at91 arm/include arm64/arm64 conf i386/include/pc sys X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 07:21:22 -0000 Author: mmel Date: Sun Apr 16 07:21:20 2017 New Revision: 317004 URL: https://svnweb.freebsd.org/changeset/base/317004 Log: MFC r303261,r315059: r303261: Add more UEFI/e820 memory types from latest specifications. r315059: Split overbloated machep.c to multiple files and do basic cleanup of these fragments. Added: stable/11/sys/arm/arm/machdep_boot.c - copied unchanged from r315059, head/sys/arm/arm/machdep_boot.c stable/11/sys/arm/arm/machdep_kdb.c - copied unchanged from r315059, head/sys/arm/arm/machdep_kdb.c stable/11/sys/arm/arm/machdep_ptrace.c - copied unchanged from r315059, head/sys/arm/arm/machdep_ptrace.c Modified: stable/11/sys/amd64/amd64/machdep.c stable/11/sys/amd64/include/pc/bios.h stable/11/sys/arm/arm/machdep.c stable/11/sys/arm/at91/at91_machdep.c stable/11/sys/arm/include/machdep.h stable/11/sys/arm64/arm64/machdep.c stable/11/sys/conf/files.arm stable/11/sys/i386/include/pc/bios.h stable/11/sys/sys/efi.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/amd64/amd64/machdep.c ============================================================================== --- stable/11/sys/amd64/amd64/machdep.c Sun Apr 16 06:51:06 2017 (r317003) +++ stable/11/sys/amd64/amd64/machdep.c Sun Apr 16 07:21:20 2017 (r317004) @@ -1086,7 +1086,8 @@ add_efi_map_entries(struct efi_map_heade "ACPIMemoryNVS", "MemoryMappedIO", "MemoryMappedIOPortSpace", - "PalCode" + "PalCode", + "PersistentMemory" }; /* @@ -1107,7 +1108,7 @@ add_efi_map_entries(struct efi_map_heade for (i = 0, p = map; i < ndesc; i++, p = efi_next_descriptor(p, efihdr->descriptor_size)) { if (boothowto & RB_VERBOSE) { - if (p->md_type <= EFI_MD_TYPE_PALCODE) + if (p->md_type < nitems(types)) type = types[p->md_type]; else type = ""; @@ -1129,6 +1130,12 @@ add_efi_map_entries(struct efi_map_heade printf("RP "); if (p->md_attr & EFI_MD_ATTR_XP) printf("XP "); + if (p->md_attr & EFI_MD_ATTR_NV) + printf("NV "); + if (p->md_attr & EFI_MD_ATTR_MORE_RELIABLE) + printf("MORE_RELIABLE "); + if (p->md_attr & EFI_MD_ATTR_RO) + printf("RO "); if (p->md_attr & EFI_MD_ATTR_RT) printf("RUNTIME"); printf("\n"); Modified: stable/11/sys/amd64/include/pc/bios.h ============================================================================== --- stable/11/sys/amd64/include/pc/bios.h Sun Apr 16 06:51:06 2017 (r317003) +++ stable/11/sys/amd64/include/pc/bios.h Sun Apr 16 07:21:20 2017 (r317004) @@ -40,6 +40,9 @@ #define SMAP_TYPE_ACPI_RECLAIM 3 #define SMAP_TYPE_ACPI_NVS 4 #define SMAP_TYPE_ACPI_ERROR 5 +#define SMAP_TYPE_DISABLED 6 +#define SMAP_TYPE_PMEM 7 +#define SMAP_TYPE_PRAM 12 #define SMAP_XATTR_ENABLED 0x00000001 #define SMAP_XATTR_NON_VOLATILE 0x00000002 Modified: stable/11/sys/arm/arm/machdep.c ============================================================================== --- stable/11/sys/arm/arm/machdep.c Sun Apr 16 06:51:06 2017 (r317003) +++ stable/11/sys/arm/arm/machdep.c Sun Apr 16 07:21:20 2017 (r317004) @@ -53,129 +53,43 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include #include #include #include #include -#include #include #include -#include #include #include #include -#include #include -#include -#include #include -#include -#include -#include -#include -#if defined(LINUX_BOOT_ABI) -#include -#endif #include #include -#include #include -#include #include #include -#include -#include -#include -#include -#include #include #include #include -#include -#include -#include -#include #include -#include -#include -#include #include -#include #include #include #include #include -#include -#include +#include #include #include #include -#include #ifdef FDT -#include #include -#include +#include #endif -#ifdef DDB -#include - -#if __ARM_ARCH >= 6 - -DB_SHOW_COMMAND(cp15, db_show_cp15) -{ - u_int reg; - - reg = cp15_midr_get(); - db_printf("Cpu ID: 0x%08x\n", reg); - reg = cp15_ctr_get(); - db_printf("Current Cache Lvl ID: 0x%08x\n",reg); - - reg = cp15_sctlr_get(); - db_printf("Ctrl: 0x%08x\n",reg); - reg = cp15_actlr_get(); - db_printf("Aux Ctrl: 0x%08x\n",reg); - - reg = cp15_id_pfr0_get(); - db_printf("Processor Feat 0: 0x%08x\n", reg); - reg = cp15_id_pfr1_get(); - db_printf("Processor Feat 1: 0x%08x\n", reg); - reg = cp15_id_dfr0_get(); - db_printf("Debug Feat 0: 0x%08x\n", reg); - reg = cp15_id_afr0_get(); - db_printf("Auxiliary Feat 0: 0x%08x\n", reg); - reg = cp15_id_mmfr0_get(); - db_printf("Memory Model Feat 0: 0x%08x\n", reg); - reg = cp15_id_mmfr1_get(); - db_printf("Memory Model Feat 1: 0x%08x\n", reg); - reg = cp15_id_mmfr2_get(); - db_printf("Memory Model Feat 2: 0x%08x\n", reg); - reg = cp15_id_mmfr3_get(); - db_printf("Memory Model Feat 3: 0x%08x\n", reg); - reg = cp15_ttbr_get(); - db_printf("TTB0: 0x%08x\n", reg); -} - -DB_SHOW_COMMAND(vtop, db_show_vtop) -{ - u_int reg; - - if (have_addr) { - cp15_ats1cpr_set(addr); - reg = cp15_par_get(); - db_printf("Physical address reg: 0x%08x\n",reg); - } else - db_printf("show vtop \n"); -} -#endif /* __ARM_ARCH >= 6 */ -#endif /* DDB */ - #ifdef DEBUG #define debugf(fmt, args...) printf(fmt, ##args) #else @@ -204,10 +118,7 @@ int _min_bzero_size = 0; extern int *end; #ifdef FDT -static char *loader_envp; - vm_paddr_t pmap_pa; - #if __ARM_ARCH >= 6 vm_offset_t systempage; vm_offset_t irqstack; @@ -220,64 +131,21 @@ vm_offset_t abtstack; * stacks etc.), uprounded to be divisible by 4. */ #define KERNEL_PT_MAX 78 - static struct pv_addr kernel_pt_table[KERNEL_PT_MAX]; - struct pv_addr systempage; static struct pv_addr msgbufpv; struct pv_addr irqstack; struct pv_addr undstack; struct pv_addr abtstack; static struct pv_addr kernelstack; -#endif -#endif - -#if defined(LINUX_BOOT_ABI) -#define LBABI_MAX_BANKS 10 +#endif /* __ARM_ARCH >= 6 */ +#endif /* FDT */ -#define CMDLINE_GUARD "FreeBSD:" -uint32_t board_id; -struct arm_lbabi_tag *atag_list; -char linux_command_line[LBABI_MAX_COMMAND_LINE + 1]; -char atags[LBABI_MAX_COMMAND_LINE * 2]; -uint32_t memstart[LBABI_MAX_BANKS]; -uint32_t memsize[LBABI_MAX_BANKS]; -uint32_t membanks; -#endif #ifdef MULTIDELAY static delay_func *delay_impl; static void *delay_arg; #endif -static uint32_t board_revision; -/* hex representation of uint64_t */ -static char board_serial[32]; - -SYSCTL_NODE(_hw, OID_AUTO, board, CTLFLAG_RD, 0, "Board attributes"); -SYSCTL_UINT(_hw_board, OID_AUTO, revision, CTLFLAG_RD, - &board_revision, 0, "Board revision"); -SYSCTL_STRING(_hw_board, OID_AUTO, serial, CTLFLAG_RD, - board_serial, 0, "Board serial"); - -int vfp_exists; -SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD, - &vfp_exists, 0, "Floating point support enabled"); - -void -board_set_serial(uint64_t serial) -{ - - snprintf(board_serial, sizeof(board_serial)-1, - "%016jx", serial); -} - -void -board_set_revision(uint32_t revision) -{ - - board_revision = revision; -} - void sendsig(catcher, ksi, mask) sig_t catcher; @@ -569,237 +437,6 @@ DELAY(int usec) } #endif -int -fill_regs(struct thread *td, struct reg *regs) -{ - struct trapframe *tf = td->td_frame; - bcopy(&tf->tf_r0, regs->r, sizeof(regs->r)); - regs->r_sp = tf->tf_usr_sp; - regs->r_lr = tf->tf_usr_lr; - regs->r_pc = tf->tf_pc; - regs->r_cpsr = tf->tf_spsr; - return (0); -} -int -fill_fpregs(struct thread *td, struct fpreg *regs) -{ - bzero(regs, sizeof(*regs)); - return (0); -} - -int -set_regs(struct thread *td, struct reg *regs) -{ - struct trapframe *tf = td->td_frame; - - bcopy(regs->r, &tf->tf_r0, sizeof(regs->r)); - tf->tf_usr_sp = regs->r_sp; - tf->tf_usr_lr = regs->r_lr; - tf->tf_pc = regs->r_pc; - tf->tf_spsr &= ~PSR_FLAGS; - tf->tf_spsr |= regs->r_cpsr & PSR_FLAGS; - return (0); -} - -int -set_fpregs(struct thread *td, struct fpreg *regs) -{ - return (0); -} - -int -fill_dbregs(struct thread *td, struct dbreg *regs) -{ - return (0); -} -int -set_dbregs(struct thread *td, struct dbreg *regs) -{ - return (0); -} - - -static int -ptrace_read_int(struct thread *td, vm_offset_t addr, uint32_t *v) -{ - - if (proc_readmem(td, td->td_proc, addr, v, sizeof(*v)) != sizeof(*v)) - return (ENOMEM); - return (0); -} - -static int -ptrace_write_int(struct thread *td, vm_offset_t addr, uint32_t v) -{ - - if (proc_writemem(td, td->td_proc, addr, &v, sizeof(v)) != sizeof(v)) - return (ENOMEM); - return (0); -} - -static u_int -ptrace_get_usr_reg(void *cookie, int reg) -{ - int ret; - struct thread *td = cookie; - - KASSERT(((reg >= 0) && (reg <= ARM_REG_NUM_PC)), - ("reg is outside range")); - - switch(reg) { - case ARM_REG_NUM_PC: - ret = td->td_frame->tf_pc; - break; - case ARM_REG_NUM_LR: - ret = td->td_frame->tf_usr_lr; - break; - case ARM_REG_NUM_SP: - ret = td->td_frame->tf_usr_sp; - break; - default: - ret = *((register_t*)&td->td_frame->tf_r0 + reg); - break; - } - - return (ret); -} - -static u_int -ptrace_get_usr_int(void* cookie, vm_offset_t offset, u_int* val) -{ - struct thread *td = cookie; - u_int error; - - error = ptrace_read_int(td, offset, val); - - return (error); -} - -/** - * This function parses current instruction opcode and decodes - * any possible jump (change in PC) which might occur after - * the instruction is executed. - * - * @param td Thread structure of analysed task - * @param cur_instr Currently executed instruction - * @param alt_next_address Pointer to the variable where - * the destination address of the - * jump instruction shall be stored. - * - * @return <0> when jump is possible - * otherwise - */ -static int -ptrace_get_alternative_next(struct thread *td, uint32_t cur_instr, - uint32_t *alt_next_address) -{ - int error; - - if (inst_branch(cur_instr) || inst_call(cur_instr) || - inst_return(cur_instr)) { - error = arm_predict_branch(td, cur_instr, td->td_frame->tf_pc, - alt_next_address, ptrace_get_usr_reg, ptrace_get_usr_int); - - return (error); - } - - return (EINVAL); -} - -int -ptrace_single_step(struct thread *td) -{ - struct proc *p; - int error, error_alt; - uint32_t cur_instr, alt_next = 0; - - /* TODO: This needs to be updated for Thumb-2 */ - if ((td->td_frame->tf_spsr & PSR_T) != 0) - return (EINVAL); - - KASSERT(td->td_md.md_ptrace_instr == 0, - ("Didn't clear single step")); - KASSERT(td->td_md.md_ptrace_instr_alt == 0, - ("Didn't clear alternative single step")); - p = td->td_proc; - PROC_UNLOCK(p); - - error = ptrace_read_int(td, td->td_frame->tf_pc, - &cur_instr); - if (error) - goto out; - - error = ptrace_read_int(td, td->td_frame->tf_pc + INSN_SIZE, - &td->td_md.md_ptrace_instr); - if (error == 0) { - error = ptrace_write_int(td, td->td_frame->tf_pc + INSN_SIZE, - PTRACE_BREAKPOINT); - if (error) { - td->td_md.md_ptrace_instr = 0; - } else { - td->td_md.md_ptrace_addr = td->td_frame->tf_pc + - INSN_SIZE; - } - } - - error_alt = ptrace_get_alternative_next(td, cur_instr, &alt_next); - if (error_alt == 0) { - error_alt = ptrace_read_int(td, alt_next, - &td->td_md.md_ptrace_instr_alt); - if (error_alt) { - td->td_md.md_ptrace_instr_alt = 0; - } else { - error_alt = ptrace_write_int(td, alt_next, - PTRACE_BREAKPOINT); - if (error_alt) - td->td_md.md_ptrace_instr_alt = 0; - else - td->td_md.md_ptrace_addr_alt = alt_next; - } - } - -out: - PROC_LOCK(p); - return ((error != 0) && (error_alt != 0)); -} - -int -ptrace_clear_single_step(struct thread *td) -{ - struct proc *p; - - /* TODO: This needs to be updated for Thumb-2 */ - if ((td->td_frame->tf_spsr & PSR_T) != 0) - return (EINVAL); - - if (td->td_md.md_ptrace_instr != 0) { - p = td->td_proc; - PROC_UNLOCK(p); - ptrace_write_int(td, td->td_md.md_ptrace_addr, - td->td_md.md_ptrace_instr); - PROC_LOCK(p); - td->td_md.md_ptrace_instr = 0; - } - - if (td->td_md.md_ptrace_instr_alt != 0) { - p = td->td_proc; - PROC_UNLOCK(p); - ptrace_write_int(td, td->td_md.md_ptrace_addr_alt, - td->td_md.md_ptrace_instr_alt); - PROC_LOCK(p); - td->td_md.md_ptrace_instr_alt = 0; - } - - return (0); -} - -int -ptrace_set_pc(struct thread *td, unsigned long addr) -{ - td->td_frame->tf_pc = addr; - return (0); -} - void cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size) { @@ -919,9 +556,6 @@ set_mcontext(struct thread *td, mcontext return (0); } -/* - * MPSAFE - */ int sys_sigreturn(td, uap) struct thread *td; @@ -953,7 +587,6 @@ sys_sigreturn(td, uap) return (EJUSTRETURN); } - /* * Construct a PCB from a trapframe. This is called from kdb_trap() where * we want to start a backtrace from the function that caused us to enter @@ -978,68 +611,6 @@ makectx(struct trapframe *tf, struct pcb pcb->pcb_regs.sf_sp = tf->tf_usr_sp; } -/* - * Fake up a boot descriptor table - */ -vm_offset_t -fake_preload_metadata(struct arm_boot_params *abp __unused, void *dtb_ptr, - size_t dtb_size) -{ -#ifdef DDB - vm_offset_t zstart = 0, zend = 0; -#endif - vm_offset_t lastaddr; - int i = 0; - static uint32_t fake_preload[35]; - - fake_preload[i++] = MODINFO_NAME; - fake_preload[i++] = strlen("kernel") + 1; - strcpy((char*)&fake_preload[i++], "kernel"); - i += 1; - fake_preload[i++] = MODINFO_TYPE; - fake_preload[i++] = strlen("elf kernel") + 1; - strcpy((char*)&fake_preload[i++], "elf kernel"); - i += 2; - fake_preload[i++] = MODINFO_ADDR; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = KERNVIRTADDR; - fake_preload[i++] = MODINFO_SIZE; - fake_preload[i++] = sizeof(uint32_t); - fake_preload[i++] = (uint32_t)&end - KERNVIRTADDR; -#ifdef DDB - if (*(uint32_t *)KERNVIRTADDR == MAGIC_TRAMP_NUMBER) { - fake_preload[i++] = MODINFO_METADATA|MODINFOMD_SSYM; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 4); - fake_preload[i++] = MODINFO_METADATA|MODINFOMD_ESYM; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 8); - lastaddr = *(uint32_t *)(KERNVIRTADDR + 8); - zend = lastaddr; - zstart = *(uint32_t *)(KERNVIRTADDR + 4); - db_fetch_ksymtab(zstart, zend); - } else -#endif - lastaddr = (vm_offset_t)&end; - if (dtb_ptr != NULL) { - /* Copy DTB to KVA space and insert it into module chain. */ - lastaddr = roundup(lastaddr, sizeof(int)); - fake_preload[i++] = MODINFO_METADATA | MODINFOMD_DTBP; - fake_preload[i++] = sizeof(uint32_t); - fake_preload[i++] = (uint32_t)lastaddr; - memmove((void *)lastaddr, dtb_ptr, dtb_size); - lastaddr += dtb_size; - lastaddr = roundup(lastaddr, sizeof(int)); - } - fake_preload[i++] = 0; - fake_preload[i] = 0; - preload_metadata = (void *)fake_preload; - - init_static_kenv(NULL, 0); - - return (lastaddr); -} - void pcpu0_init(void) { @@ -1050,208 +621,6 @@ pcpu0_init(void) PCPU_SET(curthread, &thread0); } -#if defined(LINUX_BOOT_ABI) - -/* Convert the U-Boot command line into FreeBSD kenv and boot options. */ -static void -cmdline_set_env(char *cmdline, const char *guard) -{ - char *cmdline_next, *env; - size_t size, guard_len; - int i; - - size = strlen(cmdline); - /* Skip leading spaces. */ - for (; isspace(*cmdline) && (size > 0); cmdline++) - size--; - - /* Test and remove guard. */ - if (guard != NULL && guard[0] != '\0') { - guard_len = strlen(guard); - if (strncasecmp(cmdline, guard, guard_len) != 0) - return; - cmdline += guard_len; - size -= guard_len; - } - - /* Skip leading spaces. */ - for (; isspace(*cmdline) && (size > 0); cmdline++) - size--; - - /* Replace ',' with '\0'. */ - /* TODO: implement escaping for ',' character. */ - cmdline_next = cmdline; - while(strsep(&cmdline_next, ",") != NULL) - ; - init_static_kenv(cmdline, 0); - /* Parse boothowto. */ - for (i = 0; howto_names[i].ev != NULL; i++) { - env = kern_getenv(howto_names[i].ev); - if (env != NULL) { - if (strtoul(env, NULL, 10) != 0) - boothowto |= howto_names[i].mask; - freeenv(env); - } - } -} - -vm_offset_t -linux_parse_boot_param(struct arm_boot_params *abp) -{ - struct arm_lbabi_tag *walker; - uint32_t revision; - uint64_t serial; - int size; - vm_offset_t lastaddr; -#ifdef FDT - struct fdt_header *dtb_ptr; - uint32_t dtb_size; -#endif - - /* - * Linux boot ABI: r0 = 0, r1 is the board type (!= 0) and r2 - * is atags or dtb pointer. If all of these aren't satisfied, - * then punt. Unfortunately, it looks like DT enabled kernels - * doesn't uses board type and U-Boot delivers 0 in r1 for them. - */ - if (abp->abp_r0 != 0 || abp->abp_r2 == 0) - return (0); -#ifdef FDT - /* Test if r2 point to valid DTB. */ - dtb_ptr = (struct fdt_header *)abp->abp_r2; - if (fdt_check_header(dtb_ptr) == 0) { - dtb_size = fdt_totalsize(dtb_ptr); - return (fake_preload_metadata(abp, dtb_ptr, dtb_size)); - } -#endif - - board_id = abp->abp_r1; - walker = (struct arm_lbabi_tag *)abp->abp_r2; - - if (ATAG_TAG(walker) != ATAG_CORE) - return 0; - - atag_list = walker; - while (ATAG_TAG(walker) != ATAG_NONE) { - switch (ATAG_TAG(walker)) { - case ATAG_CORE: - break; - case ATAG_MEM: - arm_physmem_hardware_region(walker->u.tag_mem.start, - walker->u.tag_mem.size); - break; - case ATAG_INITRD2: - break; - case ATAG_SERIAL: - serial = walker->u.tag_sn.high; - serial <<= 32; - serial |= walker->u.tag_sn.low; - board_set_serial(serial); - break; - case ATAG_REVISION: - revision = walker->u.tag_rev.rev; - board_set_revision(revision); - break; - case ATAG_CMDLINE: - size = ATAG_SIZE(walker) - - sizeof(struct arm_lbabi_header); - size = min(size, LBABI_MAX_COMMAND_LINE); - strncpy(linux_command_line, walker->u.tag_cmd.command, - size); - linux_command_line[size] = '\0'; - break; - default: - break; - } - walker = ATAG_NEXT(walker); - } - - /* Save a copy for later */ - bcopy(atag_list, atags, - (char *)walker - (char *)atag_list + ATAG_SIZE(walker)); - - lastaddr = fake_preload_metadata(abp, NULL, 0); - cmdline_set_env(linux_command_line, CMDLINE_GUARD); - return lastaddr; -} -#endif - -#if defined(FREEBSD_BOOT_LOADER) -vm_offset_t -freebsd_parse_boot_param(struct arm_boot_params *abp) -{ - vm_offset_t lastaddr = 0; - void *mdp; - void *kmdp; -#ifdef DDB - vm_offset_t ksym_start; - vm_offset_t ksym_end; -#endif - - /* - * Mask metadata pointer: it is supposed to be on page boundary. If - * the first argument (mdp) doesn't point to a valid address the - * bootloader must have passed us something else than the metadata - * ptr, so we give up. Also give up if we cannot find metadta section - * the loader creates that we get all this data out of. - */ - - if ((mdp = (void *)(abp->abp_r0 & ~PAGE_MASK)) == NULL) - return 0; - preload_metadata = mdp; - kmdp = preload_search_by_type("elf kernel"); - if (kmdp == NULL) - return 0; - - boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int); - loader_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *); - init_static_kenv(loader_envp, 0); - lastaddr = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t); -#ifdef DDB - ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t); - ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t); - db_fetch_ksymtab(ksym_start, ksym_end); -#endif - return lastaddr; -} -#endif - -vm_offset_t -default_parse_boot_param(struct arm_boot_params *abp) -{ - vm_offset_t lastaddr; - -#if defined(LINUX_BOOT_ABI) - if ((lastaddr = linux_parse_boot_param(abp)) != 0) - return lastaddr; -#endif -#if defined(FREEBSD_BOOT_LOADER) - if ((lastaddr = freebsd_parse_boot_param(abp)) != 0) - return lastaddr; -#endif - /* Fall back to hardcoded metadata. */ - lastaddr = fake_preload_metadata(abp, NULL, 0); - - return lastaddr; -} - -/* - * Stub version of the boot parameter parsing routine. We are - * called early in initarm, before even VM has been initialized. - * This routine needs to preserve any data that the boot loader - * has passed in before the kernel starts to grow past the end - * of the BSS, traditionally the place boot-loaders put this data. - * - * Since this is called so early, things that depend on the vm system - * being setup (including access to some SoC's serial ports), about - * all that can be done in this routine is to copy the arguments. - * - * This is the default boot parameter parsing routine. Individual - * kernels/boards can override this weak function with one of their - * own. We just fake metadata... - */ -__weak_reference(default_parse_boot_param, parse_boot_param); - /* * Initialize proc0 */ @@ -1269,111 +638,6 @@ init_proc0(vm_offset_t kstack) pcpup->pc_curpcb = thread0.td_pcb; } -int -arm_predict_branch(void *cookie, u_int insn, register_t pc, register_t *new_pc, - u_int (*fetch_reg)(void*, int), u_int (*read_int)(void*, vm_offset_t, u_int*)) -{ - u_int addr, nregs, offset = 0; - int error = 0; - - switch ((insn >> 24) & 0xf) { - case 0x2: /* add pc, reg1, #value */ - case 0x0: /* add pc, reg1, reg2, lsl #offset */ - addr = fetch_reg(cookie, (insn >> 16) & 0xf); - if (((insn >> 16) & 0xf) == 15) - addr += 8; - if (insn & 0x0200000) { - offset = (insn >> 7) & 0x1e; - offset = (insn & 0xff) << (32 - offset) | - (insn & 0xff) >> offset; - } else { - - offset = fetch_reg(cookie, insn & 0x0f); - if ((insn & 0x0000ff0) != 0x00000000) { - if (insn & 0x10) - nregs = fetch_reg(cookie, - (insn >> 8) & 0xf); - else - nregs = (insn >> 7) & 0x1f; - switch ((insn >> 5) & 3) { - case 0: - /* lsl */ - offset = offset << nregs; - break; - case 1: - /* lsr */ - offset = offset >> nregs; - break; - default: - break; /* XXX */ - } - - } - *new_pc = addr + offset; - return (0); - - } - - case 0xa: /* b ... */ - case 0xb: /* bl ... */ - addr = ((insn << 2) & 0x03ffffff); - if (addr & 0x02000000) - addr |= 0xfc000000; - *new_pc = (pc + 8 + addr); - return (0); - case 0x7: /* ldr pc, [pc, reg, lsl #2] */ - addr = fetch_reg(cookie, insn & 0xf); - addr = pc + 8 + (addr << 2); - error = read_int(cookie, addr, &addr); - *new_pc = addr; - return (error); - case 0x1: /* mov pc, reg */ - *new_pc = fetch_reg(cookie, insn & 0xf); - return (0); - case 0x4: - case 0x5: /* ldr pc, [reg] */ - addr = fetch_reg(cookie, (insn >> 16) & 0xf); - /* ldr pc, [reg, #offset] */ - if (insn & (1 << 24)) - offset = insn & 0xfff; - if (insn & 0x00800000) - addr += offset; - else - addr -= offset; - error = read_int(cookie, addr, &addr); - *new_pc = addr; - - return (error); - case 0x8: /* ldmxx reg, {..., pc} */ - case 0x9: - addr = fetch_reg(cookie, (insn >> 16) & 0xf); - nregs = (insn & 0x5555) + ((insn >> 1) & 0x5555); - nregs = (nregs & 0x3333) + ((nregs >> 2) & 0x3333); - nregs = (nregs + (nregs >> 4)) & 0x0f0f; - nregs = (nregs + (nregs >> 8)) & 0x001f; - switch ((insn >> 23) & 0x3) { - case 0x0: /* ldmda */ - addr = addr - 0; - break; - case 0x1: /* ldmia */ - addr = addr + 0 + ((nregs - 1) << 2); - break; - case 0x2: /* ldmdb */ - addr = addr - 4; - break; - case 0x3: /* ldmib */ - addr = addr + 4 + ((nregs - 1) << 2); - break; - } - error = read_int(cookie, addr, &addr); - *new_pc = addr; - - return (error); - default: - return (EINVAL); - } -} - #if __ARM_ARCH >= 6 void set_stackptrs(int cpu) @@ -1400,139 +664,8 @@ set_stackptrs(int cpu) } #endif -#ifdef EFI -static void -add_efi_map_entries(struct efi_map_header *efihdr, struct mem_region *mr, - int *mrcnt) -{ - struct efi_md *map, *p; - const char *type; - size_t efisz, memory_size; - int ndesc, i, j; - - static const char *types[] = { - "Reserved", - "LoaderCode", - "LoaderData", - "BootServicesCode", - "BootServicesData", - "RuntimeServicesCode", - "RuntimeServicesData", - "ConventionalMemory", - "UnusableMemory", - "ACPIReclaimMemory", - "ACPIMemoryNVS", - "MemoryMappedIO", - "MemoryMappedIOPortSpace", - "PalCode" - }; - - *mrcnt = 0; - - /* - * Memory map data provided by UEFI via the GetMemoryMap - * Boot Services API. - */ - efisz = roundup2(sizeof(struct efi_map_header), 0x10); - map = (struct efi_md *)((uint8_t *)efihdr + efisz); - - if (efihdr->descriptor_size == 0) - return; - ndesc = efihdr->memory_size / efihdr->descriptor_size; - - if (boothowto & RB_VERBOSE) - printf("%23s %12s %12s %8s %4s\n", - "Type", "Physical", "Virtual", "#Pages", "Attr"); - - memory_size = 0; - for (i = 0, j = 0, p = map; i < ndesc; i++, - p = efi_next_descriptor(p, efihdr->descriptor_size)) { - if (boothowto & RB_VERBOSE) { - if (p->md_type <= EFI_MD_TYPE_PALCODE) - type = types[p->md_type]; - else - type = ""; - printf("%23s %012llx %12p %08llx ", type, p->md_phys, - p->md_virt, p->md_pages); - if (p->md_attr & EFI_MD_ATTR_UC) - printf("UC "); - if (p->md_attr & EFI_MD_ATTR_WC) - printf("WC "); - if (p->md_attr & EFI_MD_ATTR_WT) - printf("WT "); - if (p->md_attr & EFI_MD_ATTR_WB) - printf("WB "); - if (p->md_attr & EFI_MD_ATTR_UCE) - printf("UCE "); - if (p->md_attr & EFI_MD_ATTR_WP) - printf("WP "); - if (p->md_attr & EFI_MD_ATTR_RP) - printf("RP "); - if (p->md_attr & EFI_MD_ATTR_XP) - printf("XP "); - if (p->md_attr & EFI_MD_ATTR_RT) - printf("RUNTIME"); - printf("\n"); - } - - switch (p->md_type) { - case EFI_MD_TYPE_CODE: - case EFI_MD_TYPE_DATA: - case EFI_MD_TYPE_BS_CODE: - case EFI_MD_TYPE_BS_DATA: - case EFI_MD_TYPE_FREE: - /* - * We're allowed to use any entry with these types. - */ - break; - default: - continue; - } - - j++; - if (j >= FDT_MEM_REGIONS) - break; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Sun Apr 16 07:33:49 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 43CCCD40EA2; Sun, 16 Apr 2017 07:33:49 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id 11E601475; Sun, 16 Apr 2017 07:33:48 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G7Xm4T085455; Sun, 16 Apr 2017 07:33:48 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G7Xlja085445; Sun, 16 Apr 2017 07:33:47 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160733.v3G7Xlja085445@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 07:33: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: r317005 - in stable/11: lib/libthread_db/arch/arm sys/arm/arm sys/arm/include X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 07:33:49 -0000 Author: mmel Date: Sun Apr 16 07:33:47 2017 New Revision: 317005 URL: https://svnweb.freebsd.org/changeset/base/317005 Log: MFC r315900,r315973,r315974: r315900: Cleanup structures related to VFP and/or mcontext_t. - in mcontext_t, rename newer used 'union __vfp' to equaly sized 'mc_spare'. Space allocated by 'union __vfp' is too small and cannot hold full VFP context. - move structures defined in fp.h to more appropriate headers. - remove all unused VFP structures. r315973: Save VFP state on fork(). Update the copy of VFP state in PCB before it is cloned for new process. r315974: Preserve VFP state across signal delivery. Deleted: stable/11/sys/arm/include/fp.h Modified: stable/11/lib/libthread_db/arch/arm/libpthread_md.c stable/11/sys/arm/arm/machdep.c stable/11/sys/arm/arm/vfp.c stable/11/sys/arm/arm/vm_machdep.c stable/11/sys/arm/include/frame.h stable/11/sys/arm/include/pcb.h stable/11/sys/arm/include/reg.h stable/11/sys/arm/include/ucontext.h stable/11/sys/arm/include/vfp.h Directory Properties: stable/11/ (props changed) Modified: stable/11/lib/libthread_db/arch/arm/libpthread_md.c ============================================================================== --- stable/11/lib/libthread_db/arch/arm/libpthread_md.c Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/lib/libthread_db/arch/arm/libpthread_md.c Sun Apr 16 07:33:47 2017 (r317005) @@ -90,7 +90,9 @@ pt_fpreg_to_ucontext(const struct fpreg mcontext_t *mc = &uc->uc_mcontext; /* XXX */ - memset(&mc->__fpu, 0, sizeof(mc->__fpu)); + mc->mc_vfp_size = 0; + mc->mc_vfp_ptr = NULL; + memset(mc->mc_spare, 0, sizeof(mc->mc_spare)); } void Modified: stable/11/sys/arm/arm/machdep.c ============================================================================== --- stable/11/sys/arm/arm/machdep.c Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/arm/machdep.c Sun Apr 16 07:33:47 2017 (r317005) @@ -146,105 +146,6 @@ static delay_func *delay_impl; static void *delay_arg; #endif -void -sendsig(catcher, ksi, mask) - sig_t catcher; - ksiginfo_t *ksi; - sigset_t *mask; -{ - struct thread *td; - struct proc *p; - struct trapframe *tf; - struct sigframe *fp, frame; - struct sigacts *psp; - struct sysentvec *sysent; - int onstack; - int sig; - int code; - - td = curthread; - p = td->td_proc; - PROC_LOCK_ASSERT(p, MA_OWNED); - sig = ksi->ksi_signo; - code = ksi->ksi_code; - psp = p->p_sigacts; - mtx_assert(&psp->ps_mtx, MA_OWNED); - tf = td->td_frame; - onstack = sigonstack(tf->tf_usr_sp); - - CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm, - catcher, sig); - - /* Allocate and validate space for the signal handler context. */ - if ((td->td_pflags & TDP_ALTSTACK) != 0 && !(onstack) && - SIGISMEMBER(psp->ps_sigonstack, sig)) { - fp = (struct sigframe *)((uintptr_t)td->td_sigstk.ss_sp + - td->td_sigstk.ss_size); -#if defined(COMPAT_43) - td->td_sigstk.ss_flags |= SS_ONSTACK; -#endif - } else - fp = (struct sigframe *)td->td_frame->tf_usr_sp; - - /* make room on the stack */ - fp--; - - /* make the stack aligned */ - fp = (struct sigframe *)STACKALIGN(fp); - /* Populate the siginfo frame. */ - get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); - frame.sf_si = ksi->ksi_info; - frame.sf_uc.uc_sigmask = *mask; - frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK ) - ? ((onstack) ? SS_ONSTACK : 0) : SS_DISABLE; - frame.sf_uc.uc_stack = td->td_sigstk; - mtx_unlock(&psp->ps_mtx); - PROC_UNLOCK(td->td_proc); - - /* Copy the sigframe out to the user's stack. */ - if (copyout(&frame, fp, sizeof(*fp)) != 0) { - /* Process has trashed its stack. Kill it. */ - CTR2(KTR_SIG, "sendsig: sigexit td=%p fp=%p", td, fp); - PROC_LOCK(p); - sigexit(td, SIGILL); - } - - /* - * Build context to run handler in. We invoke the handler - * directly, only returning via the trampoline. Note the - * trampoline version numbers are coordinated with machine- - * dependent code in libc. - */ - - tf->tf_r0 = sig; - tf->tf_r1 = (register_t)&fp->sf_si; - tf->tf_r2 = (register_t)&fp->sf_uc; - - /* the trampoline uses r5 as the uc address */ - tf->tf_r5 = (register_t)&fp->sf_uc; - tf->tf_pc = (register_t)catcher; - tf->tf_usr_sp = (register_t)fp; - sysent = p->p_sysent; - if (sysent->sv_sigcode_base != 0) - tf->tf_usr_lr = (register_t)sysent->sv_sigcode_base; - else - tf->tf_usr_lr = (register_t)(sysent->sv_psstrings - - *(sysent->sv_szsigcode)); - /* Set the mode to enter in the signal handler */ -#if __ARM_ARCH >= 7 - if ((register_t)catcher & 1) - tf->tf_spsr |= PSR_T; - else - tf->tf_spsr &= ~PSR_T; -#endif - - CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_usr_lr, - tf->tf_usr_sp); - - PROC_LOCK(p); - mtx_lock(&psp->ps_mtx); -} - struct kva_md_info kmi; /* @@ -488,6 +389,47 @@ exec_setregs(struct thread *td, struct i tf->tf_spsr = PSR_USR32_MODE; } + +#ifdef VFP +/* + * Get machine VFP context. + */ +static void +get_vfpcontext(struct thread *td, mcontext_vfp_t *vfp) +{ + struct pcb *curpcb; + + curpcb = curthread->td_pcb; + critical_enter(); + + vfp_store(&curpcb->pcb_vfpstate, false); + memcpy(vfp->mcv_reg, curpcb->pcb_vfpstate.reg, + sizeof(vfp->mcv_reg)); + vfp->mcv_fpscr = curpcb->pcb_vfpstate.fpscr; + + critical_exit(); +} + +/* + * Set machine VFP context. + */ +static void +set_vfpcontext(struct thread *td, mcontext_vfp_t *vfp) +{ + struct pcb *curpcb; + + curpcb = curthread->td_pcb; + critical_enter(); + + vfp_discard(td); + memcpy(curpcb->pcb_vfpstate.reg, vfp->mcv_reg, + sizeof(curpcb->pcb_vfpstate.reg)); + curpcb->pcb_vfpstate.fpscr = vfp->mcv_fpscr; + + critical_exit(); +} +#endif + /* * Get machine context. */ @@ -520,6 +462,10 @@ get_mcontext(struct thread *td, mcontext gr[_REG_LR] = tf->tf_usr_lr; gr[_REG_PC] = tf->tf_pc; + mcp->mc_vfp_size = 0; + mcp->mc_vfp_ptr = NULL; + memset(&mcp->mc_spare, 0, sizeof(mcp->mc_spare)); + return (0); } @@ -532,9 +478,29 @@ get_mcontext(struct thread *td, mcontext int set_mcontext(struct thread *td, mcontext_t *mcp) { + mcontext_vfp_t mc_vfp, *vfp; struct trapframe *tf = td->td_frame; const __greg_t *gr = mcp->__gregs; +#ifdef WITNESS + if (mcp->mc_vfp_size != 0 && mcp->mc_vfp_size != sizeof(mc_vfp)) { + printf("%s: %s: Malformed mc_vfp_size: %d (0x%08X)\n", + td->td_proc->p_comm, __func__, + mcp->mc_vfp_size, mcp->mc_vfp_size); + } else if (mcp->mc_vfp_size != 0 && mcp->mc_vfp_ptr == NULL) { + printf("%s: %s: c_vfp_size != 0 but mc_vfp_ptr == NULL\n", + td->td_proc->p_comm, __func__); + } +#endif + + if (mcp->mc_vfp_size == sizeof(mc_vfp) && mcp->mc_vfp_ptr != NULL) { + if (copyin(mcp->mc_vfp_ptr, &mc_vfp, sizeof(mc_vfp)) != 0) + return (EFAULT); + vfp = &mc_vfp; + } else { + vfp = NULL; + } + tf->tf_r0 = gr[_REG_R0]; tf->tf_r1 = gr[_REG_R1]; tf->tf_r2 = gr[_REG_R2]; @@ -552,10 +518,120 @@ set_mcontext(struct thread *td, mcontext tf->tf_usr_lr = gr[_REG_LR]; tf->tf_pc = gr[_REG_PC]; tf->tf_spsr = gr[_REG_CPSR]; - +#ifdef VFP + if (vfp != NULL) + set_vfpcontext(td, vfp); +#endif return (0); } +void +sendsig(catcher, ksi, mask) + sig_t catcher; + ksiginfo_t *ksi; + sigset_t *mask; +{ + struct thread *td; + struct proc *p; + struct trapframe *tf; + struct sigframe *fp, frame; + struct sigacts *psp; + struct sysentvec *sysent; + int onstack; + int sig; + int code; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + sig = ksi->ksi_signo; + code = ksi->ksi_code; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + tf = td->td_frame; + onstack = sigonstack(tf->tf_usr_sp); + + CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm, + catcher, sig); + + /* Allocate and validate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) != 0 && !(onstack) && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + fp = (struct sigframe *)((uintptr_t)td->td_sigstk.ss_sp + + td->td_sigstk.ss_size); +#if defined(COMPAT_43) + td->td_sigstk.ss_flags |= SS_ONSTACK; +#endif + } else + fp = (struct sigframe *)td->td_frame->tf_usr_sp; + + /* make room on the stack */ + fp--; + + /* make the stack aligned */ + fp = (struct sigframe *)STACKALIGN(fp); + /* Populate the siginfo frame. */ + get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); +#ifdef VFP + get_vfpcontext(td, &frame.sf_vfp); + frame.sf_uc.uc_mcontext.mc_vfp_size = sizeof(fp->sf_vfp); + frame.sf_uc.uc_mcontext.mc_vfp_ptr = &fp->sf_vfp; +#else + frame.sf_uc.uc_mcontext.mc_vfp_size = 0; + frame.sf_uc.uc_mcontext.mc_vfp_ptr = NULL; +#endif + frame.sf_si = ksi->ksi_info; + frame.sf_uc.uc_sigmask = *mask; + frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK ) + ? ((onstack) ? SS_ONSTACK : 0) : SS_DISABLE; + frame.sf_uc.uc_stack = td->td_sigstk; + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(td->td_proc); + + /* Copy the sigframe out to the user's stack. */ + if (copyout(&frame, fp, sizeof(*fp)) != 0) { + /* Process has trashed its stack. Kill it. */ + CTR2(KTR_SIG, "sendsig: sigexit td=%p fp=%p", td, fp); + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + /* + * Build context to run handler in. We invoke the handler + * directly, only returning via the trampoline. Note the + * trampoline version numbers are coordinated with machine- + * dependent code in libc. + */ + + tf->tf_r0 = sig; + tf->tf_r1 = (register_t)&fp->sf_si; + tf->tf_r2 = (register_t)&fp->sf_uc; + + /* the trampoline uses r5 as the uc address */ + tf->tf_r5 = (register_t)&fp->sf_uc; + tf->tf_pc = (register_t)catcher; + tf->tf_usr_sp = (register_t)fp; + sysent = p->p_sysent; + if (sysent->sv_sigcode_base != 0) + tf->tf_usr_lr = (register_t)sysent->sv_sigcode_base; + else + tf->tf_usr_lr = (register_t)(sysent->sv_psstrings - + *(sysent->sv_szsigcode)); + /* Set the mode to enter in the signal handler */ +#if __ARM_ARCH >= 7 + if ((register_t)catcher & 1) + tf->tf_spsr |= PSR_T; + else + tf->tf_spsr &= ~PSR_T; +#endif + + CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_usr_lr, + tf->tf_usr_sp); + + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} + int sys_sigreturn(td, uap) struct thread *td; @@ -578,7 +654,7 @@ sys_sigreturn(td, uap) if ((spsr & PSR_MODE) != PSR_USR32_MODE || (spsr & (PSR_I | PSR_F)) != 0) return (EINVAL); - /* Restore register context. */ + /* Restore register context. */ set_mcontext(td, &uc.uc_mcontext); /* Restore signal mask. */ Modified: stable/11/sys/arm/arm/vfp.c ============================================================================== --- stable/11/sys/arm/arm/vfp.c Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/arm/vfp.c Sun Apr 16 07:33:47 2017 (r317005) @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include Modified: stable/11/sys/arm/arm/vm_machdep.c ============================================================================== --- stable/11/sys/arm/arm/vm_machdep.c Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/arm/vm_machdep.c Sun Apr 16 07:33:47 2017 (r317005) @@ -111,6 +111,14 @@ cpu_fork(register struct thread *td1, re pmap_use_minicache(td2->td_kstack, td2->td_kstack_pages * PAGE_SIZE); #endif #endif +#ifdef VFP + /* Store actual state of VFP */ + if (curthread == td1) { + critical_enter(); + vfp_store(&td1->td_pcb->pcb_vfpstate, false); + critical_exit(); + } +#endif td2->td_pcb = pcb2; /* Clone td1's pcb */ Modified: stable/11/sys/arm/include/frame.h ============================================================================== --- stable/11/sys/arm/include/frame.h Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/include/frame.h Sun Apr 16 07:33:47 2017 (r317005) @@ -94,6 +94,7 @@ struct trapframe { struct sigframe { siginfo_t sf_si; /* actual saved siginfo */ ucontext_t sf_uc; /* actual saved ucontext */ + mcontext_vfp_t sf_vfp; /* actual saved VFP context */ }; Modified: stable/11/sys/arm/include/pcb.h ============================================================================== --- stable/11/sys/arm/include/pcb.h Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/include/pcb.h Sun Apr 16 07:33:47 2017 (r317005) @@ -38,8 +38,8 @@ #ifndef _MACHINE_PCB_H_ #define _MACHINE_PCB_H_ -#include #include +#include /* Modified: stable/11/sys/arm/include/reg.h ============================================================================== --- stable/11/sys/arm/include/reg.h Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/include/reg.h Sun Apr 16 07:33:47 2017 (r317005) @@ -3,8 +3,6 @@ #ifndef MACHINE_REG_H #define MACHINE_REG_H -#include - struct reg { unsigned int r[13]; unsigned int r_sp; @@ -13,6 +11,14 @@ struct reg { unsigned int r_cpsr; }; +struct fp_extended_precision { + u_int32_t fp_exponent; + u_int32_t fp_mantissa_hi; + u_int32_t fp_mantissa_lo; +}; + +typedef struct fp_extended_precision fp_reg_t; + struct fpreg { unsigned int fpr_fpsr; fp_reg_t fpr[8]; Modified: stable/11/sys/arm/include/ucontext.h ============================================================================== --- stable/11/sys/arm/include/ucontext.h Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/include/ucontext.h Sun Apr 16 07:33:47 2017 (r317005) @@ -66,35 +66,22 @@ typedef __greg_t __gregset_t[_NGREG]; /* * Floating point register state */ -/* Note: the storage layout of this structure must be identical to ARMFPE! */ typedef struct { - unsigned int __fp_fpsr; - struct { - unsigned int __fp_exponent; - unsigned int __fp_mantissa_hi; - unsigned int __fp_mantissa_lo; - } __fp_fr[8]; -} __fpregset_t; - -typedef struct { - unsigned int __vfp_fpscr; - unsigned int __vfp_fstmx[33]; - unsigned int __vfp_fpsid; -} __vfpregset_t; + __uint64_t mcv_reg[32]; + __uint32_t mcv_fpscr; +} mcontext_vfp_t; typedef struct { __gregset_t __gregs; - union { - __fpregset_t __fpregs; - __vfpregset_t __vfpregs; - } __fpu; -} mcontext_t; -/* Machine-dependent uc_flags */ -#define _UC_ARM_VFP 0x00010000 /* FPU field is VFP */ - -/* used by signal delivery to indicate status of signal stack */ -#define _UC_SETSTACK 0x00020000 -#define _UC_CLRSTACK 0x00040000 + /* + * Originally, rest of this structure was named __fpu, 35 * 4 bytes + * long, never accessed from kernel. + */ + size_t mc_vfp_size; + void *mc_vfp_ptr; + unsigned int mc_spare[33]; +} mcontext_t; +#define UC_ #endif /* !_MACHINE_MCONTEXT_H_ */ Modified: stable/11/sys/arm/include/vfp.h ============================================================================== --- stable/11/sys/arm/include/vfp.h Sun Apr 16 07:21:20 2017 (r317004) +++ stable/11/sys/arm/include/vfp.h Sun Apr 16 07:33:47 2017 (r317005) @@ -133,9 +133,19 @@ #define COPROC11 (0x3 << 22) #ifndef LOCORE +struct vfp_state { + uint64_t reg[32]; + uint32_t fpscr; + uint32_t fpexec; + uint32_t fpinst; + uint32_t fpinst2; +}; + +#ifdef _KERNEL void vfp_init(void); void vfp_store(struct vfp_state *, boolean_t); void vfp_discard(struct thread *); -#endif +#endif /* _KERNEL */ +#endif /* LOCORE */ #endif From owner-svn-src-stable@freebsd.org Sun Apr 16 07:41:32 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 16CCDD40137; Sun, 16 Apr 2017 07:41:32 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id CA63219E2; Sun, 16 Apr 2017 07:41:31 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G7fUoF087329; Sun, 16 Apr 2017 07:41:30 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G7fUsc087325; Sun, 16 Apr 2017 07:41:30 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160741.v3G7fUsc087325@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 07:41: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: r317006 - in stable/11/sys/arm: conf nvidia/tegra124 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 07:41:32 -0000 Author: mmel Date: Sun Apr 16 07:41:30 2017 New Revision: 317006 URL: https://svnweb.freebsd.org/changeset/base/317006 Log: MFC r306442,r306444,r306445,r306550: r306442: TEGRA: Add support for MULTIDELAY option. r306444: TEGRA: Don't include files already included by system or arch configs. r306445: TEGRA: Return back kern_clocksource.c into tegra config file. It was removed in r306444 by mistake. r306550: TEGRA: Extend timeout for PLLs lock to 5 ms. Real lock time for PLLA has been very near to old limit. Modified: stable/11/sys/arm/conf/TEGRA124 stable/11/sys/arm/nvidia/tegra124/files.tegra124 stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c stable/11/sys/arm/nvidia/tegra124/tegra124_machdep.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/arm/conf/TEGRA124 ============================================================================== --- stable/11/sys/arm/conf/TEGRA124 Sun Apr 16 07:33:47 2017 (r317005) +++ stable/11/sys/arm/conf/TEGRA124 Sun Apr 16 07:41:30 2017 (r317006) @@ -26,6 +26,7 @@ ident TEGRA124 options SCHED_ULE # ULE scheduler options PLATFORM # Platform based SoC options PLATFORM_SMP +options MULTIDELAY options SMP # Enable multiple cores options LINUX_BOOT_ABI Modified: stable/11/sys/arm/nvidia/tegra124/files.tegra124 ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/files.tegra124 Sun Apr 16 07:33:47 2017 (r317005) +++ stable/11/sys/arm/nvidia/tegra124/files.tegra124 Sun Apr 16 07:41:30 2017 (r317006) @@ -4,7 +4,6 @@ # Standard ARM support. # kern/kern_clocksource.c standard -dev/ofw/ofw_cpu.c optional fdt # # Standard tegra124 devices and support. Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Sun Apr 16 07:33:47 2017 (r317005) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Sun Apr 16 07:41:30 2017 (r317006) @@ -86,7 +86,7 @@ enum pll_type { #define PLLRE_IDDQ_BIT 16 #define PLLSS_IDDQ_BIT 19 -#define PLL_LOCK_TIMEOUT 1000 +#define PLL_LOCK_TIMEOUT 5000 /* Post divider <-> register value mapping. */ struct pdiv_table { Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_machdep.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_machdep.c Sun Apr 16 07:33:47 2017 (r317005) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_machdep.c Sun Apr 16 07:41:30 2017 (r317006) @@ -151,4 +151,4 @@ static platform_method_t tegra124_method PLATFORMMETHOD_END, }; -FDT_PLATFORM_DEF(tegra124, "Nvidia Jetson-TK1", 0, "nvidia,jetson-tk1", 0); +FDT_PLATFORM_DEF(tegra124, "Nvidia Jetson-TK1", 0, "nvidia,jetson-tk1", 120); From owner-svn-src-stable@freebsd.org Sun Apr 16 07:43:30 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8A8C6D40395; Sun, 16 Apr 2017 07:43:30 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id 5C3701C18; Sun, 16 Apr 2017 07:43:30 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G7hTZO089564; Sun, 16 Apr 2017 07:43:29 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G7hTN2089563; Sun, 16 Apr 2017 07:43:29 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160743.v3G7hTN2089563@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 07:43: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: r317007 - stable/11/sys/conf X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 07:43:30 -0000 Author: mmel Date: Sun Apr 16 07:43:29 2017 New Revision: 317007 URL: https://svnweb.freebsd.org/changeset/base/317007 Log: MFC r306703: ARM: Disconnect elf_trampoline.c from ARMv6 build. The trampoline code never functioned properly for Cortex CPUs, and its functionality is already provided by ubldr. Modified: stable/11/sys/conf/Makefile.arm Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/Makefile.arm ============================================================================== --- stable/11/sys/conf/Makefile.arm Sun Apr 16 07:41:30 2017 (r317006) +++ stable/11/sys/conf/Makefile.arm Sun Apr 16 07:43:29 2017 (r317007) @@ -74,7 +74,7 @@ FILES_CPU_FUNC = \ $S/$M/$M/cpufunc_asm_pj4b.S $S/$M/$M/cpufunc_asm_armv6.S \ $S/$M/$M/cpufunc_asm_armv7.S -.if defined(KERNPHYSADDR) +.if ${TARGET_ARCH} != "armv6" && defined(KERNPHYSADDR) KERNEL_EXTRA=trampoline KERNEL_EXTRA_INSTALL=kernel.gz.tramp trampoline: ${KERNEL_KO}.tramp From owner-svn-src-stable@freebsd.org Sun Apr 16 07:58:43 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B6169D40692; Sun, 16 Apr 2017 07:58:43 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id 853A0391; Sun, 16 Apr 2017 07:58:43 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G7wg86094286; Sun, 16 Apr 2017 07:58:42 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G7wge0094279; Sun, 16 Apr 2017 07:58:42 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160758.v3G7wge0094279@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 07:58: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: r317008 - in stable/11/sys: conf dev/drm2 dev/drm2/ttm X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 07:58:43 -0000 Author: mmel Date: Sun Apr 16 07:58:41 2017 New Revision: 317008 URL: https://svnweb.freebsd.org/changeset/base/317008 Log: MFC r308612,r308614: r308612: Allow DRM2 code to be built on platforms without AGP. This patch is taken from original drm-3.8 code. r308614: Allow embeding DRM2 code into kernel. It's usefull for development (for netboot) and it also helps to boot FreeBSD on some embeded platforms (where we must boot kernel directly, without standard boot loader). Modified: stable/11/sys/conf/files stable/11/sys/dev/drm2/drmP.h stable/11/sys/dev/drm2/drm_memory.c stable/11/sys/dev/drm2/drm_os_freebsd.c stable/11/sys/dev/drm2/drm_os_freebsd.h stable/11/sys/dev/drm2/ttm/ttm_bo_util.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/files ============================================================================== --- stable/11/sys/conf/files Sun Apr 16 07:43:29 2017 (r317007) +++ stable/11/sys/conf/files Sun Apr 16 07:58:41 2017 (r317008) @@ -1451,6 +1451,49 @@ dev/drm/via_map.c optional viadrm dev/drm/via_mm.c optional viadrm dev/drm/via_verifier.c optional viadrm dev/drm/via_video.c optional viadrm +dev/drm2/drm_agpsupport.c optional drm2 +dev/drm2/drm_auth.c optional drm2 +dev/drm2/drm_bufs.c optional drm2 +dev/drm2/drm_buffer.c optional drm2 +dev/drm2/drm_context.c optional drm2 +dev/drm2/drm_crtc.c optional drm2 +dev/drm2/drm_crtc_helper.c optional drm2 +dev/drm2/drm_dma.c optional drm2 +dev/drm2/drm_dp_helper.c optional drm2 +dev/drm2/drm_dp_iic_helper.c optional drm2 +dev/drm2/drm_drv.c optional drm2 +dev/drm2/drm_edid.c optional drm2 +dev/drm2/drm_fb_helper.c optional drm2 +dev/drm2/drm_fops.c optional drm2 +dev/drm2/drm_gem.c optional drm2 +dev/drm2/drm_gem_names.c optional drm2 +dev/drm2/drm_global.c optional drm2 +dev/drm2/drm_hashtab.c optional drm2 +dev/drm2/drm_ioctl.c optional drm2 +dev/drm2/drm_irq.c optional drm2 +dev/drm2/drm_linux_list_sort.c optional drm2 +dev/drm2/drm_lock.c optional drm2 +dev/drm2/drm_memory.c optional drm2 +dev/drm2/drm_mm.c optional drm2 +dev/drm2/drm_modes.c optional drm2 +dev/drm2/drm_pci.c optional drm2 +dev/drm2/drm_scatter.c optional drm2 +dev/drm2/drm_stub.c optional drm2 +dev/drm2/drm_sysctl.c optional drm2 +dev/drm2/drm_vm.c optional drm2 +dev/drm2/drm_os_freebsd.c optional drm2 +dev/drm2/ttm/ttm_agp_backend.c optional drm2 +dev/drm2/ttm/ttm_lock.c optional drm2 +dev/drm2/ttm/ttm_object.c optional drm2 +dev/drm2/ttm/ttm_tt.c optional drm2 +dev/drm2/ttm/ttm_bo_util.c optional drm2 +dev/drm2/ttm/ttm_bo.c optional drm2 +dev/drm2/ttm/ttm_bo_manager.c optional drm2 +dev/drm2/ttm/ttm_execbuf_util.c optional drm2 +dev/drm2/ttm/ttm_memory.c optional drm2 +dev/drm2/ttm/ttm_page_alloc.c optional drm2 +dev/drm2/ttm/ttm_bo_vm.c optional drm2 +dev/drm2/ati_pcigart.c optional drm2 agp pci dev/ed/if_ed.c optional ed dev/ed/if_ed_novell.c optional ed dev/ed/if_ed_rtl80x9.c optional ed Modified: stable/11/sys/dev/drm2/drmP.h ============================================================================== --- stable/11/sys/dev/drm2/drmP.h Sun Apr 16 07:43:29 2017 (r317007) +++ stable/11/sys/dev/drm2/drmP.h Sun Apr 16 07:58:41 2017 (r317008) @@ -1204,17 +1204,6 @@ int drm_mmap_single(struct cdev *kdev, v vm_size_t size, struct vm_object **obj_res, int nprot); d_poll_t drm_poll; - /* Memory management support (drm_memory.h) */ -extern void drm_free_agp(DRM_AGP_MEM * handle, int pages); -extern int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start); -#ifdef FREEBSD_NOTYET -extern DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev, - struct page **pages, - unsigned long num_pages, - uint32_t gtt_offset, - uint32_t type); -#endif /* FREEBSD_NOTYET */ -extern int drm_unbind_agp(DRM_AGP_MEM * handle); /* Misc. IOCTL support (drm_ioctl.h) */ extern int drm_irq_by_busid(struct drm_device *dev, void *data, @@ -1363,32 +1352,6 @@ extern void drm_vblank_post_modeset(stru extern int drm_modeset_ctl(struct drm_device *dev, void *data, struct drm_file *file_priv); - /* AGP/GART support (drm_agpsupport.h) */ -extern struct drm_agp_head *drm_agp_init(struct drm_device *dev); -extern int drm_agp_acquire(struct drm_device *dev); -extern int drm_agp_acquire_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int drm_agp_release(struct drm_device *dev); -extern int drm_agp_release_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode); -extern int drm_agp_enable_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info); -extern int drm_agp_info_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request); -extern int drm_agp_alloc_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request); -extern int drm_agp_free_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request); -extern int drm_agp_unbind_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); -extern int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request); -extern int drm_agp_bind_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); /* Stub support (drm_stub.h) */ extern int drm_setmaster_ioctl(struct drm_device *dev, void *data, @@ -1814,5 +1777,175 @@ int ttm_bo_mmap_single(struct ttm_bo_dev struct ttm_buffer_object; void ttm_bo_release_mmap(struct ttm_buffer_object *bo); +#if __OS_HAS_AGP + /* Memory management support (drm_memory.h) */ +extern void drm_free_agp(DRM_AGP_MEM * handle, int pages); +extern int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start); +#ifdef FREEBSD_NOTYET +extern DRM_AGP_MEM *drm_agp_bind_pages(struct drm_device *dev, + struct page **pages, + unsigned long num_pages, + uint32_t gtt_offset, + uint32_t type); +#endif /* FREEBSD_NOTYET */ +extern int drm_unbind_agp(DRM_AGP_MEM * handle); + + /* AGP/GART support (drm_agpsupport.h) */ +extern struct drm_agp_head *drm_agp_init(struct drm_device *dev); +extern int drm_agp_acquire(struct drm_device *dev); +extern int drm_agp_acquire_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int drm_agp_release(struct drm_device *dev); +extern int drm_agp_release_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int drm_agp_enable(struct drm_device *dev, struct drm_agp_mode mode); +extern int drm_agp_enable_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int drm_agp_info(struct drm_device *dev, struct drm_agp_info *info); +extern int drm_agp_info_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int drm_agp_alloc(struct drm_device *dev, struct drm_agp_buffer *request); +extern int drm_agp_alloc_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int drm_agp_free(struct drm_device *dev, struct drm_agp_buffer *request); +extern int drm_agp_free_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int drm_agp_unbind(struct drm_device *dev, struct drm_agp_binding *request); +extern int drm_agp_unbind_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request); +extern int drm_agp_bind_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); + +#else + +static inline void drm_free_agp(DRM_AGP_MEM * handle, int pages) +{ +} + +static inline int drm_bind_agp(DRM_AGP_MEM * handle, unsigned int start) +{ + return -ENODEV; +} + +static inline int drm_unbind_agp(DRM_AGP_MEM * handle) +{ + return -ENODEV; +} +#ifdef FREEBSD_NOTYET +static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev, + struct page **pages, + unsigned long num_pages, + uint32_t gtt_offset, + uint32_t type) +{ + return NULL; +} +#endif +static inline struct drm_agp_head *drm_agp_init(struct drm_device *dev) +{ + return NULL; +} + +static inline void drm_agp_clear(struct drm_device *dev) +{ +} + +static inline int drm_agp_acquire(struct drm_device *dev) +{ + return -ENODEV; +} + +static inline int drm_agp_acquire_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +static inline int drm_agp_release(struct drm_device *dev) +{ + return -ENODEV; +} + +static inline int drm_agp_release_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +static inline int drm_agp_enable(struct drm_device *dev, + struct drm_agp_mode mode) +{ + return -ENODEV; +} + +static inline int drm_agp_enable_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +static inline int drm_agp_info(struct drm_device *dev, + struct drm_agp_info *info) +{ + return -ENODEV; +} + +static inline int drm_agp_info_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +static inline int drm_agp_alloc(struct drm_device *dev, + struct drm_agp_buffer *request) +{ + return -ENODEV; +} + +static inline int drm_agp_alloc_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +static inline int drm_agp_free(struct drm_device *dev, + struct drm_agp_buffer *request) +{ + return -ENODEV; +} + +static inline int drm_agp_free_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +static inline int drm_agp_unbind(struct drm_device *dev, + struct drm_agp_binding *request) +{ + return -ENODEV; +} + +static inline int drm_agp_unbind_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +static inline int drm_agp_bind(struct drm_device *dev, + struct drm_agp_binding *request) +{ + return -ENODEV; +} + +static inline int drm_agp_bind_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return -ENODEV; +} + +#endif /* __OS_HAS_AGP */ + #endif /* __KERNEL__ */ #endif Modified: stable/11/sys/dev/drm2/drm_memory.c ============================================================================== --- stable/11/sys/dev/drm2/drm_memory.c Sun Apr 16 07:43:29 2017 (r317007) +++ stable/11/sys/dev/drm2/drm_memory.c Sun Apr 16 07:58:41 2017 (r317008) @@ -38,6 +38,8 @@ __FBSDID("$FreeBSD$"); #include +#define vunmap(handle) + #if __OS_HAS_AGP static void *agp_remap(unsigned long offset, unsigned long size, struct drm_device * dev) @@ -50,8 +52,6 @@ static void *agp_remap(unsigned long off return NULL; } -#define vunmap(handle) - /** Wrapper around agp_free_memory() */ void drm_free_agp(DRM_AGP_MEM * handle, int pages) { Modified: stable/11/sys/dev/drm2/drm_os_freebsd.c ============================================================================== --- stable/11/sys/dev/drm2/drm_os_freebsd.c Sun Apr 16 07:43:29 2017 (r317007) +++ stable/11/sys/dev/drm2/drm_os_freebsd.c Sun Apr 16 07:58:41 2017 (r317008) @@ -347,6 +347,7 @@ dmi_check_system(const struct dmi_system return (res); } +#if __OS_HAS_MTRR int drm_mtrr_add(unsigned long offset, unsigned long size, unsigned int flags) { @@ -375,6 +376,7 @@ drm_mtrr_del(int handle __unused, unsign strlcpy(mrdesc.mr_owner, "drm", sizeof(mrdesc.mr_owner)); return (-mem_range_attr_set(&mrdesc, &act)); } +#endif void drm_clflush_pages(vm_page_t *pages, unsigned long num_pages) Modified: stable/11/sys/dev/drm2/drm_os_freebsd.h ============================================================================== --- stable/11/sys/dev/drm2/drm_os_freebsd.h Sun Apr 16 07:43:29 2017 (r317007) +++ stable/11/sys/dev/drm2/drm_os_freebsd.h Sun Apr 16 07:58:41 2017 (r317008) @@ -591,8 +591,10 @@ typedef struct drm_pci_id_list #define CONFIG_COMPAT #endif +#ifndef __arm__ #define CONFIG_AGP 1 #define CONFIG_MTRR 1 +#endif #define CONFIG_FB 1 extern const char *fb_mode_option; Modified: stable/11/sys/dev/drm2/ttm/ttm_bo_util.c ============================================================================== --- stable/11/sys/dev/drm2/ttm/ttm_bo_util.c Sun Apr 16 07:43:29 2017 (r317007) +++ stable/11/sys/dev/drm2/ttm/ttm_bo_util.c Sun Apr 16 07:58:41 2017 (r317008) @@ -439,7 +439,8 @@ ttm_buffer_object_transfer(struct ttm_bu vm_memattr_t ttm_io_prot(uint32_t caching_flags) { -#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) || \ + defined(__arm__) if (caching_flags & TTM_PL_FLAG_WC) return (VM_MEMATTR_WRITE_COMBINING); else From owner-svn-src-stable@freebsd.org Sun Apr 16 08:01:59 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 047C1D40AB0; Sun, 16 Apr 2017 08:01:59 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id C46559A0; Sun, 16 Apr 2017 08:01:58 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G81v7A097498; Sun, 16 Apr 2017 08:01:57 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G81vks097497; Sun, 16 Apr 2017 08:01:57 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160801.v3G81vks097497@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 08:01: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: r317009 - stable/11/sys/dev/extres/clk X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 08:01:59 -0000 Author: mmel Date: Sun Apr 16 08:01:57 2017 New Revision: 317009 URL: https://svnweb.freebsd.org/changeset/base/317009 Log: MFC r309537: Clock framework fixes: - The clk_test_freq() (aka CLK_SET_DRYRUN) doesn't change frequency, don't cache it result. - Fix busy condition for clk_set_freq(). Modified: stable/11/sys/dev/extres/clk/clk.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/extres/clk/clk.c ============================================================================== --- stable/11/sys/dev/extres/clk/clk.c Sun Apr 16 07:58:41 2017 (r317008) +++ stable/11/sys/dev/extres/clk/clk.c Sun Apr 16 08:01:57 2017 (r317009) @@ -830,9 +830,10 @@ clknode_set_freq(struct clknode *clknode * OR * clock is glitch free and is enabled by calling consumer only */ - if ((clknode->enable_cnt > 1) && - ((clknode->enable_cnt > enablecnt) || - !(clknode->flags & CLK_NODE_GLITCH_FREE))) { + if ((flags & CLK_SET_DRYRUN) == 0 && + clknode->enable_cnt > 1 && + clknode->enable_cnt > enablecnt && + (clknode->flags & CLK_NODE_GLITCH_FREE) == 0) { return (EBUSY); } @@ -856,9 +857,10 @@ clknode_set_freq(struct clknode *clknode if (done) { /* Success - invalidate frequency cache for all children. */ - clknode->freq = freq; - if ((flags & CLK_SET_DRYRUN) == 0) + if ((flags & CLK_SET_DRYRUN) == 0) { + clknode->freq = freq; clknode_refresh_cache(clknode, parent_freq); + } } else if (clknode->parent != NULL) { /* Nothing changed, pass request to parent. */ rv = clknode_set_freq(clknode->parent, freq, flags, enablecnt); From owner-svn-src-stable@freebsd.org Sun Apr 16 08:04:03 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2831BD40B50; Sun, 16 Apr 2017 08:04:03 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id F267BB53; Sun, 16 Apr 2017 08:04:02 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G842Hs098304; Sun, 16 Apr 2017 08:04:02 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G841Zc098300; Sun, 16 Apr 2017 08:04:01 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160804.v3G841Zc098300@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 08:04:01 +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: r317010 - stable/11/sys/dev/sound/pci/hda X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 08:04:03 -0000 Author: mmel Date: Sun Apr 16 08:04:01 2017 New Revision: 317010 URL: https://svnweb.freebsd.org/changeset/base/317010 Log: MFC r309532,r310674: r309532: Add IDs for HDA codecs found on Nvidia Tegra SoCs. r310674: Limit number of stripes supported by HDA codec to maximum number announced by HDA controller. Incorrectly implermented HDA codec may report support for more stripes that HDA controller already have. Due to this, always limit number of enabled stripes by global controller maximum. Modified: stable/11/sys/dev/sound/pci/hda/hdaa.c stable/11/sys/dev/sound/pci/hda/hdac.c stable/11/sys/dev/sound/pci/hda/hdac.h stable/11/sys/dev/sound/pci/hda/hdacc.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/sound/pci/hda/hdaa.c ============================================================================== --- stable/11/sys/dev/sound/pci/hda/hdaa.c Sun Apr 16 08:01:57 2017 (r317009) +++ stable/11/sys/dev/sound/pci/hda/hdaa.c Sun Apr 16 08:04:01 2017 (r317010) @@ -2130,7 +2130,8 @@ hdaa_channel_start(struct hdaa_chan *ch) uint32_t fmt; fmt = hdaa_stream_format(ch); - ch->stripectl = fls(ch->stripecap & hdaa_allowed_stripes(fmt)) - 1; + ch->stripectl = fls(ch->stripecap & hdaa_allowed_stripes(fmt) & + hda_get_stripes_mask(devinfo->dev)) - 1; ch->sid = HDAC_STREAM_ALLOC(device_get_parent(devinfo->dev), devinfo->dev, ch->dir == PCMDIR_PLAY ? 1 : 0, fmt, ch->stripectl, &ch->dmapos); if (ch->sid <= 0) Modified: stable/11/sys/dev/sound/pci/hda/hdac.c ============================================================================== --- stable/11/sys/dev/sound/pci/hda/hdac.c Sun Apr 16 08:01:57 2017 (r317009) +++ stable/11/sys/dev/sound/pci/hda/hdac.c Sun Apr 16 08:04:01 2017 (r317010) @@ -1767,6 +1767,9 @@ hdac_read_ivar(device_t dev, device_t ch case HDA_IVAR_DMA_NOCACHE: *result = (sc->flags & HDAC_F_DMA_NOCACHE) != 0; break; + case HDA_IVAR_STRIPES_MASK: + *result = (1 << (1 << sc->num_sdo)) - 1; + break; default: return (ENOENT); } Modified: stable/11/sys/dev/sound/pci/hda/hdac.h ============================================================================== --- stable/11/sys/dev/sound/pci/hda/hdac.h Sun Apr 16 08:01:57 2017 (r317009) +++ stable/11/sys/dev/sound/pci/hda/hdac.h Sun Apr 16 08:04:01 2017 (r317010) @@ -619,6 +619,10 @@ #define HDA_CODEC_NVIDIAGT440 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0014) #define HDA_CODEC_NVIDIAGTX550 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0015) #define HDA_CODEC_NVIDIAGTX570 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0018) +#define HDA_CODEC_NVIDIATEGRA30 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0020) +#define HDA_CODEC_NVIDIATEGRA114 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0022) +#define HDA_CODEC_NVIDIATEGRA124 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0028) +#define HDA_CODEC_NVIDIATEGRA210 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0029) #define HDA_CODEC_NVIDIAMCP67 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0067) #define HDA_CODEC_NVIDIAMCP73 HDA_CODEC_CONSTRUCT(NVIDIA, 0x8001) #define HDA_CODEC_NVIDIAXXXX HDA_CODEC_CONSTRUCT(NVIDIA, 0xffff) @@ -703,6 +707,7 @@ enum hdac_device_ivars { HDA_IVAR_SUBSYSTEM_ID, HDA_IVAR_NODE_TYPE, HDA_IVAR_DMA_NOCACHE, + HDA_IVAR_STRIPES_MASK, }; #define HDA_ACCESSOR(var, ivar, type) \ @@ -719,6 +724,7 @@ HDA_ACCESSOR(subdevice_id, SUBDEVICE_ID, HDA_ACCESSOR(subsystem_id, SUBSYSTEM_ID, uint32_t); HDA_ACCESSOR(node_type, NODE_TYPE, uint8_t); HDA_ACCESSOR(dma_nocache, DMA_NOCACHE, uint8_t); +HDA_ACCESSOR(stripes_mask, STRIPES_MASK, uint8_t); #define PCIS_MULTIMEDIA_HDA 0x03 Modified: stable/11/sys/dev/sound/pci/hda/hdacc.c ============================================================================== --- stable/11/sys/dev/sound/pci/hda/hdacc.c Sun Apr 16 08:01:57 2017 (r317009) +++ stable/11/sys/dev/sound/pci/hda/hdacc.c Sun Apr 16 08:04:01 2017 (r317010) @@ -314,6 +314,10 @@ static const struct { { HDA_CODEC_NVIDIAGT440, 0, "NVIDIA GT440" }, { HDA_CODEC_NVIDIAGTX550, 0, "NVIDIA GTX550" }, { HDA_CODEC_NVIDIAGTX570, 0, "NVIDIA GTX570" }, + { HDA_CODEC_NVIDIATEGRA30, 0, "NVIDIA Tegra30" }, + { HDA_CODEC_NVIDIATEGRA114, 0, "NVIDIA Tegra114" }, + { HDA_CODEC_NVIDIATEGRA124, 0, "NVIDIA Tegra124" }, + { HDA_CODEC_NVIDIATEGRA210, 0, "NVIDIA Tegra210" }, { HDA_CODEC_INTELIP, 0, "Intel Ibex Peak" }, { HDA_CODEC_INTELBL, 0, "Intel Bearlake" }, { HDA_CODEC_INTELCA, 0, "Intel Cantiga" }, From owner-svn-src-stable@freebsd.org Sun Apr 16 08:07:39 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E6599D40CB5; Sun, 16 Apr 2017 08:07:39 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id C34ACCF9; Sun, 16 Apr 2017 08:07:39 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G87cF2098494; Sun, 16 Apr 2017 08:07:38 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G87cBL098490; Sun, 16 Apr 2017 08:07:38 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160807.v3G87cBL098490@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 08:07: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: r317011 - in stable/11/sys: conf dev/drm2 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 08:07:40 -0000 Author: mmel Date: Sun Apr 16 08:07:38 2017 New Revision: 317011 URL: https://svnweb.freebsd.org/changeset/base/317011 Log: MFC r310593,r310599: r310593: Fix late monitor hotplug event. If system starts without attached monitor, DRM create framebuffer for VT console. Later, when monitor is attached, the hotplug event must issue full modeset procedure to setup CRTC. In original code, this was done in drm_fb_helper_set_par(), but we don't have this function implemented yet. Use unrolled version of drm_fb_helper_set_par() to ensure same functionality. r310599: Import drm_patform.c, an implementation of non-PCI based attachment for graphics drivers. It will be used in upcoming driver for Nvidia Tegra boards. Added: stable/11/sys/dev/drm2/drm_platform.c - copied unchanged from r310599, head/sys/dev/drm2/drm_platform.c Modified: stable/11/sys/conf/files stable/11/sys/dev/drm2/drmP.h stable/11/sys/dev/drm2/drm_fb_helper.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/files ============================================================================== --- stable/11/sys/conf/files Sun Apr 16 08:04:01 2017 (r317010) +++ stable/11/sys/conf/files Sun Apr 16 08:07:38 2017 (r317011) @@ -1477,6 +1477,7 @@ dev/drm2/drm_memory.c optional drm2 dev/drm2/drm_mm.c optional drm2 dev/drm2/drm_modes.c optional drm2 dev/drm2/drm_pci.c optional drm2 +dev/drm2/drm_platform.c optional drm2 dev/drm2/drm_scatter.c optional drm2 dev/drm2/drm_stub.c optional drm2 dev/drm2/drm_sysctl.c optional drm2 Modified: stable/11/sys/dev/drm2/drmP.h ============================================================================== --- stable/11/sys/dev/drm2/drmP.h Sun Apr 16 08:04:01 2017 (r317010) +++ stable/11/sys/dev/drm2/drmP.h Sun Apr 16 08:07:38 2017 (r317011) @@ -1576,6 +1576,10 @@ extern int drm_pcie_get_speed_cap_mask(s #define drm_can_sleep() (DRM_HZ & 1) +/* Platform section */ +int drm_get_platform_dev(device_t kdev, struct drm_device *dev, + struct drm_driver *driver); + /* FreeBSD specific -- should be moved to drm_os_freebsd.h */ #define DRM_GEM_MAPPING_MASK (3ULL << 62) Modified: stable/11/sys/dev/drm2/drm_fb_helper.c ============================================================================== --- stable/11/sys/dev/drm2/drm_fb_helper.c Sun Apr 16 08:04:01 2017 (r317010) +++ stable/11/sys/dev/drm2/drm_fb_helper.c Sun Apr 16 08:07:38 2017 (r317011) @@ -339,6 +339,7 @@ bool drm_fb_helper_restore_fbdev_mode(st { bool error = false; int i, ret; + for (i = 0; i < fb_helper->crtc_count; i++) { struct drm_mode_set *mode_set = &fb_helper->crtc_info[i].mode_set; ret = mode_set->crtc->funcs->set_config(mode_set); @@ -841,6 +842,9 @@ int drm_fb_helper_single_fb_probe(struct struct drm_fb_helper_surface_size sizes; int gamma_size = 0; #if defined(__FreeBSD__) + struct drm_crtc *crtc; + struct drm_device *dev; + int ret; device_t kdev; #endif @@ -942,6 +946,24 @@ int drm_fb_helper_single_fb_probe(struct if (ret != 0) DRM_ERROR("Failed to attach fbd device: %d\n", ret); #endif + } else { + /* Modified version of drm_fb_helper_set_par() */ + dev = fb_helper->dev; + sx_xlock(&dev->mode_config.mutex); + for (i = 0; i < fb_helper->crtc_count; i++) { + crtc = fb_helper->crtc_info[i].mode_set.crtc; + ret = crtc->funcs->set_config(&fb_helper->crtc_info[i].mode_set); + if (ret) { + sx_xunlock(&dev->mode_config.mutex); + return ret; + } + } + sx_xunlock(&dev->mode_config.mutex); + + if (fb_helper->delayed_hotplug) { + fb_helper->delayed_hotplug = false; + drm_fb_helper_hotplug_event(fb_helper); + } } #else if (new_fb) { Copied: stable/11/sys/dev/drm2/drm_platform.c (from r310599, head/sys/dev/drm2/drm_platform.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/11/sys/dev/drm2/drm_platform.c Sun Apr 16 08:07:38 2017 (r317011, copy of r310599, head/sys/dev/drm2/drm_platform.c) @@ -0,0 +1,183 @@ +/* + * Derived from drm_pci.c + * + * Copyright 2003 José Fonseca. + * Copyright 2003 Leif Delgass. + * Copyright (c) 2009, Code Aurora Forum. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include +__FBSDID("$FreeBSD$"); + +#include + +static void drm_platform_free_irq(struct drm_device *dev) +{ + if (dev->irqr == NULL) + return; + + bus_release_resource(dev->dev, SYS_RES_IRQ, + dev->irqrid, dev->irqr); + + dev->irqr = NULL; + dev->irq = 0; +} + +static const char *drm_platform_get_name(struct drm_device *dev) +{ + return dev->driver->name; +} + +static int drm_platform_set_busid(struct drm_device *dev, struct drm_master *master) +{ + int len, ret, id; + + master->unique_len = 13 + strlen(dev->driver->name); + master->unique_size = master->unique_len; + master->unique = malloc(master->unique_len + 1, DRM_MEM_DRIVER, M_NOWAIT); + + if (master->unique == NULL) + return -ENOMEM; + + id = 0; // XXX dev->driver->id; + + /* if only a single instance of the platform device, id will be + * set to -1.. use 0 instead to avoid a funny looking bus-id: + */ + if (id == -1) + id = 0; + + len = snprintf(master->unique, master->unique_len, + "platform:%s:%02d", dev->driver->name, id); + + if (len > master->unique_len) { + DRM_ERROR("Unique buffer overflowed\n"); + ret = -EINVAL; + goto err; + } + + return 0; +err: + return ret; +} + +static int drm_platform_get_irq(struct drm_device *dev) +{ + if (dev->irqr) + return (dev->irq); + + dev->irqr = bus_alloc_resource_any(dev->dev, SYS_RES_IRQ, + &dev->irqrid, RF_SHAREABLE); + if (!dev->irqr) { + dev_err(dev->dev, "Failed to allocate IRQ\n"); + return (0); + } + + dev->irq = (int) rman_get_start(dev->irqr); + + return (dev->irq); +} + +static struct drm_bus drm_platform_bus = { + .bus_type = DRIVER_BUS_PLATFORM, + .get_irq = drm_platform_get_irq, + .free_irq = drm_platform_free_irq, + .get_name = drm_platform_get_name, + .set_busid = drm_platform_set_busid, +}; + +/** + * Register. + * + * \param platdev - Platform device struture + * \return zero on success or a negative number on failure. + * + * Attempt to gets inter module "drm" information. If we are first + * then register the character device and inter module information. + * Try and register, if we fail to register, backout previous work. + */ + +int drm_get_platform_dev(device_t kdev, struct drm_device *dev, + struct drm_driver *driver) +{ + int ret; + + DRM_DEBUG("\n"); + + driver->bus = &drm_platform_bus; + + dev->dev = kdev; + + sx_xlock(&drm_global_mutex); + + ret = drm_fill_in_dev(dev, driver); + + if (ret) { + printf("DRM: Fill_in_dev failed.\n"); + goto err_g1; + } + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + ret = drm_get_minor(dev, &dev->control, DRM_MINOR_CONTROL); + if (ret) + goto err_g1; + } + + ret = drm_get_minor(dev, &dev->primary, DRM_MINOR_LEGACY); + if (ret) + goto err_g2; + + if (dev->driver->load) { + ret = dev->driver->load(dev, 0); + if (ret) + goto err_g3; + } + + /* setup the grouping for the legacy output */ + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + ret = drm_mode_group_init_legacy_group(dev, + &dev->primary->mode_group); + if (ret) + goto err_g3; + } + +#ifdef FREEBSD_NOTYET + list_add_tail(&dev->driver_item, &driver->device_list); +#endif /* FREEBSD_NOTYET */ + + sx_xunlock(&drm_global_mutex); + + DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", + driver->name, driver->major, driver->minor, driver->patchlevel, + driver->date, dev->primary->index); + + return 0; + +err_g3: + drm_put_minor(&dev->primary); +err_g2: + if (drm_core_check_feature(dev, DRIVER_MODESET)) + drm_put_minor(&dev->control); +err_g1: + sx_xunlock(&drm_global_mutex); + return ret; +} +EXPORT_SYMBOL(drm_get_platform_dev); From owner-svn-src-stable@freebsd.org Sun Apr 16 08:18:39 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0A0F3D3E078; Sun, 16 Apr 2017 08:18:39 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id CA23413B4; Sun, 16 Apr 2017 08:18:38 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G8Icaf002686; Sun, 16 Apr 2017 08:18:38 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G8Ib5K002681; Sun, 16 Apr 2017 08:18:37 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160818.v3G8Ib5K002681@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 08:18: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: r317012 - in stable/11/sys/arm/nvidia: . tegra124 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 08:18:39 -0000 Author: mmel Date: Sun Apr 16 08:18:37 2017 New Revision: 317012 URL: https://svnweb.freebsd.org/changeset/base/317012 Log: MFC r308286,r308287: r308286: TEGRA: Add basic driver for memory controller. For now, it only reports memory and SMMU access errors. r308287: TEGRA: Fix numerous issues in clock code. Define and export clocks related to XUSB driver. Added: stable/11/sys/arm/nvidia/tegra_mc.c - copied unchanged from r308286, head/sys/arm/nvidia/tegra_mc.c Modified: stable/11/sys/arm/nvidia/tegra124/files.tegra124 stable/11/sys/arm/nvidia/tegra124/tegra124_car.c stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/arm/nvidia/tegra124/files.tegra124 ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/files.tegra124 Sun Apr 16 08:07:38 2017 (r317011) +++ stable/11/sys/arm/nvidia/tegra124/files.tegra124 Sun Apr 16 08:18:37 2017 (r317012) @@ -33,6 +33,7 @@ arm/nvidia/tegra_efuse.c standard arm/nvidia/tegra_soctherm_if.m standard arm/nvidia/tegra_soctherm.c standard arm/nvidia/tegra_lic.c standard +arm/nvidia/tegra_mc.c standard #arm/nvidia/tegra_hda.c optional snd_hda #arm/nvidia/drm2/hdmi.c optional drm2 #arm/nvidia/drm2/tegra_drm_if.m optional drm2 Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_car.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_car.c Sun Apr 16 08:07:38 2017 (r317011) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_car.c Sun Apr 16 08:18:37 2017 (r317012) @@ -191,13 +191,13 @@ PLIST(mux_plle_src) = {"pllE_src1", "pll PLIST(mux_plld_out0_plld2_out0) = {"pllD_out0", "pllD2_out0"}; PLIST(mux_pllmcp_clkm) = {"pllM_out0", "pllC_out0", "pllP_out0", "clk_m", "pllM_UD", "pllC2_out0", "pllC3_out0", "pllC_UD"}; -PLIST(mux_xusb_hs) = {"pc_xusb_ss", "pllU_60"}; +PLIST(mux_xusb_hs) = {"xusb_ss_div2", "pllU_60"}; PLIST(mux_xusb_ss) = {"pc_xusb_ss", "osc_div_clk"}; /* Clocks ajusted online. */ static struct clk_fixed_def fixed_clk_m = - FRATE(0, "clk_m", 12000000); + FRATE(TEGRA124_CLK_CLK_M, "clk_m", 12000000); static struct clk_fixed_def fixed_osc_div_clk = FACT(0, "osc_div_clk", "clk_m", 1, 1); @@ -222,6 +222,10 @@ static struct clk_fixed_def tegra124_fix FRATE(0, "audio3", 10000000), FRATE(0, "audio4", 10000000), FRATE(0, "ext_vimclk", 10000000), + + /* XUSB */ + FACT(TEGRA124_CLK_XUSB_SS_DIV2, "xusb_ss_div2", "xusb_ss", 1, 2), + }; @@ -239,7 +243,7 @@ static struct clk_mux_def tegra124_mux_c MUX(0, "emc_mux", mux_pllmcp_clkm, CLK_SOURCE_EMC, 29, 3), /* USB. */ - MUX(0, "xusb_hs", mux_xusb_hs, CLK_SOURCE_XUSB_SS, 25, 1), + MUX(TEGRA124_CLK_XUSB_HS_SRC, "xusb_hs", mux_xusb_hs, CLK_SOURCE_XUSB_SS, 25, 1), MUX(0, "xusb_ss_mux", mux_xusb_ss, CLK_SOURCE_XUSB_SS, 24, 1), }; @@ -249,7 +253,7 @@ static struct clk_gate_def tegra124_gate /* Core clocks. */ GATE_PLL(0, "pllC_out1", "pllC_out1_div", PLLC_OUT, 0), GATE_PLL(0, "pllM_out1", "pllM_out1_div", PLLM_OUT, 0), - GATE_PLL(0, "pllU_480", "pllU_out", PLLU_BASE, 22), + GATE_PLL(TEGRA124_CLK_PLL_U_480M, "pllU_480", "pllU_out", PLLU_BASE, 22), GATE_PLL(0, "pllP_outX0", "pllP_outX0_div", PLLP_RESHIFT, 0), GATE_PLL(0, "pllP_out1", "pllP_out1_div", PLLP_OUTA, 0), GATE_PLL(0, "pllP_out2", "pllP_out2_div", PLLP_OUTA, 16), Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c Sun Apr 16 08:07:38 2017 (r317011) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c Sun Apr 16 08:18:37 2017 (r317012) @@ -41,6 +41,15 @@ __FBSDID("$FreeBSD$"); #include #include "tegra124_car.h" +/* The TEGRA124_CLK_XUSB_GATE is missing in current + * DT bindings, define it localy + */ +#ifdef TEGRA124_CLK_XUSB_GATE +#error "TEGRA124_CLK_XUSB_GATE is now defined, revisit XUSB code!" +#else +#define TEGRA124_CLK_XUSB_GATE 143 +#endif + /* Bits in base register. */ #define PERLCK_AMUX_MASK 0x0F #define PERLCK_AMUX_SHIFT 16 @@ -175,7 +184,7 @@ PLIST(mux_sep_audio) = "spdif_in", "i2s0", "i2s1", "i2s2", "i2s4", "pllA_out0", "ext_vimclk"}; -static uint32_t clk_enabale_reg[] = { +static uint32_t clk_enable_reg[] = { CLK_OUT_ENB_L, CLK_OUT_ENB_H, CLK_OUT_ENB_U, @@ -285,7 +294,7 @@ static struct pgate_def pgate_def[] = { GATE(CSUS, "sus_out", "clk_m", U(28)), /* GATE(DEVD2_OUT, "devd2_out", "clk_m", U(29)), */ /* GATE(DEVD1_OUT, "devd1_out", "clk_m", U(30)), */ - GATE(XUSB_DEV_SRC, "xusb_core_dev", "pc_xusb_core_dev", U(31)), + GATE(XUSB_DEV, "xusb_core_dev", "pc_xusb_core_dev", U(31)), /* bank V -> 96-127 */ /* GATE(CPUG, "cpug", "clk_m", V(0)), */ @@ -328,7 +337,7 @@ static struct pgate_def pgate_def[] = { /* GATE(HDMI_IOBIST, "hdmi_iobist", "clk_m", W(11)), */ /* GATE(SATA_IOBIST, "sata_iobist", "clk_m", W(12)), */ /* GATE(MIPI_IOBIST, "mipi_iobist", "clk_m", W(13)), */ - /* GATE(XUSB_IOBIST, "xusb_iobist", "clk_m", W(15)), */ + GATE(XUSB_GATE, "xusb_gate", "clk_m", W(15)), GATE(CILAB, "cilab", "pc_cilab", W(16)), GATE(CILCD, "cilcd", "pc_cilcd", W(17)), GATE(CILE, "cile", "pc_cile", W(18)), @@ -337,10 +346,10 @@ static struct pgate_def pgate_def[] = { GATE(ENTROPY, "entropy", "pc_entropy", W(21)), GATE(AMX, "amx", "pc_amx", W(25)), GATE(ADX, "adx", "pc_adx", W(26)), - GATE(DFLL_REF, "dvfs_ref", "pc_dvfs_ref", X(27)), - GATE(DFLL_SOC, "dvfs_soc", "pc_dvfs_soc", X(27)), - GATE(XUSB_SS_SRC, "xusb_ss", "xusb_ss_mux", X(28)), - /* GATE(EMC_LATENCY, "emc_latency", "pc_emc_latency", X(29)), */ + GATE(DFLL_REF, "dvfs_ref", "pc_dvfs_ref", W(27)), + GATE(DFLL_SOC, "dvfs_soc", "pc_dvfs_soc", W(27)), + GATE(XUSB_SS, "xusb_ss", "xusb_ss_mux", W(28)), + /* GATE(EMC_LATENCY, "emc_latency", "pc_emc_latency", W(29)), */ /* bank X -> 160-191*/ /* GATE(SPARE, "spare", "clk_m", X(0)), */ @@ -391,111 +400,115 @@ static struct pgate_def pgate_def[] = { } /* Mux with fractional 8.1 divider. */ -#define CLK_8_1(cn, pl, r, f) \ - PER_CLK(0, cn, pl, r, 8, 1, (f) | DCF_HAVE_MUX | DCF_HAVE_DIV) +#define CLK_8_1(id, cn, pl, r, f) \ + PER_CLK(id, cn, pl, r, 8, 1, (f) | DCF_HAVE_MUX | DCF_HAVE_DIV) + /* Mux with fractional 16.1 divider. */ -#define CLK16_1(cn, pl, r, f) \ - PER_CLK(0, cn, pl, r, 16, 1, (f) | DCF_HAVE_MUX | DCF_HAVE_DIV) +#define CLK16_1(id, cn, pl, r, f) \ + PER_CLK(id, cn, pl, r, 16, 1, (f) | DCF_HAVE_MUX | DCF_HAVE_DIV) /* Mux with integer 16bits divider. */ -#define CLK16_0(cn, pl, r, f) \ - PER_CLK(0, cn, pl, r, 16, 0, (f) | DCF_HAVE_MUX | DCF_HAVE_DIV) +#define CLK16_0(id, cn, pl, r, f) \ + PER_CLK(id, cn, pl, r, 16, 0, (f) | DCF_HAVE_MUX | DCF_HAVE_DIV) /* Mux wihout divider. */ -#define CLK_0_0(cn, pl, r, f) \ - PER_CLK(0, cn, pl, r, 0, 0, (f) | DCF_HAVE_MUX) +#define CLK_0_0(id, cn, pl, r, f) \ + PER_CLK(id, cn, pl, r, 0, 0, (f) | DCF_HAVE_MUX) static struct periph_def periph_def[] = { - CLK_8_1("pc_i2s1", mux_a_N_audio1_N_p_N_clkm, CLK_SOURCE_I2S1, DCF_HAVE_ENA), - CLK_8_1("pc_i2s2", mux_a_N_audio2_N_p_N_clkm, CLK_SOURCE_I2S2, DCF_HAVE_ENA), - CLK_8_1("pc_spdif_out", mux_a_N_audio_N_p_N_clkm, CLK_SOURCE_SPDIF_OUT, 0), - CLK_8_1("pc_spdif_in", mux_p_c2_c_c3_m, CLK_SOURCE_SPDIF_IN, 0), - CLK_8_1("pc_pwm", mux_p_c2_c_c3_clks_N_clkm, CLK_SOURCE_PWM, 0), - CLK_8_1("pc_spi2", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI2, 0), - CLK_8_1("pc_spi3", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI3, 0), - CLK16_0("pc_i2c5", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C5, 0), - CLK16_0("pc_i2c1", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C1, 0), - CLK_8_1("pc_spi1", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI1, 0), - CLK_0_0("pc_disp1", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_DISP1, 0), - CLK_0_0("pc_disp2", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_DISP2, 0), - CLK_8_1("pc_isp", mux_m_c_p_a_c2_c3_clkm_c4, CLK_SOURCE_ISP, 0), - CLK_8_1("pc_vi", mux_m_c2_c_c3_p_N_a_c4, CLK_SOURCE_VI, DCF_IS_VI), - CLK_8_1("pc_sdmmc1", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC1, 0), - CLK_8_1("pc_sdmmc2", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC2, 0), - CLK_8_1("pc_sdmmc4", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC4, 0), - CLK_8_1("pc_vfir", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_VFIR, 0), - CLK_8_1("pc_hsi", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HSI, 0), - CLK16_1("pc_uarta", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTA, DCF_IS_UART), - CLK16_1("pc_uartb", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTB, DCF_IS_UART), - CLK_8_1("pc_host1x", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HOST1X, DCF_IS_HOST1X), - CLK_8_1("pc_hdmi", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_HDMI, 0), - CLK16_0("pc_i2c2", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C2, 0), + CLK_8_1(0, "pc_i2s1", mux_a_N_audio1_N_p_N_clkm, CLK_SOURCE_I2S1, DCF_HAVE_ENA), + CLK_8_1(0, "pc_i2s2", mux_a_N_audio2_N_p_N_clkm, CLK_SOURCE_I2S2, DCF_HAVE_ENA), + CLK_8_1(0, "pc_spdif_out", mux_a_N_audio_N_p_N_clkm, CLK_SOURCE_SPDIF_OUT, 0), + CLK_8_1(0, "pc_spdif_in", mux_p_c2_c_c3_m, CLK_SOURCE_SPDIF_IN, 0), + CLK_8_1(0, "pc_pwm", mux_p_c2_c_c3_clks_N_clkm, CLK_SOURCE_PWM, 0), + CLK_8_1(0, "pc_spi2", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI2, 0), + CLK_8_1(0, "pc_spi3", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI3, 0), + CLK16_0(0, "pc_i2c5", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C5, 0), + CLK16_0(0, "pc_i2c1", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C1, 0), + CLK_8_1(0, "pc_spi1", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI1, 0), + CLK_0_0(0, "pc_disp1", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_DISP1, 0), + CLK_0_0(0, "pc_disp2", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_DISP2, 0), + CLK_8_1(0, "pc_isp", mux_m_c_p_a_c2_c3_clkm_c4, CLK_SOURCE_ISP, 0), + CLK_8_1(0, "pc_vi", mux_m_c2_c_c3_p_N_a_c4, CLK_SOURCE_VI, DCF_IS_VI), + CLK_8_1(0, "pc_sdmmc1", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC1, 0), + CLK_8_1(0, "pc_sdmmc2", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC2, 0), + CLK_8_1(0, "pc_sdmmc4", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC4, 0), + CLK_8_1(0, "pc_vfir", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_VFIR, 0), + CLK_8_1(0, "pc_hsi", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HSI, 0), + CLK16_1(0, "pc_uarta", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTA, DCF_IS_UART), + CLK16_1(0, "pc_uartb", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTB, DCF_IS_UART), + CLK_8_1(0, "pc_host1x", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HOST1X, DCF_IS_HOST1X), + CLK_8_1(0, "pc_hdmi", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_HDMI, 0), + CLK16_0(0, "pc_i2c2", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C2, 0), /* EMC 8 */ - CLK16_1("pc_uartc", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTC, DCF_IS_UART), - CLK_8_1("pc_vi_sensor", mux_m_c2_c_c3_p_N_a, CLK_SOURCE_VI_SENSOR, 0), - CLK_8_1("pc_spi4", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI4, 0), - CLK16_0("pc_i2c3", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C3, 0), - CLK_8_1("pc_sdmmc3", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC3, 0), - CLK16_1("pc_uartd", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTD, DCF_IS_UART), - CLK_8_1("pc_vde", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_VDE, 0), - CLK_8_1("pc_owr", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_OWR, 0), - CLK_8_1("pc_snor", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_NOR, 0), - CLK_8_1("pc_csite", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_CSITE, 0), - CLK_8_1("pc_i2s0", mux_a_N_audio0_N_p_N_clkm, CLK_SOURCE_I2S0, 0), + CLK16_1(0, "pc_uartc", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTC, DCF_IS_UART), + CLK_8_1(0, "pc_vi_sensor", mux_m_c2_c_c3_p_N_a, CLK_SOURCE_VI_SENSOR, 0), + CLK_8_1(0, "pc_spi4", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI4, 0), + CLK16_0(0, "pc_i2c3", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C3, 0), + CLK_8_1(0, "pc_sdmmc3", mux_p_c2_c_c3_m_e_clkm, CLK_SOURCE_SDMMC3, 0), + CLK16_1(0, "pc_uartd", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTD, DCF_IS_UART), + CLK_8_1(0, "pc_vde", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_VDE, 0), + CLK_8_1(0, "pc_owr", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_OWR, 0), + CLK_8_1(0, "pc_snor", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_NOR, 0), + CLK_8_1(0, "pc_csite", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_CSITE, 0), + CLK_8_1(0, "pc_i2s0", mux_a_N_audio0_N_p_N_clkm, CLK_SOURCE_I2S0, 0), /* DTV xxx */ - CLK_8_1("pc_msenc", mux_m_c2_c_c3_p_N_a, CLK_SOURCE_MSENC, 0), - CLK_8_1("pc_tsec", mux_p_c2_c_c3_m_a_clkm, CLK_SOURCE_TSEC, 0), + CLK_8_1(0, "pc_msenc", mux_m_c2_c_c3_p_N_a, CLK_SOURCE_MSENC, 0), + CLK_8_1(0, "pc_tsec", mux_p_c2_c_c3_m_a_clkm, CLK_SOURCE_TSEC, 0), /* SPARE2 */ - CLK_8_1("pc_mselect", mux_p_c2_c_c3_m_clks_clkm, CLK_SOURCE_MSELECT, 0), - CLK_8_1("pc_tsensor", mux_p_c2_c_c3_clkm_N_clks, CLK_SOURCE_TSENSOR, 0), - CLK_8_1("pc_i2s3", mux_a_N_audio3_N_p_N_clkm, CLK_SOURCE_I2S3, DCF_HAVE_ENA), - CLK_8_1("pc_i2s4", mux_a_N_audio4_N_p_N_clkm, CLK_SOURCE_I2S4, DCF_HAVE_ENA), - CLK16_0("pc_i2c4", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C4, 0), - CLK_8_1("pc_spi5", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI5, 0), - CLK_8_1("pc_spi6", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI6, 0), - CLK_8_1("pc_audio", mux_sep_audio, CLK_SOURCE_AUDIO, DCF_IS_AUDIO), - CLK_8_1("pc_dam0", mux_sep_audio, CLK_SOURCE_DAM0, DCF_IS_AUDIO), - CLK_8_1("pc_dam1", mux_sep_audio, CLK_SOURCE_DAM1, DCF_IS_AUDIO), - CLK_8_1("pc_dam2", mux_sep_audio, CLK_SOURCE_DAM2, DCF_IS_AUDIO), - CLK_8_1("pc_hda2codec_2x", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HDA2CODEC_2X, 0), - CLK_8_1("pc_actmon", mux_p_c2_c_c3_clks_N_clkm, CLK_SOURCE_ACTMON, 0), - CLK_8_1("pc_extperiph1", mux_a_clks_p_clkm_e, CLK_SOURCE_EXTPERIPH1, 0), - CLK_8_1("pc_extperiph2", mux_a_clks_p_clkm_e, CLK_SOURCE_EXTPERIPH2, 0), - CLK_8_1("pc_extperiph3", mux_a_clks_p_clkm_e, CLK_SOURCE_EXTPERIPH3, 0), - CLK_8_1("pc_i2c_slow", mux_p_c2_c_c3_clks_N_clkm, CLK_SOURCE_I2C_SLOW, 0), + CLK_8_1(0, "pc_mselect", mux_p_c2_c_c3_m_clks_clkm, CLK_SOURCE_MSELECT, 0), + CLK_8_1(0, "pc_tsensor", mux_p_c2_c_c3_clkm_N_clks, CLK_SOURCE_TSENSOR, 0), + CLK_8_1(0, "pc_i2s3", mux_a_N_audio3_N_p_N_clkm, CLK_SOURCE_I2S3, DCF_HAVE_ENA), + CLK_8_1(0, "pc_i2s4", mux_a_N_audio4_N_p_N_clkm, CLK_SOURCE_I2S4, DCF_HAVE_ENA), + CLK16_0(0, "pc_i2c4", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C4, 0), + CLK_8_1(0, "pc_spi5", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI5, 0), + CLK_8_1(0, "pc_spi6", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI6, 0), + CLK_8_1(0, "pc_audio", mux_sep_audio, CLK_SOURCE_AUDIO, DCF_IS_AUDIO), + CLK_8_1(0, "pc_dam0", mux_sep_audio, CLK_SOURCE_DAM0, DCF_IS_AUDIO), + CLK_8_1(0, "pc_dam1", mux_sep_audio, CLK_SOURCE_DAM1, DCF_IS_AUDIO), + CLK_8_1(0, "pc_dam2", mux_sep_audio, CLK_SOURCE_DAM2, DCF_IS_AUDIO), + CLK_8_1(0, "pc_hda2codec_2x", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HDA2CODEC_2X, 0), + CLK_8_1(0, "pc_actmon", mux_p_c2_c_c3_clks_N_clkm, CLK_SOURCE_ACTMON, 0), + CLK_8_1(0, "pc_extperiph1", mux_a_clks_p_clkm_e, CLK_SOURCE_EXTPERIPH1, 0), + CLK_8_1(0, "pc_extperiph2", mux_a_clks_p_clkm_e, CLK_SOURCE_EXTPERIPH2, 0), + CLK_8_1(0, "pc_extperiph3", mux_a_clks_p_clkm_e, CLK_SOURCE_EXTPERIPH3, 0), + CLK_8_1(0, "pc_i2c_slow", mux_p_c2_c_c3_clks_N_clkm, CLK_SOURCE_I2C_SLOW, 0), /* SYS */ - CLK_8_1("pc_sor0", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_SOR0, DCF_IS_SOR0), - CLK_8_1("pc_sata_oob", mux_p_N_c_N_m_N_clkm, CLK_SOURCE_SATA_OOB, 0), - CLK_8_1("pc_sata", mux_p_N_c_N_m_N_clkm, CLK_SOURCE_SATA, FDS_IS_SATA), - CLK_8_1("pc_hda", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HDA, 0), - - - CLK_8_1("pc_xusb_core_host", mux_clkm_p_c2_c_c3_refre, CLK_SOURCE_XUSB_CORE_HOST, 0), - CLK_8_1("pc_xusb_falcon", mux_clkm_p_c2_c_c3_refre, CLK_SOURCE_XUSB_FALCON, 0), - CLK_8_1("pc_xusb_fs", mux_clkm_N_u48_N_p_N_u480, CLK_SOURCE_XUSB_FS, 0), - CLK_8_1("pc_xusb_core_dev", mux_clkm_p_c2_c_c3_refre, CLK_SOURCE_XUSB_CORE_DEV, 0), - CLK_8_1("pc_xusb_ss", mux_clkm_refe_clks_u480_c_c2_c3_oscdiv, CLK_SOURCE_XUSB_SS, DCF_IS_XUSB_SS), - CLK_8_1("pc_cilab", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_CILAB, 0), - CLK_8_1("pc_cilcd", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_CILCD, 0), - CLK_8_1("pc_cile", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_CILE, 0), - CLK_8_1("pc_dsia_lp", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_DSIA_LP, 0), - CLK_8_1("pc_dsib_lp", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_DSIB_LP, 0), - CLK_8_1("pc_entropy", mux_p_clkm_clks_E, CLK_SOURCE_ENTROPY, 0), - CLK_8_1("pc_dvfs_ref", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_DVFS_REF, DCF_HAVE_ENA), - CLK_8_1("pc_dvfs_soc", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_DVFS_SOC, DCF_HAVE_ENA), - CLK_8_1("pc_traceclkin", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_TRACECLKIN, 0), - CLK_8_1("pc_adx", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_ADX, DCF_HAVE_ENA), - CLK_8_1("pc_amx", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_AMX, DCF_HAVE_ENA), - CLK_8_1("pc_emc_latency", mux_m_c_p_clkm_mud_c2_c3, CLK_SOURCE_EMC_LATENCY, 0), - CLK_8_1("pc_soc_therm", mux_m_c_p_a_c2_c3, CLK_SOURCE_SOC_THERM, 0), - CLK_8_1("pc_vi_sensor2", mux_m_c2_c_c3_p_N_a, CLK_SOURCE_VI_SENSOR2, 0), - CLK16_0("pc_i2c6", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C6, 0), - CLK_8_1("pc_emc_dll", mux_m_c_p_clkm_mud_c2_c3, CLK_SOURCE_EMC_DLL, DCF_IS_EMC_DLL), - CLK_8_1("pc_hdmi_audio", mux_p_c_c2_clkm, CLK_SOURCE_HDMI_AUDIO, 0), - CLK_8_1("pc_clk72mhz", mux_p_c_c2_clkm, CLK_SOURCE_CLK72MHZ, 0), - CLK_8_1("pc_adx1", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_ADX1, DCF_HAVE_ENA), - CLK_8_1("pc_amx1", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_AMX1, DCF_HAVE_ENA), - CLK_8_1("pc_vic", mux_m_c_p_a_c2_c3_clkm, CLK_SOURCE_VIC, DCF_IS_VIC), + CLK_8_1(0, "pc_sor0", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_SOR0, DCF_IS_SOR0), + CLK_8_1(0, "pc_sata_oob", mux_p_N_c_N_m_N_clkm, CLK_SOURCE_SATA_OOB, 0), + CLK_8_1(0, "pc_sata", mux_p_N_c_N_m_N_clkm, CLK_SOURCE_SATA, FDS_IS_SATA), + CLK_8_1(0, "pc_hda", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HDA, 0), + CLK_8_1(TEGRA124_CLK_XUSB_HOST_SRC, + "pc_xusb_core_host", mux_clkm_p_c2_c_c3_refre, CLK_SOURCE_XUSB_CORE_HOST, 0), + CLK_8_1(TEGRA124_CLK_XUSB_FALCON_SRC, + "pc_xusb_falcon", mux_clkm_p_c2_c_c3_refre, CLK_SOURCE_XUSB_FALCON, 0), + CLK_8_1(TEGRA124_CLK_XUSB_FS_SRC, + "pc_xusb_fs", mux_clkm_N_u48_N_p_N_u480, CLK_SOURCE_XUSB_FS, 0), + CLK_8_1(TEGRA124_CLK_XUSB_DEV_SRC, + "pc_xusb_core_dev", mux_clkm_p_c2_c_c3_refre, CLK_SOURCE_XUSB_CORE_DEV, 0), + CLK_8_1(TEGRA124_CLK_XUSB_SS_SRC, + "pc_xusb_ss", mux_clkm_refe_clks_u480_c_c2_c3_oscdiv, CLK_SOURCE_XUSB_SS, DCF_IS_XUSB_SS), + CLK_8_1(0, "pc_cilab", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_CILAB, 0), + CLK_8_1(0, "pc_cilcd", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_CILCD, 0), + CLK_8_1(0, "pc_cile", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_CILE, 0), + CLK_8_1(0, "pc_dsia_lp", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_DSIA_LP, 0), + CLK_8_1(0, "pc_dsib_lp", mux_p_N_c_N_N_N_clkm, CLK_SOURCE_DSIB_LP, 0), + CLK_8_1(0, "pc_entropy", mux_p_clkm_clks_E, CLK_SOURCE_ENTROPY, 0), + CLK_8_1(0, "pc_dvfs_ref", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_DVFS_REF, DCF_HAVE_ENA), + CLK_8_1(0, "pc_dvfs_soc", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_DVFS_SOC, DCF_HAVE_ENA), + CLK_8_1(0, "pc_traceclkin", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_TRACECLKIN, 0), + CLK_8_1(0, "pc_adx", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_ADX, DCF_HAVE_ENA), + CLK_8_1(0, "pc_amx", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_AMX, DCF_HAVE_ENA), + CLK_8_1(0, "pc_emc_latency", mux_m_c_p_clkm_mud_c2_c3, CLK_SOURCE_EMC_LATENCY, 0), + CLK_8_1(0, "pc_soc_therm", mux_m_c_p_a_c2_c3, CLK_SOURCE_SOC_THERM, 0), + CLK_8_1(0, "pc_vi_sensor2", mux_m_c2_c_c3_p_N_a, CLK_SOURCE_VI_SENSOR2, 0), + CLK16_0(0, "pc_i2c6", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C6, 0), + CLK_8_1(0, "pc_emc_dll", mux_m_c_p_clkm_mud_c2_c3, CLK_SOURCE_EMC_DLL, DCF_IS_EMC_DLL), + CLK_8_1(0, "pc_hdmi_audio", mux_p_c_c2_clkm, CLK_SOURCE_HDMI_AUDIO, 0), + CLK_8_1(0, "pc_clk72mhz", mux_p_c_c2_clkm, CLK_SOURCE_CLK72MHZ, 0), + CLK_8_1(0, "pc_adx1", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_ADX1, DCF_HAVE_ENA), + CLK_8_1(0, "pc_amx1", mux_a_c2_c_c3_p_N_clkm, CLK_SOURCE_AMX1, DCF_HAVE_ENA), + CLK_8_1(0, "pc_vic", mux_m_c_p_a_c2_c3_clkm, CLK_SOURCE_VIC, DCF_IS_VIC), }; static int periph_init(struct clknode *clk, device_t dev); @@ -528,6 +541,7 @@ static clknode_method_t periph_methods[] }; DEFINE_CLASS_1(tegra124_periph, tegra124_periph_class, periph_methods, sizeof(struct periph_sc), clknode_class); + static int periph_init(struct clknode *clk, device_t dev) { @@ -637,14 +651,13 @@ periph_set_freq(struct clknode *clk, uin divider++; if (divider < (1 << sc->div_f_width)) - divider = 1 << sc->div_f_width; + divider = 1 << (sc->div_f_width - 1); - if ((*stop != 0) && - ((flags & (CLK_SET_ROUND_UP | CLK_SET_ROUND_DOWN)) == 0) && - (*fout != (tmp / divider))) - return (ERANGE); - - if ((flags & CLK_SET_DRYRUN) == 0) { + if (flags & CLK_SET_DRYRUN) { + if (((flags & (CLK_SET_ROUND_UP | CLK_SET_ROUND_DOWN)) == 0) && + (*fout != (tmp / divider))) + return (ERANGE); + } else { DEVICE_LOCK(sc); MD4(sc, sc->base_reg, sc->div_mask, (divider - (1 << sc->div_f_width))); @@ -703,9 +716,9 @@ DEFINE_CLASS_1(tegra124_pgate, tegra124_ static uint32_t get_enable_reg(int idx) { - KASSERT(idx / 32 < nitems(clk_enabale_reg), + KASSERT(idx / 32 < nitems(clk_enable_reg), ("Invalid clock index for enable: %d", idx)); - return (clk_enabale_reg[idx / 32]); + return (clk_enable_reg[idx / 32]); } static uint32_t Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Sun Apr 16 08:07:38 2017 (r317011) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Sun Apr 16 08:18:37 2017 (r317012) @@ -205,6 +205,16 @@ static struct pdiv_table pllu_map[] = { {0, 0} }; +static struct pdiv_table pllrefe_map[] = { + {1, 0}, + {2, 1}, + {3, 2}, + {4, 3}, + {5, 4}, + {6, 5}, + {0, 0}, +}; + static struct clk_pll_def pll_clks[] = { /* PLLM: 880 MHz Clock source for EMC 2x clock */ { @@ -342,6 +352,7 @@ static struct clk_pll_def pll_clks[] = { .lock_enable = PLLRE_MISC_LOCK_ENABLE, .iddq_reg = PLLRE_MISC, .iddq_mask = 1 << PLLRE_IDDQ_BIT, + .pdiv_table = pllrefe_map, .mnp_bits = {8, 8, 4, 16}, }, /* PLLE: generate the 100 MHz reference clock for USB 3.0 (spread spectrum) */ @@ -433,14 +444,14 @@ pdiv_to_reg(struct pll_sc *sc, uint32_t tbl = sc->pdiv_table; if (tbl == NULL) - return (ffs(p_div)); + return (ffs(p_div) - 1); while (tbl->divider != 0) { if (p_div <= tbl->divider) return (tbl->value); tbl++; } - return ~0; + return (0xFFFFFFFF); } static uint32_t @@ -449,15 +460,15 @@ reg_to_pdiv(struct pll_sc *sc, uint32_t struct pdiv_table *tbl; tbl = sc->pdiv_table; - if (tbl != NULL) { - while (tbl->divider) { - if (reg == tbl->value) - return (tbl->divider); - tbl++; - } - return (0); + if (tbl == NULL) + return (1 << reg); + + while (tbl->divider) { + if (reg == tbl->value) + return (tbl->divider); + tbl++; } - return (1 << reg); + return (0); } static uint32_t @@ -790,6 +801,7 @@ pllrefe_set_freq(struct pll_sc *sc, uint m = 1; p = 1; n = *fout * p * m / fin; + dprintf("%s: m: %d, n: %d, p: %d\n", __func__, m, n, p); return (pll_set_std(sc, fin, fout, flags, m, n, p)); } @@ -902,6 +914,7 @@ tegra124_pll_set_freq(struct clknode *cl rv = ENXIO; break; } + return (rv); } @@ -921,6 +934,11 @@ tegra124_pll_init(struct clknode *clk, d reg |= sc->lock_enable; WR4(sc, sc->misc_reg, reg); } + if (sc->type == PLL_REFE) { + RD4(sc, sc->misc_reg, ®); + reg &= ~(1 << 29); /* Diasble lock override */ + WR4(sc, sc->misc_reg, reg); + } clknode_init_parent_idx(clk, 0); return(0); Copied: stable/11/sys/arm/nvidia/tegra_mc.c (from r308286, head/sys/arm/nvidia/tegra_mc.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/11/sys/arm/nvidia/tegra_mc.c Sun Apr 16 08:18:37 2017 (r317012, copy of r308286, head/sys/arm/nvidia/tegra_mc.c) @@ -0,0 +1,311 @@ +/*- + * Copyright (c) 2016 Michal Meloun + * 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$"); + +/* + * Memory controller driver for Tegra SoCs. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include "clock_if.h" + +#define MC_INTSTATUS 0x000 +#define MC_INTMASK 0x004 +#define MC_INT_DECERR_MTS (1 << 16) +#define MC_INT_SECERR_SEC (1 << 13) +#define MC_INT_DECERR_VPR (1 << 12) +#define MC_INT_INVALID_APB_ASID_UPDATE (1 << 11) +#define MC_INT_INVALID_SMMU_PAGE (1 << 10) +#define MC_INT_ARBITRATION_EMEM (1 << 9) +#define MC_INT_SECURITY_VIOLATION (1 << 8) +#define MC_INT_DECERR_EMEM (1 << 6) +#define MC_INT_INT_MASK (MC_INT_DECERR_MTS | \ + MC_INT_SECERR_SEC | \ + MC_INT_DECERR_VPR | \ + MC_INT_INVALID_APB_ASID_UPDATE | \ + MC_INT_INVALID_SMMU_PAGE | \ + MC_INT_ARBITRATION_EMEM | \ + MC_INT_SECURITY_VIOLATION | \ + MC_INT_DECERR_EMEM) + +#define MC_ERR_STATUS 0x008 +#define MC_ERR_TYPE(x) (((x) >> 28) & 0x7) +#define MC_ERR_TYPE_DECERR_EMEM 2 +#define MC_ERR_TYPE_SECURITY_TRUSTZONE 3 +#define MC_ERR_TYPE_SECURITY_CARVEOUT 4 +#define MC_ERR_TYPE_INVALID_SMMU_PAGE 6 +#define MC_ERR_INVALID_SMMU_PAGE_READABLE (1 << 27) +#define MC_ERR_INVALID_SMMU_PAGE_WRITABLE (1 << 26) +#define MC_ERR_INVALID_SMMU_PAGE_NONSECURE (1 << 25) +#define MC_ERR_ADR_HI(x) (((x) >> 20) & 0x3) +#define MC_ERR_SWAP (1 << 18) +#define MC_ERR_SECURITY (1 << 17) +#define MC_ERR_RW (1 << 16) +#define MC_ERR_ADR1(x) (((x) >> 12) & 0x7) +#define MC_ERR_ID(x) (((x) >> 0) & 07F) + +#define MC_ERR_ADDR 0x00C +#define MC_EMEM_CFG 0x050 +#define MC_EMEM_ADR_CFG 0x054 +#define MC_EMEM_NUMDEV(x) (((x) >> 0 ) & 0x1) + +#define MC_EMEM_ADR_CFG_DEV0 0x058 +#define MC_EMEM_ADR_CFG_DEV1 0x05C +#define EMEM_DEV_DEVSIZE(x) (((x) >> 16) & 0xF) +#define EMEM_DEV_BANKWIDTH(x) (((x) >> 8) & 0x3) +#define EMEM_DEV_COLWIDTH(x) (((x) >> 8) & 0x3) + +#define WR4(_sc, _r, _v) bus_write_4((_sc)->mem_res, (_r), (_v)) +#define RD4(_sc, _r) bus_read_4((_sc)->mem_res, (_r)) + +#define LOCK(_sc) mtx_lock(&(_sc)->mtx) +#define UNLOCK(_sc) mtx_unlock(&(_sc)->mtx) +#define SLEEP(_sc, timeout) mtx_sleep(sc, &sc->mtx, 0, "tegra_mc", timeout); +#define LOCK_INIT(_sc) \ + mtx_init(&_sc->mtx, device_get_nameunit(_sc->dev), "tegra_mc", MTX_DEF) +#define LOCK_DESTROY(_sc) mtx_destroy(&_sc->mtx) +#define ASSERT_LOCKED(_sc) mtx_assert(&_sc->mtx, MA_OWNED) +#define ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->mtx, MA_NOTOWNED) + +static struct ofw_compat_data compat_data[] = { + {"nvidia,tegra124-mc", 1}, + {NULL, 0} +}; + +struct tegra_mc_softc { + device_t dev; + struct mtx mtx; + + struct resource *mem_res; + struct resource *irq_res; + void *irq_h; + + clk_t clk; +}; + +static char *smmu_err_tbl[16] = { + "reserved", /* 0 */ + "reserved", /* 1 */ + "DRAM decode", /* 2 */ + "Trustzome Security", /* 3 */ + "Security carveout", /* 4 */ + "reserved", /* 5 */ + "Invalid SMMU page", /* 6 */ + "reserved", /* 7 */ +}; + +static void +tegra_mc_intr(void *arg) +{ + struct tegra_mc_softc *sc; + uint32_t stat, err; + uint64_t addr; + + sc = (struct tegra_mc_softc *)arg; + + stat = RD4(sc, MC_INTSTATUS); + if ((stat & MC_INT_INT_MASK) == 0) { + WR4(sc, MC_INTSTATUS, stat); + return; + } + + device_printf(sc->dev, "Memory Controller Interrupt:\n"); + if (stat & MC_INT_DECERR_MTS) + printf(" - MTS carveout violation\n"); + if (stat & MC_INT_SECERR_SEC) + printf(" - SEC carveout violation\n"); + if (stat & MC_INT_DECERR_VPR) + printf(" - VPR requirements violated\n"); + if (stat & MC_INT_INVALID_APB_ASID_UPDATE) + printf(" - ivalid APB ASID update\n"); + if (stat & MC_INT_INVALID_SMMU_PAGE) + printf(" - SMMU address translation error\n"); + if (stat & MC_INT_ARBITRATION_EMEM) + printf(" - arbitration deadlock-prevention threshold hit\n"); + if (stat & MC_INT_SECURITY_VIOLATION) + printf(" - SMMU address translation security error\n"); + if (stat & MC_INT_DECERR_EMEM) + printf(" - SMMU address decode error\n"); + + if ((stat & (MC_INT_INVALID_SMMU_PAGE | MC_INT_SECURITY_VIOLATION | + MC_INT_DECERR_EMEM)) != 0) { + err = RD4(sc, MC_ERR_STATUS); + addr = RD4(sc, MC_ERR_STATUS); + addr |= (uint64_t)(MC_ERR_ADR_HI(err)) << 32; + printf(" at 0x%012llX [%s %s %s] - %s error.\n", + addr, + stat & MC_ERR_SWAP ? "Swap, " : "", + stat & MC_ERR_SECURITY ? "Sec, " : "", + stat & MC_ERR_RW ? "Write" : "Read", + smmu_err_tbl[MC_ERR_TYPE(err)]); + } + WR4(sc, MC_INTSTATUS, stat); +} + +static void +tegra_mc_init_hw(struct tegra_mc_softc *sc) +{ + + /* Disable and acknowledge all interrupts */ + WR4(sc, MC_INTMASK, 0); + WR4(sc, MC_INTSTATUS, MC_INT_INT_MASK); +} + +static int +tegra_mc_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + device_set_desc(dev, "Tegra Memory Controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +tegra_mc_attach(device_t dev) +{ + int rv, rid; + struct tegra_mc_softc *sc; + + sc = device_get_softc(dev); + sc->dev = dev; + + LOCK_INIT(sc); + + /* Get the memory resource for the register mapping. */ + rid = 0; + sc->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->mem_res == NULL) { + device_printf(dev, "Cannot map registers.\n"); + rv = ENXIO; + goto fail; + } + + /* Allocate our IRQ resource. */ + rid = 0; + sc->irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, + RF_ACTIVE); + if (sc->irq_res == NULL) { + device_printf(dev, "Cannot allocate interrupt.\n"); + rv = ENXIO; + goto fail; + } + + /* OFW resources. */ + rv = clk_get_by_ofw_name(dev, 0, "mc", &sc->clk); + if (rv != 0) { + device_printf(dev, "Cannot get mc clock: %d\n", rv); + goto fail; + } + rv = clk_enable(sc->clk); + if (rv != 0) { + device_printf(dev, "Cannot enable clock: %d\n", rv); + goto fail; + } + + /* Init hardware. */ + tegra_mc_init_hw(sc); + + /* Setup interrupt */ + rv = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_MISC | INTR_MPSAFE, + NULL, tegra_mc_intr, sc, &sc->irq_h); + if (rv) { + device_printf(dev, "Cannot setup interrupt.\n"); + goto fail; + } + + /* Enable Interrupts */ + WR4(sc, MC_INTMASK, MC_INT_INT_MASK); + + return (bus_generic_attach(dev)); + +fail: + if (sc->clk != NULL) + clk_release(sc->clk); + if (sc->irq_h != NULL) + bus_teardown_intr(dev, sc->irq_res, sc->irq_h); + if (sc->irq_res != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res); + if (sc->mem_res != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res); + LOCK_DESTROY(sc); + + return (rv); +} + +static int +tegra_mc_detach(device_t dev) +{ + struct tegra_mc_softc *sc; + + sc = device_get_softc(dev); + if (sc->irq_h != NULL) + bus_teardown_intr(dev, sc->irq_res, sc->irq_h); + if (sc->irq_res != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq_res); + if (sc->mem_res != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->mem_res); + + LOCK_DESTROY(sc); + return (bus_generic_detach(dev)); +} + +static device_method_t tegra_mc_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, tegra_mc_probe), + DEVMETHOD(device_attach, tegra_mc_attach), + DEVMETHOD(device_detach, tegra_mc_detach), + + + DEVMETHOD_END +}; + +static devclass_t tegra_mc_devclass; +static DEFINE_CLASS_0(mc, tegra_mc_driver, tegra_mc_methods, + sizeof(struct tegra_mc_softc)); +DRIVER_MODULE(tegra_mc, simplebus, tegra_mc_driver, tegra_mc_devclass, + NULL, NULL); From owner-svn-src-stable@freebsd.org Sun Apr 16 08:21:16 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0C331D3E19E; Sun, 16 Apr 2017 08:21:16 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id DAE7B1670; Sun, 16 Apr 2017 08:21:15 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G8LF8e003578; Sun, 16 Apr 2017 08:21:15 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G8LEHM003575; Sun, 16 Apr 2017 08:21:14 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160821.v3G8LEHM003575@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 08:21:14 +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: r317013 - stable/11/sys/arm/nvidia/tegra124 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 08:21:16 -0000 Author: mmel Date: Sun Apr 16 08:21:14 2017 New Revision: 317013 URL: https://svnweb.freebsd.org/changeset/base/317013 Log: MFC r309538: Fixes for NVIDIA Tegra124 clocks: - EMC clock have standard peripheral clock block. Use it. - Implement full frequency set method for PLLD2. This PLL is used as HDMI pixel clock so we must be able to set it to wide range of frequencies, within 5% tolerance allowed by HDMI specification. Due to this, full state space search (over m, n, p fields) is necessary. Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_car.c stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_car.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_car.c Sun Apr 16 08:18:37 2017 (r317012) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_car.c Sun Apr 16 08:21:14 2017 (r317013) @@ -189,8 +189,6 @@ PLIST(mux_pll_srcs) = {"osc_div_clk", NU PLIST(mux_plle_src1) = {"osc_div_clk", "pllP_out0"}; PLIST(mux_plle_src) = {"pllE_src1", "pllREFE_out"}; PLIST(mux_plld_out0_plld2_out0) = {"pllD_out0", "pllD2_out0"}; -PLIST(mux_pllmcp_clkm) = {"pllM_out0", "pllC_out0", "pllP_out0", "clk_m", - "pllM_UD", "pllC2_out0", "pllC3_out0", "pllC_UD"}; PLIST(mux_xusb_hs) = {"xusb_ss_div2", "pllU_60"}; PLIST(mux_xusb_ss) = {"pc_xusb_ss", "osc_div_clk"}; @@ -240,7 +238,6 @@ static struct clk_mux_def tegra124_mux_c /* Base peripheral clocks. */ MUX(0, "dsia_mux", mux_plld_out0_plld2_out0, PLLD_BASE, 25, 1), MUX(0, "dsib_mux", mux_plld_out0_plld2_out0, PLLD2_BASE, 25, 1), - MUX(0, "emc_mux", mux_pllmcp_clkm, CLK_SOURCE_EMC, 29, 3), /* USB. */ MUX(TEGRA124_CLK_XUSB_HS_SRC, "xusb_hs", mux_xusb_hs, CLK_SOURCE_XUSB_SS, 25, 1), Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c Sun Apr 16 08:18:37 2017 (r317012) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_clk_per.c Sun Apr 16 08:21:14 2017 (r317013) @@ -126,6 +126,10 @@ PLIST(mux_m_c_p_a_c2_c3_clkm_c4) = PLIST(mux_m_c_p_clkm_mud_c2_c3) = {"pllM_out0", "pllC_out0", "pllP_out0", "clk_m", "pllM_UD", "pllC2_out0", "pllC3_out0"}; +PLIST(mux_m_c_p_clkm_mud_c2_c3_cud) = + {"pllM_out0", "pllC_out0", "pllP_out0", "clk_m", + "pllM_UD", "pllC2_out0", "pllC3_out0", "pllC_UD"}; + PLIST(mux_m_c2_c_c3_p_N_a) = {"pllM_out0", "pllC2_out0", "pllC_out0", "pllC3_out0", "pllP_out0", NULL, "pllA_out0"}; @@ -260,7 +264,7 @@ static struct pgate_def pgate_def[] = { GATE(I2C2, "i2c2", "pc_i2c2", H(22)), GATE(UARTC, "uartc", "pc_uartc", H(23)), GATE(MIPI_CAL, "mipi_cal", "clk_m", H(24)), - GATE(EMC, "emc", "emc_mux", H(25)), + GATE(EMC, "emc", "pc_emc_2x", H(25)), GATE(USB2, "usb2", "clk_m", H(26)), GATE(USB3, "usb3", "clk_m", H(27)), GATE(VDE, "vde", "pc_vde", H(29)), @@ -356,7 +360,7 @@ static struct pgate_def pgate_def[] = { /* GATE(CAM_MCLK, "CAM_MCLK", "clk_m", X(4)), */ /* GATE(CAM_MCLK2, "CAM_MCLK2", "clk_m", X(5)), */ GATE(I2C6, "i2c6", "pc_i2c6", X(6)), - /* GATE(VIM2_CLK, "vim2_clk", clk_m, X(11)), */ + GATE(VIM2_CLK, "vim2_clk", "clk_m", X(11)), /* GATE(EMC_DLL, "emc_dll", "pc_emc_dll", X(14)), */ GATE(HDMI_AUDIO, "hdmi_audio", "pc_hdmi_audio", X(16)), GATE(CLK72MHZ, "clk72mhz", "pc_clk72mhz", X(17)), @@ -373,17 +377,18 @@ static struct pgate_def pgate_def[] = { #define DCF_HAVE_ENA 0x0200 /* Block with enable bit */ #define DCF_HAVE_DIV 0x0400 /* Block with divider */ -/* Mark block with additional bis / functionality. */ +/* Mark block with additional bits / functionality. */ #define DCF_IS_MASK 0x00FF #define DCF_IS_UART 0x0001 #define DCF_IS_VI 0x0002 #define DCF_IS_HOST1X 0x0003 #define DCF_IS_XUSB_SS 0x0004 #define DCF_IS_EMC_DLL 0x0005 -#define FDS_IS_SATA 0x0006 +#define DCF_IS_SATA 0x0006 #define DCF_IS_VIC 0x0007 #define DCF_IS_AUDIO 0x0008 #define DCF_IS_SOR0 0x0009 +#define DCF_IS_EMC 0x000A /* Basic pheripheral clock */ #define PER_CLK(_id, cn, pl, r, diw, fiw, f) \ @@ -438,7 +443,7 @@ static struct periph_def periph_def[] = CLK_8_1(0, "pc_host1x", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HOST1X, DCF_IS_HOST1X), CLK_8_1(0, "pc_hdmi", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_HDMI, 0), CLK16_0(0, "pc_i2c2", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_I2C2, 0), -/* EMC 8 */ + CLK_8_1(0, "pc_emc_2x", mux_m_c_p_clkm_mud_c2_c3_cud, CLK_SOURCE_EMC, DCF_IS_EMC), CLK16_1(0, "pc_uartc", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_UARTC, DCF_IS_UART), CLK_8_1(0, "pc_vi_sensor", mux_m_c2_c_c3_p_N_a, CLK_SOURCE_VI_SENSOR, 0), CLK_8_1(0, "pc_spi4", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_SPI4, 0), @@ -476,7 +481,7 @@ static struct periph_def periph_def[] = /* SYS */ CLK_8_1(0, "pc_sor0", mux_p_m_d_a_c_d2_clkm, CLK_SOURCE_SOR0, DCF_IS_SOR0), CLK_8_1(0, "pc_sata_oob", mux_p_N_c_N_m_N_clkm, CLK_SOURCE_SATA_OOB, 0), - CLK_8_1(0, "pc_sata", mux_p_N_c_N_m_N_clkm, CLK_SOURCE_SATA, FDS_IS_SATA), + CLK_8_1(0, "pc_sata", mux_p_N_c_N_m_N_clkm, CLK_SOURCE_SATA, DCF_IS_SATA), CLK_8_1(0, "pc_hda", mux_p_c2_c_c3_m_N_clkm, CLK_SOURCE_HDA, 0), CLK_8_1(TEGRA124_CLK_XUSB_HOST_SRC, "pc_xusb_core_host", mux_clkm_p_c2_c_c3_refre, CLK_SOURCE_XUSB_CORE_HOST, 0), Modified: stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c ============================================================================== --- stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Sun Apr 16 08:18:37 2017 (r317012) +++ stable/11/sys/arm/nvidia/tegra124/tegra124_clk_pll.c Sun Apr 16 08:21:14 2017 (r317013) @@ -713,6 +713,7 @@ pll_set_std(struct pll_sc *sc, uint64_t return (ERANGE); *fout = ((fin / m) * n) /p; + return (0); } @@ -771,7 +772,6 @@ pllc_set_freq(struct pll_sc *sc, uint64_ { uint32_t m, n, p; - p = 2; m = 1; n = (*fout * p * m + fin / 2)/ fin; @@ -779,19 +779,88 @@ pllc_set_freq(struct pll_sc *sc, uint64_ return (pll_set_std( sc, fin, fout, flags, m, n, p)); } +/* + * PLLD2 is used as source for pixel clock for HDMI. + * We must be able to set it frequency very flexibly and + * precisely (within 5% tolerance limit allowed by HDMI specs). + * + * For this reason, it is necessary to search the full state space. + * Fortunately, thanks to early cycle terminations, performance + * is within acceptable limits. + */ +#define PLLD2_PFD_MIN 12000000 /* 12 MHz */ +#define PLLD2_PFD_MAX 38000000 /* 38 MHz */ +#define PLLD2_VCO_MIN 600000000 /* 600 MHz */ +#define PLLD2_VCO_MAX 1200000000 /* 1.2 GHz */ + static int plld2_set_freq(struct pll_sc *sc, uint64_t fin, uint64_t *fout, int flags) { uint32_t m, n, p; + uint32_t best_m, best_n, best_p; + uint64_t vco, pfd; + int64_t err, best_err; + struct mnp_bits *mnp_bits; + struct pdiv_table *tbl; + int p_idx, rv; - p = 2; - m = 1; - n = (*fout * p * m + fin / 2)/ fin; - dprintf("%s: m: %d, n: %d, p: %d\n", __func__, m, n, p); - return (pll_set_std(sc, fin, fout, flags, m, n, p)); -} + mnp_bits = &sc->mnp_bits; + tbl = sc->pdiv_table; + best_err = INT64_MAX; + for (p_idx = 0; tbl[p_idx].divider != 0; p_idx++) { + p = tbl[p_idx].divider; + /* Check constraints */ + vco = *fout * p; + if (vco < PLLD2_VCO_MIN) + continue; + if (vco > PLLD2_VCO_MAX) + break; + + for (m = 1; m < (1 << mnp_bits->m_width); m++) { + n = (*fout * p * m + fin / 2) / fin; + + /* Check constraints */ + if (n == 0) + continue; + if (n >= (1 << mnp_bits->n_width)) + break; + vco = (fin * n) / m; + if (vco > PLLD2_VCO_MAX || vco < PLLD2_VCO_MIN) + continue; + pfd = fin / m; + if (pfd > PLLD2_PFD_MAX || vco < PLLD2_PFD_MIN) + continue; + + /* Constraints passed, save best result */ + err = *fout - vco / p; + if (err < 0) + err = -err; + if (err < best_err) { + best_err = err; + best_p = p; + best_m = m; + best_n = n; + } + if (err == 0) + goto done; + } + } +done: + /* + * HDMI specification allows 5% pixel clock tolerance, + * we will by a slightly stricter + */ + if (best_err > ((*fout * 100) / 4)) + return (ERANGE); + + if (flags & CLK_SET_DRYRUN) + return (0); + rv = pll_set_std(sc, fin, fout, flags, best_m, best_n, best_p); + /* XXXX Panic for rv == ERANGE ? */ + return (rv); +} static int pllrefe_set_freq(struct pll_sc *sc, uint64_t fin, uint64_t *fout, int flags) @@ -883,8 +952,8 @@ tegra124_pll_set_freq(struct clknode *cl struct pll_sc *sc; sc = clknode_get_softc(clknode); - dprintf("%s: Requested freq: %llu, input freq: %llu\n", __func__, - *fout, fin); + dprintf("%s: %s requested freq: %llu, input freq: %llu\n", __func__, + clknode_get_name(clknode), *fout, fin); switch (sc->type) { case PLL_A: rv = plla_set_freq(sc, fin, fout, flags); From owner-svn-src-stable@freebsd.org Sun Apr 16 09:00:12 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2409DD4025B; Sun, 16 Apr 2017 09:00:12 +0000 (UTC) (envelope-from mmel@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 mx1.freebsd.org (Postfix) with ESMTPS id E9B4ACDF; Sun, 16 Apr 2017 09:00:11 +0000 (UTC) (envelope-from mmel@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3G90BQQ018750; Sun, 16 Apr 2017 09:00:11 GMT (envelope-from mmel@FreeBSD.org) Received: (from mmel@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3G90B2H018749; Sun, 16 Apr 2017 09:00:11 GMT (envelope-from mmel@FreeBSD.org) Message-Id: <201704160900.v3G90B2H018749@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmel set sender to mmel@FreeBSD.org using -f From: Michal Meloun Date: Sun, 16 Apr 2017 09:00:11 +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: r317014 - stable/11/sys/conf X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 09:00:12 -0000 Author: mmel Date: Sun Apr 16 09:00:10 2017 New Revision: 317014 URL: https://svnweb.freebsd.org/changeset/base/317014 Log: MFC r307686: Use MACHINE_ARCH rather than TARGET_ARCH which has no meaning outside of Makefile.inc1 Modified: stable/11/sys/conf/Makefile.arm Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/Makefile.arm ============================================================================== --- stable/11/sys/conf/Makefile.arm Sun Apr 16 08:21:14 2017 (r317013) +++ stable/11/sys/conf/Makefile.arm Sun Apr 16 09:00:10 2017 (r317014) @@ -74,7 +74,7 @@ FILES_CPU_FUNC = \ $S/$M/$M/cpufunc_asm_pj4b.S $S/$M/$M/cpufunc_asm_armv6.S \ $S/$M/$M/cpufunc_asm_armv7.S -.if ${TARGET_ARCH} != "armv6" && defined(KERNPHYSADDR) +.if ${MACHINE_ARCH} != "armv6" && defined(KERNPHYSADDR) KERNEL_EXTRA=trampoline KERNEL_EXTRA_INSTALL=kernel.gz.tramp trampoline: ${KERNEL_KO}.tramp From owner-svn-src-stable@freebsd.org Mon Apr 17 09:34:11 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E72E3D3F1E8; Mon, 17 Apr 2017 09:34:11 +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 mx1.freebsd.org (Postfix) with ESMTPS id A4F5BDEF; Mon, 17 Apr 2017 09:34:11 +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 v3H9YAbf021517; Mon, 17 Apr 2017 09:34:10 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3H9Y9ni021507; Mon, 17 Apr 2017 09:34:09 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704170934.v3H9Y9ni021507@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Mon, 17 Apr 2017 09:34: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: r317042 - in stable/11/sys: net netpfil/ipfw X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 09:34:12 -0000 Author: ae Date: Mon Apr 17 09:34:09 2017 New Revision: 317042 URL: https://svnweb.freebsd.org/changeset/base/317042 Log: MFC r316461: Remove "IPFW static rules" rmlock. Make PFIL's lock global and use it for this purpose. This reduces the number of locks needed to acquire for each packet. Obtained from: Yandex LLC Sponsored by: Yandex LLC Differential Revision: https://reviews.freebsd.org/D10154 Modified: stable/11/sys/net/pfil.c stable/11/sys/net/pfil.h stable/11/sys/netpfil/ipfw/ip_fw2.c stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c stable/11/sys/netpfil/ipfw/ip_fw_iface.c stable/11/sys/netpfil/ipfw/ip_fw_nat.c stable/11/sys/netpfil/ipfw/ip_fw_private.h stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c stable/11/sys/netpfil/ipfw/ip_fw_table.c stable/11/sys/netpfil/ipfw/ip_fw_table_value.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/net/pfil.c ============================================================================== --- stable/11/sys/net/pfil.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/net/pfil.c Mon Apr 17 09:34:09 2017 (r317042) @@ -61,7 +61,6 @@ LIST_HEAD(pfilheadhead, pfil_head); VNET_DEFINE(struct pfilheadhead, pfil_head_list); #define V_pfil_head_list VNET(pfil_head_list) VNET_DEFINE(struct rmlock, pfil_lock); -#define V_pfil_lock VNET(pfil_lock) #define PFIL_LOCK_INIT_REAL(l, t) \ rm_init_flags(l, "PFil " t " rmlock", RM_RECURSE) Modified: stable/11/sys/net/pfil.h ============================================================================== --- stable/11/sys/net/pfil.h Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/net/pfil.h Mon Apr 17 09:34:09 2017 (r317042) @@ -38,6 +38,7 @@ #include #include #include +#include struct mbuf; struct ifnet; @@ -94,6 +95,9 @@ struct pfil_head { LIST_ENTRY(pfil_head) ph_list; }; +VNET_DECLARE(struct rmlock, pfil_lock); +#define V_pfil_lock VNET(pfil_lock) + /* Public functions for pfil hook management by packet filters. */ struct pfil_head *pfil_head_get(int, u_long); int pfil_add_hook(pfil_func_t, void *, int, struct pfil_head *); Modified: stable/11/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw2.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw2.c Mon Apr 17 09:34:09 2017 (r317042) @@ -992,7 +992,6 @@ ipfw_chk(struct ip_fw_args *args) int is_ipv4 = 0; int done = 0; /* flag to exit the outer loop */ - IPFW_RLOCK_TRACKER; if (m->m_flags & M_SKIP_FIREWALL || (! V_ipfw_vnet_ready)) return (IP_FW_PASS); /* accept */ Modified: stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c Mon Apr 17 09:34:09 2017 (r317042) @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include /* for ETHERTYPE_IP */ #include #include +#include #include #include Modified: stable/11/sys/netpfil/ipfw/ip_fw_iface.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_iface.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw_iface.c Mon Apr 17 09:34:09 2017 (r317042) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include Modified: stable/11/sys/netpfil/ipfw/ip_fw_nat.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_nat.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw_nat.c Mon Apr 17 09:34:09 2017 (r317042) @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include Modified: stable/11/sys/netpfil/ipfw/ip_fw_private.h ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_private.h Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw_private.h Mon Apr 17 09:34:09 2017 (r317042) @@ -272,8 +272,6 @@ struct ip_fw_chain { void **srvstate; /* runtime service mappings */ #if defined( __linux__ ) || defined( _WIN32 ) spinlock_t rwmtx; -#else - struct rmlock rwmtx; #endif int static_len; /* total len of static rules (v0) */ uint32_t gencnt; /* NAT generation count */ @@ -414,25 +412,23 @@ struct ipfw_ifc { #define IPFW_PF_RUNLOCK(p) IPFW_RUNLOCK(p) #else /* FreeBSD */ #define IPFW_LOCK_INIT(_chain) do { \ - rm_init_flags(&(_chain)->rwmtx, "IPFW static rules", RM_RECURSE); \ rw_init(&(_chain)->uh_lock, "IPFW UH lock"); \ } while (0) #define IPFW_LOCK_DESTROY(_chain) do { \ - rm_destroy(&(_chain)->rwmtx); \ rw_destroy(&(_chain)->uh_lock); \ } while (0) -#define IPFW_RLOCK_ASSERT(_chain) rm_assert(&(_chain)->rwmtx, RA_RLOCKED) -#define IPFW_WLOCK_ASSERT(_chain) rm_assert(&(_chain)->rwmtx, RA_WLOCKED) +#define IPFW_RLOCK_ASSERT(_chain) rm_assert(&V_pfil_lock, RA_RLOCKED) +#define IPFW_WLOCK_ASSERT(_chain) rm_assert(&V_pfil_lock, RA_WLOCKED) #define IPFW_RLOCK_TRACKER struct rm_priotracker _tracker -#define IPFW_RLOCK(p) rm_rlock(&(p)->rwmtx, &_tracker) -#define IPFW_RUNLOCK(p) rm_runlock(&(p)->rwmtx, &_tracker) -#define IPFW_WLOCK(p) rm_wlock(&(p)->rwmtx) -#define IPFW_WUNLOCK(p) rm_wunlock(&(p)->rwmtx) -#define IPFW_PF_RLOCK(p) IPFW_RLOCK(p) -#define IPFW_PF_RUNLOCK(p) IPFW_RUNLOCK(p) +#define IPFW_RLOCK(p) rm_rlock(&V_pfil_lock, &_tracker) +#define IPFW_RUNLOCK(p) rm_runlock(&V_pfil_lock, &_tracker) +#define IPFW_WLOCK(p) rm_wlock(&V_pfil_lock) +#define IPFW_WUNLOCK(p) rm_wunlock(&V_pfil_lock) +#define IPFW_PF_RLOCK(p) +#define IPFW_PF_RUNLOCK(p) #endif #define IPFW_UH_RLOCK_ASSERT(_chain) rw_assert(&(_chain)->uh_lock, RA_RLOCKED) Modified: stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Apr 17 09:34:09 2017 (r317042) @@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include Modified: stable/11/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_table.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw_table.c Mon Apr 17 09:34:09 2017 (r317042) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include /* ip_fw.h requires IFNAMSIZ */ +#include #include #include /* struct ipfw_rule_ref */ Modified: stable/11/sys/netpfil/ipfw/ip_fw_table_value.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_table_value.c Mon Apr 17 09:00:20 2017 (r317041) +++ stable/11/sys/netpfil/ipfw/ip_fw_table_value.c Mon Apr 17 09:34:09 2017 (r317042) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include /* ip_fw.h requires IFNAMSIZ */ +#include #include #include /* struct ipfw_rule_ref */ From owner-svn-src-stable@freebsd.org Mon Apr 17 09:36:37 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1A654D3F444; Mon, 17 Apr 2017 09:36:37 +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 mx1.freebsd.org (Postfix) with ESMTPS id EB05BFDB; Mon, 17 Apr 2017 09:36:36 +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 v3H9aavd021753; Mon, 17 Apr 2017 09:36:36 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3H9aZqw021749; Mon, 17 Apr 2017 09:36:35 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704170936.v3H9aZqw021749@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Mon, 17 Apr 2017 09:36:35 +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: r317043 - in stable/11: sbin/ipfw sys/netinet sys/netpfil/ipfw X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 09:36:37 -0000 Author: ae Date: Mon Apr 17 09:36:35 2017 New Revision: 317043 URL: https://svnweb.freebsd.org/changeset/base/317043 Log: MFC r316434: Add O_EXTERNAL_DATA opcode support. This opcode can be used to attach some data to external action opcode. And unlike to O_EXTERNAL_INSTANCE opcode, this opcode does not require creating of named instance to pass configuration arguments to external action handler. The data is coming just next to O_EXTERNAL_ACTION opcode. The userlevel part currenly supports formatting for opcode with ipfw_insn size, by default it expects u16 numeric value in the arg1. Obtained from: Yandex LLC Sponsored by: Yandex LLC Modified: stable/11/sbin/ipfw/ipfw2.c stable/11/sys/netinet/ip_fw.h stable/11/sys/netpfil/ipfw/ip_fw_eaction.c stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/ipfw/ipfw2.c ============================================================================== --- stable/11/sbin/ipfw/ipfw2.c Mon Apr 17 09:34:09 2017 (r317042) +++ stable/11/sbin/ipfw/ipfw2.c Mon Apr 17 09:36:35 2017 (r317043) @@ -1642,6 +1642,22 @@ show_static_rule(struct cmdline_opts *co break; } + case O_EXTERNAL_DATA: { + if (has_eaction == NULL) + break; + /* + * Currently we support data formatting only for + * external data with datalen u16. For unknown data + * print its size in bytes. + */ + if (cmd->len == F_INSN_SIZE(ipfw_insn)) + bprintf(bp, " %u", cmd->arg1); + else + bprintf(bp, " %ubytes", + cmd->len * sizeof(uint32_t)); + break; + } + case O_SETDSCP: { const char *code; Modified: stable/11/sys/netinet/ip_fw.h ============================================================================== --- stable/11/sys/netinet/ip_fw.h Mon Apr 17 09:34:09 2017 (r317042) +++ stable/11/sys/netinet/ip_fw.h Mon Apr 17 09:36:35 2017 (r317043) @@ -281,6 +281,7 @@ enum ipfw_opcodes { /* arguments (4 byt O_EXTERNAL_ACTION, /* arg1=id of external action handler */ O_EXTERNAL_INSTANCE, /* arg1=id of eaction handler instance */ + O_EXTERNAL_DATA, /* variable length data */ O_LAST_OPCODE /* not an opcode! */ }; Modified: stable/11/sys/netpfil/ipfw/ip_fw_eaction.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_eaction.c Mon Apr 17 09:34:09 2017 (r317042) +++ stable/11/sys/netpfil/ipfw/ip_fw_eaction.c Mon Apr 17 09:36:35 2017 (r317043) @@ -1,6 +1,6 @@ /*- - * Copyright (c) 2016 Yandex LLC - * Copyright (c) 2016 Andrey V. Elsukov + * Copyright (c) 2016-2017 Yandex LLC + * Copyright (c) 2016-2017 Andrey V. Elsukov * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -57,7 +57,7 @@ __FBSDID("$FreeBSD$"); * rules. * Module should implement opcode handler with type ipfw_eaction_t. * This handler will be called by ipfw_chk() function when - * O_EXTERNAL_ACTION opcode will be matched. The handler must return + * O_EXTERNAL_ACTION opcode is matched. The handler must return * value used as return value in ipfw_chk(), i.e. IP_FW_PASS, * IP_FW_DENY (see ip_fw_private.h). * Also the last argument must be set by handler. If it is zero, @@ -69,9 +69,12 @@ __FBSDID("$FreeBSD$"); * This function will return eaction_id, that can be used by module. * * It is possible to pass some additional information to external - * action handler via the O_EXTERNAL_INSTANCE opcode. This opcode - * will be next after the O_EXTERNAL_ACTION opcode. cmd->arg1 will - * contain index of named object related to instance of external action. + * action handler using O_EXTERNAL_INSTANCE and O_EXTERNAL_DATA opcodes. + * Such opcodes should be next after the O_EXTERNAL_ACTION opcode. + * For the O_EXTERNAL_INSTANCE opcode the cmd->arg1 contains index of named + * object related to an instance of external action. + * For the O_EXTERNAL_DATA opcode the cmd contains the data that can be used + * by external action handler without needing to create named instance. * * In case when eaction module uses named instances, it should register * opcode rewriting routines for O_EXTERNAL_INSTANCE opcode. The @@ -284,11 +287,13 @@ reset_eaction_obj(struct ip_fw_chain *ch /* * Since named_object related to this instance will be * also destroyed, truncate the chain of opcodes to - * remove O_EXTERNAL_INSTANCE opcode. + * remove the rest of cmd chain just after O_EXTERNAL_ACTION + * opcode. */ if (rule->act_ofs < rule->cmd_len - 1) { - EACTION_DEBUG("truncate rule %d", rule->rulenum); - rule->cmd_len--; + EACTION_DEBUG("truncate rule %d: len %u -> %u", + rule->rulenum, rule->cmd_len, rule->act_ofs + 1); + rule->cmd_len = rule->act_ofs + 1; } } IPFW_WUNLOCK(ch); Modified: stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Apr 17 09:34:09 2017 (r317042) +++ stable/11/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Apr 17 09:36:35 2017 (r317043) @@ -1737,11 +1737,16 @@ check_ipfw_rule_body(ipfw_insn *cmd, int return (EINVAL); } ci->object_opcodes++; - /* Do we have O_EXTERNAL_INSTANCE opcode? */ + /* + * Do we have O_EXTERNAL_INSTANCE or O_EXTERNAL_DATA + * opcode? + */ if (l != cmdlen) { l -= cmdlen; cmd += cmdlen; cmdlen = F_LEN(cmd); + if (cmd->opcode == O_EXTERNAL_DATA) + goto check_action; if (cmd->opcode != O_EXTERNAL_INSTANCE) { printf("ipfw: invalid opcode " "next to external action %u\n", @@ -2619,11 +2624,11 @@ unref_rule_objects(struct ip_fw_chain *c continue; no = rw->find_bykidx(ch, kidx); - KASSERT(no != NULL, ("table id %d not found", kidx)); + KASSERT(no != NULL, ("object id %d not found", kidx)); KASSERT(no->subtype == subtype, - ("wrong type %d (%d) for table id %d", + ("wrong type %d (%d) for object id %d", no->subtype, subtype, kidx)); - KASSERT(no->refcnt > 0, ("refcount for table %d is %d", + KASSERT(no->refcnt > 0, ("refcount for object %d is %d", kidx, no->refcnt)); if (no->refcnt == 1 && rw->destroy_object != NULL) From owner-svn-src-stable@freebsd.org Mon Apr 17 09:38:16 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 94CE0D3F543; Mon, 17 Apr 2017 09:38:16 +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 mx1.freebsd.org (Postfix) with ESMTPS id 63F341163; Mon, 17 Apr 2017 09:38:16 +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 v3H9cFOu021869; Mon, 17 Apr 2017 09:38:15 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3H9cF0o021868; Mon, 17 Apr 2017 09:38:15 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704170938.v3H9cF0o021868@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Mon, 17 Apr 2017 09:38:15 +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: r317044 - stable/11/sys/netpfil/ipfw X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 09:38:16 -0000 Author: ae Date: Mon Apr 17 09:38:15 2017 New Revision: 317044 URL: https://svnweb.freebsd.org/changeset/base/317044 Log: MFC r316433: Add the log formatting for an external action opcode. Obtained from: Yandex LLC Sponsored by: Yandex LLC Modified: stable/11/sys/netpfil/ipfw/ip_fw_log.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netpfil/ipfw/ip_fw_log.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_log.c Mon Apr 17 09:36:35 2017 (r317043) +++ stable/11/sys/netpfil/ipfw/ip_fw_log.c Mon Apr 17 09:38:15 2017 (r317044) @@ -264,6 +264,11 @@ ipfw_log(struct ip_fw_chain *chain, stru snprintf(SNPARGS(action2, 0), "Call %d", cmd->arg1); break; + case O_EXTERNAL_ACTION: + snprintf(SNPARGS(action2, 0), "Eaction %s", + ((struct named_object *)SRV_OBJECT(chain, + cmd->arg1))->name); + break; default: action = "UNKNOWN"; break; From owner-svn-src-stable@freebsd.org Mon Apr 17 09:42:07 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 67BE8D3F749; Mon, 17 Apr 2017 09:42:07 +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 mx1.freebsd.org (Postfix) with ESMTPS id 44F3815F7; Mon, 17 Apr 2017 09:42:07 +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 v3H9g6EK025578; Mon, 17 Apr 2017 09:42:06 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3H9g5JQ025570; Mon, 17 Apr 2017 09:42:05 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704170942.v3H9g5JQ025570@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Mon, 17 Apr 2017 09:42:05 +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: r317045 - in stable/11: sbin/ipfw sys/conf sys/modules sys/modules/ipfw_pmod sys/netpfil/ipfw/pmod X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 09:42:07 -0000 Author: ae Date: Mon Apr 17 09:42:05 2017 New Revision: 317045 URL: https://svnweb.freebsd.org/changeset/base/317045 Log: MFC r316435: Add ipfw_pmod kernel module. The module is designed for modification of a packets of any protocols. For now it implements only TCP MSS modification. It adds the external action handler for "tcp-setmss" action. A rule with tcp-setmss action does additional check for protocol and TCP flags. If SYN flag is present, it parses TCP options and modifies MSS option if its value is greater than configured value in the rule. Then it adjustes TCP checksum if needed. After handling the search continues with the next rule. Obtained from: Yandex LLC Relnotes: yes Sponsored by: Yandex LLC Differential Revision: https://reviews.freebsd.org/D10150 Added: stable/11/sys/modules/ipfw_pmod/ - copied from r316435, head/sys/modules/ipfw_pmod/ stable/11/sys/netpfil/ipfw/pmod/ - copied from r316435, head/sys/netpfil/ipfw/pmod/ Modified: stable/11/sbin/ipfw/ipfw.8 stable/11/sbin/ipfw/ipfw2.c stable/11/sbin/ipfw/ipfw2.h stable/11/sys/conf/NOTES stable/11/sys/conf/files stable/11/sys/conf/options stable/11/sys/modules/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/ipfw/ipfw.8 ============================================================================== --- stable/11/sbin/ipfw/ipfw.8 Mon Apr 17 09:38:15 2017 (r317044) +++ stable/11/sbin/ipfw/ipfw.8 Mon Apr 17 09:42:05 2017 (r317045) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 15, 2017 +.Dd April 3, 2017 .Dt IPFW 8 .Os .Sh NAME @@ -1118,6 +1118,20 @@ It is also possible to use the keyword with setdscp. If the tablearg value is not within the 0..64 range, lower 6 bits of supplied value are used. +.It Cm tcp-setmss Ar mss +Set the Maximum Segment Size (MSS) in the TCP segment to value +.Ar mss . +The kernel module +.Cm ipfw_pmod +should be loaded or kernel should have +.Cm options IPFIREWALL_PMOD +to be able use this action. +This command does not change a packet if original MSS value is lower than +specified value. +Both TCP over IPv4 and over IPv6 are supported. +Regardless of matched a packet or not by the +.Cm tcp-setmss +rule, the search continues with the next rule. .It Cm reass Queue and reassemble IP fragments. If the packet is not fragmented, counters are updated and Modified: stable/11/sbin/ipfw/ipfw2.c ============================================================================== --- stable/11/sbin/ipfw/ipfw2.c Mon Apr 17 09:38:15 2017 (r317044) +++ stable/11/sbin/ipfw/ipfw2.c Mon Apr 17 09:42:05 2017 (r317045) @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -238,6 +239,7 @@ static struct _s_x rule_eactions[] = { { "nat64lsn", TOK_NAT64LSN }, { "nat64stl", TOK_NAT64STL }, { "nptv6", TOK_NPTV6 }, + { "tcp-setmss", TOK_TCPSETMSS }, { NULL, 0 } /* terminator */ }; @@ -272,6 +274,7 @@ static struct _s_x rule_actions[] = { { "call", TOK_CALL }, { "return", TOK_RETURN }, { "eaction", TOK_EACTION }, + { "tcp-setmss", TOK_TCPSETMSS }, { NULL, 0 } /* terminator */ }; @@ -4007,6 +4010,26 @@ chkarg: fill_cmd(action, O_CALLRETURN, F_NOT, 0); break; + case TOK_TCPSETMSS: { + u_long mss; + uint16_t idx; + + idx = pack_object(tstate, "tcp-setmss", IPFW_TLV_EACTION); + if (idx == 0) + errx(EX_DATAERR, "pack_object failed"); + fill_cmd(action, O_EXTERNAL_ACTION, 0, idx); + NEED1("Missing MSS value"); + action = next_cmd(action, &ablen); + action->len = 1; + CHECK_ACTLEN; + mss = strtoul(*av, NULL, 10); + if (mss == 0 || mss > UINT16_MAX) + errx(EX_USAGE, "invalid MSS value %s", *av); + fill_cmd(action, O_EXTERNAL_DATA, 0, (uint16_t)mss); + av++; + break; + } + default: av--; if (match_token(rule_eactions, *av) == -1) Modified: stable/11/sbin/ipfw/ipfw2.h ============================================================================== --- stable/11/sbin/ipfw/ipfw2.h Mon Apr 17 09:38:15 2017 (r317044) +++ stable/11/sbin/ipfw/ipfw2.h Mon Apr 17 09:42:05 2017 (r317045) @@ -284,6 +284,8 @@ enum tokens { TOK_INTPREFIX, TOK_EXTPREFIX, TOK_PREFIXLEN, + + TOK_TCPSETMSS, }; /* Modified: stable/11/sys/conf/NOTES ============================================================================== --- stable/11/sys/conf/NOTES Mon Apr 17 09:38:15 2017 (r317044) +++ stable/11/sys/conf/NOTES Mon Apr 17 09:42:05 2017 (r317045) @@ -957,6 +957,9 @@ device lagg # # IPFIREWALL_NPTV6 adds support for in kernel NPTv6 in ipfw. # +# IPFIREWALL_PMOD adds support for protocols modification module. Currently +# it supports only TCP MSS modification. +# # IPSTEALTH enables code to support stealth forwarding (i.e., forwarding # packets without touching the TTL). This can be useful to hide firewalls # from traceroute and similar tools. Modified: stable/11/sys/conf/files ============================================================================== --- stable/11/sys/conf/files Mon Apr 17 09:38:15 2017 (r317044) +++ stable/11/sys/conf/files Mon Apr 17 09:42:05 2017 (r317045) @@ -4006,6 +4006,8 @@ netpfil/ipfw/nptv6/ip_fw_nptv6.c optiona ipfirewall_nptv6 netpfil/ipfw/nptv6/nptv6.c optional inet inet6 ipfirewall \ ipfirewall_nptv6 +netpfil/ipfw/pmod/ip_fw_pmod.c optional inet ipfirewall_pmod +netpfil/ipfw/pmod/tcpmod.c optional inet ipfirewall_pmod netpfil/pf/if_pflog.c optional pflog pf inet netpfil/pf/if_pfsync.c optional pfsync pf inet netpfil/pf/pf.c optional pf inet Modified: stable/11/sys/conf/options ============================================================================== --- stable/11/sys/conf/options Mon Apr 17 09:38:15 2017 (r317044) +++ stable/11/sys/conf/options Mon Apr 17 09:42:05 2017 (r317045) @@ -424,6 +424,7 @@ IPFIREWALL_NAT64_DIRECT_OUTPUT opt_ipfw. IPFIREWALL_NPTV6 opt_ipfw.h IPFIREWALL_VERBOSE opt_ipfw.h IPFIREWALL_VERBOSE_LIMIT opt_ipfw.h +IPFIREWALL_PMOD opt_ipfw.h IPSEC opt_ipsec.h IPSEC_DEBUG opt_ipsec.h IPSEC_SUPPORT opt_ipsec.h Modified: stable/11/sys/modules/Makefile ============================================================================== --- stable/11/sys/modules/Makefile Mon Apr 17 09:38:15 2017 (r317044) +++ stable/11/sys/modules/Makefile Mon Apr 17 09:42:05 2017 (r317045) @@ -176,6 +176,7 @@ SUBDIR= \ ipfw_nat \ ${_ipfw_nat64} \ ${_ipfw_nptv6} \ + ${_ipfw_pmod} \ ${_ipmi} \ ip6_mroute_mod \ ip_mroute_mod \ @@ -460,6 +461,7 @@ _toecore= toecore _if_enc= if_enc _if_gif= if_gif _if_gre= if_gre +_ipfw_pmod= ipfw_pmod .if ${MK_IPSEC_SUPPORT} != "no" _ipsec= ipsec _tcpmd5= tcp/tcpmd5 From owner-svn-src-stable@freebsd.org Mon Apr 17 13:01:43 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C725CD41E13; Mon, 17 Apr 2017 13:01:43 +0000 (UTC) (envelope-from garga@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 mx1.freebsd.org (Postfix) with ESMTPS id 9766F783; Mon, 17 Apr 2017 13:01:43 +0000 (UTC) (envelope-from garga@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3HD1gCP005443; Mon, 17 Apr 2017 13:01:42 GMT (envelope-from garga@FreeBSD.org) Received: (from garga@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3HD1gds005440; Mon, 17 Apr 2017 13:01:42 GMT (envelope-from garga@FreeBSD.org) Message-Id: <201704171301.v3HD1gds005440@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: garga set sender to garga@FreeBSD.org using -f From: Renato Botelho Date: Mon, 17 Apr 2017 13:01: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: r317048 - stable/11/usr.sbin/arp X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 13:01:43 -0000 Author: garga (ports committer) Date: Mon Apr 17 13:01:42 2017 New Revision: 317048 URL: https://svnweb.freebsd.org/changeset/base/317048 Log: MFC r316592: Introduce libxo support to arp(8) Reviewed by: wblock, gnn, allanjude, phil Approved by: allanjude Sponsored by: Rubicon Communications (Netgate) Differential Revision: https://reviews.freebsd.org/D9563 Modified: stable/11/usr.sbin/arp/Makefile stable/11/usr.sbin/arp/arp.8 stable/11/usr.sbin/arp/arp.c Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.sbin/arp/Makefile ============================================================================== --- stable/11/usr.sbin/arp/Makefile Mon Apr 17 12:42:58 2017 (r317047) +++ stable/11/usr.sbin/arp/Makefile Mon Apr 17 13:01:42 2017 (r317048) @@ -4,6 +4,8 @@ PROG= arp MAN= arp.4 arp.8 +LIBADD= xo + WARNS?= 3 .include Modified: stable/11/usr.sbin/arp/arp.8 ============================================================================== --- stable/11/usr.sbin/arp/arp.8 Mon Apr 17 12:42:58 2017 (r317047) +++ stable/11/usr.sbin/arp/arp.8 Mon Apr 17 13:01:42 2017 (r317048) @@ -28,7 +28,7 @@ .\" @(#)arp.8 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd January 31, 2013 +.Dd April 6, 2017 .Dt ARP 8 .Os .Sh NAME @@ -36,10 +36,12 @@ .Nd address resolution display and control .Sh SYNOPSIS .Nm +.Op Fl -libxo Ar options .Op Fl n .Op Fl i Ar interface .Ar hostname .Nm +.Op Fl -libxo Ar options .Op Fl n .Op Fl i Ar interface .Fl a @@ -77,6 +79,13 @@ using Internet dot notation. .Pp Available options: .Bl -tag -width indent +.It Fl -libxo +Generate output via +.Xr libxo 3 +in a selection of different human and machine readable formats. +See +.Xr xo_parse_args 3 +for details on command line arguments. .It Fl a The program displays or deletes all of the current .Tn ARP @@ -182,6 +191,8 @@ character will mark the rest of the line .El .Sh SEE ALSO .Xr inet 3 , +.Xr libxo 3 , +.Xr xo_parse_args 3 , .Xr arp 4 , .Xr ifconfig 8 , .Xr ndp 8 Modified: stable/11/usr.sbin/arp/arp.c ============================================================================== --- stable/11/usr.sbin/arp/arp.c Mon Apr 17 12:42:58 2017 (r317047) +++ stable/11/usr.sbin/arp/arp.c Mon Apr 17 13:01:42 2017 (r317048) @@ -78,6 +78,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include typedef void (action_fn)(struct sockaddr_dl *sdl, struct sockaddr_in *s_in, struct rt_msghdr *rtm); @@ -114,6 +115,8 @@ struct if_nameindex *ifnameindex; #define SETFUNC(f) { if (func) usage(); func = (f); } +#define ARP_XO_VERSION "1" + int main(int argc, char *argv[]) { @@ -121,6 +124,10 @@ main(int argc, char *argv[]) int rtn = 0; int aflag = 0; /* do it for all entries */ + argc = xo_parse_args(argc, argv); + if (argc < 0) + exit(1); + while ((ch = getopt(argc, argv, "andfsSi:")) != -1) switch(ch) { case 'a': @@ -155,12 +162,13 @@ main(int argc, char *argv[]) func = F_GET; if (rifname) { if (func != F_GET && !(func == F_DELETE && aflag)) - errx(1, "-i not applicable to this operation"); + xo_errx(1, "-i not applicable to this operation"); if (if_nametoindex(rifname) == 0) { if (errno == ENXIO) - errx(1, "interface %s does not exist", rifname); + xo_errx(1, "interface %s does not exist", + rifname); else - err(1, "if_nametoindex(%s)", rifname); + xo_err(1, "if_nametoindex(%s)", rifname); } } switch (func) { @@ -168,7 +176,16 @@ main(int argc, char *argv[]) if (aflag) { if (argc != 0) usage(); + + xo_set_version(ARP_XO_VERSION); + xo_open_container("arp"); + xo_open_list("arp-cache"); + search(0, print_entry); + + xo_close_list("arp-cache"); + xo_close_container("arp"); + xo_finish(); } else { if (argc != 1) usage(); @@ -218,7 +235,7 @@ file(char *name) char line[100], arg[5][50], *args[5], *p; if ((fp = fopen(name, "r")) == NULL) - err(1, "cannot open %s", name); + xo_err(1, "cannot open %s", name); args[0] = &arg[0][0]; args[1] = &arg[1][0]; args[2] = &arg[2][0]; @@ -234,7 +251,7 @@ file(char *name) i = sscanf(p, "%49s %49s %49s %49s %49s", arg[0], arg[1], arg[2], arg[3], arg[4]); if (i < 2) { - warnx("bad line: %s", line); + xo_warnx("bad line: %s", line); retval = 1; continue; } @@ -262,7 +279,7 @@ getaddr(char *host) reply.sin_addr.s_addr = inet_addr(host); if (reply.sin_addr.s_addr == INADDR_NONE) { if (!(hp = gethostbyname(host))) { - warnx("%s: %s", host, hstrerror(h_errno)); + xo_warnx("%s: %s", host, hstrerror(h_errno)); return (NULL); } bcopy((char *)hp->h_addr, (char *)&reply.sin_addr, @@ -327,7 +344,7 @@ set(int argc, char **argv) clock_gettime(CLOCK_MONOTONIC, &tp); if (sysctlbyname("net.link.ether.inet.max_age", &max_age, &len, NULL, 0) != 0) - err(1, "sysctlbyname"); + xo_err(1, "sysctlbyname"); expire_time = tp.tv_sec + max_age; } else if (strcmp(argv[0], "pub") == 0) { flags |= RTF_ANNOUNCE; @@ -343,18 +360,18 @@ set(int argc, char **argv) } } else if (strcmp(argv[0], "blackhole") == 0) { if (flags & RTF_REJECT) { - errx(1, "Choose one of blackhole or reject, " + xo_errx(1, "Choose one of blackhole or reject, " "not both."); } flags |= RTF_BLACKHOLE; } else if (strcmp(argv[0], "reject") == 0) { if (flags & RTF_BLACKHOLE) { - errx(1, "Choose one of blackhole or reject, " + xo_errx(1, "Choose one of blackhole or reject, " "not both."); } flags |= RTF_REJECT; } else { - warnx("Invalid parameter '%s'", argv[0]); + xo_warnx("Invalid parameter '%s'", argv[0]); usage(); } argv++; @@ -362,7 +379,7 @@ set(int argc, char **argv) ea = (struct ether_addr *)LLADDR(&sdl_m); if (doing_proxy && !strcmp(eaddr, "auto")) { if (!get_ether_addr(dst->sin_addr.s_addr, ea)) { - warnx("no interface found for %s", + xo_warnx("no interface found for %s", inet_ntoa(dst->sin_addr)); return (1); } @@ -371,7 +388,7 @@ set(int argc, char **argv) struct ether_addr *ea1 = ether_aton(eaddr); if (ea1 == NULL) { - warnx("invalid Ethernet address '%s'", eaddr); + xo_warnx("invalid Ethernet address '%s'", eaddr); return (1); } else { *ea = *ea1; @@ -389,7 +406,7 @@ set(int argc, char **argv) */ rtm = rtmsg(RTM_GET, dst, &sdl_m); if (rtm == NULL) { - warn("%s", host); + xo_warn("%s", host); return (1); } addr = (struct sockaddr_in *)(rtm + 1); @@ -398,7 +415,7 @@ set(int argc, char **argv) if ((sdl->sdl_family != AF_LINK) || (rtm->rtm_flags & RTF_GATEWAY) || !valid_type(sdl->sdl_type)) { - warnx("cannot intuit interface index and type for %s", host); + xo_warnx("cannot intuit interface index and type for %s", host); return (1); } sdl_m.sdl_type = sdl->sdl_type; @@ -413,19 +430,31 @@ static int get(char *host) { struct sockaddr_in *addr; + int found; addr = getaddr(host); if (addr == NULL) return (1); - if (0 == search(addr->sin_addr.s_addr, print_entry)) { - printf("%s (%s) -- no entry", + + xo_set_version(ARP_XO_VERSION); + xo_open_container("arp"); + xo_open_list("arp-cache"); + + found = search(addr->sin_addr.s_addr, print_entry); + + if (found == 0) { + xo_emit("{d:hostname/%s} ({d:ip-address/%s}) -- no entry", host, inet_ntoa(addr->sin_addr)); if (rifname) - printf(" on %s", rifname); - printf("\n"); - return (1); + xo_emit(" on {d:interface/%s}", rifname); + xo_emit("\n"); } - return (0); + + xo_close_list("arp-cache"); + xo_close_container("arp"); + xo_finish(); + + return (found == 0); } /* @@ -460,7 +489,7 @@ delete(char *host) for (;;) { /* try twice */ rtm = rtmsg(RTM_GET, dst, &sdl_m); if (rtm == NULL) { - warn("%s", host); + xo_warn("%s", host); return (1); } addr = (struct sockaddr_in *)(rtm + 1); @@ -486,7 +515,7 @@ delete(char *host) * is a proxy-arp entry to remove. */ if (flags & RTF_ANNOUNCE) { - warnx("delete: cannot locate %s", host); + xo_warnx("delete: cannot locate %s", host); return (1); } @@ -527,21 +556,21 @@ search(u_long addr, action_fn *action) mib[5] = 0; #endif if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) - err(1, "route-sysctl-estimate"); + xo_err(1, "route-sysctl-estimate"); if (needed == 0) /* empty table */ return 0; buf = NULL; for (;;) { buf = reallocf(buf, needed); if (buf == NULL) - errx(1, "could not reallocate memory"); + xo_errx(1, "could not reallocate memory"); st = sysctl(mib, 6, buf, &needed, NULL, 0); if (st == 0 || errno != ENOMEM) break; needed += needed / 8; } if (st == -1) - err(1, "actual retrieval of routing table"); + xo_err(1, "actual retrieval of routing table"); lim = buf + needed; for (next = buf; next < lim; next += rtm->rtm_msglen) { rtm = (struct rt_msghdr *)next; @@ -577,7 +606,9 @@ print_entry(struct sockaddr_dl *sdl, if (ifnameindex == NULL) if ((ifnameindex = if_nameindex()) == NULL) - err(1, "cannot retrieve interface names"); + xo_err(1, "cannot retrieve interface names"); + + xo_open_instance("arp-cache"); if (nflag == 0) hp = gethostbyaddr((caddr_t)&(addr->sin_addr), @@ -591,82 +622,87 @@ print_entry(struct sockaddr_dl *sdl, if (h_errno == TRY_AGAIN) nflag = 1; } - printf("%s (%s) at ", host, inet_ntoa(addr->sin_addr)); + xo_emit("{:hostname/%s} ({:ip-address/%s}) at ", host, + inet_ntoa(addr->sin_addr)); if (sdl->sdl_alen) { if ((sdl->sdl_type == IFT_ETHER || sdl->sdl_type == IFT_L2VLAN || sdl->sdl_type == IFT_BRIDGE) && sdl->sdl_alen == ETHER_ADDR_LEN) - printf("%s", + xo_emit("{:mac-address/%s}", ether_ntoa((struct ether_addr *)LLADDR(sdl))); else { int n = sdl->sdl_nlen > 0 ? sdl->sdl_nlen + 1 : 0; - printf("%s", link_ntoa(sdl) + n); + xo_emit("{:mac-address/%s}", link_ntoa(sdl) + n); } } else - printf("(incomplete)"); + xo_emit("{d:/(incomplete)}{en:incomplete/true}"); for (p = ifnameindex; p && ifnameindex->if_index && ifnameindex->if_name; p++) { if (p->if_index == sdl->sdl_index) { - printf(" on %s", p->if_name); + xo_emit(" on {:interface/%s}", p->if_name); break; } } if (rtm->rtm_rmx.rmx_expire == 0) - printf(" permanent"); + xo_emit("{d:/ permanent}{en:permanent/true}"); else { static struct timespec tp; if (tp.tv_sec == 0) clock_gettime(CLOCK_MONOTONIC, &tp); if ((expire_time = rtm->rtm_rmx.rmx_expire - tp.tv_sec) > 0) - printf(" expires in %d seconds", (int)expire_time); + xo_emit(" expires in {:expires/%d} seconds", + (int)expire_time); else - printf(" expired"); + xo_emit("{d:/ expired}{en:expired/true}"); } + if (rtm->rtm_flags & RTF_ANNOUNCE) - printf(" published"); + xo_emit("{d:/ published}{en:published/true}"); + switch(sdl->sdl_type) { case IFT_ETHER: - printf(" [ethernet]"); + xo_emit(" [{:type/ethernet}]"); break; case IFT_ISO88025: - printf(" [token-ring]"); + xo_emit(" [{:type/token-ring}]"); trld = SDL_ISO88025(sdl); if (trld->trld_rcf != 0) { - printf(" rt=%x", ntohs(trld->trld_rcf)); + xo_emit(" rt=%x", ntohs(trld->trld_rcf)); for (seg = 0; seg < ((TR_RCF_RIFLEN(trld->trld_rcf) - 2 ) / 2); seg++) - printf(":%x", ntohs(*(trld->trld_route[seg]))); + xo_emit(":%x", ntohs(*(trld->trld_route[seg]))); } break; case IFT_FDDI: - printf(" [fddi]"); + xo_emit(" [{:type/fddi}]"); break; case IFT_ATM: - printf(" [atm]"); + xo_emit(" [{:type/atm}]"); break; case IFT_L2VLAN: - printf(" [vlan]"); + xo_emit(" [{:type/vlan}]"); break; case IFT_IEEE1394: - printf(" [firewire]"); + xo_emit(" [{:type/firewire}]"); break; case IFT_BRIDGE: - printf(" [bridge]"); + xo_emit(" [{:type/bridge}]"); break; case IFT_INFINIBAND: - printf(" [infiniband]"); + xo_emit(" [{:type/infiniband}]"); break; default: break; } - printf("\n"); + xo_emit("\n"); + xo_close_instance("arp-cache"); } /* @@ -720,7 +756,7 @@ rtmsg(int cmd, struct sockaddr_in *dst, if (s < 0) { /* first time: open socket, get pid */ s = socket(PF_ROUTE, SOCK_RAW, 0); if (s < 0) - err(1, "socket"); + xo_err(1, "socket"); pid = getpid(); } bzero(&so_mask, sizeof(so_mask)); @@ -740,7 +776,7 @@ rtmsg(int cmd, struct sockaddr_in *dst, switch (cmd) { default: - errx(1, "internal wrong cmd"); + xo_errx(1, "internal wrong cmd"); case RTM_ADD: rtm->rtm_addrs |= RTA_GATEWAY; rtm->rtm_rmx.rmx_expire = expire_time; @@ -773,7 +809,7 @@ doit: rtm->rtm_type = cmd; if ((rlen = write(s, (char *)&m_rtmsg, l)) < 0) { if (errno != ESRCH || cmd != RTM_DELETE) { - warn("writing to routing socket"); + xo_warn("writing to routing socket"); return (NULL); } } @@ -781,7 +817,7 @@ doit: l = read(s, (char *)&m_rtmsg, sizeof(m_rtmsg)); } while (l > 0 && (rtm->rtm_seq != seq || rtm->rtm_pid != pid)); if (l < 0) - warn("read from routing socket"); + xo_warn("read from routing socket"); return (rtm); } @@ -805,12 +841,12 @@ get_ether_addr(in_addr_t ipaddr, struct sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) - err(1, "socket"); + xo_err(1, "socket"); ifc.ifc_len = sizeof(ifs); ifc.ifc_req = ifs; if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) { - warnx("ioctl(SIOCGIFCONF)"); + xo_warnx("ioctl(SIOCGIFCONF)"); goto done; } From owner-svn-src-stable@freebsd.org Mon Apr 17 16:59:20 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 422C2D41E6E; Mon, 17 Apr 2017 16:59:20 +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 mx1.freebsd.org (Postfix) with ESMTPS id 198A11FE8; Mon, 17 Apr 2017 16:59:20 +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 v3HGxJZP006652; Mon, 17 Apr 2017 16:59:19 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3HGxJ8m006651; Mon, 17 Apr 2017 16:59:19 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201704171659.v3HGxJ8m006651@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 17 Apr 2017 16:59:19 +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: r317054 - stable/11/sys/vm X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 16:59:20 -0000 Author: markj Date: Mon Apr 17 16:59:18 2017 New Revision: 317054 URL: https://svnweb.freebsd.org/changeset/base/317054 Log: MFC r316686, r316687, r316689 Fix a race between vm_map_wire() and vm_map_protect(). Modified: stable/11/sys/vm/vm_map.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/vm/vm_map.c ============================================================================== --- stable/11/sys/vm/vm_map.c Mon Apr 17 16:51:04 2017 (r317053) +++ stable/11/sys/vm/vm_map.c Mon Apr 17 16:59:18 2017 (r317054) @@ -1655,6 +1655,8 @@ _vm_map_clip_start(vm_map_t map, vm_map_ vm_map_entry_t new_entry; VM_MAP_ASSERT_LOCKED(map); + KASSERT(entry->end > start && entry->start < start, + ("_vm_map_clip_start: invalid clip of entry %p", entry)); /* * Split off the front portion -- note that we must insert the new @@ -1739,6 +1741,8 @@ _vm_map_clip_end(vm_map_t map, vm_map_en vm_map_entry_t new_entry; VM_MAP_ASSERT_LOCKED(map); + KASSERT(entry->start < end && entry->end > end, + ("_vm_map_clip_end: invalid clip of entry %p", entry)); /* * If there is no object backing this entry, we might as well create @@ -1963,6 +1967,14 @@ vm_map_protect(vm_map_t map, vm_offset_t vm_map_lock(map); + /* + * Ensure that we are not concurrently wiring pages. vm_map_wire() may + * need to fault pages into the map and will drop the map lock while + * doing so, and the VM object may end up in an inconsistent state if we + * update the protection on the map entry in between faults. + */ + vm_map_wait_busy(map); + VM_MAP_RANGE_CHECK(map, start, end); if (vm_map_lookup_entry(map, start, &entry)) { @@ -1974,8 +1986,8 @@ vm_map_protect(vm_map_t map, vm_offset_t /* * Make a first pass to check for protection violations. */ - current = entry; - while ((current != &map->header) && (current->start < end)) { + for (current = entry; current != &map->header && current->start < end; + current = current->next) { if (current->eflags & MAP_ENTRY_IS_SUB_MAP) { vm_map_unlock(map); return (KERN_INVALID_ARGUMENT); @@ -1984,17 +1996,15 @@ vm_map_protect(vm_map_t map, vm_offset_t vm_map_unlock(map); return (KERN_PROTECTION_FAILURE); } - current = current->next; } - /* * Do an accounting pass for private read-only mappings that * now will do cow due to allowed write (e.g. debugger sets * breakpoint on text segment) */ - for (current = entry; (current != &map->header) && - (current->start < end); current = current->next) { + for (current = entry; current != &map->header && current->start < end; + current = current->next) { vm_map_clip_end(map, current, end); @@ -2047,8 +2057,8 @@ vm_map_protect(vm_map_t map, vm_offset_t * Go back and fix up protections. [Note that clipping is not * necessary the second time.] */ - current = entry; - while ((current != &map->header) && (current->start < end)) { + for (current = entry; current != &map->header && current->start < end; + current = current->next) { old_prot = current->protection; if (set_max) @@ -2082,7 +2092,6 @@ vm_map_protect(vm_map_t map, vm_offset_t #undef MASK } vm_map_simplify_entry(map, current); - current = current->next; } vm_map_unlock(map); return (KERN_SUCCESS); From owner-svn-src-stable@freebsd.org Mon Apr 17 18:55:57 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 19A5AD42E6C; Mon, 17 Apr 2017 18:55:57 +0000 (UTC) (envelope-from araujo@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 mx1.freebsd.org (Postfix) with ESMTPS id E67851266; Mon, 17 Apr 2017 18:55:56 +0000 (UTC) (envelope-from araujo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3HItu88056568; Mon, 17 Apr 2017 18:55:56 GMT (envelope-from araujo@FreeBSD.org) Received: (from araujo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3HIttBD056481; Mon, 17 Apr 2017 18:55:55 GMT (envelope-from araujo@FreeBSD.org) Message-Id: <201704171855.v3HIttBD056481@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: araujo set sender to araujo@FreeBSD.org using -f From: Marcelo Araujo Date: Mon, 17 Apr 2017 18:55:55 +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: r317062 - in stable/11: usr.bin/uuencode usr.bin/vmstat usr.bin/w usr.sbin/acpi/acpidump usr.sbin/boot0cfg usr.sbin/bsnmpd/modules/snmp_hostres usr.sbin/camdd usr.sbin/ctld usr.sbin/iscsid X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 18:55:57 -0000 Author: araujo Date: Mon Apr 17 18:55:54 2017 New Revision: 317062 URL: https://svnweb.freebsd.org/changeset/base/317062 Log: MFC r314987-r314989, r314993-r314994, r315046-r315049, r315102 r314987: Use nitems() from sys/param.h. Reviewed by: asomers MFC after: 3 weeks. Differential Revision: https://reviews.freebsd.org/D9944 r314988: Use nitems() from sys/param.h. Reviewed by: ume MFC after: 3 weeks. Differential Revision: https://reviews.freebsd.org/D9938 r314989: Use nitems() from sys/param.h and also remove the cast. Reviewed by: markj MFC after: 3 weeks. Differential Revision: https://reviews.freebsd.org/D9937 r314993: Use nitems() from sys/param.h. Reviewed by: ngie MFC after: 3 weeks. Differential Revision: https://reviews.freebsd.org/D9936 r314994: Use nitems() from sys/param.h. Reviewed by: ngie MFC after: 3 weeks. Differential Revision: https://reviews.freebsd.org/D9940 r315046: Use nitems() from sys/param.h Reviewed by: jhb MFC after: 3 weeks. Differential Revision: https://reviews.freebsd.org/D9941 r315047: Use nitems() from sys/param.h. Reviewed by: np MFC after: 3 weeks. Differential Revision: https://reviews.freebsd.org/D9945 r315048: Use nitems() from sys/param.h. MFC after: 3 weeks. r315049: Bring back the cast removed in my previous commit to allow us build vmstat with WARNS 2. This cast was first introduced at r87690. Reported by: bde, pfg and ngie MFC after: 3 weeks. r315102: Use nitems() from sys/param.h. Reviewed by: ngie Differential Revision: https://reviews.freebsd.org/D9943 Modified: stable/11/usr.bin/uuencode/uuencode.c stable/11/usr.bin/vmstat/vmstat.c stable/11/usr.bin/w/w.c stable/11/usr.sbin/acpi/acpidump/acpi.c stable/11/usr.sbin/boot0cfg/boot0cfg.c stable/11/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_fs_tbl.c stable/11/usr.sbin/camdd/camdd.c stable/11/usr.sbin/ctld/kernel.c stable/11/usr.sbin/iscsid/iscsid.c Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.bin/uuencode/uuencode.c ============================================================================== --- stable/11/usr.bin/uuencode/uuencode.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.bin/uuencode/uuencode.c Mon Apr 17 18:55:54 2017 (r317062) @@ -160,7 +160,7 @@ base64_encode(void) fprintf(output, "begin-base64 %o %s\n", mode, *av); while ((n = fread(buf, 1, sizeof(buf), stdin))) { ++sequence; - rv = b64_ntop(buf, n, buf2, (sizeof(buf2) / sizeof(buf2[0]))); + rv = b64_ntop(buf, n, buf2, nitems(buf2)); if (rv == -1) errx(1, "b64_ntop: error encoding base64"); fprintf(output, "%s%s", buf2, (sequence % GROUPS) ? "" : "\n"); Modified: stable/11/usr.bin/vmstat/vmstat.c ============================================================================== --- stable/11/usr.bin/vmstat/vmstat.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.bin/vmstat/vmstat.c Mon Apr 17 18:55:54 2017 (r317062) @@ -288,17 +288,13 @@ retry_nlist: namelist[X_SUM].n_name = "_cnt"; goto retry_nlist; } - for (c = 0; - c < (int)(sizeof(namelist)/sizeof(namelist[0])); - c++) + for (c = 0; c < (int)(nitems(namelist)); c++) if (namelist[c].n_type == 0) bufsize += strlen(namelist[c].n_name) + 1; bufsize += len + 1; buf = bp = alloca(bufsize); - for (c = 0; - c < (int)(sizeof(namelist)/sizeof(namelist[0])); - c++) + for (c = 0; c < (int)(nitems(namelist)); c++) if (namelist[c].n_type == 0) { xo_error(" %s", namelist[c].n_name); Modified: stable/11/usr.bin/w/w.c ============================================================================== --- stable/11/usr.bin/w/w.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.bin/w/w.c Mon Apr 17 18:55:54 2017 (r317062) @@ -516,7 +516,7 @@ pr_header(time_t *nowp, int nusers) /* * Print 1, 5, and 15 minute load averages. */ - if (getloadavg(avenrun, sizeof(avenrun) / sizeof(avenrun[0])) == -1) + if (getloadavg(avenrun, nitems(avenrun)) == -1) xo_emit(", no load average information available\n"); else { static const char *format[] = { @@ -525,7 +525,7 @@ pr_header(time_t *nowp, int nusers) " {:load-average-15/%.2f}", }; xo_emit(", load averages:"); - for (i = 0; i < (int)(sizeof(avenrun) / sizeof(avenrun[0])); i++) { + for (i = 0; i < (int)(nitems(avenrun)); i++) { if (use_comma && i > 0) xo_emit(","); xo_emit(format[i], avenrun[i]); Modified: stable/11/usr.sbin/acpi/acpidump/acpi.c ============================================================================== --- stable/11/usr.sbin/acpi/acpidump/acpi.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.sbin/acpi/acpidump/acpi.c Mon Apr 17 18:55:54 2017 (r317062) @@ -394,7 +394,7 @@ acpi_print_madt(ACPI_SUBTABLE_HEADER *mp ACPI_MADT_LOCAL_X2APIC *x2apic; ACPI_MADT_LOCAL_X2APIC_NMI *x2apic_nmi; - if (mp->Type < sizeof(apic_types) / sizeof(apic_types[0])) + if (mp->Type < nitems(apic_types)) printf("\tType=%s\n", apic_types[mp->Type]); else printf("\tType=%d (unknown)\n", mp->Type); @@ -444,8 +444,7 @@ acpi_print_madt(ACPI_SUBTABLE_HEADER *mp break; case ACPI_MADT_TYPE_INTERRUPT_SOURCE: isrc = (ACPI_MADT_INTERRUPT_SOURCE *)mp; - if (isrc->Type < sizeof(platform_int_types) / - sizeof(platform_int_types[0])) + if (isrc->Type < nitems(platform_int_types)) printf("\tType=%s\n", platform_int_types[isrc->Type]); else printf("\tType=%d (unknown)\n", isrc->Type); @@ -1020,7 +1019,7 @@ acpi_print_srat(ACPI_SUBTABLE_HEADER *sr ACPI_SRAT_CPU_AFFINITY *cpu; ACPI_SRAT_X2APIC_CPU_AFFINITY *x2apic; - if (srat->Type < sizeof(srat_types) / sizeof(srat_types[0])) + if (srat->Type < nitems(srat_types)) printf("\tType=%s\n", srat_types[srat->Type]); else printf("\tType=%d (unknown)\n", srat->Type); Modified: stable/11/usr.sbin/boot0cfg/boot0cfg.c ============================================================================== --- stable/11/usr.sbin/boot0cfg/boot0cfg.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.sbin/boot0cfg/boot0cfg.c Mon Apr 17 18:55:54 2017 (r317062) @@ -88,7 +88,7 @@ static const struct { {"update", 1}, {"setdrv", 0} }; -static const int nopt = sizeof(opttbl) / sizeof(opttbl[0]); +static const int nopt = nitems(opttbl); static const char fmt0[] = "# flag start chs type" " end chs offset size\n"; Modified: stable/11/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_fs_tbl.c ============================================================================== --- stable/11/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_fs_tbl.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_fs_tbl.c Mon Apr 17 18:55:54 2017 (r317062) @@ -143,7 +143,7 @@ static const struct { { "hpfs", &OIDX_hrFSHPFS_c }, { "smbfs", &OIDX_hrFSOther_c }, }; -#define N_FS_TYPE_MAP (sizeof(fs_type_map) / sizeof(fs_type_map[0])) +#define N_FS_TYPE_MAP nitems(fs_type_map) /** * Create an entry into the FS table and an entry in the map (if needed). Modified: stable/11/usr.sbin/camdd/camdd.c ============================================================================== --- stable/11/usr.sbin/camdd/camdd.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.sbin/camdd/camdd.c Mon Apr 17 18:55:54 2017 (r317062) @@ -1004,8 +1004,7 @@ camdd_probe_tape(int fd, char *filename, goto bailout; } - for (i = 0; i < sizeof(req_status_items) / - sizeof(req_status_items[0]); i++) { + for (i = 0; i < nitems(req_status_items); i++) { char *name; name = __DECONST(char *, req_status_items[i].name); Modified: stable/11/usr.sbin/ctld/kernel.c ============================================================================== --- stable/11/usr.sbin/ctld/kernel.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.sbin/ctld/kernel.c Mon Apr 17 18:55:54 2017 (r317062) @@ -1259,8 +1259,8 @@ kernel_capsicate(void) if (error != 0 && errno != ENOSYS) log_err(1, "cap_rights_limit"); - error = cap_ioctls_limit(ctl_fd, cmds, - sizeof(cmds) / sizeof(cmds[0])); + error = cap_ioctls_limit(ctl_fd, cmds, nitems(cmds)); + if (error != 0 && errno != ENOSYS) log_err(1, "cap_ioctls_limit"); Modified: stable/11/usr.sbin/iscsid/iscsid.c ============================================================================== --- stable/11/usr.sbin/iscsid/iscsid.c Mon Apr 17 17:34:47 2017 (r317061) +++ stable/11/usr.sbin/iscsid/iscsid.c Mon Apr 17 18:55:54 2017 (r317062) @@ -326,8 +326,8 @@ capsicate(struct connection *conn) if (error != 0 && errno != ENOSYS) log_err(1, "cap_rights_limit"); - error = cap_ioctls_limit(conn->conn_iscsi_fd, cmds, - sizeof(cmds) / sizeof(cmds[0])); + error = cap_ioctls_limit(conn->conn_iscsi_fd, cmds, nitems(cmds)); + if (error != 0 && errno != ENOSYS) log_err(1, "cap_ioctls_limit"); From owner-svn-src-stable@freebsd.org Mon Apr 17 19:08:50 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 73891D414FF; Mon, 17 Apr 2017 19:08:50 +0000 (UTC) (envelope-from bapt@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 mx1.freebsd.org (Postfix) with ESMTPS id 45D7E1E46; Mon, 17 Apr 2017 19:08:50 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3HJ8nvk060856; Mon, 17 Apr 2017 19:08:49 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3HJ8nO6060855; Mon, 17 Apr 2017 19:08:49 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201704171908.v3HJ8nO6060855@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Mon, 17 Apr 2017 19:08:49 +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: r317065 - stable/11/share/misc X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 19:08:50 -0000 Author: bapt Date: Mon Apr 17 19:08:49 2017 New Revision: 317065 URL: https://svnweb.freebsd.org/changeset/base/317065 Log: MFC r316956: Update pci_vendors to 2017.04.03 Modified: stable/11/share/misc/pci_vendors Directory Properties: stable/11/ (props changed) Modified: stable/11/share/misc/pci_vendors ============================================================================== --- stable/11/share/misc/pci_vendors Mon Apr 17 19:03:31 2017 (r317064) +++ stable/11/share/misc/pci_vendors Mon Apr 17 19:08:49 2017 (r317065) @@ -3,8 +3,8 @@ # # List of PCI ID's # -# Version: 2017.03.16 -# Date: 2017-03-16 03:15:01 +# Version: 2017.04.03 +# Date: 2017-04-03 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -10674,7 +10674,7 @@ 1430 GM206GL [Quadro M2000] 1431 GM206GL [Tesla M4] 1436 GM206GLM [Quadro M2200 Mobile] - 15f0 GP100GL + 15f0 GP100GL [Quadro GP100] 15f1 GP100GL 15f7 GP100GL [Tesla P100 PCIe 12GB] 15f8 GP100GL [Tesla P100 PCIe 16GB] @@ -10707,7 +10707,7 @@ 1ba0 GP104M [GeForce GTX 1080 Mobile] 1ba1 GP104M [GeForce GTX 1070 Mobile] 1bb0 GP104GL [Quadro P5000] - 1bb1 GP104GL + 1bb1 GP104GL [Quadro P4000] 1bb3 GP104GL [Tesla P4] 1bb4 GP104GL 1bb6 GP104GLM [Quadro P5000 Mobile] @@ -10720,7 +10720,7 @@ 1c02 GP106 [GeForce GTX 1060 3GB] 1c03 GP106 [GeForce GTX 1060 6GB] 1c20 GP106M [GeForce GTX 1060 Mobile] - 1c30 GP106GL + 1c30 GP106GL [Quadro P2000] 1c35 GP106 1c60 GP106M [GeForce GTX 1060 Mobile] 1c61 GP106M [GeForce GTX 1050 Ti Mobile] @@ -10735,6 +10735,9 @@ 1ca7 GP107GL 1ca8 GP107GL 1caa GP107GL + 1cb1 GP107GL [Quardo P1000] + 1cb2 GP107GL [Quardo P600] + 1cb3 GP107GL [Quardo P400] 1d01 GP108 1d81 GV100 10df Emulex Corporation @@ -16467,7 +16470,7 @@ 1028 1fc2 Express Flash NVMe PM1725 1.6TB SFF 1028 1fc4 Express Flash NVMe PM1725 1.6TB AIC a822 NVMe SSD Controller 172Xa - 1028 1fd9 Express Flash NVMe PM1725a 800GB SFF + 1028 1fd9 Express Flash PM1725a 800GB SFF 1028 1fda Express Flash PM1725a 1.6TB SFF 1028 1fdb Express Flash PM1725a 3.2TB SFF 1028 1fdc Express Flash PM1725a 6.4TB SFF @@ -20300,6 +20303,7 @@ 1b79 Absolute Analysis 1b85 OCZ Technology Group, Inc. 1041 RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) + 6018 RD400/400A SSD 8788 RevoDrive Hybrid 1b94 Signatec / Dynamic Signals Corp e400 PX14400 Dual Xilinx Virtex5 based Digitizer @@ -23094,6 +23098,7 @@ 8086 0000 Ethernet Converged Network Adapter X710-T 8086 0001 Ethernet Converged Network Adapter X710-T4 8086 0002 Ethernet Converged Network Adapter X710-T4 + 8086 0003 Ethernet Converged Network Adapter X710-T 8086 1003 Ethernet Converged Network Adapter X710-T 158a Ethernet Controller XXV710 for 25GbE backplane 158b Ethernet Controller XXV710 for 25GbE SFP28 @@ -27004,7 +27009,7 @@ 1001 8086 mPCI 3B Europe ZZE 1002 8086 mPCI 3B Japan ZZJ 1003 8086 mPCI 3B High-Band ZZH - 1351 103c Compaq NC6220 + 103c 1351 Compaq nc6220 4224 PRO/Wireless 2915ABG [Calexico2] Network Connection 4227 PRO/Wireless 3945ABG [Golan] Network Connection 8086 1010 ThinkPad R60e @@ -27127,6 +27132,7 @@ 5845 QEMU NVM Express Controller 1af4 1100 QEMU Virtual Machine 5902 HD Graphics 610 + 5912 HD Graphics 630 5a84 Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller 5a88 Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit 5a98 Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster From owner-svn-src-stable@freebsd.org Mon Apr 17 19:10:13 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 52555D415B3; Mon, 17 Apr 2017 19:10:13 +0000 (UTC) (envelope-from bapt@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 mx1.freebsd.org (Postfix) with ESMTPS id 2DB5B1FB1; Mon, 17 Apr 2017 19:10:13 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3HJACFf060999; Mon, 17 Apr 2017 19:10:12 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3HJACof060998; Mon, 17 Apr 2017 19:10:12 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201704171910.v3HJACof060998@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Mon, 17 Apr 2017 19:10:12 +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: r317066 - stable/10/share/misc X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 19:10:13 -0000 Author: bapt Date: Mon Apr 17 19:10:12 2017 New Revision: 317066 URL: https://svnweb.freebsd.org/changeset/base/317066 Log: MFC r316956: Update pci_vendors to 2017.04.03 Modified: stable/10/share/misc/pci_vendors Directory Properties: stable/10/ (props changed) Modified: stable/10/share/misc/pci_vendors ============================================================================== --- stable/10/share/misc/pci_vendors Mon Apr 17 19:08:49 2017 (r317065) +++ stable/10/share/misc/pci_vendors Mon Apr 17 19:10:12 2017 (r317066) @@ -3,8 +3,8 @@ # # List of PCI ID's # -# Version: 2017.03.16 -# Date: 2017-03-16 03:15:01 +# Version: 2017.04.03 +# Date: 2017-04-03 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -10674,7 +10674,7 @@ 1430 GM206GL [Quadro M2000] 1431 GM206GL [Tesla M4] 1436 GM206GLM [Quadro M2200 Mobile] - 15f0 GP100GL + 15f0 GP100GL [Quadro GP100] 15f1 GP100GL 15f7 GP100GL [Tesla P100 PCIe 12GB] 15f8 GP100GL [Tesla P100 PCIe 16GB] @@ -10707,7 +10707,7 @@ 1ba0 GP104M [GeForce GTX 1080 Mobile] 1ba1 GP104M [GeForce GTX 1070 Mobile] 1bb0 GP104GL [Quadro P5000] - 1bb1 GP104GL + 1bb1 GP104GL [Quadro P4000] 1bb3 GP104GL [Tesla P4] 1bb4 GP104GL 1bb6 GP104GLM [Quadro P5000 Mobile] @@ -10720,7 +10720,7 @@ 1c02 GP106 [GeForce GTX 1060 3GB] 1c03 GP106 [GeForce GTX 1060 6GB] 1c20 GP106M [GeForce GTX 1060 Mobile] - 1c30 GP106GL + 1c30 GP106GL [Quadro P2000] 1c35 GP106 1c60 GP106M [GeForce GTX 1060 Mobile] 1c61 GP106M [GeForce GTX 1050 Ti Mobile] @@ -10735,6 +10735,9 @@ 1ca7 GP107GL 1ca8 GP107GL 1caa GP107GL + 1cb1 GP107GL [Quardo P1000] + 1cb2 GP107GL [Quardo P600] + 1cb3 GP107GL [Quardo P400] 1d01 GP108 1d81 GV100 10df Emulex Corporation @@ -16467,7 +16470,7 @@ 1028 1fc2 Express Flash NVMe PM1725 1.6TB SFF 1028 1fc4 Express Flash NVMe PM1725 1.6TB AIC a822 NVMe SSD Controller 172Xa - 1028 1fd9 Express Flash NVMe PM1725a 800GB SFF + 1028 1fd9 Express Flash PM1725a 800GB SFF 1028 1fda Express Flash PM1725a 1.6TB SFF 1028 1fdb Express Flash PM1725a 3.2TB SFF 1028 1fdc Express Flash PM1725a 6.4TB SFF @@ -20300,6 +20303,7 @@ 1b79 Absolute Analysis 1b85 OCZ Technology Group, Inc. 1041 RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) + 6018 RD400/400A SSD 8788 RevoDrive Hybrid 1b94 Signatec / Dynamic Signals Corp e400 PX14400 Dual Xilinx Virtex5 based Digitizer @@ -23094,6 +23098,7 @@ 8086 0000 Ethernet Converged Network Adapter X710-T 8086 0001 Ethernet Converged Network Adapter X710-T4 8086 0002 Ethernet Converged Network Adapter X710-T4 + 8086 0003 Ethernet Converged Network Adapter X710-T 8086 1003 Ethernet Converged Network Adapter X710-T 158a Ethernet Controller XXV710 for 25GbE backplane 158b Ethernet Controller XXV710 for 25GbE SFP28 @@ -27004,7 +27009,7 @@ 1001 8086 mPCI 3B Europe ZZE 1002 8086 mPCI 3B Japan ZZJ 1003 8086 mPCI 3B High-Band ZZH - 1351 103c Compaq NC6220 + 103c 1351 Compaq nc6220 4224 PRO/Wireless 2915ABG [Calexico2] Network Connection 4227 PRO/Wireless 3945ABG [Golan] Network Connection 8086 1010 ThinkPad R60e @@ -27127,6 +27132,7 @@ 5845 QEMU NVM Express Controller 1af4 1100 QEMU Virtual Machine 5902 HD Graphics 610 + 5912 HD Graphics 630 5a84 Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller 5a88 Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit 5a98 Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster From owner-svn-src-stable@freebsd.org Mon Apr 17 20:13:22 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B5B6DD42C26; Mon, 17 Apr 2017 20:13:22 +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 mx1.freebsd.org (Postfix) with ESMTPS id 818EEF23; Mon, 17 Apr 2017 20:13:22 +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 v3HKDL6j089736; Mon, 17 Apr 2017 20:13:21 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3HKDLrr089727; Mon, 17 Apr 2017 20:13:21 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201704172013.v3HKDLrr089727@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Mon, 17 Apr 2017 20:13:21 +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: r317067 - in stable/11: sys/netinet6 tests/sys/netinet X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Apr 2017 20:13:22 -0000 Author: asomers Date: Mon Apr 17 20:13:20 2017 New Revision: 317067 URL: https://svnweb.freebsd.org/changeset/base/317067 Log: MFC r313025, r313395, r314113, r314442, r315458, r315656 r313025: Add tests for multi-fib IPv6 routing PR: 196361 Submitted by: jhujhiti@adjectivism.org Reported by: Jason Healy MFC after: 4 weeks Sponsored by: Spectra Logic Corp r313395: Add fibs_test:udp_dontroute6, another IPv6 multi-FIB test PR: 196361 MFC after: 3 weeks Sponsored by: Spectra Logic Corp r314113: Remove tests/sys/netinet/fibs_tests's dependency on net/socat Instead of bridging two tap interfaces with socat, just use an epair pair. MFC after: 3 weeks Sponsored by: Spectra Logic Corp r314442: Add an ATF test for IPv6 SLAAC with multiple fibs Tests that an interface can get a SLAAC address and that it inserts its routes into the correct fib. Does not test anything to do with NDP. PR: 196361 Reviewed by: Erick Turnquist MFC after: 3 weeks Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D9776 r315458: Constrain IPv6 routes to single FIBs when net.add_addr_allfibs=0 sys/netinet6/icmp6.c Use the interface's FIB for source address selection in ICMPv6 error responses. sys/netinet6/in6.c In in6_newaddrmsg, announce arrival of local addresses on the interface's FIB only. In in6_lltable_rtcheck, use a per-fib ND6 cache instead of a single cache. sys/netinet6/in6_src.c In in6_selectsrc, use the caller's fib instead of the default fib. In in6_selectsrc_socket, remove a superfluous check. sys/netinet6/nd6.c In nd6_lle_event, use the interface's fib for routing socket messages. In nd6_is_new_addr_neighbor, check all FIBs when trying to determine whether an address is a neighbor. Also, simplify the code for point to point interfaces. sys/netinet6/nd6.h sys/netinet6/nd6.c sys/netinet6/nd6_rtr.c Make defrouter_select fib-aware, and make all of its callers pass in the interface fib. sys/netinet6/nd6_nbr.c When inputting a Neighbor Solicitation packet, consider the interface fib instead of the default fib for DAD. Output NS and Neighbor Advertisement packets on the correct fib. sys/netinet6/nd6_rtr.c Allow installing the same host route on different interfaces in different FIBs. If rt_add_addr_allfibs=0, only install or delete the prefix route on the interface fib. tests/sys/netinet/fibs_test.sh Clear some expected failures, but add a skip for the newly revealed BUG217871. PR: 196361 Submitted by: Erick Turnquist Reported by: Jason Healy Reviewed by: asomers MFC after: 3 weeks Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D9451 r315656: Fix back-to-back runs of sys/netinet/fibs_test;slaac_on_nondefault_fib6 This test was failing if run twice because rtadvd takes too long to die. The rtadvd process from the first run was still running when the second run created its interfaces. The solution is to use SIGKILL during the cleanup instead of SIGTERM so rtadvd will die faster. While I'm here, randomize the addresses used for the test, which makes bugs like this easier to spot, and fix the cleanup order to be the opposite of the setup order PR: 217871 MFC after: 18 days X-MFC-With: 315458 Sponsored by: Spectra Logic Corp Modified: stable/11/sys/netinet6/icmp6.c stable/11/sys/netinet6/in6.c stable/11/sys/netinet6/in6_src.c stable/11/sys/netinet6/nd6.c stable/11/sys/netinet6/nd6.h stable/11/sys/netinet6/nd6_nbr.c stable/11/sys/netinet6/nd6_rtr.c stable/11/tests/sys/netinet/fibs_test.sh stable/11/tests/sys/netinet/udp_dontroute.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet6/icmp6.c ============================================================================== --- stable/11/sys/netinet6/icmp6.c Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/sys/netinet6/icmp6.c Mon Apr 17 20:13:20 2017 (r317067) @@ -2147,7 +2147,7 @@ icmp6_reflect(struct mbuf *m, size_t off * source address of the erroneous packet. */ in6_splitscope(&ip6->ip6_src, &dst6, &scopeid); - error = in6_selectsrc_addr(RT_DEFAULT_FIB, &dst6, + error = in6_selectsrc_addr(M_GETFIB(m), &dst6, scopeid, NULL, &src6, &hlim); if (error) { @@ -2289,7 +2289,7 @@ icmp6_redirect_input(struct mbuf *m, int uint32_t scopeid; in6_splitscope(&reddst6, &kdst, &scopeid); - if (fib6_lookup_nh_basic(RT_DEFAULT_FIB, &kdst, scopeid, 0, 0,&nh6)==0){ + if (fib6_lookup_nh_basic(ifp->if_fib, &kdst, scopeid, 0, 0,&nh6)==0){ if ((nh6.nh_flags & NHF_GATEWAY) == 0) { nd6log((LOG_ERR, "ICMP6 redirect rejected; no route " Modified: stable/11/sys/netinet6/in6.c ============================================================================== --- stable/11/sys/netinet6/in6.c Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/sys/netinet6/in6.c Mon Apr 17 20:13:20 2017 (r317067) @@ -159,6 +159,7 @@ in6_newaddrmsg(struct in6_ifaddr *ia, in struct sockaddr_dl gateway; struct sockaddr_in6 mask, addr; struct rtentry rt; + int fibnum; /* * initialize for rtmsg generation @@ -176,8 +177,9 @@ in6_newaddrmsg(struct in6_ifaddr *ia, in rt.rt_flags = RTF_HOST | RTF_STATIC; if (cmd == RTM_ADD) rt.rt_flags |= RTF_UP; - /* Announce arrival of local address to all FIBs. */ - rt_newaddrmsg(cmd, &ia->ia_ifa, 0, &rt); + fibnum = V_rt_add_addr_allfibs ? RT_ALL_FIBS : ia62ifa(ia)->ifa_ifp->if_fib; + /* Announce arrival of local address to this FIB. */ + rt_newaddrmsg_fib(cmd, &ia->ia_ifa, 0, &rt, fibnum); } int @@ -2115,15 +2117,15 @@ in6_lltable_rtcheck(struct ifnet *ifp, uint32_t scopeid; int error; char ip6buf[INET6_ADDRSTRLEN]; + int fibnum; KASSERT(l3addr->sa_family == AF_INET6, ("sin_family %d", l3addr->sa_family)); - /* Our local addresses are always only installed on the default FIB. */ - sin6 = (const struct sockaddr_in6 *)l3addr; in6_splitscope(&sin6->sin6_addr, &dst, &scopeid); - error = fib6_lookup_nh_basic(RT_DEFAULT_FIB, &dst, scopeid, 0, 0, &nh6); + fibnum = V_rt_add_addr_allfibs ? RT_DEFAULT_FIB : ifp->if_fib; + error = fib6_lookup_nh_basic(fibnum, &dst, scopeid, 0, 0, &nh6); if (error != 0 || (nh6.nh_flags & NHF_GATEWAY) || nh6.nh_ifp != ifp) { struct ifaddr *ifa; /* Modified: stable/11/sys/netinet6/in6_src.c ============================================================================== --- stable/11/sys/netinet6/in6_src.c Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/sys/netinet6/in6_src.c Mon Apr 17 20:13:20 2017 (r317067) @@ -297,7 +297,7 @@ in6_selectsrc(uint32_t fibnum, struct so */ /* get the outgoing interface */ if ((error = in6_selectif(dstsock, opts, mopts, &ifp, oifp, - (inp != NULL) ? inp->inp_inc.inc_fibnum : RT_DEFAULT_FIB)) != 0) + (inp != NULL) ? inp->inp_inc.inc_fibnum : fibnum)) != 0) return (error); #ifdef DIAGNOSTIC @@ -563,7 +563,7 @@ in6_selectsrc_socket(struct sockaddr_in6 uint32_t fibnum; int error; - fibnum = (inp != NULL) ? inp->inp_inc.inc_fibnum : RT_DEFAULT_FIB; + fibnum = inp->inp_inc.inc_fibnum; retifp = NULL; error = in6_selectsrc(fibnum, dstsock, opts, inp, cred, &retifp, srcp); Modified: stable/11/sys/netinet6/nd6.c ============================================================================== --- stable/11/sys/netinet6/nd6.c Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/sys/netinet6/nd6.c Mon Apr 17 20:13:20 2017 (r317067) @@ -157,6 +157,7 @@ nd6_lle_event(void *arg __unused, struct struct sockaddr_dl gw; struct ifnet *ifp; int type; + int fibnum; LLE_WLOCK_ASSERT(lle); @@ -194,8 +195,9 @@ nd6_lle_event(void *arg __unused, struct rtinfo.rti_info[RTAX_DST] = (struct sockaddr *)&dst; rtinfo.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&gw; rtinfo.rti_addrs = RTA_DST | RTA_GATEWAY; + fibnum = V_rt_add_addr_allfibs ? RT_ALL_FIBS : ifp->if_fib; rt_missmsg_fib(type, &rtinfo, RTF_HOST | RTF_LLDATA | ( - type == RTM_ADD ? RTF_UP: 0), 0, RT_DEFAULT_FIB); + type == RTM_ADD ? RTF_UP: 0), 0, fibnum); } /* @@ -1200,7 +1202,7 @@ nd6_purge(struct ifnet *ifp) if (ND_IFINFO(ifp)->flags & ND6_IFF_ACCEPT_RTADV) { /* Refresh default router list. */ - defrouter_select(); + defrouter_select_fib(ifp->if_fib); } } @@ -1253,7 +1255,7 @@ static int nd6_is_new_addr_neighbor(const struct sockaddr_in6 *addr, struct ifnet *ifp) { struct nd_prefix *pr; - struct ifaddr *dstaddr; + struct ifaddr *ifa; struct rt_addrinfo info; struct sockaddr_in6 rt_key; const struct sockaddr *dst6; @@ -1287,9 +1289,6 @@ nd6_is_new_addr_neighbor(const struct so bzero(&info, sizeof(info)); info.rti_info[RTAX_DST] = (struct sockaddr *)&rt_key; - /* Always use the default FIB here. XXME - why? */ - fibnum = RT_DEFAULT_FIB; - /* * If the address matches one of our addresses, * it should be a neighbor. @@ -1303,19 +1302,31 @@ restart: continue; if ((pr->ndpr_stateflags & NDPRF_ONLINK) == 0) { - /* Always use the default FIB here. */ dst6 = (const struct sockaddr *)&pr->ndpr_prefix; - genid = V_nd6_list_genid; - ND6_RUNLOCK(); - - /* Restore length field before retrying lookup */ - rt_key.sin6_len = sizeof(rt_key); - error = rib_lookup_info(fibnum, dst6, 0, 0, &info); + /* + * We only need to check all FIBs if add_addr_allfibs + * is unset. If set, checking any FIB will suffice. + */ + fibnum = V_rt_add_addr_allfibs ? rt_numfibs - 1 : 0; + for (; fibnum < rt_numfibs; fibnum++) { + genid = V_nd6_list_genid; + ND6_RUNLOCK(); - ND6_RLOCK(); - if (genid != V_nd6_list_genid) - goto restart; + /* + * Restore length field before + * retrying lookup + */ + rt_key.sin6_len = sizeof(rt_key); + error = rib_lookup_info(fibnum, dst6, 0, 0, + &info); + + ND6_RLOCK(); + if (genid != V_nd6_list_genid) + goto restart; + if (error == 0) + break; + } if (error != 0) continue; @@ -1346,13 +1357,18 @@ restart: * If the address is assigned on the node of the other side of * a p2p interface, the address should be a neighbor. */ - dstaddr = ifa_ifwithdstaddr((const struct sockaddr *)addr, RT_ALL_FIBS); - if (dstaddr != NULL) { - if (dstaddr->ifa_ifp == ifp) { - ifa_free(dstaddr); - return (1); + if (ifp->if_flags & IFF_POINTOPOINT) { + IF_ADDR_RLOCK(ifp); + TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { + if (ifa->ifa_addr->sa_family != addr->sin6_family) + continue; + if (ifa->ifa_dstaddr != NULL && + sa_equal(addr, ifa->ifa_dstaddr)) { + IF_ADDR_RUNLOCK(ifp); + return 1; + } } - ifa_free(dstaddr); + IF_ADDR_RUNLOCK(ifp); } /* @@ -1485,7 +1501,7 @@ nd6_free(struct llentry **lnp, int gc) /* * We need to unlock to avoid a LOR with rt6_flush() with the * rnh and for the calls to pfxlist_onlink_check() and - * defrouter_select() in the block further down for calls + * defrouter_select_fib() in the block further down for calls * into nd6_lookup(). We still hold a ref. */ LLE_WUNLOCK(ln); @@ -1500,7 +1516,7 @@ nd6_free(struct llentry **lnp, int gc) if (dr) { /* - * Since defrouter_select() does not affect the + * Since defrouter_select_fib() does not affect the * on-link determination and MIP6 needs the check * before the default router selection, we perform * the check now. @@ -1510,7 +1526,7 @@ nd6_free(struct llentry **lnp, int gc) /* * Refresh default router list. */ - defrouter_select(); + defrouter_select_fib(dr->ifp->if_fib); } /* @@ -2104,11 +2120,11 @@ nd6_cache_lladdr(struct ifnet *ifp, stru * Question: can we restrict the first condition to the "is_newentry" * case? * XXX: when we hear an RA from a new router with the link-layer - * address option, defrouter_select() is called twice, since + * address option, defrouter_select_fib() is called twice, since * defrtrlist_update called the function as well. However, I believe * we can compromise the overhead, since it only happens the first * time. - * XXX: although defrouter_select() should not have a bad effect + * XXX: although defrouter_select_fib() should not have a bad effect * for those are not autoconfigured hosts, we explicitly avoid such * cases for safety. */ @@ -2117,7 +2133,7 @@ nd6_cache_lladdr(struct ifnet *ifp, stru /* * guaranteed recursion */ - defrouter_select(); + defrouter_select_fib(ifp->if_fib); } } Modified: stable/11/sys/netinet6/nd6.h ============================================================================== --- stable/11/sys/netinet6/nd6.h Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/sys/netinet6/nd6.h Mon Apr 17 20:13:20 2017 (r317067) @@ -469,6 +469,7 @@ void nd6_dad_stop(struct ifaddr *); void nd6_rs_input(struct mbuf *, int, int); void nd6_ra_input(struct mbuf *, int, int); void defrouter_reset(void); +void defrouter_select_fib(int fibnum); void defrouter_select(void); void defrouter_ref(struct nd_defrouter *); void defrouter_rele(struct nd_defrouter *); Modified: stable/11/sys/netinet6/nd6_nbr.c ============================================================================== --- stable/11/sys/netinet6/nd6_nbr.c Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/sys/netinet6/nd6_nbr.c Mon Apr 17 20:13:20 2017 (r317067) @@ -262,8 +262,7 @@ nd6_ns_input(struct mbuf *m, int off, in bzero(&info, sizeof(info)); info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&rt_gateway; - /* Always use the default FIB. */ - if (rib_lookup_info(RT_DEFAULT_FIB, (struct sockaddr *)&dst6, + if (rib_lookup_info(ifp->if_fib, (struct sockaddr *)&dst6, 0, 0, &info) == 0) { if ((info.rti_flags & RTF_ANNOUNCE) != 0 && rt_gateway.sdl_family == AF_LINK) { @@ -485,7 +484,7 @@ nd6_ns_output_fib(struct ifnet *ifp, con uint32_t scopeid; in6_splitscope(&ip6->ip6_dst, &dst6, &scopeid); - error = in6_selectsrc_addr(RT_DEFAULT_FIB, &dst6, + error = in6_selectsrc_addr(fibnum, &dst6, scopeid, ifp, &src6, NULL); if (error) { char ip6buf[INET6_ADDRSTRLEN]; @@ -982,7 +981,7 @@ nd6_na_output_fib(struct ifnet *ifp, con * Select a source whose scope is the same as that of the dest. */ in6_splitscope(&daddr6, &dst6, &scopeid); - error = in6_selectsrc_addr(RT_DEFAULT_FIB, &dst6, + error = in6_selectsrc_addr(fibnum, &dst6, scopeid, ifp, &src6, NULL); if (error) { char ip6buf[INET6_ADDRSTRLEN]; Modified: stable/11/sys/netinet6/nd6_rtr.c ============================================================================== --- stable/11/sys/netinet6/nd6_rtr.c Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/sys/netinet6/nd6_rtr.c Mon Apr 17 20:13:20 2017 (r317067) @@ -500,7 +500,7 @@ defrouter_addreq(struct nd_defrouter *ne error = in6_rtrequest(RTM_ADD, (struct sockaddr *)&def, (struct sockaddr *)&gate, (struct sockaddr *)&mask, - RTF_GATEWAY, &newrt, RT_DEFAULT_FIB); + RTF_GATEWAY, &newrt, new->ifp->if_fib); if (newrt) { nd6_rtmsg(RTM_ADD, newrt); /* tell user process */ RTFREE(newrt); @@ -551,8 +551,8 @@ defrouter_rele(struct nd_defrouter *dr) /* * Remove the default route for a given router. - * This is just a subroutine function for defrouter_select(), and should - * not be called from anywhere else. + * This is just a subroutine function for defrouter_select_fib(), and + * should not be called from anywhere else. */ static void defrouter_delreq(struct nd_defrouter *dr) @@ -571,7 +571,7 @@ defrouter_delreq(struct nd_defrouter *dr in6_rtrequest(RTM_DELETE, (struct sockaddr *)&def, (struct sockaddr *)&gate, - (struct sockaddr *)&mask, RTF_GATEWAY, &oldrt, RT_DEFAULT_FIB); + (struct sockaddr *)&mask, RTF_GATEWAY, &oldrt, dr->ifp->if_fib); if (oldrt) { nd6_rtmsg(RTM_DELETE, oldrt); RTFREE(oldrt); @@ -698,11 +698,11 @@ defrouter_del(struct nd_defrouter *dr) /* * If the router is the primary one, choose a new one. - * Note that defrouter_select() will remove the current gateway - * from the routing table. + * Note that defrouter_select_fib() will remove the current + * gateway from the routing table. */ if (deldr) - defrouter_select(); + defrouter_select_fib(deldr->ifp->if_fib); /* * Release the list reference. @@ -730,13 +730,23 @@ defrouter_del(struct nd_defrouter *dr) * even when the multipath routing is available, because we're not sure about * the benefits for stub hosts comparing to the risk of making the code * complicated and the possibility of introducing bugs. + * + * We maintain a single list of routers for multiple FIBs, only considering one + * at a time based on the receiving interface's FIB. If @fibnum is RT_ALL_FIBS, + * we do the whole thing multiple times. */ void -defrouter_select(void) +defrouter_select_fib(int fibnum) { struct nd_defrouter *dr, *selected_dr, *installed_dr; struct llentry *ln = NULL; + if (fibnum == RT_ALL_FIBS) { + for (fibnum = 0; fibnum < rt_numfibs; fibnum++) { + defrouter_select_fib(fibnum); + } + } + ND6_RLOCK(); /* * Let's handle easy case (3) first: @@ -755,7 +765,7 @@ defrouter_select(void) selected_dr = installed_dr = NULL; TAILQ_FOREACH(dr, &V_nd_defrouter, dr_entry) { IF_AFDATA_RLOCK(dr->ifp); - if (selected_dr == NULL && + if (selected_dr == NULL && dr->ifp->if_fib == fibnum && (ln = nd6_lookup(&dr->rtaddr, 0, dr->ifp)) && ND6_IS_LLINFO_PROBREACH(ln)) { selected_dr = dr; @@ -767,14 +777,17 @@ defrouter_select(void) ln = NULL; } - if (dr->installed) { + if (dr->installed && dr->ifp->if_fib == fibnum) { if (installed_dr == NULL) { installed_dr = dr; defrouter_ref(installed_dr); } else { - /* this should not happen. warn for diagnosis. */ - log(LOG_ERR, - "defrouter_select: more than one router is installed\n"); + /* + * this should not happen. + * warn for diagnosis. + */ + log(LOG_ERR, "defrouter_select_fib: more than " + "one router is installed\n"); } } } @@ -789,14 +802,24 @@ defrouter_select(void) if (selected_dr == NULL) { if (installed_dr == NULL || TAILQ_NEXT(installed_dr, dr_entry) == NULL) - selected_dr = TAILQ_FIRST(&V_nd_defrouter); + dr = TAILQ_FIRST(&V_nd_defrouter); else - selected_dr = TAILQ_NEXT(installed_dr, dr_entry); - defrouter_ref(selected_dr); + dr = TAILQ_NEXT(installed_dr, dr_entry); + + /* Ensure we select a router for this FIB. */ + TAILQ_FOREACH_FROM(dr, &V_nd_defrouter, dr_entry) { + if (dr->ifp->if_fib == fibnum) { + selected_dr = dr; + defrouter_ref(selected_dr); + break; + } + } } else if (installed_dr != NULL) { IF_AFDATA_RLOCK(installed_dr->ifp); - if ((ln = nd6_lookup(&installed_dr->rtaddr, 0, installed_dr->ifp)) && + if ((ln = nd6_lookup(&installed_dr->rtaddr, 0, + installed_dr->ifp)) && ND6_IS_LLINFO_PROBREACH(ln) && + installed_dr->ifp->if_fib == fibnum && rtpref(selected_dr) <= rtpref(installed_dr)) { defrouter_rele(selected_dr); selected_dr = installed_dr; @@ -808,18 +831,30 @@ defrouter_select(void) ND6_RUNLOCK(); /* - * If the selected router is different than the installed one, - * remove the installed router and install the selected one. - * Note that the selected router is never NULL here. + * If we selected a router for this FIB and it's different + * than the installed one, remove the installed router and + * install the selected one in its place. */ if (installed_dr != selected_dr) { if (installed_dr != NULL) { defrouter_delreq(installed_dr); defrouter_rele(installed_dr); } - defrouter_addreq(selected_dr); + if (selected_dr != NULL) + defrouter_addreq(selected_dr); } - defrouter_rele(selected_dr); + if (selected_dr != NULL) + defrouter_rele(selected_dr); +} + +/* + * Maintain old KPI for default router selection. + * If unspecified, we can re-select routers for all FIBs. + */ +void +defrouter_select(void) +{ + defrouter_select_fib(RT_ALL_FIBS); } /* @@ -942,7 +977,7 @@ restart: V_nd6_list_genid++; ND6_WUNLOCK(); - defrouter_select(); + defrouter_select_fib(new->ifp->if_fib); return (n); } @@ -1731,7 +1766,7 @@ nd6_prefix_onlink_rtrequest(struct nd_pr struct rtentry *rt; struct sockaddr_in6 mask6; u_long rtflags; - int error, a_failure, fibnum; + int error, a_failure, fibnum, maxfib; /* * in6_ifinit() sets nd6_rtrequest to ifa_rtrequest for all ifaddrs. @@ -1742,8 +1777,15 @@ nd6_prefix_onlink_rtrequest(struct nd_pr mask6.sin6_addr = pr->ndpr_mask; rtflags = (ifa->ifa_flags & ~IFA_RTSELF) | RTF_UP; + if(V_rt_add_addr_allfibs) { + fibnum = 0; + maxfib = rt_numfibs; + } else { + fibnum = ifa->ifa_ifp->if_fib; + maxfib = fibnum + 1; + } a_failure = 0; - for (fibnum = 0; fibnum < rt_numfibs; fibnum++) { + for (; fibnum < maxfib; fibnum++) { rt = NULL; error = in6_rtrequest(RTM_ADD, @@ -1831,6 +1873,10 @@ nd6_prefix_onlink(struct nd_prefix *pr) if ((opr->ndpr_stateflags & NDPRF_ONLINK) == 0) continue; + if (!V_rt_add_addr_allfibs && + opr->ndpr_ifp->if_fib != pr->ndpr_ifp->if_fib) + continue; + if (opr->ndpr_plen == pr->ndpr_plen && in6_are_prefix_equal(&pr->ndpr_prefix.sin6_addr, &opr->ndpr_prefix.sin6_addr, pr->ndpr_plen)) { @@ -1891,7 +1937,7 @@ nd6_prefix_offlink(struct nd_prefix *pr) struct rtentry *rt; char ip6buf[INET6_ADDRSTRLEN]; uint64_t genid; - int fibnum, a_failure; + int fibnum, maxfib, a_failure; ND6_ONLINK_LOCK_ASSERT(); ND6_UNLOCK_ASSERT(); @@ -1909,8 +1955,16 @@ nd6_prefix_offlink(struct nd_prefix *pr) mask6.sin6_len = sizeof(sa6); bcopy(&pr->ndpr_mask, &mask6.sin6_addr, sizeof(struct in6_addr)); + if (V_rt_add_addr_allfibs) { + fibnum = 0; + maxfib = rt_numfibs; + } else { + fibnum = ifp->if_fib; + maxfib = fibnum + 1; + } + a_failure = 0; - for (fibnum = 0; fibnum < rt_numfibs; fibnum++) { + for (; fibnum < maxfib; fibnum++) { rt = NULL; error = in6_rtrequest(RTM_DELETE, (struct sockaddr *)&sa6, NULL, (struct sockaddr *)&mask6, 0, &rt, fibnum); Modified: stable/11/tests/sys/netinet/fibs_test.sh ============================================================================== --- stable/11/tests/sys/netinet/fibs_test.sh Mon Apr 17 19:10:12 2017 (r317066) +++ stable/11/tests/sys/netinet/fibs_test.sh Mon Apr 17 20:13:20 2017 (r317067) @@ -39,8 +39,7 @@ # arpresolve only checked the default route. # # Outline: -# Create two tap(4) interfaces -# Simulate a crossover cable between them by using net/socat +# Create two connected epair(4) interfaces # Use nping (from security/nmap) to send an ICMP echo request from one # interface to the other, spoofing the source IP. The source IP must be # spoofed, or else it will already have an entry in the arp table. @@ -51,7 +50,7 @@ arpresolve_checks_interface_fib_head() atf_set "descr" "arpresolve should check the interface fib, not the default fib, for routes" atf_set "require.user" "root" atf_set "require.config" "fibs" - atf_set "require.progs" "socat nping" + atf_set "require.progs" "nping" } arpresolve_checks_interface_fib_body() { @@ -74,19 +73,13 @@ arpresolve_checks_interface_fib_body() fi get_fibs 2 - # Configure TAP interfaces - setup_tap "$FIB0" ${ADDR0} ${MASK0} - TAP0=$TAP - setup_tap "$FIB1" ${ADDR1} ${MASK1} - TAP1=$TAP - - # Simulate a crossover cable - socat /dev/${TAP0} /dev/${TAP1} & - SOCAT_PID=$! - echo ${SOCAT_PID} >> "processes_to_kill" + # Configure epair interfaces + get_epair + setup_iface "$EPAIRA" "$FIB0" inet ${ADDR0} ${MASK0} + setup_iface "$EPAIRB" "$FIB1" inet ${ADDR1} ${MASK1} # Send an ICMP echo request with a spoofed source IP - setfib 2 nping -c 1 -e ${TAP0} -S ${SPOOF_ADDR} \ + setfib "$FIB0" nping -c 1 -e ${EPAIRA} -S ${SPOOF_ADDR} \ --source-mac ${SPOOF_MAC} --icmp --icmp-type "echo-request" \ --icmp-code 0 --icmp-id 0xdead --icmp-seq 1 --data 0xbeef \ ${ADDR1} @@ -94,17 +87,11 @@ arpresolve_checks_interface_fib_body() # characteristic error message dmesg | grep "llinfo.*${SPOOF_ADDR}" # Check that the ARP entry exists - atf_check -o match:"${SPOOF_ADDR}.*expires" setfib 3 arp ${SPOOF_ADDR} + atf_check -o match:"${SPOOF_ADDR}.*expires" setfib "$FIB1" arp ${SPOOF_ADDR} } arpresolve_checks_interface_fib_cleanup() { - if [ -f processes_to_kill ]; then - for pid in $(cat processes_to_kill); do - kill "${pid}" - done - rm -f processes_to_kill - fi - cleanup_tap + cleanup_ifaces } @@ -112,7 +99,7 @@ arpresolve_checks_interface_fib_cleanup( atf_test_case loopback_and_network_routes_on_nondefault_fib cleanup loopback_and_network_routes_on_nondefault_fib_head() { - atf_set "descr" "When creating and deleting loopback routes, use the interface's fib" + atf_set "descr" "When creating and deleting loopback IPv4 routes, use the interface's fib" atf_set "require.user" "root" atf_set "require.config" "fibs" } @@ -132,7 +119,7 @@ loopback_and_network_routes_on_nondefaul get_fibs 1 # Configure a TAP interface - setup_tap ${FIB0} ${ADDR} ${MASK} + setup_tap ${FIB0} inet ${ADDR} ${MASK} # Check whether the host route exists in only the correct FIB setfib ${FIB0} netstat -rn -f inet | grep -q "^${ADDR}.*UHS.*lo0" @@ -156,14 +143,71 @@ loopback_and_network_routes_on_nondefaul setfib 0 netstat -rn -f inet | \ grep -q "^${SUBNET}/${MASK}.*${TAPD}" if [ 0 -eq $? ]; then - setfib ${FIB0} netstat -rn -f inet + setfib 0 netstat -rn -f inet atf_fail "Network route appeared in the wrong FIB" fi } loopback_and_network_routes_on_nondefault_fib_cleanup() { - cleanup_tap + cleanup_ifaces +} + +atf_test_case loopback_and_network_routes_on_nondefault_fib_inet6 cleanup +loopback_and_network_routes_on_nondefault_fib_inet6_head() +{ + atf_set "descr" "When creating and deleting loopback IPv6 routes, use the interface's fib" + atf_set "require.user" "root" + atf_set "require.config" "fibs" +} + +loopback_and_network_routes_on_nondefault_fib_inet6_body() +{ + # Configure the TAP interface to use a nonrouteable RFC3849 + # address and a non-default fib + ADDR="2001:db8::2" + SUBNET="2001:db8::" + MASK="64" + + # Check system configuration + if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then + atf_skip "This test requires net.add_addr_allfibs=0" + fi + get_fibs 1 + + # Configure a TAP interface + setup_tap ${FIB0} inet6 ${ADDR} ${MASK} + + # Check whether the host route exists in only the correct FIB + setfib ${FIB0} netstat -rn -f inet6 | grep -q "^${ADDR}.*UHS.*lo0" + if [ 0 -ne $? ]; then + setfib ${FIB0} netstat -rn -f inet6 + atf_fail "Host route did not appear in the correct FIB" + fi + setfib 0 netstat -rn -f inet6 | grep -q "^${ADDR}.*UHS.*lo0" + if [ 0 -eq $? ]; then + setfib 0 netstat -rn -f inet6 + atf_fail "Host route appeared in the wrong FIB" + fi + + # Check whether the network route exists in only the correct FIB + setfib ${FIB0} netstat -rn -f inet6 | \ + grep -q "^${SUBNET}/${MASK}.*${TAPD}" + if [ 0 -ne $? ]; then + setfib ${FIB0} netstat -rn -f inet6 + atf_fail "Network route did not appear in the correct FIB" + fi + setfib 0 netstat -rn -f inet6 | \ + grep -q "^${SUBNET}/${MASK}.*${TAPD}" + if [ 0 -eq $? ]; then + setfib 0 netstat -rn -f inet6 + atf_fail "Network route appeared in the wrong FIB" + fi +} + +loopback_and_network_routes_on_nondefault_fib_inet6_cleanup() +{ + cleanup_ifaces } @@ -171,7 +215,7 @@ loopback_and_network_routes_on_nondefaul atf_test_case default_route_with_multiple_fibs_on_same_subnet cleanup default_route_with_multiple_fibs_on_same_subnet_head() { - atf_set "descr" "Multiple interfaces on the same subnet but with different fibs can both have default routes" + atf_set "descr" "Multiple interfaces on the same subnet but with different fibs can both have default IPv4 routes" atf_set "require.user" "root" atf_set "require.config" "fibs" } @@ -193,9 +237,9 @@ default_route_with_multiple_fibs_on_same get_fibs 2 # Configure TAP interfaces - setup_tap "$FIB0" ${ADDR0} ${MASK} + setup_tap "$FIB0" inet ${ADDR0} ${MASK} TAP0=$TAP - setup_tap "$FIB1" ${ADDR1} ${MASK} + setup_tap "$FIB1" inet ${ADDR1} ${MASK} TAP1=$TAP # Attempt to add default routes @@ -212,7 +256,54 @@ default_route_with_multiple_fibs_on_same default_route_with_multiple_fibs_on_same_subnet_cleanup() { - cleanup_tap + cleanup_ifaces +} + +atf_test_case default_route_with_multiple_fibs_on_same_subnet_inet6 cleanup +default_route_with_multiple_fibs_on_same_subnet_inet6_head() +{ + atf_set "descr" "Multiple interfaces on the same subnet but with different fibs can both have default IPv6 routes" + atf_set "require.user" "root" + atf_set "require.config" "fibs" +} + +default_route_with_multiple_fibs_on_same_subnet_inet6_body() +{ + # Configure the TAP interfaces to use nonrouteable RFC3849 + # addresses and non-default FIBs + ADDR0="2001:db8::2" + ADDR1="2001:db8::3" + GATEWAY="2001:db8::1" + SUBNET="2001:db8::" + MASK="64" + + # Check system configuration + if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then + atf_skip "This test requires net.add_addr_allfibs=0" + fi + get_fibs 2 + + # Configure TAP interfaces + setup_tap "$FIB0" inet6 ${ADDR0} ${MASK} + TAP0=$TAP + setup_tap "$FIB1" inet6 ${ADDR1} ${MASK} + TAP1=$TAP + + # Attempt to add default routes + setfib ${FIB0} route -6 add default ${GATEWAY} + setfib ${FIB1} route -6 add default ${GATEWAY} + + # Verify that the default route exists for both fibs, with their + # respective interfaces. + atf_check -o match:"^default.*${TAP0}$" \ + setfib ${FIB0} netstat -rn -f inet6 + atf_check -o match:"^default.*${TAP1}$" \ + setfib ${FIB1} netstat -rn -f inet6 +} + +default_route_with_multiple_fibs_on_same_subnet_inet6_cleanup() +{ + cleanup_ifaces } @@ -223,7 +314,7 @@ default_route_with_multiple_fibs_on_same atf_test_case same_ip_multiple_ifaces_fib0 cleanup same_ip_multiple_ifaces_fib0_head() { - atf_set "descr" "Can remove an IP alias from an interface when the same IP is also assigned to another interface." + atf_set "descr" "Can remove an IPv4 alias from an interface when the same IPv4 is also assigned to another interface." atf_set "require.user" "root" atf_set "require.config" "fibs" } @@ -237,22 +328,22 @@ same_ip_multiple_ifaces_fib0_body() # of net.add_addr_allfibs # Setup the interfaces, then remove one alias. It should not panic. - setup_tap 0 ${ADDR} ${MASK0} + setup_tap 0 inet ${ADDR} ${MASK0} TAP0=${TAP} - setup_tap 0 ${ADDR} ${MASK1} + setup_tap 0 inet ${ADDR} ${MASK1} TAP1=${TAP} ifconfig ${TAP1} -alias ${ADDR} # Do it again, in the opposite order. It should not panic. - setup_tap 0 ${ADDR} ${MASK0} + setup_tap 0 inet ${ADDR} ${MASK0} TAP0=${TAP} - setup_tap 0 ${ADDR} ${MASK1} + setup_tap 0 inet ${ADDR} ${MASK1} TAP1=${TAP} ifconfig ${TAP0} -alias ${ADDR} } same_ip_multiple_ifaces_fib0_cleanup() { - cleanup_tap + cleanup_ifaces } # Regression test for PR kern/189088 @@ -266,7 +357,7 @@ same_ip_multiple_ifaces_fib0_cleanup() atf_test_case same_ip_multiple_ifaces cleanup same_ip_multiple_ifaces_head() { - atf_set "descr" "Can remove an IP alias from an interface when the same IP is also assigned to another interface, on non-default FIBs." + atf_set "descr" "Can remove an IPv4 alias from an interface when the same address is also assigned to another interface, on non-default FIBs." atf_set "require.user" "root" atf_set "require.config" "fibs" } @@ -282,18 +373,18 @@ same_ip_multiple_ifaces_body() get_fibs 2 # Setup the interfaces, then remove one alias. It should not panic. - setup_tap ${FIB0} ${ADDR} ${MASK0} + setup_tap ${FIB0} inet ${ADDR} ${MASK0} TAP0=${TAP} - setup_tap ${FIB1} ${ADDR} ${MASK1} + setup_tap ${FIB1} inet ${ADDR} ${MASK1} TAP1=${TAP} ifconfig ${TAP1} -alias ${ADDR} atf_check -o not-match:"^${ADDR}[[:space:]]" \ setfib ${FIB1} netstat -rn -f inet # Do it again, in the opposite order. It should not panic. - setup_tap ${FIB0} ${ADDR} ${MASK0} + setup_tap ${FIB0} inet ${ADDR} ${MASK0} TAP0=${TAP} - setup_tap ${FIB1} ${ADDR} ${MASK1} + setup_tap ${FIB1} inet ${ADDR} ${MASK1} TAP1=${TAP} ifconfig ${TAP0} -alias ${ADDR} atf_check -o not-match:"^${ADDR}[[:space:]]" \ @@ -303,16 +394,145 @@ same_ip_multiple_ifaces_cleanup() { # Due to PR kern/189088, we must destroy the interfaces in LIFO order # in order for the routes to be correctly cleaned up. - for TAPD in `tail -r "tap_devices_to_cleanup"`; do + for TAPD in `tail -r "ifaces_to_cleanup"`; do + echo ifconfig ${TAPD} destroy ifconfig ${TAPD} destroy done } +atf_test_case same_ip_multiple_ifaces_inet6 cleanup +same_ip_multiple_ifaces_inet6_head() +{ + atf_set "descr" "Can remove an IPv6 alias from an interface when the same address is also assigned to another interface, on non-default FIBs." + atf_set "require.user" "root" + atf_set "require.config" "fibs" +} +same_ip_multiple_ifaces_inet6_body() +{ + ADDR="2001:db8::2" + MASK0="64" + MASK1="128" + + # Unlike most of the tests in this file, this is applicable regardless + # of net.add_addr_allfibs + get_fibs 2 + + # Setup the interfaces, then remove one alias. It should not panic. + setup_tap ${FIB0} inet6 ${ADDR} ${MASK0} + TAP0=${TAP} + setup_tap ${FIB1} inet6 ${ADDR} ${MASK1} + TAP1=${TAP} + atf_check -s exit:0 ifconfig ${TAP1} inet6 ${ADDR} -alias + atf_check -o not-match:"^${ADDR}[[:space:]]" \ + setfib ${FIB1} netstat -rn -f inet6 + ifconfig ${TAP1} destroy + ifconfig ${TAP0} destroy + + # Do it again, in the opposite order. It should not panic. + setup_tap ${FIB0} inet6 ${ADDR} ${MASK0} + TAP0=${TAP} + setup_tap ${FIB1} inet6 ${ADDR} ${MASK1} + TAP1=${TAP} + atf_check -s exit:0 ifconfig ${TAP0} inet6 ${ADDR} -alias + atf_check -o not-match:"^${ADDR}[[:space:]]" \ + setfib ${FIB0} netstat -rn -f inet6 +} +same_ip_multiple_ifaces_inet6_cleanup() +{ + cleanup_ifaces +} + +atf_test_case slaac_on_nondefault_fib6 cleanup +slaac_on_nondefault_fib6_head() +{ + atf_set "descr" "SLAAC correctly installs routes on non-default FIBs" + atf_set "require.user" "root" + atf_set "require.config" "fibs" "allow_sysctl_side_effects" +} +slaac_on_nondefault_fib6_body() +{ + # Configure the epair interfaces to use nonrouteable RFC3849 + # addresses and non-default FIBs + PREFIX="2001:db8:$(printf "%x" `jot -r 1 0 65535`):$(printf "%x" `jot -r 1 0 65535`)" + ADDR="$PREFIX::2" + GATEWAY="$PREFIX::1" + SUBNET="$PREFIX:" + MASK="64" + + # Check system configuration + if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then + atf_skip "This test requires net.add_addr_allfibs=0" + fi + get_fibs 2 + + sysctl -n "net.inet6.ip6.rfc6204w3" >> "rfc6204w3.state" + sysctl -n "net.inet6.ip6.forwarding" >> "forwarding.state" + # Enable forwarding so the kernel will send RAs + sysctl net.inet6.ip6.forwarding=1 + # Enable RFC6204W3 mode so the kernel will enable default router + # selection while also forwarding packets + sysctl net.inet6.ip6.rfc6204w3=1 + + # Configure epair interfaces + get_epair + setup_iface "$EPAIRA" "$FIB0" inet6 ${ADDR} ${MASK} + echo setfib $FIB1 ifconfig "$EPAIRB" inet6 -ifdisabled accept_rtadv fib $FIB1 up + setfib $FIB1 ifconfig "$EPAIRB" inet6 -ifdisabled accept_rtadv fib $FIB1 up + rtadvd -p rtadvd.pid -C rtadvd.sock -c /dev/null "$EPAIRA" + rtsol "$EPAIRB" + + # Check SLAAC address + atf_check -o match:"inet6 ${SUBNET}.*prefixlen ${MASK}.*autoconf" \ + ifconfig "$EPAIRB" + # Check local route + atf_check -o match:"${SUBNET}.*\.*lo0" \ + netstat -rnf inet6 -F $FIB1 + # Check subnet route + atf_check -o match:"${SUBNET}:/${MASK}.*\.*$EPAIRB" \ + netstat -rnf inet6 -F $FIB1 + # Check default route + atf_check -o match:"default.*\.*$EPAIRB" \ + netstat -rnf inet6 -F $FIB1 + + # Check that none of the above routes appeared on other routes + for fib in $( seq 0 $(($(sysctl -n net.fibs) - 1))); do + if [ "$fib" = "$FIB1" -o "$fib" = "$FIB0" ]; then + continue + fi + atf_check -o not-match:"${SUBNET}.*\.*lo0" \ + netstat -rnf inet6 -F $fib + atf_check -o not-match:"${SUBNET}:/${MASK}.*\.*$EPAIRB" \ + netstat -rnf inet6 -F $fib + atf_check -o not-match:"default.*\.*$EPAIRB" \ + netstat -rnf inet6 -F $fib + done +} +slaac_on_nondefault_fib6_cleanup() +{ + if [ -f "rtadvd.pid" ]; then + # rtadvd can take a long time to shutdown. Use SIGKILL to kill + # it right away. The downside to using SIGKILL is that it + # won't send final RAs to all interfaces, but we don't care + # because we're about to destroy its interface anyway. + pkill -kill -F rtadvd.pid + rm -f rtadvd.pid + fi + cleanup_ifaces + if [ -f "forwarding.state" ] ; then + sysctl "net.inet6.ip6.forwarding"=`cat "forwarding.state"` + rm "forwarding.state" + fi + if [ -f "rfc6204w3.state" ] ; then + sysctl "net.inet6.ip6.rfc6204w3"=`cat "rfc6204w3.state"` + rm "rfc6204w3.state" + fi +} + # Regression test for kern/187550 atf_test_case subnet_route_with_multiple_fibs_on_same_subnet cleanup subnet_route_with_multiple_fibs_on_same_subnet_head() { - atf_set "descr" "Multiple FIBs can have subnet routes for the same subnet" + atf_set "descr" "Multiple FIBs can have IPv4 subnet routes for the same subnet" atf_set "require.user" "root" atf_set "require.config" "fibs" } @@ -333,8 +553,8 @@ subnet_route_with_multiple_fibs_on_same_ get_fibs 2 # Configure TAP interfaces - setup_tap "$FIB0" ${ADDR0} ${MASK} - setup_tap "$FIB1" ${ADDR1} ${MASK} + setup_tap "$FIB0" inet ${ADDR0} ${MASK} + setup_tap "$FIB1" inet ${ADDR1} ${MASK} # Check that a subnet route exists on both fibs atf_check -o ignore setfib "$FIB0" route get $ADDR1 @@ -343,7 +563,44 @@ subnet_route_with_multiple_fibs_on_same_ subnet_route_with_multiple_fibs_on_same_subnet_cleanup() { - cleanup_tap + cleanup_ifaces +} + +atf_test_case subnet_route_with_multiple_fibs_on_same_subnet_inet6 cleanup +subnet_route_with_multiple_fibs_on_same_subnet_inet6_head() *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Tue Apr 18 09:17:21 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6D30CD4390A; Tue, 18 Apr 2017 09:17:21 +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 mx1.freebsd.org (Postfix) with ESMTPS id 2F226E0; Tue, 18 Apr 2017 09:17:21 +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 v3I9HKvn007031; Tue, 18 Apr 2017 09:17:20 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3I9HKNF007030; Tue, 18 Apr 2017 09:17:20 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704180917.v3I9HKNF007030@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Tue, 18 Apr 2017 09:17:20 +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: r317081 - stable/11/sys/net X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Apr 2017 09:17:21 -0000 Author: ae Date: Tue Apr 18 09:17:20 2017 New Revision: 317081 URL: https://svnweb.freebsd.org/changeset/base/317081 Log: MFC r316716: Inherit IPv6 checksum offloading flags to vlan interfaces. if_vlan(4) interfaces inherit IPv4 checksum offloading flags from the parent when VLAN_HWCSUM and VLAN_HWTAGGING flags are present on the parent interface. Do the same for IPv6 checksum offloading flags. Reported by: Harry Schmalzbauer Reviewed by: np, gnn Differential Revision: https://reviews.freebsd.org/D10356 Modified: stable/11/sys/net/if_vlan.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/net/if_vlan.c ============================================================================== --- stable/11/sys/net/if_vlan.c Tue Apr 18 08:04:15 2017 (r317080) +++ stable/11/sys/net/if_vlan.c Tue Apr 18 09:17:20 2017 (r317081) @@ -1547,13 +1547,16 @@ vlan_capabilities(struct ifvlan *ifv) * offloading requires hardware VLAN tagging. */ if (p->if_capabilities & IFCAP_VLAN_HWCSUM) - ifp->if_capabilities = p->if_capabilities & IFCAP_HWCSUM; + ifp->if_capabilities = + p->if_capabilities & (IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6); if (p->if_capenable & IFCAP_VLAN_HWCSUM && p->if_capenable & IFCAP_VLAN_HWTAGGING) { - ifp->if_capenable = p->if_capenable & IFCAP_HWCSUM; + ifp->if_capenable = + p->if_capenable & (IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6); ifp->if_hwassist = p->if_hwassist & (CSUM_IP | CSUM_TCP | - CSUM_UDP | CSUM_SCTP); + CSUM_UDP | CSUM_SCTP | CSUM_TCP_IPV6 | CSUM_UDP_IPV6 | + CSUM_SCTP_IPV6); } else { ifp->if_capenable = 0; ifp->if_hwassist = 0; From owner-svn-src-stable@freebsd.org Tue Apr 18 09:22:07 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B6EC7D43C25; Tue, 18 Apr 2017 09:22:07 +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 mx1.freebsd.org (Postfix) with ESMTPS id 86B0881D; Tue, 18 Apr 2017 09:22:07 +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 v3I9M6JT010766; Tue, 18 Apr 2017 09:22:06 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3I9M6sh010765; Tue, 18 Apr 2017 09:22:06 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704180922.v3I9M6sh010765@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Tue, 18 Apr 2017 09:22:06 +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: r317082 - stable/10/sys/net X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Apr 2017 09:22:07 -0000 Author: ae Date: Tue Apr 18 09:22:06 2017 New Revision: 317082 URL: https://svnweb.freebsd.org/changeset/base/317082 Log: MFC r316716: Inherit IPv6 checksum offloading flags to vlan interfaces. if_vlan(4) interfaces inherit IPv4 checksum offloading flags from the parent when VLAN_HWCSUM and VLAN_HWTAGGING flags are present on the parent interface. Do the same for IPv6 checksum offloading flags. Reported by: Harry Schmalzbauer Reviewed by: np, gnn Differential Revision: https://reviews.freebsd.org/D10356 Modified: stable/10/sys/net/if_vlan.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/net/if_vlan.c ============================================================================== --- stable/10/sys/net/if_vlan.c Tue Apr 18 09:17:20 2017 (r317081) +++ stable/10/sys/net/if_vlan.c Tue Apr 18 09:22:06 2017 (r317082) @@ -1494,13 +1494,16 @@ vlan_capabilities(struct ifvlan *ifv) * offloading requires hardware VLAN tagging. */ if (p->if_capabilities & IFCAP_VLAN_HWCSUM) - ifp->if_capabilities = p->if_capabilities & IFCAP_HWCSUM; + ifp->if_capabilities = + p->if_capabilities & (IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6); if (p->if_capenable & IFCAP_VLAN_HWCSUM && p->if_capenable & IFCAP_VLAN_HWTAGGING) { - ifp->if_capenable = p->if_capenable & IFCAP_HWCSUM; + ifp->if_capenable = + p->if_capenable & (IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6); ifp->if_hwassist = p->if_hwassist & (CSUM_IP | CSUM_TCP | - CSUM_UDP | CSUM_SCTP | CSUM_FRAGMENT); + CSUM_UDP | CSUM_SCTP | CSUM_TCP_IPV6 | CSUM_UDP_IPV6 | + CSUM_SCTP_IPV6); } else { ifp->if_capenable = 0; ifp->if_hwassist = 0; From owner-svn-src-stable@freebsd.org Tue Apr 18 09:27:28 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 69DE5D43D58; Tue, 18 Apr 2017 09:27:28 +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 mx1.freebsd.org (Postfix) with ESMTPS id 21034A60; Tue, 18 Apr 2017 09:27:28 +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 v3I9RRHS010998; Tue, 18 Apr 2017 09:27:27 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3I9RRpK010996; Tue, 18 Apr 2017 09:27:27 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704180927.v3I9RRpK010996@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Tue, 18 Apr 2017 09:27:27 +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: r317083 - stable/11/sys/netinet X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Apr 2017 09:27:28 -0000 Author: ae Date: Tue Apr 18 09:27:26 2017 New Revision: 317083 URL: https://svnweb.freebsd.org/changeset/base/317083 Log: MFC r316715: Make sysctl identifiers for direct netisr queue unique. Introduce IPCTL_INTRDQMAXLEN and IPCTL_INTRDQDROPS macros for this purpose. Reviewed by: gnn Differential Revision: https://reviews.freebsd.org/D10358 Modified: stable/11/sys/netinet/in.h stable/11/sys/netinet/ip_input.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/in.h ============================================================================== --- stable/11/sys/netinet/in.h Tue Apr 18 09:22:06 2017 (r317082) +++ stable/11/sys/netinet/in.h Tue Apr 18 09:27:26 2017 (r317083) @@ -631,6 +631,8 @@ int getsourcefilter(int, uint32_t, struc #define IPCTL_FASTFORWARDING 14 /* use fast IP forwarding code */ /* 15, unused, was: IPCTL_KEEPFAITH */ #define IPCTL_GIF_TTL 16 /* default TTL for gif encap packet */ +#define IPCTL_INTRDQMAXLEN 17 /* max length of direct netisr queue */ +#define IPCTL_INTRDQDROPS 18 /* number of direct netisr q drops */ #endif /* __BSD_VISIBLE */ Modified: stable/11/sys/netinet/ip_input.c ============================================================================== --- stable/11/sys/netinet/ip_input.c Tue Apr 18 09:22:06 2017 (r317082) +++ stable/11/sys/netinet/ip_input.c Tue Apr 18 09:27:26 2017 (r317083) @@ -266,9 +266,9 @@ sysctl_netinet_intr_direct_queue_maxlen( return (EINVAL); return (netisr_setqlimit(&ip_direct_nh, qlimit)); } -SYSCTL_PROC(_net_inet_ip, IPCTL_INTRQMAXLEN, intr_direct_queue_maxlen, - CTLTYPE_INT|CTLFLAG_RW, 0, 0, sysctl_netinet_intr_direct_queue_maxlen, "I", - "Maximum size of the IP direct input queue"); +SYSCTL_PROC(_net_inet_ip, IPCTL_INTRDQMAXLEN, intr_direct_queue_maxlen, + CTLTYPE_INT|CTLFLAG_RW, 0, 0, sysctl_netinet_intr_direct_queue_maxlen, + "I", "Maximum size of the IP direct input queue"); static int sysctl_netinet_intr_direct_queue_drops(SYSCTL_HANDLER_ARGS) @@ -287,7 +287,7 @@ sysctl_netinet_intr_direct_queue_drops(S return (0); } -SYSCTL_PROC(_net_inet_ip, IPCTL_INTRQDROPS, intr_direct_queue_drops, +SYSCTL_PROC(_net_inet_ip, IPCTL_INTRDQDROPS, intr_direct_queue_drops, CTLTYPE_INT|CTLFLAG_RD, 0, 0, sysctl_netinet_intr_direct_queue_drops, "I", "Number of packets dropped from the IP direct input queue"); #endif /* RSS */ From owner-svn-src-stable@freebsd.org Tue Apr 18 16:17:39 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 50397D43340; Tue, 18 Apr 2017 16:17:39 +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 mx1.freebsd.org (Postfix) with ESMTPS id 1FD83238; Tue, 18 Apr 2017 16:17:39 +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 v3IGHcHA078812; Tue, 18 Apr 2017 16:17:38 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3IGHcpl078811; Tue, 18 Apr 2017 16:17:38 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201704181617.v3IGHcpl078811@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Tue, 18 Apr 2017 16:17:38 +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: r317093 - stable/10/tests/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Apr 2017 16:17:39 -0000 Author: asomers Date: Tue Apr 18 16:17:38 2017 New Revision: 317093 URL: https://svnweb.freebsd.org/changeset/base/317093 Log: MFC r285117 Make cleanup routines idempotent cleanup routines can be executed at any point during the execution of the body, including even before the body has done any real work. In those cases, cleanup routines should be careful to not raise spurious errors so as to not "override" the actual result of the test case. This is just general good coding style but is not a problem in practice for these specific tests. (The way I discovered the issue, though, was due to a regression I introduced in Kyua itself while refactoring some internals.) MFC after: 1 week Modified: stable/10/tests/sys/netinet/fibs_test.sh Directory Properties: stable/10/ (props changed) Modified: stable/10/tests/sys/netinet/fibs_test.sh ============================================================================== --- stable/10/tests/sys/netinet/fibs_test.sh Tue Apr 18 15:43:47 2017 (r317092) +++ stable/10/tests/sys/netinet/fibs_test.sh Tue Apr 18 16:17:38 2017 (r317093) @@ -98,9 +98,12 @@ arpresolve_checks_interface_fib_body() } arpresolve_checks_interface_fib_cleanup() { - for PID in `cat "processes_to_kill"`; do - kill $PID - done + if [ -f processes_to_kill ]; then + for pid in $(cat processes_to_kill); do + kill "${pid}" + done + rm -f processes_to_kill + fi cleanup_tap } @@ -477,8 +480,10 @@ setup_tap() cleanup_tap() { - for TAPD in `cat "tap_devices_to_cleanup"`; do - ifconfig ${TAPD} destroy - done - rm "tap_devices_to_cleanup" + if [ -f tap_devices_to_cleanup ]; then + for tap_device in $(cat tap_devices_to_cleanup); do + ifconfig "${tap_device}" destroy + done + rm -f tap_devices_to_cleanup + fi } From owner-svn-src-stable@freebsd.org Wed Apr 19 02:48:39 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7FBD4D450CB; Wed, 19 Apr 2017 02:48:39 +0000 (UTC) (envelope-from sephe@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 mx1.freebsd.org (Postfix) with ESMTPS id 4120C6EC; Wed, 19 Apr 2017 02:48:39 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J2mctf038557; Wed, 19 Apr 2017 02:48:38 GMT (envelope-from sephe@FreeBSD.org) Received: (from sephe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J2mcvV038556; Wed, 19 Apr 2017 02:48:38 GMT (envelope-from sephe@FreeBSD.org) Message-Id: <201704190248.v3J2mcvV038556@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sephe set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau Date: Wed, 19 Apr 2017 02:48: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: r317108 - stable/11/sys/dev/hyperv/vmbus X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 02:48:39 -0000 Author: sephe Date: Wed Apr 19 02:48:38 2017 New Revision: 317108 URL: https://svnweb.freebsd.org/changeset/base/317108 Log: MFC 317107 hyperv: Use kmem_malloc for hypercall memory due to NX bit change. Reported by: dexuan@ Sponsored by: Microsoft Modified: stable/11/sys/dev/hyperv/vmbus/hyperv.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/hyperv/vmbus/hyperv.c ============================================================================== --- stable/11/sys/dev/hyperv/vmbus/hyperv.c Wed Apr 19 02:39:48 2017 (r317107) +++ stable/11/sys/dev/hyperv/vmbus/hyperv.c Wed Apr 19 02:48:38 2017 (r317108) @@ -34,9 +34,15 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include +#include +#include +#include +#include + #include #include #include @@ -64,7 +70,7 @@ __FBSDID("$FreeBSD$"); struct hypercall_ctx { void *hc_addr; - struct hyperv_dma hc_dma; + vm_paddr_t hc_paddr; }; static u_int hyperv_get_timecount(struct timecounter *); @@ -255,8 +261,8 @@ SYSINIT(hyperv_initialize, SI_SUB_HYPERV static void hypercall_memfree(void) { - hyperv_dmamem_free(&hypercall_context.hc_dma, - hypercall_context.hc_addr); + kmem_free(kernel_arena, (vm_offset_t)hypercall_context.hc_addr, + PAGE_SIZE); hypercall_context.hc_addr = NULL; } @@ -268,14 +274,15 @@ hypercall_create(void *arg __unused) if (vm_guest != VM_GUEST_HV) return; - hypercall_context.hc_addr = hyperv_dmamem_alloc(NULL, PAGE_SIZE, 0, - PAGE_SIZE, &hypercall_context.hc_dma, BUS_DMA_WAITOK); - if (hypercall_context.hc_addr == NULL) { - printf("hyperv: Hypercall page allocation failed\n"); - /* Can't perform any Hyper-V specific actions */ - vm_guest = VM_GUEST_VM; - return; - } + /* + * NOTE: + * - busdma(9), i.e. hyperv_dmamem APIs, can _not_ be used due to + * the NX bit. + * - Assume kmem_malloc() returns properly aligned memory. + */ + hypercall_context.hc_addr = (void *)kmem_malloc(kernel_arena, PAGE_SIZE, + M_WAITOK); + hypercall_context.hc_paddr = vtophys(hypercall_context.hc_addr); /* Get the 'reserved' bits, which requires preservation. */ hc_orig = rdmsr(MSR_HV_HYPERCALL); @@ -285,7 +292,7 @@ hypercall_create(void *arg __unused) * * NOTE: 'reserved' bits MUST be preserved. */ - hc = ((hypercall_context.hc_dma.hv_paddr >> PAGE_SHIFT) << + hc = ((hypercall_context.hc_paddr >> PAGE_SHIFT) << MSR_HV_HYPERCALL_PGSHIFT) | (hc_orig & MSR_HV_HYPERCALL_RSVD_MASK) | MSR_HV_HYPERCALL_ENABLE; From owner-svn-src-stable@freebsd.org Wed Apr 19 02:52:56 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BB804D45294; Wed, 19 Apr 2017 02:52:56 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 95923B5F; Wed, 19 Apr 2017 02:52:56 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J2qtso042749; Wed, 19 Apr 2017 02:52:55 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J2qtuk042745; Wed, 19 Apr 2017 02:52:55 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190252.v3J2qtuk042745@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 02:52:55 +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: r317109 - stable/11/sys/dev/qlxgbe X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 02:52:56 -0000 Author: davidcs Date: Wed Apr 19 02:52:55 2017 New Revision: 317109 URL: https://svnweb.freebsd.org/changeset/base/317109 Log: MFC r316309 Add support for optional Soft LRO Modified: stable/11/sys/dev/qlxgbe/ql_hw.c stable/11/sys/dev/qlxgbe/ql_hw.h stable/11/sys/dev/qlxgbe/ql_isr.c stable/11/sys/dev/qlxgbe/ql_os.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/qlxgbe/ql_hw.c ============================================================================== --- stable/11/sys/dev/qlxgbe/ql_hw.c Wed Apr 19 02:48:38 2017 (r317108) +++ stable/11/sys/dev/qlxgbe/ql_hw.c Wed Apr 19 02:52:55 2017 (r317109) @@ -440,6 +440,17 @@ ql_hw_add_sysctls(qla_host_t *ha) OID_AUTO, "enable_9kb", CTLFLAG_RW, &ha->hw.enable_9kb, ha->hw.enable_9kb, "Enable 9Kbyte Buffers when MTU = 9000"); + ha->hw.enable_hw_lro = 1; + + SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "enable_hw_lro", CTLFLAG_RW, &ha->hw.enable_hw_lro, + ha->hw.enable_hw_lro, "Enable Hardware LRO; Default is true \n" + "\t 1 : Hardware LRO if LRO is enabled\n" + "\t 0 : Software LRO if LRO is enabled\n" + "\t Any change requires ifconfig down/up to take effect\n" + "\t Note that LRO may be turned off/on via ifconfig\n"); + ha->hw.mdump_active = 0; SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev), SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), @@ -2255,6 +2266,83 @@ qla_config_rss_ind_table(qla_host_t *ha) return (0); } +static int +qla_config_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + + bzero(lro, sizeof(struct lro_ctrl)); + +#if (__FreeBSD_version >= 1100101) + if (tcp_lro_init_args(lro, ha->ifp, 0, NUM_RX_DESCRIPTORS)) { + device_printf(ha->pci_dev, + "%s: tcp_lro_init_args [%d] failed\n", + __func__, i); + return (-1); + } +#else + if (tcp_lro_init(lro)) { + device_printf(ha->pci_dev, + "%s: tcp_lro_init [%d] failed\n", + __func__, i); + return (-1); + } +#endif /* #if (__FreeBSD_version >= 1100101) */ + + lro->ifp = ha->ifp; + } + + QL_DPRINT2(ha, (ha->pci_dev, "%s: LRO initialized\n", __func__)); + return (0); +} + +static void +qla_drain_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + +#if (__FreeBSD_version >= 1100101) + tcp_lro_flush_all(lro); +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } +#endif /* #if (__FreeBSD_version >= 1100101) */ + } + + return; +} + +static void +qla_free_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + tcp_lro_free(lro); + } + + return; +} + + /* * Name: ql_del_hw_if * Function: Destroys the hardware specific entities corresponding to an @@ -2287,6 +2375,11 @@ ql_del_hw_if(qla_host_t *ha) ha->hw.flags.init_intr_cnxt = 0; } + if (ha->hw.enable_soft_lro) { + qla_drain_soft_lro(ha); + qla_free_soft_lro(ha); + } + return; } @@ -2309,7 +2402,6 @@ qla_confirm_9kb_enable(qla_host_t *ha) return; } - /* * Name: ql_init_hw_if * Function: Creates the hardware specific entities corresponding to an @@ -2416,8 +2508,19 @@ ql_init_hw_if(qla_host_t *ha) if (qla_link_event_req(ha, ha->hw.rcv_cntxt_id)) return (-1); - if (qla_config_fw_lro(ha, ha->hw.rcv_cntxt_id)) - return (-1); + if (ha->ifp->if_capenable & IFCAP_LRO) { + if (ha->hw.enable_hw_lro) { + ha->hw.enable_soft_lro = 0; + + if (qla_config_fw_lro(ha, ha->hw.rcv_cntxt_id)) + return (-1); + } else { + ha->hw.enable_soft_lro = 1; + + if (qla_config_soft_lro(ha)) + return (-1); + } + } if (qla_init_nic_func(ha)) return (-1); Modified: stable/11/sys/dev/qlxgbe/ql_hw.h ============================================================================== --- stable/11/sys/dev/qlxgbe/ql_hw.h Wed Apr 19 02:48:38 2017 (r317108) +++ stable/11/sys/dev/qlxgbe/ql_hw.h Wed Apr 19 02:52:55 2017 (r317109) @@ -1674,6 +1674,8 @@ typedef struct _qla_hw { uint32_t max_tx_segs; uint32_t min_lro_pkt_size; + uint32_t enable_hw_lro; + uint32_t enable_soft_lro; uint32_t enable_9kb; uint32_t user_pri_nic; Modified: stable/11/sys/dev/qlxgbe/ql_isr.c ============================================================================== --- stable/11/sys/dev/qlxgbe/ql_isr.c Wed Apr 19 02:48:38 2017 (r317108) +++ stable/11/sys/dev/qlxgbe/ql_isr.c Wed Apr 19 02:52:55 2017 (r317109) @@ -68,6 +68,9 @@ qla_rx_intr(qla_host_t *ha, qla_sgl_rcv_ uint32_t i, rem_len = 0; uint32_t r_idx = 0; qla_rx_ring_t *rx_ring; + struct lro_ctrl *lro; + + lro = &ha->hw.sds[sds_idx].lro; if (ha->hw.num_rds_rings > 1) r_idx = sds_idx; @@ -166,7 +169,22 @@ qla_rx_intr(qla_host_t *ha, qla_sgl_rcv_ M_HASHTYPE_SET(mpf, M_HASHTYPE_NONE); #endif /* #if __FreeBSD_version >= 1100000 */ - (*ifp->if_input)(ifp, mpf); + if (ha->hw.enable_soft_lro) { + +#if (__FreeBSD_version >= 1100101) + + tcp_lro_queue_mbuf(lro, mpf); + +#else + if (tcp_lro_rx(lro, mpf, 0)) + (*ifp->if_input)(ifp, mpf); + +#endif /* #if (__FreeBSD_version >= 1100101) */ + + + } else { + (*ifp->if_input)(ifp, mpf); + } if (sdsp->rx_free > ha->std_replenish) qla_replenish_normal_rx(ha, sdsp, r_idx); @@ -707,6 +725,28 @@ ql_rcv_isr(qla_host_t *ha, uint32_t sds_ } } + if (ha->hw.enable_soft_lro) { + struct lro_ctrl *lro; + + lro = &ha->hw.sds[sds_idx].lro; + +#if (__FreeBSD_version >= 1100101) + + tcp_lro_flush_all(lro); + +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } + +#endif /* #if (__FreeBSD_version >= 1100101) */ + + } + if (ha->flags.stop_rcv) goto ql_rcv_isr_exit; Modified: stable/11/sys/dev/qlxgbe/ql_os.c ============================================================================== --- stable/11/sys/dev/qlxgbe/ql_os.c Wed Apr 19 02:48:38 2017 (r317108) +++ stable/11/sys/dev/qlxgbe/ql_os.c Wed Apr 19 02:52:55 2017 (r317109) @@ -1072,6 +1072,8 @@ qla_ioctl(struct ifnet *ifp, u_long cmd, ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (mask & IFCAP_VLAN_HWTSO) ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + if (mask & IFCAP_LRO) + ifp->if_capenable ^= IFCAP_LRO; if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) qla_init(ha); @@ -1497,7 +1499,6 @@ qla_qflush(struct ifnet *ifp) return; } - static void qla_stop(qla_host_t *ha) { From owner-svn-src-stable@freebsd.org Wed Apr 19 02:55:01 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1C05BD45323; Wed, 19 Apr 2017 02:55:01 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id DF606CCA; Wed, 19 Apr 2017 02:55:00 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J2t0YD042892; Wed, 19 Apr 2017 02:55:00 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J2t0iK042885; Wed, 19 Apr 2017 02:55:00 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190255.v3J2t0iK042885@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 02:55: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: r317110 - stable/11/share/man/man4 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 02:55:01 -0000 Author: davidcs Date: Wed Apr 19 02:54:59 2017 New Revision: 317110 URL: https://svnweb.freebsd.org/changeset/base/317110 Log: MFC r316310 Update man page for commit r316309 "Add support for optional Soft LRO". The driver provides the ability to select either HW or Software LRO, when LRO is enabled (default HW LRO). Modified: stable/11/share/man/man4/qlxgbe.4 Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man4/qlxgbe.4 ============================================================================== --- stable/11/share/man/man4/qlxgbe.4 Wed Apr 19 02:52:55 2017 (r317109) +++ stable/11/share/man/man4/qlxgbe.4 Wed Apr 19 02:54:59 2017 (r317110) @@ -52,7 +52,8 @@ driver supports IPv4 checksum offload, TCP and UDP checksum offload for both IPv4 and IPv6, Large Segment Offload for both IPv4 and IPv6, Jumbo frames, VLAN Tag, and -Receive Side scaling. +Receive Side scaling, ability to select either HW or Software LRO, +when LRO is enabled (default HW LRO). For further hardware information, see .Pa http://www.qlogic.com/ . .Sh HARDWARE From owner-svn-src-stable@freebsd.org Wed Apr 19 02:58:15 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D762ED453C2; Wed, 19 Apr 2017 02:58:15 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id B4382E27; Wed, 19 Apr 2017 02:58:15 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J2wEIk043077; Wed, 19 Apr 2017 02:58:14 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J2wEDC043073; Wed, 19 Apr 2017 02:58:14 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190258.v3J2wEDC043073@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 02:58:14 +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: r317111 - stable/10/sys/dev/qlxgbe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 02:58:15 -0000 Author: davidcs Date: Wed Apr 19 02:58:14 2017 New Revision: 317111 URL: https://svnweb.freebsd.org/changeset/base/317111 Log: MFC r316309 Add support for optional Soft LRO Modified: stable/10/sys/dev/qlxgbe/ql_hw.c stable/10/sys/dev/qlxgbe/ql_hw.h stable/10/sys/dev/qlxgbe/ql_isr.c stable/10/sys/dev/qlxgbe/ql_os.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/qlxgbe/ql_hw.c ============================================================================== --- stable/10/sys/dev/qlxgbe/ql_hw.c Wed Apr 19 02:54:59 2017 (r317110) +++ stable/10/sys/dev/qlxgbe/ql_hw.c Wed Apr 19 02:58:14 2017 (r317111) @@ -440,6 +440,17 @@ ql_hw_add_sysctls(qla_host_t *ha) OID_AUTO, "enable_9kb", CTLFLAG_RW, &ha->hw.enable_9kb, ha->hw.enable_9kb, "Enable 9Kbyte Buffers when MTU = 9000"); + ha->hw.enable_hw_lro = 1; + + SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "enable_hw_lro", CTLFLAG_RW, &ha->hw.enable_hw_lro, + ha->hw.enable_hw_lro, "Enable Hardware LRO; Default is true \n" + "\t 1 : Hardware LRO if LRO is enabled\n" + "\t 0 : Software LRO if LRO is enabled\n" + "\t Any change requires ifconfig down/up to take effect\n" + "\t Note that LRO may be turned off/on via ifconfig\n"); + ha->hw.mdump_active = 0; SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev), SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), @@ -2255,6 +2266,83 @@ qla_config_rss_ind_table(qla_host_t *ha) return (0); } +static int +qla_config_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + + bzero(lro, sizeof(struct lro_ctrl)); + +#if (__FreeBSD_version >= 1100101) + if (tcp_lro_init_args(lro, ha->ifp, 0, NUM_RX_DESCRIPTORS)) { + device_printf(ha->pci_dev, + "%s: tcp_lro_init_args [%d] failed\n", + __func__, i); + return (-1); + } +#else + if (tcp_lro_init(lro)) { + device_printf(ha->pci_dev, + "%s: tcp_lro_init [%d] failed\n", + __func__, i); + return (-1); + } +#endif /* #if (__FreeBSD_version >= 1100101) */ + + lro->ifp = ha->ifp; + } + + QL_DPRINT2(ha, (ha->pci_dev, "%s: LRO initialized\n", __func__)); + return (0); +} + +static void +qla_drain_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + +#if (__FreeBSD_version >= 1100101) + tcp_lro_flush_all(lro); +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } +#endif /* #if (__FreeBSD_version >= 1100101) */ + } + + return; +} + +static void +qla_free_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + tcp_lro_free(lro); + } + + return; +} + + /* * Name: ql_del_hw_if * Function: Destroys the hardware specific entities corresponding to an @@ -2287,6 +2375,11 @@ ql_del_hw_if(qla_host_t *ha) ha->hw.flags.init_intr_cnxt = 0; } + if (ha->hw.enable_soft_lro) { + qla_drain_soft_lro(ha); + qla_free_soft_lro(ha); + } + return; } @@ -2309,7 +2402,6 @@ qla_confirm_9kb_enable(qla_host_t *ha) return; } - /* * Name: ql_init_hw_if * Function: Creates the hardware specific entities corresponding to an @@ -2416,8 +2508,19 @@ ql_init_hw_if(qla_host_t *ha) if (qla_link_event_req(ha, ha->hw.rcv_cntxt_id)) return (-1); - if (qla_config_fw_lro(ha, ha->hw.rcv_cntxt_id)) - return (-1); + if (ha->ifp->if_capenable & IFCAP_LRO) { + if (ha->hw.enable_hw_lro) { + ha->hw.enable_soft_lro = 0; + + if (qla_config_fw_lro(ha, ha->hw.rcv_cntxt_id)) + return (-1); + } else { + ha->hw.enable_soft_lro = 1; + + if (qla_config_soft_lro(ha)) + return (-1); + } + } if (qla_init_nic_func(ha)) return (-1); Modified: stable/10/sys/dev/qlxgbe/ql_hw.h ============================================================================== --- stable/10/sys/dev/qlxgbe/ql_hw.h Wed Apr 19 02:54:59 2017 (r317110) +++ stable/10/sys/dev/qlxgbe/ql_hw.h Wed Apr 19 02:58:14 2017 (r317111) @@ -1674,6 +1674,8 @@ typedef struct _qla_hw { uint32_t max_tx_segs; uint32_t min_lro_pkt_size; + uint32_t enable_hw_lro; + uint32_t enable_soft_lro; uint32_t enable_9kb; uint32_t user_pri_nic; Modified: stable/10/sys/dev/qlxgbe/ql_isr.c ============================================================================== --- stable/10/sys/dev/qlxgbe/ql_isr.c Wed Apr 19 02:54:59 2017 (r317110) +++ stable/10/sys/dev/qlxgbe/ql_isr.c Wed Apr 19 02:58:14 2017 (r317111) @@ -68,6 +68,9 @@ qla_rx_intr(qla_host_t *ha, qla_sgl_rcv_ uint32_t i, rem_len = 0; uint32_t r_idx = 0; qla_rx_ring_t *rx_ring; + struct lro_ctrl *lro; + + lro = &ha->hw.sds[sds_idx].lro; if (ha->hw.num_rds_rings > 1) r_idx = sds_idx; @@ -166,7 +169,22 @@ qla_rx_intr(qla_host_t *ha, qla_sgl_rcv_ M_HASHTYPE_SET(mpf, M_HASHTYPE_NONE); #endif /* #if __FreeBSD_version >= 1100000 */ - (*ifp->if_input)(ifp, mpf); + if (ha->hw.enable_soft_lro) { + +#if (__FreeBSD_version >= 1100101) + + tcp_lro_queue_mbuf(lro, mpf); + +#else + if (tcp_lro_rx(lro, mpf, 0)) + (*ifp->if_input)(ifp, mpf); + +#endif /* #if (__FreeBSD_version >= 1100101) */ + + + } else { + (*ifp->if_input)(ifp, mpf); + } if (sdsp->rx_free > ha->std_replenish) qla_replenish_normal_rx(ha, sdsp, r_idx); @@ -708,6 +726,28 @@ ql_rcv_isr(qla_host_t *ha, uint32_t sds_ } } + if (ha->hw.enable_soft_lro) { + struct lro_ctrl *lro; + + lro = &ha->hw.sds[sds_idx].lro; + +#if (__FreeBSD_version >= 1100101) + + tcp_lro_flush_all(lro); + +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } + +#endif /* #if (__FreeBSD_version >= 1100101) */ + + } + if (ha->flags.stop_rcv) goto ql_rcv_isr_exit; Modified: stable/10/sys/dev/qlxgbe/ql_os.c ============================================================================== --- stable/10/sys/dev/qlxgbe/ql_os.c Wed Apr 19 02:54:59 2017 (r317110) +++ stable/10/sys/dev/qlxgbe/ql_os.c Wed Apr 19 02:58:14 2017 (r317111) @@ -1077,6 +1077,8 @@ qla_ioctl(struct ifnet *ifp, u_long cmd, ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (mask & IFCAP_VLAN_HWTSO) ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + if (mask & IFCAP_LRO) + ifp->if_capenable ^= IFCAP_LRO; if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) qla_init(ha); @@ -1502,7 +1504,6 @@ qla_qflush(struct ifnet *ifp) return; } - static void qla_stop(qla_host_t *ha) { From owner-svn-src-stable@freebsd.org Wed Apr 19 02:59:28 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2925CD4546B; Wed, 19 Apr 2017 02:59:28 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id E9CBFFE1; Wed, 19 Apr 2017 02:59:27 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J2xRAb043182; Wed, 19 Apr 2017 02:59:27 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J2xQbN043181; Wed, 19 Apr 2017 02:59:26 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190259.v3J2xQbN043181@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 02:59:26 +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: r317112 - stable/10/share/man/man4 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 02:59:28 -0000 Author: davidcs Date: Wed Apr 19 02:59:26 2017 New Revision: 317112 URL: https://svnweb.freebsd.org/changeset/base/317112 Log: MFC r316310 Update man page for commit r316309 "Add support for optional Soft LRO". The driver provides the ability to select either HW or Software LRO, when LRO is enabled (default HW LRO). Modified: stable/10/share/man/man4/qlxgbe.4 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man4/qlxgbe.4 ============================================================================== --- stable/10/share/man/man4/qlxgbe.4 Wed Apr 19 02:58:14 2017 (r317111) +++ stable/10/share/man/man4/qlxgbe.4 Wed Apr 19 02:59:26 2017 (r317112) @@ -52,7 +52,8 @@ driver supports IPv4 checksum offload, TCP and UDP checksum offload for both IPv4 and IPv6, Large Segment Offload for both IPv4 and IPv6, Jumbo frames, VLAN Tag, and -Receive Side scaling. +Receive Side scaling, ability to select either HW or Software LRO, +when LRO is enabled (default HW LRO). For further hardware information, see .Pa http://www.qlogic.com/ . .Sh HARDWARE From owner-svn-src-stable@freebsd.org Wed Apr 19 03:02:25 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1B343D456FD; Wed, 19 Apr 2017 03:02:25 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id E9A906E7; Wed, 19 Apr 2017 03:02:24 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J32OcV047426; Wed, 19 Apr 2017 03:02:24 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J32Nbq047421; Wed, 19 Apr 2017 03:02:23 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190302.v3J32Nbq047421@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:02:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r317113 - stable/9/sys/dev/qlxgbe X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:02:25 -0000 Author: davidcs Date: Wed Apr 19 03:02:23 2017 New Revision: 317113 URL: https://svnweb.freebsd.org/changeset/base/317113 Log: MFC r316309 Add support for optional Soft LRO Modified: stable/9/sys/dev/qlxgbe/ql_hw.c stable/9/sys/dev/qlxgbe/ql_hw.h stable/9/sys/dev/qlxgbe/ql_isr.c stable/9/sys/dev/qlxgbe/ql_os.c Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) Modified: stable/9/sys/dev/qlxgbe/ql_hw.c ============================================================================== --- stable/9/sys/dev/qlxgbe/ql_hw.c Wed Apr 19 02:59:26 2017 (r317112) +++ stable/9/sys/dev/qlxgbe/ql_hw.c Wed Apr 19 03:02:23 2017 (r317113) @@ -440,6 +440,17 @@ ql_hw_add_sysctls(qla_host_t *ha) OID_AUTO, "enable_9kb", CTLFLAG_RW, &ha->hw.enable_9kb, ha->hw.enable_9kb, "Enable 9Kbyte Buffers when MTU = 9000"); + ha->hw.enable_hw_lro = 1; + + SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "enable_hw_lro", CTLFLAG_RW, &ha->hw.enable_hw_lro, + ha->hw.enable_hw_lro, "Enable Hardware LRO; Default is true \n" + "\t 1 : Hardware LRO if LRO is enabled\n" + "\t 0 : Software LRO if LRO is enabled\n" + "\t Any change requires ifconfig down/up to take effect\n" + "\t Note that LRO may be turned off/on via ifconfig\n"); + ha->hw.mdump_active = 0; SYSCTL_ADD_UINT(device_get_sysctl_ctx(dev), SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), @@ -2255,6 +2266,83 @@ qla_config_rss_ind_table(qla_host_t *ha) return (0); } +static int +qla_config_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + + bzero(lro, sizeof(struct lro_ctrl)); + +#if (__FreeBSD_version >= 1100101) + if (tcp_lro_init_args(lro, ha->ifp, 0, NUM_RX_DESCRIPTORS)) { + device_printf(ha->pci_dev, + "%s: tcp_lro_init_args [%d] failed\n", + __func__, i); + return (-1); + } +#else + if (tcp_lro_init(lro)) { + device_printf(ha->pci_dev, + "%s: tcp_lro_init [%d] failed\n", + __func__, i); + return (-1); + } +#endif /* #if (__FreeBSD_version >= 1100101) */ + + lro->ifp = ha->ifp; + } + + QL_DPRINT2(ha, (ha->pci_dev, "%s: LRO initialized\n", __func__)); + return (0); +} + +static void +qla_drain_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + +#if (__FreeBSD_version >= 1100101) + tcp_lro_flush_all(lro); +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } +#endif /* #if (__FreeBSD_version >= 1100101) */ + } + + return; +} + +static void +qla_free_soft_lro(qla_host_t *ha) +{ + int i; + qla_hw_t *hw = &ha->hw; + struct lro_ctrl *lro; + + for (i = 0; i < hw->num_sds_rings; i++) { + lro = &hw->sds[i].lro; + tcp_lro_free(lro); + } + + return; +} + + /* * Name: ql_del_hw_if * Function: Destroys the hardware specific entities corresponding to an @@ -2287,6 +2375,11 @@ ql_del_hw_if(qla_host_t *ha) ha->hw.flags.init_intr_cnxt = 0; } + if (ha->hw.enable_soft_lro) { + qla_drain_soft_lro(ha); + qla_free_soft_lro(ha); + } + return; } @@ -2309,7 +2402,6 @@ qla_confirm_9kb_enable(qla_host_t *ha) return; } - /* * Name: ql_init_hw_if * Function: Creates the hardware specific entities corresponding to an @@ -2416,8 +2508,19 @@ ql_init_hw_if(qla_host_t *ha) if (qla_link_event_req(ha, ha->hw.rcv_cntxt_id)) return (-1); - if (qla_config_fw_lro(ha, ha->hw.rcv_cntxt_id)) - return (-1); + if (ha->ifp->if_capenable & IFCAP_LRO) { + if (ha->hw.enable_hw_lro) { + ha->hw.enable_soft_lro = 0; + + if (qla_config_fw_lro(ha, ha->hw.rcv_cntxt_id)) + return (-1); + } else { + ha->hw.enable_soft_lro = 1; + + if (qla_config_soft_lro(ha)) + return (-1); + } + } if (qla_init_nic_func(ha)) return (-1); Modified: stable/9/sys/dev/qlxgbe/ql_hw.h ============================================================================== --- stable/9/sys/dev/qlxgbe/ql_hw.h Wed Apr 19 02:59:26 2017 (r317112) +++ stable/9/sys/dev/qlxgbe/ql_hw.h Wed Apr 19 03:02:23 2017 (r317113) @@ -1674,6 +1674,8 @@ typedef struct _qla_hw { uint32_t max_tx_segs; uint32_t min_lro_pkt_size; + uint32_t enable_hw_lro; + uint32_t enable_soft_lro; uint32_t enable_9kb; uint32_t user_pri_nic; Modified: stable/9/sys/dev/qlxgbe/ql_isr.c ============================================================================== --- stable/9/sys/dev/qlxgbe/ql_isr.c Wed Apr 19 02:59:26 2017 (r317112) +++ stable/9/sys/dev/qlxgbe/ql_isr.c Wed Apr 19 03:02:23 2017 (r317113) @@ -68,6 +68,9 @@ qla_rx_intr(qla_host_t *ha, qla_sgl_rcv_ uint32_t i, rem_len = 0; uint32_t r_idx = 0; qla_rx_ring_t *rx_ring; + struct lro_ctrl *lro; + + lro = &ha->hw.sds[sds_idx].lro; if (ha->hw.num_rds_rings > 1) r_idx = sds_idx; @@ -161,7 +164,22 @@ qla_rx_intr(qla_host_t *ha, qla_sgl_rcv_ mpf->m_pkthdr.flowid = sgc->rss_hash; mpf->m_flags |= M_FLOWID; - (*ifp->if_input)(ifp, mpf); + if (ha->hw.enable_soft_lro) { + +#if (__FreeBSD_version >= 1100101) + + tcp_lro_queue_mbuf(lro, mpf); + +#else + if (tcp_lro_rx(lro, mpf, 0)) + (*ifp->if_input)(ifp, mpf); + +#endif /* #if (__FreeBSD_version >= 1100101) */ + + + } else { + (*ifp->if_input)(ifp, mpf); + } if (sdsp->rx_free > ha->std_replenish) qla_replenish_normal_rx(ha, sdsp, r_idx); @@ -703,6 +721,28 @@ ql_rcv_isr(qla_host_t *ha, uint32_t sds_ } } + if (ha->hw.enable_soft_lro) { + struct lro_ctrl *lro; + + lro = &ha->hw.sds[sds_idx].lro; + +#if (__FreeBSD_version >= 1100101) + + tcp_lro_flush_all(lro); + +#else + struct lro_entry *queued; + + while ((!SLIST_EMPTY(&lro->lro_active))) { + queued = SLIST_FIRST(&lro->lro_active); + SLIST_REMOVE_HEAD(&lro->lro_active, next); + tcp_lro_flush(lro, queued); + } + +#endif /* #if (__FreeBSD_version >= 1100101) */ + + } + if (ha->flags.stop_rcv) goto ql_rcv_isr_exit; Modified: stable/9/sys/dev/qlxgbe/ql_os.c ============================================================================== --- stable/9/sys/dev/qlxgbe/ql_os.c Wed Apr 19 02:59:26 2017 (r317112) +++ stable/9/sys/dev/qlxgbe/ql_os.c Wed Apr 19 03:02:23 2017 (r317113) @@ -1077,6 +1077,8 @@ qla_ioctl(struct ifnet *ifp, u_long cmd, ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (mask & IFCAP_VLAN_HWTSO) ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + if (mask & IFCAP_LRO) + ifp->if_capenable ^= IFCAP_LRO; if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) qla_init(ha); @@ -1518,7 +1520,6 @@ qla_qflush(struct ifnet *ifp) return; } - static void qla_stop(qla_host_t *ha) { From owner-svn-src-stable@freebsd.org Wed Apr 19 03:03:48 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 39A02D45777; Wed, 19 Apr 2017 03:03:48 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 0B0AD8BF; Wed, 19 Apr 2017 03:03:47 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J33lYe047523; Wed, 19 Apr 2017 03:03:47 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J33luw047522; Wed, 19 Apr 2017 03:03:47 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190303.v3J33luw047522@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:03:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r317114 - stable/9/share/man/man4 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:03:48 -0000 Author: davidcs Date: Wed Apr 19 03:03:46 2017 New Revision: 317114 URL: https://svnweb.freebsd.org/changeset/base/317114 Log: MFC r316310 Update man page for commit r316309 "Add support for optional Soft LRO". The driver provides the ability to select either HW or Software LRO, when LRO is enabled (default HW LRO). Modified: stable/9/share/man/man4/qlxgbe.4 Directory Properties: stable/9/ (props changed) stable/9/share/ (props changed) stable/9/share/man/ (props changed) stable/9/share/man/man4/ (props changed) Modified: stable/9/share/man/man4/qlxgbe.4 ============================================================================== --- stable/9/share/man/man4/qlxgbe.4 Wed Apr 19 03:02:23 2017 (r317113) +++ stable/9/share/man/man4/qlxgbe.4 Wed Apr 19 03:03:46 2017 (r317114) @@ -52,7 +52,8 @@ driver supports IPv4 checksum offload, TCP and UDP checksum offload for both IPv4 and IPv6, Large Segment Offload for both IPv4 and IPv6, Jumbo frames, VLAN Tag, and -Receive Side scaling. +Receive Side scaling, ability to select either HW or Software LRO, +when LRO is enabled (default HW LRO). For further hardware information, see .Pa http://www.qlogic.com/ . .Sh HARDWARE From owner-svn-src-stable@freebsd.org Wed Apr 19 03:06:29 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 37645D45980; Wed, 19 Apr 2017 03:06:29 +0000 (UTC) (envelope-from sephe@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 mx1.freebsd.org (Postfix) with ESMTPS id DE0EFB18; Wed, 19 Apr 2017 03:06:28 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J36S48047774; Wed, 19 Apr 2017 03:06:28 GMT (envelope-from sephe@FreeBSD.org) Received: (from sephe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J36SCF047773; Wed, 19 Apr 2017 03:06:28 GMT (envelope-from sephe@FreeBSD.org) Message-Id: <201704190306.v3J36SCF047773@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sephe set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau Date: Wed, 19 Apr 2017 03:06:28 +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: r317115 - stable/10/sys/dev/hyperv/vmbus X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:06:29 -0000 Author: sephe Date: Wed Apr 19 03:06:27 2017 New Revision: 317115 URL: https://svnweb.freebsd.org/changeset/base/317115 Log: MFC 317107 hyperv: Use kmem_malloc for hypercall memory due to NX bit change. Reported by: dexuan@ Sponsored by: Microsoft Modified: stable/10/sys/dev/hyperv/vmbus/hyperv.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/hyperv/vmbus/hyperv.c ============================================================================== --- stable/10/sys/dev/hyperv/vmbus/hyperv.c Wed Apr 19 03:03:46 2017 (r317114) +++ stable/10/sys/dev/hyperv/vmbus/hyperv.c Wed Apr 19 03:06:27 2017 (r317115) @@ -34,9 +34,15 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include +#include +#include +#include +#include + #include #include #include @@ -64,7 +70,7 @@ __FBSDID("$FreeBSD$"); struct hypercall_ctx { void *hc_addr; - struct hyperv_dma hc_dma; + vm_paddr_t hc_paddr; }; static u_int hyperv_get_timecount(struct timecounter *); @@ -255,8 +261,8 @@ SYSINIT(hyperv_initialize, SI_SUB_HYPERV static void hypercall_memfree(void) { - hyperv_dmamem_free(&hypercall_context.hc_dma, - hypercall_context.hc_addr); + kmem_free(kernel_arena, (vm_offset_t)hypercall_context.hc_addr, + PAGE_SIZE); hypercall_context.hc_addr = NULL; } @@ -268,14 +274,15 @@ hypercall_create(void *arg __unused) if (vm_guest != VM_GUEST_HV) return; - hypercall_context.hc_addr = hyperv_dmamem_alloc(NULL, PAGE_SIZE, 0, - PAGE_SIZE, &hypercall_context.hc_dma, BUS_DMA_WAITOK); - if (hypercall_context.hc_addr == NULL) { - printf("hyperv: Hypercall page allocation failed\n"); - /* Can't perform any Hyper-V specific actions */ - vm_guest = VM_GUEST_VM; - return; - } + /* + * NOTE: + * - busdma(9), i.e. hyperv_dmamem APIs, can _not_ be used due to + * the NX bit. + * - Assume kmem_malloc() returns properly aligned memory. + */ + hypercall_context.hc_addr = (void *)kmem_malloc(kernel_arena, PAGE_SIZE, + M_WAITOK); + hypercall_context.hc_paddr = vtophys(hypercall_context.hc_addr); /* Get the 'reserved' bits, which requires preservation. */ hc_orig = rdmsr(MSR_HV_HYPERCALL); @@ -285,7 +292,7 @@ hypercall_create(void *arg __unused) * * NOTE: 'reserved' bits MUST be preserved. */ - hc = ((hypercall_context.hc_dma.hv_paddr >> PAGE_SHIFT) << + hc = ((hypercall_context.hc_paddr >> PAGE_SHIFT) << MSR_HV_HYPERCALL_PGSHIFT) | (hc_orig & MSR_HV_HYPERCALL_RSVD_MASK) | MSR_HV_HYPERCALL_ENABLE; From owner-svn-src-stable@freebsd.org Wed Apr 19 03:09:22 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 55FF3D45AF6; Wed, 19 Apr 2017 03:09:22 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 310EBD1E; Wed, 19 Apr 2017 03:09:22 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J39LfY047919; Wed, 19 Apr 2017 03:09:21 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J39KFa047915; Wed, 19 Apr 2017 03:09:20 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190309.v3J39KFa047915@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:09:20 +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: r317116 - in stable/11: share/man/man4 sys/conf sys/dev/qlnx sys/modules sys/modules/qlnx X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:09:22 -0000 Author: davidcs Date: Wed Apr 19 03:09:20 2017 New Revision: 317116 URL: https://svnweb.freebsd.org/changeset/base/317116 Log: MFC r316485 Add 25/40/100Gigabit Ethernet Driver version v1.3.0 for Cavium Inc's. Qlogic 45000 Series Adapters Added: stable/11/share/man/man4/qlnxe.4 - copied unchanged from r316485, head/share/man/man4/qlnxe.4 stable/11/sys/dev/qlnx/ - copied from r316485, head/sys/dev/qlnx/ stable/11/sys/modules/qlnx/ - copied from r316485, head/sys/modules/qlnx/ Modified: stable/11/share/man/man4/Makefile stable/11/sys/conf/files.amd64 stable/11/sys/modules/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man4/Makefile ============================================================================== --- stable/11/share/man/man4/Makefile Wed Apr 19 03:06:27 2017 (r317115) +++ stable/11/share/man/man4/Makefile Wed Apr 19 03:09:20 2017 (r317116) @@ -429,6 +429,7 @@ MAN= aac.4 \ ${_qlxge.4} \ ${_qlxgb.4} \ ${_qlxgbe.4} \ + ${_qlnxe.4} \ ral.4 \ random.4 \ rc.4 \ @@ -853,11 +854,13 @@ _ntb_transport.4=ntb_transport.4 _qlxge.4= qlxge.4 _qlxgb.4= qlxgb.4 _qlxgbe.4= qlxgbe.4 +_qlnxe.4= qlnxe.4 _sfxge.4= sfxge.4 MLINKS+=qlxge.4 if_qlxge.4 MLINKS+=qlxgb.4 if_qlxgb.4 MLINKS+=qlxgbe.4 if_qlxgbe.4 +MLINKS+=qlnxe.4 if_qlnxe.4 MLINKS+=sfxge.4 if_sfxge.4 .if ${MK_BHYVE} != "no" Copied: stable/11/share/man/man4/qlnxe.4 (from r316485, head/share/man/man4/qlnxe.4) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/11/share/man/man4/qlnxe.4 Wed Apr 19 03:09:20 2017 (r317116, copy of r316485, head/share/man/man4/qlnxe.4) @@ -0,0 +1,90 @@ +.\"- +.\" Copyright (c) 2017 Cavium 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. +.\" +.\" $FreeBSD$ +.\" +.Dd March 24, 2017 +.Dt QLNXE 4 +.Os +.Sh NAME +.Nm qlnxe +.Nd "Cavium 25/40/100 Gigabit Ethernet & CNA Adapter Driver" +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device qlnxe" +.Ed +.Pp +To load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +if_qlnxe_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver supports IPv4 checksum offload, +TCP and UDP checksum offload for both IPv4 and IPv6, +Large Segment Offload for both IPv4 and IPv6, +Jumbo frames, VLAN Tag, Receive Side scaling, HW and Soft LRO. +For further hardware information, see +.Pa http://www.qlogic.com/ . +.Sh HARDWARE +The +.Nm +driver supports 25/40/100 Gigabit Ethernet & CNA Adapter based on the following +chipsets: +.Pp +.Bl -bullet -compact +.It +QLogic 45000 series +.El +.Sh SUPPORT +For support questions please contact your Cavium approved reseller or +Cavium Technical Support at +.Pa http://support.qlogic.com , +or by E-mail at +.Aq Mt support@qlogic.com . +.Sh SEE ALSO +.Xr altq 4 , +.Xr arp 4 , +.Xr netintro 4 , +.Xr ng_ether 4 , +.Xr ifconfig 8 +.Sh HISTORY +The +.Nm +device driver first appeared in +.Fx 12.0 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An David C Somayajulu +at Cavium Inc. Modified: stable/11/sys/conf/files.amd64 ============================================================================== --- stable/11/sys/conf/files.amd64 Wed Apr 19 03:06:27 2017 (r317115) +++ stable/11/sys/conf/files.amd64 Wed Apr 19 03:09:20 2017 (r317116) @@ -354,6 +354,20 @@ dev/qlxgbe/ql_isr.c optional qlxgbe pci dev/qlxgbe/ql_misc.c optional qlxgbe pci dev/qlxgbe/ql_os.c optional qlxgbe pci dev/qlxgbe/ql_reset.c optional qlxgbe pci +dev/qlnx/qlnxe/ecore_cxt.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_dbg_fw_funcs.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_dcbx.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_dev.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_hw.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_init_fw_funcs.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_init_ops.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_int.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_l2.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_mcp.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_sp_commands.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_spq.c optional qlnxe pci +dev/qlnx/qlnxe/qlnx_ioctl.c optional qlnxe pci +dev/qlnx/qlnxe/qlnx_os.c optional qlnxe pci dev/sfxge/common/ef10_ev.c optional sfxge pci dev/sfxge/common/ef10_filter.c optional sfxge pci dev/sfxge/common/ef10_intr.c optional sfxge pci Modified: stable/11/sys/modules/Makefile ============================================================================== --- stable/11/sys/modules/Makefile Wed Apr 19 03:06:27 2017 (r317115) +++ stable/11/sys/modules/Makefile Wed Apr 19 03:09:20 2017 (r317116) @@ -316,6 +316,7 @@ SUBDIR= \ ${_qlxge} \ ${_qlxgb} \ ${_qlxgbe} \ + ${_qlnx} \ ral \ ${_ralfw} \ ${_random_fortuna} \ @@ -709,6 +710,7 @@ _pms= pms _qlxge= qlxge _qlxgb= qlxgb _qlxgbe= qlxgbe +_qlnx= qlnx _sfxge= sfxge .if ${MK_BHYVE} != "no" || defined(ALL_MODULES) From owner-svn-src-stable@freebsd.org Wed Apr 19 03:14:00 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 15F67D45DBD; Wed, 19 Apr 2017 03:14:00 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id E55E311FF; Wed, 19 Apr 2017 03:13:59 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J3DxlY051727; Wed, 19 Apr 2017 03:13:59 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J3Dw04051725; Wed, 19 Apr 2017 03:13:58 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190313.v3J3Dw04051725@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:13:58 +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: r317117 - stable/11/sys/dev/qlnx/qlnxe X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:14:00 -0000 Author: davidcs Date: Wed Apr 19 03:13:58 2017 New Revision: 317117 URL: https://svnweb.freebsd.org/changeset/base/317117 Log: MFC r316720 Fix defects reported by Coverity 1. Deadcode in ecore_init_cache_line_size(), qlnx_ioctl() and qlnx_clean_filters() 2. ARRAY_VS_SINGLETON issue in qlnx_remove_all_mcast_mac() and qlnx_update_rx_prod() Modified: stable/11/sys/dev/qlnx/qlnxe/bcm_osal.h stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/qlnx/qlnxe/bcm_osal.h ============================================================================== --- stable/11/sys/dev/qlnx/qlnxe/bcm_osal.h Wed Apr 19 03:09:20 2017 (r317116) +++ stable/11/sys/dev/qlnx/qlnxe/bcm_osal.h Wed Apr 19 03:13:58 2017 (r317117) @@ -144,7 +144,14 @@ rounddown_pow_of_two(unsigned long x) #define OSAL_CPU_TO_LE16(val) htole16(val) #define OSAL_LE16_TO_CPU(val) le16toh(val) -#define OSAL_CACHE_LINE_SIZE CACHE_LINE_SIZE +static __inline uint32_t +qlnx_get_cache_line_size(void) +{ + return (CACHE_LINE_SIZE); +} + +#define OSAL_CACHE_LINE_SIZE qlnx_get_cache_line_size() + #define OSAL_BE32 uint32_t #define dma_addr_t bus_addr_t #define osal_size_t size_t Modified: stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c ============================================================================== --- stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:09:20 2017 (r317116) +++ stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:13:58 2017 (r317117) @@ -2167,9 +2167,6 @@ qlnx_ioctl(struct ifnet *ifp, u_long cmd } QLNX_UNLOCK(ha); - - if (ret) - ret = EINVAL; } break; @@ -5910,25 +5907,26 @@ qlnx_update_rx_prod(struct ecore_hwfn *p uint16_t bd_prod; uint16_t cqe_prod; - struct eth_rx_prod_data rx_prods = {0}; + union { + struct eth_rx_prod_data rx_prod_data; + uint32_t data32; + } rx_prods; bd_prod = ecore_chain_get_prod_idx(&rxq->rx_bd_ring); cqe_prod = ecore_chain_get_prod_idx(&rxq->rx_comp_ring); /* Update producers */ - rx_prods.bd_prod = htole16(bd_prod); - rx_prods.cqe_prod = htole16(cqe_prod); + rx_prods.rx_prod_data.bd_prod = htole16(bd_prod); + rx_prods.rx_prod_data.cqe_prod = htole16(cqe_prod); /* Make sure that the BD and SGE data is updated before updating the * producers since FW might read the BD/SGE right after the producer * is updated. */ wmb(); - //bus_barrier(ha->pci_reg, 0, 0, BUS_SPACE_BARRIER_READ); - //bus_barrier(ha->pci_dbells, 0, 0, BUS_SPACE_BARRIER_READ); internal_ram_wr(p_hwfn, rxq->hw_rxq_prod_addr, - sizeof(rx_prods), (u32 *)&rx_prods); + sizeof(rx_prods), &rx_prods.data32); /* mmiowb is needed to synchronize doorbell writes from more than one * processor. It guarantees that the write arrives to the device before @@ -6342,9 +6340,8 @@ qlnx_remove_all_mcast_mac(qlnx_host_t *h ha->mcast[i].addr[2] || ha->mcast[i].addr[3] || ha->mcast[i].addr[4] || ha->mcast[i].addr[5]) { - memcpy(&mcast->mac[0], &ha->mcast[i].addr[0], ETH_ALEN); + memcpy(&mcast->mac[i], &ha->mcast[i].addr[0], ETH_ALEN); mcast->num_mc_addrs++; - mcast++; } } mcast = &ha->ecore_mcast; @@ -6363,7 +6360,7 @@ qlnx_clean_filters(qlnx_host_t *ha) int rc = 0; /* Remove all unicast macs */ - qlnx_remove_all_ucast_mac(ha); + rc = qlnx_remove_all_ucast_mac(ha); if (rc) return rc; From owner-svn-src-stable@freebsd.org Wed Apr 19 03:18:13 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 15E72D45E5D; Wed, 19 Apr 2017 03:18:13 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id DB978140F; Wed, 19 Apr 2017 03:18:12 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J3ICTW051927; Wed, 19 Apr 2017 03:18:12 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J3ICgB051926; Wed, 19 Apr 2017 03:18:12 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190318.v3J3ICgB051926@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:18: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: r317118 - stable/11/sys/dev/qlnx/qlnxe X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:18:13 -0000 Author: davidcs Date: Wed Apr 19 03:18:11 2017 New Revision: 317118 URL: https://svnweb.freebsd.org/changeset/base/317118 Log: MFC r316747 Fix rss_ind_table entry for num_funcs > 1 Modified: stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c ============================================================================== --- stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:13:58 2017 (r317117) +++ stable/11/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:18:11 2017 (r317118) @@ -5840,7 +5840,7 @@ qlnx_update_vport(struct ecore_dev *cdev ha->num_rss; fp = &ha->fp_array[fp_index]; - rss->rss_ind_table[i] = fp->rxq->handle; + rss->rss_ind_table[j] = fp->rxq->handle; } for (j = 0; j < ECORE_RSS_IND_TABLE_SIZE;) { From owner-svn-src-stable@freebsd.org Wed Apr 19 03:30:38 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D32BAD44153; Wed, 19 Apr 2017 03:30:38 +0000 (UTC) (envelope-from sephe@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 mx1.freebsd.org (Postfix) with ESMTPS id 89C451A8E; Wed, 19 Apr 2017 03:30:38 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J3UbRo056244; Wed, 19 Apr 2017 03:30:37 GMT (envelope-from sephe@FreeBSD.org) Received: (from sephe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J3Ub4c056242; Wed, 19 Apr 2017 03:30:37 GMT (envelope-from sephe@FreeBSD.org) Message-Id: <201704190330.v3J3Ub4c056242@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sephe set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau Date: Wed, 19 Apr 2017 03:30: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: r317119 - in stable/11/sys: conf dev/hyperv/input X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:30:39 -0000 Author: sephe Date: Wed Apr 19 03:30:37 2017 New Revision: 317119 URL: https://svnweb.freebsd.org/changeset/base/317119 Log: MFC 316515,316812 316515 hyperv/kbd: Add support for synthetic keyboard. Synthetic keyboard is the only supported keyboard on GEN2 Hyper-V. Submitted by: Hongjiang Zhang Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D10196 316812 hyperv/kbd: Remove unnecessary assignment. Reported by: PVS Sponsored by: Microsoft Added: stable/11/sys/dev/hyperv/input/ - copied from r316515, head/sys/dev/hyperv/input/ Modified: stable/11/sys/conf/files.amd64 stable/11/sys/dev/hyperv/input/hv_kbdc.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/files.amd64 ============================================================================== --- stable/11/sys/conf/files.amd64 Wed Apr 19 03:18:11 2017 (r317118) +++ stable/11/sys/conf/files.amd64 Wed Apr 19 03:30:37 2017 (r317119) @@ -293,6 +293,8 @@ dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_tsc.c optional hwpmc dev/hwpmc/hwpmc_x86.c optional hwpmc +dev/hyperv/input/hv_kbd.c optional hyperv +dev/hyperv/input/hv_kbdc.c optional hyperv dev/hyperv/pcib/vmbus_pcib.c optional hyperv pci dev/hyperv/netvsc/hn_nvs.c optional hyperv dev/hyperv/netvsc/hn_rndis.c optional hyperv Modified: stable/11/sys/dev/hyperv/input/hv_kbdc.c ============================================================================== --- head/sys/dev/hyperv/input/hv_kbdc.c Wed Apr 5 05:01:23 2017 (r316515) +++ stable/11/sys/dev/hyperv/input/hv_kbdc.c Wed Apr 19 03:30:37 2017 (r317119) @@ -298,7 +298,6 @@ hv_kbd_read_channel(struct vmbus_channel int ret = 0; hv_kbd_sc *sc = (hv_kbd_sc*)context; - channel = vmbus_get_channel(sc->dev); buf = sc->buf; buflen = sc->buflen; for (;;) { From owner-svn-src-stable@freebsd.org Wed Apr 19 03:37:13 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 56B6ED443A6; Wed, 19 Apr 2017 03:37:13 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 337A81FA2; Wed, 19 Apr 2017 03:37:13 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J3bCOO060290; Wed, 19 Apr 2017 03:37:12 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J3bCoo060287; Wed, 19 Apr 2017 03:37:12 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190337.v3J3bCoo060287@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:37:12 +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: r317120 - in stable/10: share/man/man4 sys/conf sys/dev/qlnx sys/modules sys/modules/qlnx X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:37:13 -0000 Author: davidcs Date: Wed Apr 19 03:37:11 2017 New Revision: 317120 URL: https://svnweb.freebsd.org/changeset/base/317120 Log: MFC r316485 Add 25/40/100Gigabit Ethernet Driver version v1.3.0 for Cavium Inc's. Qlogic 45000 Series Adapters Added: stable/10/share/man/man4/qlnxe.4 - copied unchanged from r316485, head/share/man/man4/qlnxe.4 stable/10/sys/dev/qlnx/ - copied from r316485, head/sys/dev/qlnx/ stable/10/sys/modules/qlnx/ - copied from r316485, head/sys/modules/qlnx/ Modified: stable/10/share/man/man4/Makefile stable/10/sys/conf/files.amd64 stable/10/sys/modules/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man4/Makefile ============================================================================== --- stable/10/share/man/man4/Makefile Wed Apr 19 03:30:37 2017 (r317119) +++ stable/10/share/man/man4/Makefile Wed Apr 19 03:37:11 2017 (r317120) @@ -405,6 +405,7 @@ MAN= aac.4 \ ${_qlxge.4} \ ${_qlxgb.4} \ ${_qlxgbe.4} \ + ${_qlnxe.4} \ ral.4 \ random.4 \ rc.4 \ @@ -827,11 +828,13 @@ _ntb_transport.4=ntb_transport.4 _qlxge.4= qlxge.4 _qlxgb.4= qlxgb.4 _qlxgbe.4= qlxgbe.4 +_qlnxe.4= qlnxe.4 _sfxge.4= sfxge.4 MLINKS+=qlxge.4 if_qlxge.4 MLINKS+=qlxgb.4 if_qlxgb.4 MLINKS+=qlxgbe.4 if_qlxgbe.4 +MLINKS+=qlnxe.4 if_qlnxe.4 MLINKS+=sfxge.4 if_sfxge.4 .if ${MK_BHYVE} != "no" Copied: stable/10/share/man/man4/qlnxe.4 (from r316485, head/share/man/man4/qlnxe.4) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/share/man/man4/qlnxe.4 Wed Apr 19 03:37:11 2017 (r317120, copy of r316485, head/share/man/man4/qlnxe.4) @@ -0,0 +1,90 @@ +.\"- +.\" Copyright (c) 2017 Cavium 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. +.\" +.\" $FreeBSD$ +.\" +.Dd March 24, 2017 +.Dt QLNXE 4 +.Os +.Sh NAME +.Nm qlnxe +.Nd "Cavium 25/40/100 Gigabit Ethernet & CNA Adapter Driver" +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device qlnxe" +.Ed +.Pp +To load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +if_qlnxe_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver supports IPv4 checksum offload, +TCP and UDP checksum offload for both IPv4 and IPv6, +Large Segment Offload for both IPv4 and IPv6, +Jumbo frames, VLAN Tag, Receive Side scaling, HW and Soft LRO. +For further hardware information, see +.Pa http://www.qlogic.com/ . +.Sh HARDWARE +The +.Nm +driver supports 25/40/100 Gigabit Ethernet & CNA Adapter based on the following +chipsets: +.Pp +.Bl -bullet -compact +.It +QLogic 45000 series +.El +.Sh SUPPORT +For support questions please contact your Cavium approved reseller or +Cavium Technical Support at +.Pa http://support.qlogic.com , +or by E-mail at +.Aq Mt support@qlogic.com . +.Sh SEE ALSO +.Xr altq 4 , +.Xr arp 4 , +.Xr netintro 4 , +.Xr ng_ether 4 , +.Xr ifconfig 8 +.Sh HISTORY +The +.Nm +device driver first appeared in +.Fx 12.0 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An David C Somayajulu +at Cavium Inc. Modified: stable/10/sys/conf/files.amd64 ============================================================================== --- stable/10/sys/conf/files.amd64 Wed Apr 19 03:30:37 2017 (r317119) +++ stable/10/sys/conf/files.amd64 Wed Apr 19 03:37:11 2017 (r317120) @@ -323,6 +323,20 @@ dev/qlxgbe/ql_isr.c optional qlxgbe pci dev/qlxgbe/ql_misc.c optional qlxgbe pci dev/qlxgbe/ql_os.c optional qlxgbe pci dev/qlxgbe/ql_reset.c optional qlxgbe pci +dev/qlnx/qlnxe/ecore_cxt.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_dbg_fw_funcs.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_dcbx.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_dev.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_hw.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_init_fw_funcs.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_init_ops.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_int.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_l2.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_mcp.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_sp_commands.c optional qlnxe pci +dev/qlnx/qlnxe/ecore_spq.c optional qlnxe pci +dev/qlnx/qlnxe/qlnx_ioctl.c optional qlnxe pci +dev/qlnx/qlnxe/qlnx_os.c optional qlnxe pci dev/sfxge/common/ef10_ev.c optional sfxge pci dev/sfxge/common/ef10_filter.c optional sfxge pci dev/sfxge/common/ef10_intr.c optional sfxge pci Modified: stable/10/sys/modules/Makefile ============================================================================== --- stable/10/sys/modules/Makefile Wed Apr 19 03:30:37 2017 (r317119) +++ stable/10/sys/modules/Makefile Wed Apr 19 03:37:11 2017 (r317120) @@ -295,6 +295,7 @@ SUBDIR= \ ${_qlxge} \ ${_qlxgb} \ ${_qlxgbe} \ + ${_qlnx} \ ral \ ${_ralfw} \ ${_random} \ @@ -788,6 +789,7 @@ _pms= pms _qlxge= qlxge _qlxgb= qlxgb _qlxgbe= qlxgbe +_qlnx= qlnx _rdma= rdma _s3= s3 _safe= safe From owner-svn-src-stable@freebsd.org Wed Apr 19 03:39:51 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9C153D44526; Wed, 19 Apr 2017 03:39:51 +0000 (UTC) (envelope-from sephe@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 mx1.freebsd.org (Postfix) with ESMTPS id 6BBB0285; Wed, 19 Apr 2017 03:39:51 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J3doij060449; Wed, 19 Apr 2017 03:39:50 GMT (envelope-from sephe@FreeBSD.org) Received: (from sephe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J3do7t060447; Wed, 19 Apr 2017 03:39:50 GMT (envelope-from sephe@FreeBSD.org) Message-Id: <201704190339.v3J3do7t060447@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sephe set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau Date: Wed, 19 Apr 2017 03:39:50 +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: r317121 - in stable/11/sys/dev/hyperv: storvsc utilities X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:39:51 -0000 Author: sephe Date: Wed Apr 19 03:39:50 2017 New Revision: 317121 URL: https://svnweb.freebsd.org/changeset/base/317121 Log: MFC 316813,316815 316813 hyperv/storvsc: Use ULL for 64bits value shift. Reported by: PVS Sponsored by: Microsoft 316815 hyperv/kvp: Remove always false condition. Reported by: PVS Sponsored by: Microsoft Modified: stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c stable/11/sys/dev/hyperv/utilities/hv_kvp.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c ============================================================================== --- stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Wed Apr 19 03:37:11 2017 (r317120) +++ stable/11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Wed Apr 19 03:39:50 2017 (r317121) @@ -1771,7 +1771,7 @@ storvsc_check_bounce_buffer_sgl(bus_dma_ } pre_aligned = TRUE; } else { - tmp_bits |= 1 << i; + tmp_bits |= 1ULL << i; if (!pre_aligned) { if (phys_addr != vtophys(sgl[i-1].ds_addr + sgl[i-1].ds_len)) { Modified: stable/11/sys/dev/hyperv/utilities/hv_kvp.c ============================================================================== --- stable/11/sys/dev/hyperv/utilities/hv_kvp.c Wed Apr 19 03:37:11 2017 (r317120) +++ stable/11/sys/dev/hyperv/utilities/hv_kvp.c Wed Apr 19 03:39:50 2017 (r317121) @@ -516,7 +516,7 @@ hv_kvp_convert_usermsg_to_hostmsg(struct /* Use values by string */ host_exchg_data->value_type = HV_REG_SZ; - if ((hkey_len < 0) || (hvalue_len < 0)) + if (hvalue_len < 0) return (EINVAL); return (0); From owner-svn-src-stable@freebsd.org Wed Apr 19 03:41:20 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C5FEED445B2; Wed, 19 Apr 2017 03:41:20 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id A16E46C5; Wed, 19 Apr 2017 03:41:20 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J3fJnO061322; Wed, 19 Apr 2017 03:41:19 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J3fJVV061320; Wed, 19 Apr 2017 03:41:19 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190341.v3J3fJVV061320@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:41:19 +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: r317122 - stable/10/sys/dev/qlnx/qlnxe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:41:20 -0000 Author: davidcs Date: Wed Apr 19 03:41:19 2017 New Revision: 317122 URL: https://svnweb.freebsd.org/changeset/base/317122 Log: MFC r316720 Fix defects reported by Coverity 1. Deadcode in ecore_init_cache_line_size(), qlnx_ioctl() and qlnx_clean_filters() 2. ARRAY_VS_SINGLETON issue in qlnx_remove_all_mcast_mac() and qlnx_update_rx_prod() Modified: stable/10/sys/dev/qlnx/qlnxe/bcm_osal.h stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/qlnx/qlnxe/bcm_osal.h ============================================================================== --- stable/10/sys/dev/qlnx/qlnxe/bcm_osal.h Wed Apr 19 03:39:50 2017 (r317121) +++ stable/10/sys/dev/qlnx/qlnxe/bcm_osal.h Wed Apr 19 03:41:19 2017 (r317122) @@ -144,7 +144,14 @@ rounddown_pow_of_two(unsigned long x) #define OSAL_CPU_TO_LE16(val) htole16(val) #define OSAL_LE16_TO_CPU(val) le16toh(val) -#define OSAL_CACHE_LINE_SIZE CACHE_LINE_SIZE +static __inline uint32_t +qlnx_get_cache_line_size(void) +{ + return (CACHE_LINE_SIZE); +} + +#define OSAL_CACHE_LINE_SIZE qlnx_get_cache_line_size() + #define OSAL_BE32 uint32_t #define dma_addr_t bus_addr_t #define osal_size_t size_t Modified: stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c ============================================================================== --- stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:39:50 2017 (r317121) +++ stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:41:19 2017 (r317122) @@ -2167,9 +2167,6 @@ qlnx_ioctl(struct ifnet *ifp, u_long cmd } QLNX_UNLOCK(ha); - - if (ret) - ret = EINVAL; } break; @@ -5910,25 +5907,26 @@ qlnx_update_rx_prod(struct ecore_hwfn *p uint16_t bd_prod; uint16_t cqe_prod; - struct eth_rx_prod_data rx_prods = {0}; + union { + struct eth_rx_prod_data rx_prod_data; + uint32_t data32; + } rx_prods; bd_prod = ecore_chain_get_prod_idx(&rxq->rx_bd_ring); cqe_prod = ecore_chain_get_prod_idx(&rxq->rx_comp_ring); /* Update producers */ - rx_prods.bd_prod = htole16(bd_prod); - rx_prods.cqe_prod = htole16(cqe_prod); + rx_prods.rx_prod_data.bd_prod = htole16(bd_prod); + rx_prods.rx_prod_data.cqe_prod = htole16(cqe_prod); /* Make sure that the BD and SGE data is updated before updating the * producers since FW might read the BD/SGE right after the producer * is updated. */ wmb(); - //bus_barrier(ha->pci_reg, 0, 0, BUS_SPACE_BARRIER_READ); - //bus_barrier(ha->pci_dbells, 0, 0, BUS_SPACE_BARRIER_READ); internal_ram_wr(p_hwfn, rxq->hw_rxq_prod_addr, - sizeof(rx_prods), (u32 *)&rx_prods); + sizeof(rx_prods), &rx_prods.data32); /* mmiowb is needed to synchronize doorbell writes from more than one * processor. It guarantees that the write arrives to the device before @@ -6342,9 +6340,8 @@ qlnx_remove_all_mcast_mac(qlnx_host_t *h ha->mcast[i].addr[2] || ha->mcast[i].addr[3] || ha->mcast[i].addr[4] || ha->mcast[i].addr[5]) { - memcpy(&mcast->mac[0], &ha->mcast[i].addr[0], ETH_ALEN); + memcpy(&mcast->mac[i], &ha->mcast[i].addr[0], ETH_ALEN); mcast->num_mc_addrs++; - mcast++; } } mcast = &ha->ecore_mcast; @@ -6363,7 +6360,7 @@ qlnx_clean_filters(qlnx_host_t *ha) int rc = 0; /* Remove all unicast macs */ - qlnx_remove_all_ucast_mac(ha); + rc = qlnx_remove_all_ucast_mac(ha); if (rc) return rc; From owner-svn-src-stable@freebsd.org Wed Apr 19 03:43:25 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AE402D447DB; Wed, 19 Apr 2017 03:43:25 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 7DF9DA89; Wed, 19 Apr 2017 03:43:25 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J3hOBN064221; Wed, 19 Apr 2017 03:43:24 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J3hO9N064220; Wed, 19 Apr 2017 03:43:24 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704190343.v3J3hO9N064220@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Wed, 19 Apr 2017 03:43:24 +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: r317123 - stable/10/sys/dev/qlnx/qlnxe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 03:43:25 -0000 Author: davidcs Date: Wed Apr 19 03:43:24 2017 New Revision: 317123 URL: https://svnweb.freebsd.org/changeset/base/317123 Log: MFC r316747 Fix rss_ind_table entry for num_funcs > 1 Modified: stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c ============================================================================== --- stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:41:19 2017 (r317122) +++ stable/10/sys/dev/qlnx/qlnxe/qlnx_os.c Wed Apr 19 03:43:24 2017 (r317123) @@ -5840,7 +5840,7 @@ qlnx_update_vport(struct ecore_dev *cdev ha->num_rss; fp = &ha->fp_array[fp_index]; - rss->rss_ind_table[i] = fp->rxq->handle; + rss->rss_ind_table[j] = fp->rxq->handle; } for (j = 0; j < ECORE_RSS_IND_TABLE_SIZE;) { From owner-svn-src-stable@freebsd.org Wed Apr 19 05:19:35 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 23B2FD4500C; Wed, 19 Apr 2017 05:19:35 +0000 (UTC) (envelope-from sephe@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 mx1.freebsd.org (Postfix) with ESMTPS id CF478D6B; Wed, 19 Apr 2017 05:19:34 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J5JXCC001044; Wed, 19 Apr 2017 05:19:33 GMT (envelope-from sephe@FreeBSD.org) Received: (from sephe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J5JXYZ001042; Wed, 19 Apr 2017 05:19:33 GMT (envelope-from sephe@FreeBSD.org) Message-Id: <201704190519.v3J5JXYZ001042@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sephe set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau Date: Wed, 19 Apr 2017 05:19:33 +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: r317124 - in stable/10/sys: conf dev/hyperv/input X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 05:19:35 -0000 Author: sephe Date: Wed Apr 19 05:19:33 2017 New Revision: 317124 URL: https://svnweb.freebsd.org/changeset/base/317124 Log: MFC 316515,316812 316515 hyperv/kbd: Add support for synthetic keyboard. Synthetic keyboard is the only supported keyboard on GEN2 Hyper-V. Submitted by: Hongjiang Zhang Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D10196 316812 hyperv/kbd: Remove unnecessary assignment. Reported by: PVS Sponsored by: Microsoft Added: stable/10/sys/dev/hyperv/input/ - copied from r316515, head/sys/dev/hyperv/input/ Modified: stable/10/sys/conf/files.amd64 stable/10/sys/dev/hyperv/input/hv_kbdc.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/conf/files.amd64 ============================================================================== --- stable/10/sys/conf/files.amd64 Wed Apr 19 03:43:24 2017 (r317123) +++ stable/10/sys/conf/files.amd64 Wed Apr 19 05:19:33 2017 (r317124) @@ -261,6 +261,8 @@ dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_tsc.c optional hwpmc dev/hwpmc/hwpmc_x86.c optional hwpmc +dev/hyperv/input/hv_kbd.c optional hyperv +dev/hyperv/input/hv_kbdc.c optional hyperv dev/hyperv/pcib/vmbus_pcib.c optional hyperv pci dev/hyperv/netvsc/hn_nvs.c optional hyperv dev/hyperv/netvsc/hn_rndis.c optional hyperv Modified: stable/10/sys/dev/hyperv/input/hv_kbdc.c ============================================================================== --- head/sys/dev/hyperv/input/hv_kbdc.c Wed Apr 5 05:01:23 2017 (r316515) +++ stable/10/sys/dev/hyperv/input/hv_kbdc.c Wed Apr 19 05:19:33 2017 (r317124) @@ -298,7 +298,6 @@ hv_kbd_read_channel(struct vmbus_channel int ret = 0; hv_kbd_sc *sc = (hv_kbd_sc*)context; - channel = vmbus_get_channel(sc->dev); buf = sc->buf; buflen = sc->buflen; for (;;) { From owner-svn-src-stable@freebsd.org Wed Apr 19 05:28:23 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F163AD451F5; Wed, 19 Apr 2017 05:28:22 +0000 (UTC) (envelope-from sephe@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 mx1.freebsd.org (Postfix) with ESMTPS id B393611FD; Wed, 19 Apr 2017 05:28:22 +0000 (UTC) (envelope-from sephe@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3J5SLt9005207; Wed, 19 Apr 2017 05:28:21 GMT (envelope-from sephe@FreeBSD.org) Received: (from sephe@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J5SLGs005205; Wed, 19 Apr 2017 05:28:21 GMT (envelope-from sephe@FreeBSD.org) Message-Id: <201704190528.v3J5SLGs005205@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sephe set sender to sephe@FreeBSD.org using -f From: Sepherosa Ziehau Date: Wed, 19 Apr 2017 05:28:21 +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: r317125 - in stable/10/sys/dev/hyperv: storvsc utilities X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 05:28:23 -0000 Author: sephe Date: Wed Apr 19 05:28:21 2017 New Revision: 317125 URL: https://svnweb.freebsd.org/changeset/base/317125 Log: MFC 316813,316815 316813 hyperv/storvsc: Use ULL for 64bits value shift. Reported by: PVS Sponsored by: Microsoft 316815 hyperv/kvp: Remove always false condition. Reported by: PVS Sponsored by: Microsoft Modified: stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c stable/10/sys/dev/hyperv/utilities/hv_kvp.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c ============================================================================== --- stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Wed Apr 19 05:19:33 2017 (r317124) +++ stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Wed Apr 19 05:28:21 2017 (r317125) @@ -1771,7 +1771,7 @@ storvsc_check_bounce_buffer_sgl(bus_dma_ } pre_aligned = TRUE; } else { - tmp_bits |= 1 << i; + tmp_bits |= 1ULL << i; if (!pre_aligned) { if (phys_addr != vtophys(sgl[i-1].ds_addr + sgl[i-1].ds_len)) { Modified: stable/10/sys/dev/hyperv/utilities/hv_kvp.c ============================================================================== --- stable/10/sys/dev/hyperv/utilities/hv_kvp.c Wed Apr 19 05:19:33 2017 (r317124) +++ stable/10/sys/dev/hyperv/utilities/hv_kvp.c Wed Apr 19 05:28:21 2017 (r317125) @@ -516,7 +516,7 @@ hv_kvp_convert_usermsg_to_hostmsg(struct /* Use values by string */ host_exchg_data->value_type = HV_REG_SZ; - if ((hkey_len < 0) || (hvalue_len < 0)) + if (hvalue_len < 0) return (EINVAL); return (0); From owner-svn-src-stable@freebsd.org Wed Apr 19 10:54:09 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C46C8D4477C; Wed, 19 Apr 2017 10:54:09 +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 mx1.freebsd.org (Postfix) with ESMTPS id 938921BD3; Wed, 19 Apr 2017 10:54:09 +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 v3JAs8hh039867; Wed, 19 Apr 2017 10:54:08 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JAs8Nh039866; Wed, 19 Apr 2017 10:54:08 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704191054.v3JAs8Nh039866@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 19 Apr 2017 10:54: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: r317130 - stable/11/lib/libc/gen X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 10:54:09 -0000 Author: kib Date: Wed Apr 19 10:54:08 2017 New Revision: 317130 URL: https://svnweb.freebsd.org/changeset/base/317130 Log: MFC r316739: Fix reporting of _SC_SEM_NSEMS_MAX and _SC_SEM_VALUE_MAX. Modified: stable/11/lib/libc/gen/sysconf.c Directory Properties: stable/11/ (props changed) Modified: stable/11/lib/libc/gen/sysconf.c ============================================================================== --- stable/11/lib/libc/gen/sysconf.c Wed Apr 19 09:07:04 2017 (r317129) +++ stable/11/lib/libc/gen/sysconf.c Wed Apr 19 10:54:08 2017 (r317130) @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include #include /* we just need the limits */ +#include #include #include #include "un-namespace.h" @@ -299,13 +300,9 @@ do_NAME_MAX: mib[1] = CTL_P1003_1B_RTSIG_MAX; goto yesno; case _SC_SEM_NSEMS_MAX: - mib[0] = CTL_P1003_1B; - mib[1] = CTL_P1003_1B_SEM_NSEMS_MAX; - goto yesno; + return (-1); case _SC_SEM_VALUE_MAX: - mib[0] = CTL_P1003_1B; - mib[1] = CTL_P1003_1B_SEM_VALUE_MAX; - goto yesno; + return (SEM_VALUE_MAX); case _SC_SIGQUEUE_MAX: mib[0] = CTL_P1003_1B; mib[1] = CTL_P1003_1B_SIGQUEUE_MAX; From owner-svn-src-stable@freebsd.org Wed Apr 19 10:57:58 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4E113D44978; Wed, 19 Apr 2017 10:57:58 +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 mx1.freebsd.org (Postfix) with ESMTPS id 1FBF11DBA; Wed, 19 Apr 2017 10:57:58 +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 v3JAvvTr040085; Wed, 19 Apr 2017 10:57:57 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JAvvpY040084; Wed, 19 Apr 2017 10:57:57 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704191057.v3JAvvpY040084@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 19 Apr 2017 10:57:57 +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: r317131 - stable/10/lib/libc/gen X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 10:57:58 -0000 Author: kib Date: Wed Apr 19 10:57:57 2017 New Revision: 317131 URL: https://svnweb.freebsd.org/changeset/base/317131 Log: MFC r316739: Fix reporting of _SC_SEM_NSEMS_MAX and _SC_SEM_VALUE_MAX. Modified: stable/10/lib/libc/gen/sysconf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/gen/sysconf.c ============================================================================== --- stable/10/lib/libc/gen/sysconf.c Wed Apr 19 10:54:08 2017 (r317130) +++ stable/10/lib/libc/gen/sysconf.c Wed Apr 19 10:57:57 2017 (r317131) @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$"); #include #include #include /* we just need the limits */ +#include #include #include @@ -298,13 +299,9 @@ do_NAME_MAX: mib[1] = CTL_P1003_1B_RTSIG_MAX; goto yesno; case _SC_SEM_NSEMS_MAX: - mib[0] = CTL_P1003_1B; - mib[1] = CTL_P1003_1B_SEM_NSEMS_MAX; - goto yesno; + return (-1); case _SC_SEM_VALUE_MAX: - mib[0] = CTL_P1003_1B; - mib[1] = CTL_P1003_1B_SEM_VALUE_MAX; - goto yesno; + return (SEM_VALUE_MAX); case _SC_SIGQUEUE_MAX: mib[0] = CTL_P1003_1B; mib[1] = CTL_P1003_1B_SIGQUEUE_MAX; From owner-svn-src-stable@freebsd.org Wed Apr 19 11:10:03 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B33F2D44E38; Wed, 19 Apr 2017 11:10:03 +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 mx1.freebsd.org (Postfix) with ESMTPS id 8E7C6936; Wed, 19 Apr 2017 11:10:03 +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 v3JBA2MK044734; Wed, 19 Apr 2017 11:10:02 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JBA29O044732; Wed, 19 Apr 2017 11:10:02 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704191110.v3JBA29O044732@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 19 Apr 2017 11:10: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: r317132 - stable/11/sys/fs/nfsclient X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 11:10:03 -0000 Author: kib Date: Wed Apr 19 11:10:02 2017 New Revision: 317132 URL: https://svnweb.freebsd.org/changeset/base/317132 Log: MFC r316529: Handle possible vnode reclamation after ncl_vinvalbuf() call. Modified: stable/11/sys/fs/nfsclient/nfs_clbio.c stable/11/sys/fs/nfsclient/nfs_clvnops.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/11/sys/fs/nfsclient/nfs_clbio.c Wed Apr 19 10:57:57 2017 (r317131) +++ stable/11/sys/fs/nfsclient/nfs_clbio.c Wed Apr 19 11:10:02 2017 (r317132) @@ -394,8 +394,8 @@ nfs_bioread_check_cons(struct vnode *vp, */ old_lock = ncl_upgrade_vnlock(vp); if (vp->v_iflag & VI_DOOMED) { - ncl_downgrade_vnlock(vp, old_lock); - return (EBADF); + error = EBADF; + goto out; } mtx_lock(&np->n_mtx); @@ -406,7 +406,9 @@ nfs_bioread_check_cons(struct vnode *vp, panic("nfs: bioread, not dir"); ncl_invaldir(vp); error = ncl_vinvalbuf(vp, V_SAVE, td, 1); - if (error) + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + error = EBADF; + if (error != 0) goto out; } np->n_attrstamp = 0; @@ -429,7 +431,9 @@ nfs_bioread_check_cons(struct vnode *vp, if (vp->v_type == VDIR) ncl_invaldir(vp); error = ncl_vinvalbuf(vp, V_SAVE, td, 1); - if (error) + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + error = EBADF; + if (error != 0) goto out; mtx_lock(&np->n_mtx); np->n_mtime = vattr.va_mtime; @@ -439,7 +443,7 @@ nfs_bioread_check_cons(struct vnode *vp, } out: ncl_downgrade_vnlock(vp, old_lock); - return error; + return (error); } /* @@ -623,6 +627,9 @@ ncl_bioread(struct vnode *vp, struct uio while (error == NFSERR_BAD_COOKIE) { ncl_invaldir(vp); error = ncl_vinvalbuf(vp, 0, td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + return (EBADF); + /* * Yuck! The directory has been modified on the * server. The only way to get the block is by @@ -943,8 +950,11 @@ ncl_write(struct vop_write_args *ap) #endif np->n_attrstamp = 0; KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); - error = ncl_vinvalbuf(vp, V_SAVE, td, 1); - if (error) + error = ncl_vinvalbuf(vp, V_SAVE | ((ioflag & + IO_VMIO) != 0 ? V_VMIO : 0), td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + error = EBADF; + if (error != 0) return (error); } else mtx_unlock(&np->n_mtx); @@ -1023,8 +1033,12 @@ ncl_write(struct vop_write_args *ap) if (wouldcommit > nmp->nm_wcommitsize) { np->n_attrstamp = 0; KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); - error = ncl_vinvalbuf(vp, V_SAVE, td, 1); - if (error) + error = ncl_vinvalbuf(vp, V_SAVE | ((ioflag & + IO_VMIO) != 0 ? V_VMIO : 0), td, 1); + if (error == 0 && + (vp->v_iflag & VI_DOOMED) != 0) + error = EBADF; + if (error != 0) return (error); wouldcommit = biosize; } Modified: stable/11/sys/fs/nfsclient/nfs_clvnops.c ============================================================================== --- stable/11/sys/fs/nfsclient/nfs_clvnops.c Wed Apr 19 10:57:57 2017 (r317131) +++ stable/11/sys/fs/nfsclient/nfs_clvnops.c Wed Apr 19 11:10:02 2017 (r317132) @@ -520,6 +520,8 @@ nfs_open(struct vop_open_args *ap) if (np->n_flag & NMODIFIED) { mtx_unlock(&np->n_mtx); error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + return (EBADF); if (error == EINTR || error == EIO) { if (NFS_ISV4(vp)) (void) nfsrpc_close(vp, 0, ap->a_td); @@ -556,6 +558,8 @@ nfs_open(struct vop_open_args *ap) np->n_direofoffset = 0; mtx_unlock(&np->n_mtx); error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + return (EBADF); if (error == EINTR || error == EIO) { if (NFS_ISV4(vp)) (void) nfsrpc_close(vp, 0, ap->a_td); @@ -576,6 +580,8 @@ nfs_open(struct vop_open_args *ap) if (np->n_directio_opens == 0) { mtx_unlock(&np->n_mtx); error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + return (EBADF); if (error) { if (NFS_ISV4(vp)) (void) nfsrpc_close(vp, 0, ap->a_td); @@ -714,8 +720,11 @@ nfs_close(struct vop_close_args *ap) * np->n_flag &= ~NMODIFIED; */ } - } else - error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1); + } else { + error = ncl_vinvalbuf(vp, V_SAVE, ap->a_td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + return (EBADF); + } mtx_lock(&np->n_mtx); } /* @@ -931,13 +940,13 @@ nfs_setattr(struct vop_setattr_args *ap) if (np->n_flag & NMODIFIED) { tsize = np->n_size; mtx_unlock(&np->n_mtx); - if (vap->va_size == 0) - error = ncl_vinvalbuf(vp, 0, td, 1); - else - error = ncl_vinvalbuf(vp, V_SAVE, td, 1); - if (error) { - vnode_pager_setsize(vp, tsize); - return (error); + error = ncl_vinvalbuf(vp, vap->va_size == 0 ? + 0 : V_SAVE, td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + error = EBADF; + if (error != 0) { + vnode_pager_setsize(vp, tsize); + return (error); } /* * Call nfscl_delegmodtime() to set the modify time @@ -961,8 +970,10 @@ nfs_setattr(struct vop_setattr_args *ap) if ((vap->va_mtime.tv_sec != VNOVAL || vap->va_atime.tv_sec != VNOVAL) && (np->n_flag & NMODIFIED) && vp->v_type == VREG) { mtx_unlock(&np->n_mtx); - if ((error = ncl_vinvalbuf(vp, V_SAVE, td, 1)) != 0 && - (error == EINTR || error == EIO)) + error = ncl_vinvalbuf(vp, V_SAVE, td, 1); + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + return (EBADF); + if (error == EINTR || error == EIO) return (error); } else mtx_unlock(&np->n_mtx); @@ -1665,8 +1676,10 @@ nfs_remove(struct vop_remove_args *ap) * unnecessary delayed writes later. */ error = ncl_vinvalbuf(vp, 0, cnp->cn_thread, 1); - /* Do the rpc */ - if (error != EINTR && error != EIO) + if (error == 0 && (vp->v_iflag & VI_DOOMED) != 0) + error = EBADF; + else if (error != EINTR && error != EIO) + /* Do the rpc */ error = nfs_removerpc(dvp, vp, cnp->cn_nameptr, cnp->cn_namelen, cnp->cn_cred, cnp->cn_thread); /* @@ -3055,6 +3068,10 @@ nfs_advlock(struct vop_advlock_args *ap) if ((np->n_flag & NMODIFIED) || ret || np->n_change != va.va_filerev) { (void) ncl_vinvalbuf(vp, V_SAVE, td, 1); + if ((vp->v_iflag & VI_DOOMED) != 0) { + NFSVOPUNLOCK(vp, 0); + return (EBADF); + } np->n_attrstamp = 0; KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); ret = VOP_GETATTR(vp, &va, cred); From owner-svn-src-stable@freebsd.org Wed Apr 19 11:11:52 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C0736D44EC4; Wed, 19 Apr 2017 11:11:52 +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 mx1.freebsd.org (Postfix) with ESMTPS id 923FDCB3; Wed, 19 Apr 2017 11:11:52 +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 v3JBBpps048357; Wed, 19 Apr 2017 11:11:51 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JBBp00048356; Wed, 19 Apr 2017 11:11:51 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704191111.v3JBBp00048356@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 19 Apr 2017 11:11:51 +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: r317133 - stable/11/sys/fs/nfsclient X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 11:11:52 -0000 Author: kib Date: Wed Apr 19 11:11:51 2017 New Revision: 317133 URL: https://svnweb.freebsd.org/changeset/base/317133 Log: MFC r316531: Handle nfs IO_ASYNC write requests asynchronously. Modified: stable/11/sys/fs/nfsclient/nfs_clbio.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/11/sys/fs/nfsclient/nfs_clbio.c Wed Apr 19 11:10:02 2017 (r317132) +++ stable/11/sys/fs/nfsclient/nfs_clbio.c Wed Apr 19 11:11:51 2017 (r317133) @@ -1275,7 +1275,7 @@ again: error = error1; break; } - } else if ((n + on) == biosize) { + } else if ((n + on) == biosize || (ioflag & IO_ASYNC) != 0) { bp->b_flags |= B_ASYNC; (void) ncl_writebp(bp, 0, NULL); } else { From owner-svn-src-stable@freebsd.org Wed Apr 19 11:13:33 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C4D38D450AC; Wed, 19 Apr 2017 11:13:33 +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 mx1.freebsd.org (Postfix) with ESMTPS id 7DC2EEC3; Wed, 19 Apr 2017 11:13:33 +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 v3JBDW4Y048467; Wed, 19 Apr 2017 11:13:32 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JBDWcK048466; Wed, 19 Apr 2017 11:13:32 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704191113.v3JBDWcK048466@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 19 Apr 2017 11:13: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: r317134 - stable/11/sys/fs/nfsclient X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 11:13:33 -0000 Author: kib Date: Wed Apr 19 11:13:32 2017 New Revision: 317134 URL: https://svnweb.freebsd.org/changeset/base/317134 Log: MFC r316532: Make nfs pageout coherent with the dirty state of the buffers. Modified: stable/11/sys/fs/nfsclient/nfs_clbio.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/11/sys/fs/nfsclient/nfs_clbio.c Wed Apr 19 11:11:51 2017 (r317133) +++ stable/11/sys/fs/nfsclient/nfs_clbio.c Wed Apr 19 11:13:32 2017 (r317134) @@ -266,9 +266,7 @@ ncl_putpages(struct vop_putpages_args *a { struct uio uio; struct iovec iov; - vm_offset_t kva; - struct buf *bp; - int iomode, must_commit, i, error, npages, count; + int i, error, npages, count; off_t offset; int *rtvals; struct vnode *vp; @@ -322,44 +320,26 @@ ncl_putpages(struct vop_putpages_args *a } mtx_unlock(&np->n_mtx); - /* - * We use only the kva address for the buffer, but this is extremely - * convenient and fast. - */ - bp = getpbuf(&ncl_pbuf_freecnt); - - kva = (vm_offset_t) bp->b_data; - pmap_qenter(kva, pages, npages); PCPU_INC(cnt.v_vnodeout); PCPU_ADD(cnt.v_vnodepgsout, count); - iov.iov_base = (caddr_t) kva; + iov.iov_base = unmapped_buf; iov.iov_len = count; uio.uio_iov = &iov; uio.uio_iovcnt = 1; uio.uio_offset = offset; uio.uio_resid = count; - uio.uio_segflg = UIO_SYSSPACE; + uio.uio_segflg = UIO_NOCOPY; uio.uio_rw = UIO_WRITE; uio.uio_td = td; - if ((ap->a_sync & VM_PAGER_PUT_SYNC) == 0) - iomode = NFSWRITE_UNSTABLE; - else - iomode = NFSWRITE_FILESYNC; - - error = ncl_writerpc(vp, &uio, cred, &iomode, &must_commit, 0); + error = VOP_WRITE(vp, &uio, vnode_pager_putpages_ioflags(ap->a_sync), + cred); crfree(cred); - pmap_qremove(kva, npages); - relpbuf(bp, &ncl_pbuf_freecnt); - - if (error == 0 || !nfs_keep_dirty_on_error) { + if (error == 0 || !nfs_keep_dirty_on_error) vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid); - if (must_commit) - ncl_clearcommit(vp->v_mount); - } - return rtvals[0]; + return (rtvals[0]); } /* @@ -1385,7 +1365,8 @@ ncl_vinvalbuf(struct vnode *vp, int flag /* * Now, flush as required. */ - if ((flags & V_SAVE) && (vp->v_bufobj.bo_object != NULL)) { + if ((flags & (V_SAVE | V_VMIO)) == V_SAVE && + vp->v_bufobj.bo_object != NULL) { VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); From owner-svn-src-stable@freebsd.org Wed Apr 19 14:07:36 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A4953D45A77; Wed, 19 Apr 2017 14:07:36 +0000 (UTC) (envelope-from andrew@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 mx1.freebsd.org (Postfix) with ESMTPS id 5592E660; Wed, 19 Apr 2017 14:07:36 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3JE7Z8F018627; Wed, 19 Apr 2017 14:07:35 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JE7Zuu018624; Wed, 19 Apr 2017 14:07:35 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201704191407.v3JE7Zuu018624@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Wed, 19 Apr 2017 14:07:35 +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: r317140 - in stable/11: share/mk sys/boot/efi sys/boot/efi/loader/arch/arm64 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 14:07:36 -0000 Author: andrew Date: Wed Apr 19 14:07:35 2017 New Revision: 317140 URL: https://svnweb.freebsd.org/changeset/base/317140 Log: Fix the arm64 userland building with lld: MFC 308124: On arm64 build the efi loader with -fPIC. Without this clang 3.9 will generate relocation in the self relocation code. MFC 316608: Add -fPIC to the standalone build flags on arm64. This is needed as loader.efi is position independend, however we were not building it as such causing a build failure when building with lld. MFC 315452: Mark the EFI PE header as allocated. While ld.bfd doesn't seem to care about not having this flag ld.lld fails to link without it. Modified: stable/11/share/mk/bsd.stand.mk stable/11/sys/boot/efi/Makefile.inc stable/11/sys/boot/efi/loader/arch/arm64/start.S Directory Properties: stable/11/ (props changed) Modified: stable/11/share/mk/bsd.stand.mk ============================================================================== --- stable/11/share/mk/bsd.stand.mk Wed Apr 19 13:24:32 2017 (r317139) +++ stable/11/share/mk/bsd.stand.mk Wed Apr 19 14:07:35 2017 (r317140) @@ -17,7 +17,7 @@ CFLAGS+= -fPIC -mno-red-zone CFLAGS+= -Os .endif .if ${MACHINE_CPUARCH} == "aarch64" -CFLAGS+= -mgeneral-regs-only +CFLAGS+= -fPIC -mgeneral-regs-only .endif .if ${MACHINE_CPUARCH} == "mips" CFLAGS+= -G0 -fno-pic -mno-abicalls Modified: stable/11/sys/boot/efi/Makefile.inc ============================================================================== --- stable/11/sys/boot/efi/Makefile.inc Wed Apr 19 13:24:32 2017 (r317139) +++ stable/11/sys/boot/efi/Makefile.inc Wed Apr 19 14:07:35 2017 (r317140) @@ -20,6 +20,7 @@ CFLAGS+= -mno-aes .if ${MACHINE_CPUARCH} == "aarch64" CFLAGS+= -fshort-wchar +CFLAGS+= -fPIC .endif .if ${MACHINE_CPUARCH} == "arm" Modified: stable/11/sys/boot/efi/loader/arch/arm64/start.S ============================================================================== --- stable/11/sys/boot/efi/loader/arch/arm64/start.S Wed Apr 19 13:24:32 2017 (r317139) +++ stable/11/sys/boot/efi/loader/arch/arm64/start.S Wed Apr 19 14:07:35 2017 (r317140) @@ -40,7 +40,7 @@ #define IMAGE_SCN_MEM_EXECUTE 0x20000000 #define IMAGE_SCN_MEM_READ 0x40000000 - .section .peheader + .section .peheader,"a" efi_start: /* The MS-DOS Stub, only used to get the offset of the COFF header */ .ascii "MZ" From owner-svn-src-stable@freebsd.org Wed Apr 19 15:33:26 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A95B0D467D8; Wed, 19 Apr 2017 15:33:26 +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 mx1.freebsd.org (Postfix) with ESMTPS id 8643B165C; Wed, 19 Apr 2017 15:33:26 +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 v3JFXPwk065546; Wed, 19 Apr 2017 15:33:25 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JFXOHk065533; Wed, 19 Apr 2017 15:33:24 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201704191533.v3JFXOHk065533@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Wed, 19 Apr 2017 15:33:24 +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: r317145 - in stable/11/sys: boot/mips/uboot conf X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 15:33:26 -0000 Author: emaste Date: Wed Apr 19 15:33:24 2017 New Revision: 317145 URL: https://svnweb.freebsd.org/changeset/base/317145 Log: MFC r303442, r305343: remove CONSTRUCTORS from linker scripts r303442: remove CONSTRUCTORS from kernel linker scripts r305343: remove CONSTRUCTORS from MIPS uboot linker script The linker script CONSTRUCTORS keyword is only meaningful "when linking object file formats which do not support arbitrary sections, such as ECOFF and XCOFF"[1] and is ignored for other object file formats. LLVM's lld does not yet accept (and ignore) CONSTRUCTORS, so just remove CONSTRUCTORS from the linker script as it has no effect. [1] https://sourceware.org/binutils/docs/ld/Output-Section-Keywords.html Reported by: andrew Sponsored by: The FreeBSD Foundation Modified: stable/11/sys/boot/mips/uboot/ldscript.mips stable/11/sys/conf/ldscript.amd64 stable/11/sys/conf/ldscript.arm stable/11/sys/conf/ldscript.arm64 stable/11/sys/conf/ldscript.i386 stable/11/sys/conf/ldscript.mips stable/11/sys/conf/ldscript.mips.cfe stable/11/sys/conf/ldscript.mips.mips64 stable/11/sys/conf/ldscript.mips.octeon1 stable/11/sys/conf/ldscript.powerpc stable/11/sys/conf/ldscript.powerpc64 stable/11/sys/conf/ldscript.riscv stable/11/sys/conf/ldscript.sparc64 Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/boot/mips/uboot/ldscript.mips ============================================================================== --- stable/11/sys/boot/mips/uboot/ldscript.mips Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/boot/mips/uboot/ldscript.mips Wed Apr 19 15:33:24 2017 (r317145) @@ -55,7 +55,6 @@ SECTIONS { *(.data) *(.gnu.linkonce.d*) - CONSTRUCTORS } .data1 : { *(.data1) } .got1 : { *(.got1) } Modified: stable/11/sys/conf/ldscript.amd64 ============================================================================== --- stable/11/sys/conf/ldscript.amd64 Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.amd64 Wed Apr 19 15:33:24 2017 (r317145) @@ -160,7 +160,6 @@ SECTIONS { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); Modified: stable/11/sys/conf/ldscript.arm ============================================================================== --- stable/11/sys/conf/ldscript.arm Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.arm Wed Apr 19 15:33:24 2017 (r317145) @@ -76,7 +76,6 @@ SECTIONS { *(.data) *(.gnu.linkonce.d*) - CONSTRUCTORS } .data1 : { *(.data1) } . = ALIGN(32 / 8); Modified: stable/11/sys/conf/ldscript.arm64 ============================================================================== --- stable/11/sys/conf/ldscript.arm64 Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.arm64 Wed Apr 19 15:33:24 2017 (r317145) @@ -76,7 +76,6 @@ SECTIONS { *(.data) *(.gnu.linkonce.d*) - CONSTRUCTORS } .data1 : { *(.data1) } . = ALIGN(32 / 8); Modified: stable/11/sys/conf/ldscript.i386 ============================================================================== --- stable/11/sys/conf/ldscript.i386 Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.i386 Wed Apr 19 15:33:24 2017 (r317145) @@ -137,7 +137,6 @@ SECTIONS { *(.data .data.* .gnu.linkonce.d.*) KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) } .data1 : { *(.data1) } _edata = .; PROVIDE (edata = .); Modified: stable/11/sys/conf/ldscript.mips ============================================================================== --- stable/11/sys/conf/ldscript.mips Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.mips Wed Apr 19 15:33:24 2017 (r317145) @@ -184,7 +184,6 @@ SECTIONS *(.data) *(.data.*) *(.gnu.linkonce.d.*) - SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .eh_frame : { KEEP (*(.eh_frame)) } Modified: stable/11/sys/conf/ldscript.mips.cfe ============================================================================== --- stable/11/sys/conf/ldscript.mips.cfe Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.mips.cfe Wed Apr 19 15:33:24 2017 (r317145) @@ -201,7 +201,6 @@ SECTIONS *(.data) *(.data.*) *(.gnu.linkonce.d.*) - SORT(CONSTRUCTORS) } :data .data1 : { *(.data1) } .eh_frame : { KEEP (*(.eh_frame)) } Modified: stable/11/sys/conf/ldscript.mips.mips64 ============================================================================== --- stable/11/sys/conf/ldscript.mips.mips64 Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.mips.mips64 Wed Apr 19 15:33:24 2017 (r317145) @@ -185,7 +185,6 @@ SECTIONS *(.data) *(.data.*) *(.gnu.linkonce.d.*) - SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .eh_frame : { KEEP (*(.eh_frame)) } Modified: stable/11/sys/conf/ldscript.mips.octeon1 ============================================================================== --- stable/11/sys/conf/ldscript.mips.octeon1 Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.mips.octeon1 Wed Apr 19 15:33:24 2017 (r317145) @@ -28,7 +28,6 @@ SECTIONS { _rwdata = .; *(.data) . = ALIGN(32); - CONSTRUCTORS; } _gp = (. + 0x8000); Modified: stable/11/sys/conf/ldscript.powerpc ============================================================================== --- stable/11/sys/conf/ldscript.powerpc Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.powerpc Wed Apr 19 15:33:24 2017 (r317145) @@ -63,7 +63,6 @@ SECTIONS { *(.data) *(.gnu.linkonce.d*) - CONSTRUCTORS } .data1 : { *(.data1) } .got1 : { *(.got1) } Modified: stable/11/sys/conf/ldscript.powerpc64 ============================================================================== --- stable/11/sys/conf/ldscript.powerpc64 Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.powerpc64 Wed Apr 19 15:33:24 2017 (r317145) @@ -63,7 +63,6 @@ SECTIONS { *(.data) *(.gnu.linkonce.d*) - CONSTRUCTORS } .data1 : { *(.data1) } .toc1 : ALIGN(8) { *(.toc1) } Modified: stable/11/sys/conf/ldscript.riscv ============================================================================== --- stable/11/sys/conf/ldscript.riscv Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.riscv Wed Apr 19 15:33:24 2017 (r317145) @@ -63,7 +63,6 @@ SECTIONS { *(.data) *(.gnu.linkonce.d*) - CONSTRUCTORS } .data1 : { *(.data1) } . = ALIGN(32 / 8); Modified: stable/11/sys/conf/ldscript.sparc64 ============================================================================== --- stable/11/sys/conf/ldscript.sparc64 Wed Apr 19 15:24:33 2017 (r317144) +++ stable/11/sys/conf/ldscript.sparc64 Wed Apr 19 15:33:24 2017 (r317145) @@ -154,7 +154,6 @@ SECTIONS *(.data) *(.data.*) *(.gnu.linkonce.d.*) - SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .eh_frame : { KEEP (*(.eh_frame)) } From owner-svn-src-stable@freebsd.org Wed Apr 19 15:46:36 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 09509D46B76; Wed, 19 Apr 2017 15:46:36 +0000 (UTC) (envelope-from andrew@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 mx1.freebsd.org (Postfix) with ESMTPS id CF1E41D22; Wed, 19 Apr 2017 15:46:35 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3JFkYfR069895; Wed, 19 Apr 2017 15:46:34 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JFkYIb069894; Wed, 19 Apr 2017 15:46:34 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201704191546.v3JFkYIb069894@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Wed, 19 Apr 2017 15:46:34 +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: r317146 - stable/11/sys/conf X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 15:46:36 -0000 Author: andrew Date: Wed Apr 19 15:46:34 2017 New Revision: 317146 URL: https://svnweb.freebsd.org/changeset/base/317146 Log: MFC 305355: Explicitly include all .rodata.* sections in the kernel .rodata. This helps link the kernel with lld as it will then put all these into a single .rodata section. Modified: stable/11/sys/conf/ldscript.arm64 Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/ldscript.arm64 ============================================================================== --- stable/11/sys/conf/ldscript.arm64 Wed Apr 19 15:33:24 2017 (r317145) +++ stable/11/sys/conf/ldscript.arm64 Wed Apr 19 15:46:34 2017 (r317146) @@ -18,7 +18,7 @@ SECTIONS _etext = .; PROVIDE (etext = .); .fini : { *(.fini) } =0x9090 - .rodata : { *(.rodata) *(.gnu.linkonce.r*) } + .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } .rodata1 : { *(.rodata1) } .interp : { *(.interp) } .hash : { *(.hash) } From owner-svn-src-stable@freebsd.org Wed Apr 19 15:59:17 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E9BD0D45176; Wed, 19 Apr 2017 15:59:17 +0000 (UTC) (envelope-from andrew@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 mx1.freebsd.org (Postfix) with ESMTPS id BB1BAA98; Wed, 19 Apr 2017 15:59:17 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3JFxGHw074683; Wed, 19 Apr 2017 15:59:16 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JFxGIC074682; Wed, 19 Apr 2017 15:59:16 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201704191559.v3JFxGIC074682@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Wed, 19 Apr 2017 15:59:16 +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: r317147 - stable/11/sys/arm64/arm64 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 15:59:18 -0000 Author: andrew Date: Wed Apr 19 15:59:16 2017 New Revision: 317147 URL: https://svnweb.freebsd.org/changeset/base/317147 Log: MFC 313772: Load the new sp_el0 with interrupts disabled in fork_trampoline. If an interrupt arrives in fork_trampoline after sp_el0 was written we may then switch to a new thread, enter userland so change this stack pointer, then return to this code with the wrong value. This fixes this case by moving the load of sp_el0 until after interrupts have been disabled. Modified: stable/11/sys/arm64/arm64/swtch.S Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/arm64/arm64/swtch.S ============================================================================== --- stable/11/sys/arm64/arm64/swtch.S Wed Apr 19 15:46:34 2017 (r317146) +++ stable/11/sys/arm64/arm64/swtch.S Wed Apr 19 15:59:16 2017 (r317147) @@ -241,11 +241,6 @@ ENTRY(fork_trampoline) mov fp, #0 /* Stack traceback stops here. */ bl _C_LABEL(fork_exit) - /* Restore sp and lr */ - ldp x0, x1, [sp] - msr sp_el0, x0 - mov lr, x1 - /* Restore the registers other than x0 and x1 */ ldp x2, x3, [sp, #TF_X + 2 * 8] ldp x4, x5, [sp, #TF_X + 4 * 8] @@ -261,14 +256,18 @@ ENTRY(fork_trampoline) ldp x24, x25, [sp, #TF_X + 24 * 8] ldp x26, x27, [sp, #TF_X + 26 * 8] ldp x28, x29, [sp, #TF_X + 28 * 8] - /* Skip x30 as it was restored above as lr */ /* * Disable interrupts to avoid - * overwriting spsr_el1 by an IRQ exception. + * overwriting spsr_el1 and sp_el0 by an IRQ exception. */ msr daifset, #2 + /* Restore sp and lr */ + ldp x0, x1, [sp] + msr sp_el0, x0 + mov lr, x1 + /* Restore elr and spsr */ ldp x0, x1, [sp, #16] msr elr_el1, x0 From owner-svn-src-stable@freebsd.org Wed Apr 19 16:16:43 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 52E3DD458C1; Wed, 19 Apr 2017 16:16:43 +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 mx1.freebsd.org (Postfix) with ESMTPS id 21BED1967; Wed, 19 Apr 2017 16:16:43 +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 v3JGGgYD082809; Wed, 19 Apr 2017 16:16:42 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JGGfun082801; Wed, 19 Apr 2017 16:16:41 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201704191616.v3JGGfun082801@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 19 Apr 2017 16:16: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: r317149 - in stable/11: sys/conf sys/libkern sys/libkern/x86 sys/sys tests/sys/kern X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 16:16:43 -0000 Author: markj Date: Wed Apr 19 16:16:41 2017 New Revision: 317149 URL: https://svnweb.freebsd.org/changeset/base/317149 Log: MFC r313006 (by cem), r315983 (by bde): Add an SSE4.2 implementation of crc32 for x86. Added: stable/11/sys/libkern/x86/ - copied from r313006, head/sys/libkern/x86/ stable/11/tests/sys/kern/libkern_crc32.c - copied unchanged from r313006, head/tests/sys/kern/libkern_crc32.c Modified: stable/11/sys/conf/files.amd64 stable/11/sys/conf/files.i386 stable/11/sys/libkern/crc32.c stable/11/sys/libkern/x86/crc32_sse42.c stable/11/sys/sys/libkern.h stable/11/tests/sys/kern/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/files.amd64 ============================================================================== --- stable/11/sys/conf/files.amd64 Wed Apr 19 16:12:02 2017 (r317148) +++ stable/11/sys/conf/files.amd64 Wed Apr 19 16:16:41 2017 (r317149) @@ -552,6 +552,9 @@ isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/kern_clocksource.c standard kern/link_elf_obj.c standard +libkern/x86/crc32_sse42.c standard +libkern/memmove.c standard +libkern/memset.c standard # # IA32 binary support # @@ -609,9 +612,6 @@ compat/ndis/subr_pe.c optional ndisapi compat/ndis/subr_usbd.c optional ndisapi pci compat/ndis/winx64_wrap.S optional ndisapi pci # -libkern/memmove.c standard -libkern/memset.c standard -# # x86 real mode BIOS emulator, required by dpms/pci/vesa # compat/x86bios/x86bios.c optional x86bios | dpms | pci | vesa Modified: stable/11/sys/conf/files.i386 ============================================================================== --- stable/11/sys/conf/files.i386 Wed Apr 19 16:12:02 2017 (r317148) +++ stable/11/sys/conf/files.i386 Wed Apr 19 16:16:41 2017 (r317149) @@ -564,6 +564,7 @@ libkern/qdivrem.c standard libkern/ucmpdi2.c standard libkern/udivdi3.c standard libkern/umoddi3.c standard +libkern/x86/crc32_sse42.c standard i386/xbox/xbox.c optional xbox i386/xbox/xboxfb.c optional xboxfb dev/fb/boot_font.c optional xboxfb Modified: stable/11/sys/libkern/crc32.c ============================================================================== --- stable/11/sys/libkern/crc32.c Wed Apr 19 16:12:02 2017 (r317148) +++ stable/11/sys/libkern/crc32.c Wed Apr 19 16:16:41 2017 (r317149) @@ -46,8 +46,14 @@ __FBSDID("$FreeBSD$"); #include +#include #include +#if defined(__amd64__) || defined(__i386__) +#include +#include +#endif + const uint32_t crc32_tab[] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, @@ -749,6 +755,11 @@ calculate_crc32c(uint32_t crc32c, const unsigned char *buffer, unsigned int length) { +#if defined(__amd64__) || defined(__i386__) + if ((cpu_feature2 & CPUID2_SSE42) != 0) { + return (sse42_crc32c(crc32c, buffer, length)); + } else +#endif if (length < 4) { return (singletable_crc32c(crc32c, buffer, length)); } else { Modified: stable/11/sys/libkern/x86/crc32_sse42.c ============================================================================== --- head/sys/libkern/x86/crc32_sse42.c Tue Jan 31 03:26:32 2017 (r313006) +++ stable/11/sys/libkern/x86/crc32_sse42.c Wed Apr 19 16:16:41 2017 (r317149) @@ -31,14 +31,40 @@ __FBSDID("$FreeBSD$"); */ #ifdef USERSPACE_TESTING #include +#include #else #include -#include -#include #include +#include #endif -#include +static __inline uint32_t +_mm_crc32_u8(uint32_t x, uint8_t y) +{ + /* + * clang (at least 3.9.[0-1]) pessimizes "rm" (y) and "m" (y) + * significantly and "r" (y) a lot by copying y to a different + * local variable (on the stack or in a register), so only use + * the latter. This costs a register and an instruction but + * not a uop. + */ + __asm("crc32b %1,%0" : "+r" (x) : "r" (y)); + return (x); +} + +static __inline uint32_t +_mm_crc32_u32(uint32_t x, uint32_t y) +{ + __asm("crc32l %1,%0" : "+r" (x) : "r" (y)); + return (x); +} + +static __inline uint64_t +_mm_crc32_u64(uint64_t x, uint64_t y) +{ + __asm("crc32q %1,%0" : "+r" (x) : "r" (y)); + return (x); +} /* CRC-32C (iSCSI) polynomial in reversed bit order. */ #define POLY 0x82f63b78 @@ -47,12 +73,18 @@ __FBSDID("$FreeBSD$"); * Block sizes for three-way parallel crc computation. LONG and SHORT must * both be powers of two. */ -#define LONG 8192 -#define SHORT 256 +#define LONG 128 +#define SHORT 64 -/* Tables for hardware crc that shift a crc by LONG and SHORT zeros. */ +/* + * Tables for updating a crc for LONG, 2 * LONG, SHORT and 2 * SHORT bytes + * of value 0 later in the input stream, in the same way that the hardware + * would, but in software without calculating intermediate steps. + */ static uint32_t crc32c_long[4][256]; +static uint32_t crc32c_2long[4][256]; static uint32_t crc32c_short[4][256]; +static uint32_t crc32c_2short[4][256]; /* * Multiply a matrix times a vector over the Galois field of two elements, @@ -171,7 +203,9 @@ __attribute__((__constructor__)) crc32c_init_hw(void) { crc32c_zeros(crc32c_long, LONG); + crc32c_zeros(crc32c_2long, 2 * LONG); crc32c_zeros(crc32c_short, SHORT); + crc32c_zeros(crc32c_2short, 2 * SHORT); } #ifdef _KERNEL SYSINIT(crc32c_sse42, SI_SUB_LOCK, SI_ORDER_ANY, crc32c_init_hw, NULL); @@ -190,7 +224,11 @@ sse42_crc32c(uint32_t crc, const unsigne const size_t align = 4; #endif const unsigned char *next, *end; - uint64_t crc0, crc1, crc2; /* need to be 64 bits for crc32q */ +#ifdef __amd64__ + uint64_t crc0, crc1, crc2; +#else + uint32_t crc0, crc1, crc2; +#endif next = buf; crc0 = crc; @@ -202,6 +240,7 @@ sse42_crc32c(uint32_t crc, const unsigne len--; } +#if LONG > SHORT /* * Compute the crc on sets of LONG*3 bytes, executing three independent * crc instructions, each on LONG bytes -- this is optimized for the @@ -209,6 +248,7 @@ sse42_crc32c(uint32_t crc, const unsigne * have a throughput of one crc per cycle, but a latency of three * cycles. */ + crc = 0; while (len >= LONG * 3) { crc1 = 0; crc2 = 0; @@ -229,16 +269,64 @@ sse42_crc32c(uint32_t crc, const unsigne #endif next += align; } while (next < end); - crc0 = crc32c_shift(crc32c_long, crc0) ^ crc1; - crc0 = crc32c_shift(crc32c_long, crc0) ^ crc2; + /*- + * Update the crc. Try to do it in parallel with the inner + * loop. 'crc' is used to accumulate crc0 and crc1 + * produced by the inner loop so that the next iteration + * of the loop doesn't depend on anything except crc2. + * + * The full expression for the update is: + * crc = S*S*S*crc + S*S*crc0 + S*crc1 + * where the terms are polynomials modulo the CRC polynomial. + * We regroup this subtly as: + * crc = S*S * (S*crc + crc0) + S*crc1. + * This has an extra dependency which reduces possible + * parallelism for the expression, but it turns out to be + * best to intentionally delay evaluation of this expression + * so that it competes less with the inner loop. + * + * We also intentionally reduce parallelism by feedng back + * crc2 to the inner loop as crc0 instead of accumulating + * it in crc. This synchronizes the loop with crc update. + * CPU and/or compiler schedulers produced bad order without + * this. + * + * Shifts take about 12 cycles each, so 3 here with 2 + * parallelizable take about 24 cycles and the crc update + * takes slightly longer. 8 dependent crc32 instructions + * can run in 24 cycles, so the 3-way blocking is worse + * than useless for sizes less than 8 * = 64 + * on amd64. In practice, SHORT = 32 confirms these + * timing calculations by giving a small improvement + * starting at size 96. Then the inner loop takes about + * 12 cycles and the crc update about 24, but these are + * partly in parallel so the total time is less than the + * 36 cycles that 12 dependent crc32 instructions would + * take. + * + * To have a chance of completely hiding the overhead for + * the crc update, the inner loop must take considerably + * longer than 24 cycles. LONG = 64 makes the inner loop + * take about 24 cycles, so is not quite large enough. + * LONG = 128 works OK. Unhideable overheads are about + * 12 cycles per inner loop. All assuming timing like + * Haswell. + */ + crc = crc32c_shift(crc32c_long, crc) ^ crc0; + crc1 = crc32c_shift(crc32c_long, crc1); + crc = crc32c_shift(crc32c_2long, crc) ^ crc1; + crc0 = crc2; next += LONG * 2; len -= LONG * 3; } + crc0 ^= crc; +#endif /* LONG > SHORT */ /* * Do the same thing, but now on SHORT*3 blocks for the remaining data * less than a LONG*3 block */ + crc = 0; while (len >= SHORT * 3) { crc1 = 0; crc2 = 0; @@ -259,11 +347,14 @@ sse42_crc32c(uint32_t crc, const unsigne #endif next += align; } while (next < end); - crc0 = crc32c_shift(crc32c_short, crc0) ^ crc1; - crc0 = crc32c_shift(crc32c_short, crc0) ^ crc2; + crc = crc32c_shift(crc32c_short, crc) ^ crc0; + crc1 = crc32c_shift(crc32c_short, crc1); + crc = crc32c_shift(crc32c_2short, crc) ^ crc1; + crc0 = crc2; next += SHORT * 2; len -= SHORT * 3; } + crc0 ^= crc; /* Compute the crc on the remaining bytes at native word size. */ end = next + (len - (len & (align - 1))); Modified: stable/11/sys/sys/libkern.h ============================================================================== --- stable/11/sys/sys/libkern.h Wed Apr 19 16:12:02 2017 (r317148) +++ stable/11/sys/sys/libkern.h Wed Apr 19 16:16:41 2017 (r317149) @@ -178,6 +178,11 @@ crc32(const void *buf, size_t size) uint32_t calculate_crc32c(uint32_t crc32c, const unsigned char *buffer, unsigned int length); +#ifdef _KERNEL +#if defined(__amd64__) || defined(__i386__) +uint32_t sse42_crc32c(uint32_t, const unsigned char *, unsigned); +#endif +#endif LIBKERN_INLINE void *memset(void *, int, size_t); Modified: stable/11/tests/sys/kern/Makefile ============================================================================== --- stable/11/tests/sys/kern/Makefile Wed Apr 19 16:12:02 2017 (r317148) +++ stable/11/tests/sys/kern/Makefile Wed Apr 19 16:16:41 2017 (r317149) @@ -25,13 +25,19 @@ NETBSD_ATF_TESTS_C+= mqueue_test CFLAGS.mqueue_test+= -I${SRCTOP}/tests LIBADD.mqueue_test+= rt +.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" +ATF_TESTS_C+= libkern_crc32 +CFLAGS.libkern_crc32+= -msse4 -DUSERSPACE_TESTING +LDADD.libkern_crc32+= ${SRCTOP}/sys/libkern/x86/crc32_sse42.c +.endif + # subr_unit.c contains functions whose prototypes lie in headers that cannot be # included in userland. But as far as subr_unit_test goes, they're effectively # static. So it's ok to disable -Wmissing-prototypes for this program. CFLAGS.subr_unit.c+= -Wno-missing-prototypes SRCS.subr_unit_test+= subr_unit.c -WARNS?= 5 +WARNS?= 3 TESTS_SUBDIRS+= acct TESTS_SUBDIRS+= execve Copied: stable/11/tests/sys/kern/libkern_crc32.c (from r313006, head/tests/sys/kern/libkern_crc32.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/11/tests/sys/kern/libkern_crc32.c Wed Apr 19 16:16:41 2017 (r317149, copy of r313006, head/tests/sys/kern/libkern_crc32.c) @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2017 Conrad Meyer + * 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 + +extern uint32_t sse42_crc32c(uint32_t, const unsigned char *, unsigned); + +ATF_TC_WITHOUT_HEAD(crc32c_basic_correctness); +ATF_TC_BODY(crc32c_basic_correctness, tc) +{ + const uint64_t inputs[] = { + 0xf408c634b3a9142, + 0x80539e8c7c352e2b, + 0x62e9121db6e4d649, + 0x899345850ed0a286, + 0x2302df11b4a43b15, + 0xe943de7b3d35d70, + 0xdf1ff2bf41abf56b, + 0x9bc138abae315de2, + 0x31cc82e56234f0ff, + 0xce63c0cd6988e847, + 0x3e42f6b78ee352fa, + 0xfa4085436078cfa6, + 0x53349558bf670a4b, + 0x2714e10e7d722c61, + 0xc0d3261addfc6908, + 0xd1567c3181d3a1bf, + }; + const uint32_t results[] = { + 0x2ce33ede, + 0xc49cc573, + 0xb8683c96, + 0x6918660d, + 0xa904e522, + 0x52dbc42c, + 0x98863c22, + 0x894d5d2c, + 0xb003745d, + 0xfc496dbd, + 0x97d2fbb5, + 0x3c062ef1, + 0xcc2eff18, + 0x6a9b09f6, + 0x420242c1, + 0xfd562dc3, + }; + size_t i; + uint32_t act; + + ATF_REQUIRE(nitems(inputs) == nitems(results)); + + for (i = 0; i < nitems(inputs); i++) { + act = sse42_crc32c(~0, (const void *)&inputs[i], + sizeof(inputs[0])); + ATF_REQUIRE_MSG(act == results[i], + "crc32c(0x%jx) = 0x%08x, got 0x%08x", (uintmax_t)inputs[i], + results[i], act); + } +} + +ATF_TC_WITHOUT_HEAD(crc32c_alignment); +ATF_TC_BODY(crc32c_alignment, tc) +{ + const uint64_t input = 0xf408c634b3a9142; + const uint32_t result = 0x2ce33ede; + unsigned char buf[15]; + size_t i; + uint32_t act; + + + for (i = 1; i < 8; i++) { + memcpy(&buf[i], &input, sizeof(input)); + + act = sse42_crc32c(~0, (const void *)&buf[i], sizeof(input)); + ATF_REQUIRE_MSG(act == result, + "crc32c(0x%jx) = 0x%08x, got 0x%08x", (uintmax_t)input, + result, act); + } +} + +ATF_TC_WITHOUT_HEAD(crc32c_trailing_bytes); +ATF_TC_BODY(crc32c_trailing_bytes, tc) +{ + const unsigned char input[] = { + 0x87, 0x54, 0x74, 0xd2, 0xb, 0x9b, 0xdd, 0xf6, 0x68, 0x37, + 0xd4, 0x4, 0x5e, 0xa9, 0xb3 + }; + const uint32_t result = 0xec638d62; + uint32_t act; + + act = sse42_crc32c(~0, input, sizeof(input)); + ATF_REQUIRE_MSG(act == result, "expected 0x%08x, got 0x%08x", result, + act); +} + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, crc32c_basic_correctness); + ATF_TP_ADD_TC(tp, crc32c_alignment); + ATF_TP_ADD_TC(tp, crc32c_trailing_bytes); + return (atf_no_error()); +} From owner-svn-src-stable@freebsd.org Wed Apr 19 17:29:55 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A5969D45BB2; Wed, 19 Apr 2017 17:29:55 +0000 (UTC) (envelope-from bdrewery@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 mx1.freebsd.org (Postfix) with ESMTPS id 746A2FDB; Wed, 19 Apr 2017 17:29:55 +0000 (UTC) (envelope-from bdrewery@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3JHTsab012105; Wed, 19 Apr 2017 17:29:54 GMT (envelope-from bdrewery@FreeBSD.org) Received: (from bdrewery@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JHTsqx012104; Wed, 19 Apr 2017 17:29:54 GMT (envelope-from bdrewery@FreeBSD.org) Message-Id: <201704191729.v3JHTsqx012104@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bdrewery set sender to bdrewery@FreeBSD.org using -f From: Bryan Drewery Date: Wed, 19 Apr 2017 17:29:54 +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: r317152 - stable/11/sys/modules/dtrace/dtrace X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 17:29:55 -0000 Author: bdrewery Date: Wed Apr 19 17:29:54 2017 New Revision: 317152 URL: https://svnweb.freebsd.org/changeset/base/317152 Log: MFC r316534: Stop building assym.o into the module. Modified: stable/11/sys/modules/dtrace/dtrace/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/modules/dtrace/dtrace/Makefile ============================================================================== --- stable/11/sys/modules/dtrace/dtrace/Makefile Wed Apr 19 17:06:32 2017 (r317151) +++ stable/11/sys/modules/dtrace/dtrace/Makefile Wed Apr 19 17:29:54 2017 (r317152) @@ -27,7 +27,7 @@ CFLAGS+= -I${SYSDIR}/cddl/contrib/openso SRCS+= bus_if.h device_if.h vnode_if.h # Needed for dtrace_asm.S -SRCS+= assym.s +DPSRCS+= assym.s # These are needed for assym.s SRCS+= opt_compat.h opt_kstack_pages.h opt_nfs.h opt_hwpmc_hooks.h @@ -55,11 +55,6 @@ EXPORT_SYMS= dtrace_register \ dtrace_asm.o: assym.s -.if ${MACHINE_CPUARCH} == "arm" -assym.o: assym.s - ${AS} -meabi=5 -o assym.o assym.s -.endif - .include CFLAGS+= -include ${SYSDIR}/cddl/compat/opensolaris/sys/debug_compat.h From owner-svn-src-stable@freebsd.org Wed Apr 19 17:32:33 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BE1A2D463F4; Wed, 19 Apr 2017 17:32:33 +0000 (UTC) (envelope-from bdrewery@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 mx1.freebsd.org (Postfix) with ESMTPS id 8DF90178E; Wed, 19 Apr 2017 17:32:33 +0000 (UTC) (envelope-from bdrewery@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3JHWW9l015847; Wed, 19 Apr 2017 17:32:32 GMT (envelope-from bdrewery@FreeBSD.org) Received: (from bdrewery@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3JHWWwj015846; Wed, 19 Apr 2017 17:32:32 GMT (envelope-from bdrewery@FreeBSD.org) Message-Id: <201704191732.v3JHWWwj015846@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bdrewery set sender to bdrewery@FreeBSD.org using -f From: Bryan Drewery Date: Wed, 19 Apr 2017 17:32: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: r317153 - stable/11/sys/conf X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 17:32:33 -0000 Author: bdrewery Date: Wed Apr 19 17:32:32 2017 New Revision: 317153 URL: https://svnweb.freebsd.org/changeset/base/317153 Log: MFC r316533: Support assym.s in DPSRCS to depend on it but not link it in. Modified: stable/11/sys/conf/kmod.mk Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/conf/kmod.mk ============================================================================== --- stable/11/sys/conf/kmod.mk Wed Apr 19 17:29:54 2017 (r317152) +++ stable/11/sys/conf/kmod.mk Wed Apr 19 17:32:32 2017 (r317153) @@ -451,7 +451,7 @@ acpi_quirks.h: ${SYSDIR}/tools/acpi_quir ${AWK} -f ${SYSDIR}/tools/acpi_quirks2h.awk ${SYSDIR}/dev/acpica/acpi_quirks .endif -.if !empty(SRCS:Massym.s) +.if !empty(SRCS:Massym.s) || !empty(DPSRCS:Massym.s) CLEANFILES+= assym.s genassym.o DEPENDOBJS+= genassym.o assym.s: genassym.o From owner-svn-src-stable@freebsd.org Wed Apr 19 18:15:29 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2A0A9D445B2; Wed, 19 Apr 2017 18:15:29 +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 02223105E; Wed, 19 Apr 2017 18:15:28 +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 v3JGOIep031396; Wed, 19 Apr 2017 09:24:18 -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 v3JGOImX031395; Wed, 19 Apr 2017 09:24:18 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201704191624.v3JGOImX031395@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r317145 - in stable/11/sys: boot/mips/uboot conf In-Reply-To: <201704191533.v3JFXOHk065533@repo.freebsd.org> To: Ed Maste Date: Wed, 19 Apr 2017 09:24:18 -0700 (PDT) CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@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-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 18:15:29 -0000 [ Charset UTF-8 unsupported, converting... ] > Author: emaste > Date: Wed Apr 19 15:33:24 2017 > New Revision: 317145 > URL: https://svnweb.freebsd.org/changeset/base/317145 > > Log: > MFC r303442, r305343: remove CONSTRUCTORS from linker scripts > > r303442: remove CONSTRUCTORS from kernel linker scripts > > r305343: remove CONSTRUCTORS from MIPS uboot linker script > > The linker script CONSTRUCTORS keyword is only meaningful "when linking > object file formats which do not support arbitrary sections, such as > ECOFF and XCOFF"[1] and is ignored for other object file formats. > > LLVM's lld does not yet accept (and ignore) CONSTRUCTORS, so just remove > CONSTRUCTORS from the linker script as it has no effect. > > [1] https://sourceware.org/binutils/docs/ld/Output-Section-Keywords.html ^^^^^^^^^^^^ links to external data is probably not a good idea in commit messages as it tends to disappear in time. There are some notable exceptions, ie *.freebsd.org:// is normally safe, but does get broken (there are reference to phab.freebsd.org that is now review.freebsd.org. Thoug most commiters might know this someone external reading svn logs would not.) netbsd.org, openbsd.org, etc are propably next safer, but nothing says one of those can not go poof some day. Same of Illumos.org which we frequently reference. -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-stable@freebsd.org Wed Apr 19 18:27:21 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 20971D44B7C; Wed, 19 Apr 2017 18:27:21 +0000 (UTC) (envelope-from danfe@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (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 EFA4A1857; Wed, 19 Apr 2017 18:27:20 +0000 (UTC) (envelope-from danfe@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1033) id 2788630A8; Wed, 19 Apr 2017 18:27:20 +0000 (UTC) Date: Wed, 19 Apr 2017 18:27:20 +0000 From: Alexey Dokuchaev To: rgrimes@freebsd.org Cc: Ed Maste , svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-11@freebsd.org Subject: Re: svn commit: r317145 - in stable/11/sys: boot/mips/uboot conf Message-ID: <20170419182720.GC61084@FreeBSD.org> References: <201704191533.v3JFXOHk065533@repo.freebsd.org> <201704191624.v3JGOImX031395@pdx.rh.CN85.dnsmgr.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201704191624.v3JGOImX031395@pdx.rh.CN85.dnsmgr.net> User-Agent: Mutt/1.7.1 (2016-10-04) X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 18:27:21 -0000 On Wed, Apr 19, 2017 at 09:24:18AM -0700, Rodney W. Grimes wrote: > > New Revision: 317145 > > URL: https://svnweb.freebsd.org/changeset/base/317145 > > > > Log: > > ... > > [1] https://sourceware.org/binutils/docs/ld/Output-Section-Keywords.html > > ^^^^^^^^^^^^ links to external data is probably not a good idea in > commit messages as it tends to disappear in time. Unfortunately this is the best we can do here (apart from quoting relevant parts, but that is also not always an option). Any URL is better than nothing, and even if it disappears one day there's webarchive.org. > netbsd.org, openbsd.org, etc are propably next safer, but nothing says > one of those can not go poof some day. OpenBSD's PR links were all broken at least few years ago, not sure of right now. (Listing PR number itself would be still useful.) ./danfe From owner-svn-src-stable@freebsd.org Wed Apr 19 18:47:54 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 55047D45AEC; Wed, 19 Apr 2017 18:47:54 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-io0-x241.google.com (mail-io0-x241.google.com [IPv6:2607:f8b0:4001:c06::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 1E151D15; Wed, 19 Apr 2017 18:47:54 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by mail-io0-x241.google.com with SMTP id d203so6162468iof.2; Wed, 19 Apr 2017 11:47:54 -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=izGkNgoc1MPDuYZdTAAQHuwg15mfnFiF97spAEzmrkU=; b=SKoAuMnJ0OQejYKsH/s1pMwfIG8SSpCtrn7sifTwnX8Y3sduCLdAiCcqPnsBVlFr4H kQe4Sa45jIrCvsE3mPXmfmE/utqaDIacSwXxxEdvh6527pjoBkss0uiZwH4Fgt0OJiwz Sd9SvxknC0bdY9ZsuZ/a5TIcLq2lUB/5YCSgtjVviiPMNYwmX8iBIP+lWmVnVBSC4s5T xvoI6usBBeBl3jOO/sNSN0pfb5i4t71k7TaWkVvJeCv1vCSgGOIoPTiYLpoQ4Y+1N4vN o7XMB0twHp7ABdx3fYsoGIu/pVYR1o/xERaWL2iKwmzsH2PmGDhfhhVoY7Phxq3zYtmN QCmA== 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=izGkNgoc1MPDuYZdTAAQHuwg15mfnFiF97spAEzmrkU=; b=A9tX1S94n0iuaKVuvvXHkUOHPM1siNowa6XDYCjTjX+gjyTDmtL2tfz0+oH0bzL/zw vu+aVk5u1qLid+MQUOQxLiYMhesOtrdNqTsIGdVnfYUdUwTCPvcPreoIkWamG970DWwX vvU2kcxvINdvqZ7TAJaCN3WXICwRgOWHl2sSdrD8Kx/EViy+kY22KbfxuI/X4Kbz8nZa mynkr0QpLwhhsPxmHIwkRVgyKiKjHyLoB5qHkPBmUj+5FzekmZi5aUl37LCeBjrhlAdg 7xTkeLFrcB0agmDTpyU727EhLYS+l5Km5pky6PvERDg7/olJpVOC8NV2h7WN2mX4HLT/ ybvg== X-Gm-Message-State: AN3rC/4SyFtTordHpFfydmLqhBhyHJf/WFumJEGMvLK/OJCnn+VJZrwZ VVtzLej9jLm52yp36ZHwUxKWDY546XtU X-Received: by 10.107.191.2 with SMTP id p2mr5632122iof.172.1492627673240; Wed, 19 Apr 2017 11:47:53 -0700 (PDT) MIME-Version: 1.0 Sender: carpeddiem@gmail.com Received: by 10.107.30.136 with HTTP; Wed, 19 Apr 2017 11:47:31 -0700 (PDT) In-Reply-To: <201704191624.v3JGOImX031395@pdx.rh.CN85.dnsmgr.net> References: <201704191533.v3JFXOHk065533@repo.freebsd.org> <201704191624.v3JGOImX031395@pdx.rh.CN85.dnsmgr.net> From: Ed Maste Date: Wed, 19 Apr 2017 14:47:31 -0400 X-Google-Sender-Auth: tzfvZruAdrCWvbOPKIBwIwkh79E Message-ID: Subject: Re: svn commit: r317145 - in stable/11/sys: boot/mips/uboot conf To: rgrimes@freebsd.org Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 18:47:54 -0000 On 19 April 2017 at 12:24, Rodney W. Grimes wrote: >> >> The linker script CONSTRUCTORS keyword is only meaningful "when linking >> object file formats which do not support arbitrary sections, such as >> ECOFF and XCOFF"[1] and is ignored for other object file formats. >> >> LLVM's lld does not yet accept (and ignore) CONSTRUCTORS, so just remove >> CONSTRUCTORS from the linker script as it has no effect. >> >> [1] https://sourceware.org/binutils/docs/ld/Output-Section-Keywords.html > > ^^^^^^^^^^^^ links to external data is probably not a good idea in > commit messages as it tends to disappear in time. I understand your point, but think it should be phrased differently: commit messages should stand alone. Some projects use a commit message style that consists of little more than "Fixes bug #1723" or "rdar://90210", and I agree that is insufficient. In the quoted commit message above the relevant content from the binutils documentation is quoted inline, and the URL acts as a reference for the citation. I'd argue that a citation without the URL is less useful today, and not really any worse in the case that sourceware.org disappears, given the existence of the Internet Archive and search engines that could locate the content based on the quoted content and/or portions of the URL. From owner-svn-src-stable@freebsd.org Thu Apr 20 04:26:50 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 11309D4756D; Thu, 20 Apr 2017 04:26:50 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 84C36E03; Thu, 20 Apr 2017 04:26:49 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3K4QmFG083894; Thu, 20 Apr 2017 04:26:48 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3K4Qm1L083891; Thu, 20 Apr 2017 04:26:48 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704200426.v3K4Qm1L083891@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Thu, 20 Apr 2017 04:26:48 +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: r317182 - stable/11/sys/dev/qlxgbe X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Apr 2017 04:26:50 -0000 Author: davidcs Date: Thu Apr 20 04:26:47 2017 New Revision: 317182 URL: https://svnweb.freebsd.org/changeset/base/317182 Log: MFC r316183 Upgrade firmware and other related files to version 5.4.64 Modified: stable/11/sys/dev/qlxgbe/ql_boot.c stable/11/sys/dev/qlxgbe/ql_fw.c stable/11/sys/dev/qlxgbe/ql_minidump.c stable/11/sys/dev/qlxgbe/ql_reset.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/dev/qlxgbe/ql_boot.c ============================================================================== --- stable/11/sys/dev/qlxgbe/ql_boot.c Thu Apr 20 03:43:37 2017 (r317181) +++ stable/11/sys/dev/qlxgbe/ql_boot.c Thu Apr 20 04:26:47 2017 (r317182) @@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$"); unsigned int ql83xx_bootloader_version_major = 5; unsigned int ql83xx_bootloader_version_minor = 4; -unsigned int ql83xx_bootloader_version_sub = 62; +unsigned int ql83xx_bootloader_version_sub = 64; unsigned char ql83xx_bootloader[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10957,9 +10957,9 @@ unsigned char ql83xx_bootloader[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x02, 0x00, 0x40, 0x40, 0x05, 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x40, 0x40, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x9b, 0x64, 0x97, 0x0e + 0x00, 0x00, 0x00, 0x00, 0x9b, 0x64, 0x95, 0x0e }; unsigned int ql83xx_bootloader_len = 131072; Modified: stable/11/sys/dev/qlxgbe/ql_fw.c ============================================================================== --- stable/11/sys/dev/qlxgbe/ql_fw.c Thu Apr 20 03:43:37 2017 (r317181) +++ stable/11/sys/dev/qlxgbe/ql_fw.c Thu Apr 20 04:26:47 2017 (r317182) @@ -35,32 +35,32 @@ __FBSDID("$FreeBSD$"); unsigned int ql83xx_firmware_version_major = 5; unsigned int ql83xx_firmware_version_minor = 4; -unsigned int ql83xx_firmware_version_sub = 62; +unsigned int ql83xx_firmware_version_sub = 64; unsigned char ql83xx_firmware[] = { - 0x03, 0x00, 0x40, 0x40, 0x05, 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc4, 0x5e, 0x1b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x88, 0xcd, 0x7d, 0x72, 0x3d, 0x1f, 0x5f, 0xe0, + 0x03, 0x00, 0x40, 0x40, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe4, 0x42, 0x1b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0x7e, 0x74, 0x37, 0x27, 0xc9, 0xab, 0x39, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xef, 0x03, 0x00, + 0xe0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xef, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0xf9, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7a, 0x9f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x4e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xf9, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9f, 0x90, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x9f, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe5, 0x98, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x71, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x65, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x89, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -69,118 +69,118 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x56, 0xa3, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7b, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x65, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6f, 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd1, 0xb8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xec, 0xa9, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xbd, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x94, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xae, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xde, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x35, 0xd0, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x8c, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9a, 0xb9, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1a, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2f, 0xef, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9f, 0xd8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfb, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xe4, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xdd, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x72, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x67, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0xeb, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4f, 0x25, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xba, 0x0e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x30, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x86, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xb4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x19, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xdc, 0x4c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x56, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x3f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x5e, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x51, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x47, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcc, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x68, 0x61, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd3, 0x4a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x25, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8e, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x4c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x6e, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7c, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x57, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x8f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x79, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x30, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xbd, 0x19, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x30, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x56, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd1, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x1a, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -189,7 +189,7 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x56, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0x3f, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x58, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -232,9 +232,9 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x5f, 0x1a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb2, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x49, 0x1a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe8, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x92, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -249,7838 +249,7837 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xda, 0xec, 0x3d, - 0x6d, 0x70, 0x5c, 0xd5, 0x75, 0xf7, 0x7d, 0xec, 0xee, 0xd3, 0x6a, 0x57, - 0x5e, 0x83, 0x4c, 0x84, 0x90, 0xe3, 0x27, 0xdb, 0xd8, 0xe2, 0x33, 0x6b, - 0x63, 0x1b, 0x63, 0x9c, 0xfa, 0x49, 0x96, 0x8d, 0xed, 0xc8, 0x44, 0x40, - 0xca, 0x37, 0x44, 0x24, 0x0d, 0x35, 0x84, 0x60, 0x31, 0x25, 0xa9, 0xf8, - 0x28, 0x7e, 0xb2, 0x25, 0xd9, 0x04, 0x9b, 0xc8, 0xd8, 0x01, 0x87, 0xd0, - 0xb0, 0x92, 0x31, 0xa5, 0x2d, 0x93, 0x2e, 0x93, 0x4c, 0x60, 0xda, 0xce, - 0xb0, 0xd8, 0x99, 0x60, 0x52, 0xdc, 0xba, 0x3f, 0x48, 0x43, 0x18, 0x9a, - 0xed, 0xa4, 0x4c, 0x55, 0x02, 0x64, 0xdb, 0xe9, 0x10, 0x39, 0xa9, 0xa1, - 0xf7, 0xdc, 0x8f, 0xf7, 0xde, 0xbd, 0xfb, 0xde, 0xdb, 0xbd, 0xb2, 0xec, - 0x4c, 0x3a, 0x5e, 0x66, 0xf0, 0x1e, 0xdd, 0x7b, 0xcf, 0x3d, 0xf7, 0xdc, - 0x73, 0xcf, 0x39, 0xf7, 0x9c, 0xf3, 0xde, 0x22, 0x0d, 0xd1, 0x8f, 0x89, - 0x0c, 0xa4, 0xa3, 0xdb, 0xd0, 0x69, 0xf8, 0xf7, 0x13, 0xa6, 0x9f, 0x3e, - 0x06, 0x1f, 0x7d, 0xf7, 0x6d, 0xf2, 0xdf, 0x57, 0xaa, 0x60, 0xf1, 0x53, - 0x94, 0xe0, 0x82, 0x22, 0xec, 0xea, 0xc8, 0x26, 0x5f, 0xf6, 0xa4, 0xc8, - 0x3f, 0xfd, 0x55, 0xfd, 0x35, 0xe4, 0x3a, 0xb9, 0x00, 0xcc, 0xbe, 0xdb, - 0x85, 0x0c, 0xa5, 0x17, 0x95, 0x0c, 0x4e, 0x3a, 0x42, 0x0d, 0x05, 0x93, - 0x02, 0xbd, 0x37, 0xd2, 0xcf, 0x9d, 0x51, 0xf3, 0xad, 0x43, 0x11, 0xf3, - 0x29, 0xc2, 0x1c, 0xdf, 0x91, 0x69, 0xc6, 0x37, 0x5f, 0x9b, 0x5e, 0x7c, - 0x8b, 0xa7, 0x19, 0xdf, 0x66, 0x7d, 0x6a, 0xf8, 0xf8, 0xf8, 0x9b, 0xcc, - 0x29, 0x8d, 0x0f, 0x91, 0xb7, 0xbc, 0x0b, 0xa8, 0xce, 0x5b, 0x7c, 0xeb, - 0xfa, 0x99, 0x68, 0xe8, 0x9b, 0x18, 0x25, 0xc0, 0x47, 0x3b, 0x86, 0xde, - 0xf8, 0x71, 0x8f, 0x96, 0xdb, 0x8d, 0x87, 0x00, 0x5c, 0xb8, 0x6b, 0xf6, - 0xca, 0x15, 0x88, 0xb4, 0x57, 0x78, 0xfb, 0x7b, 0x77, 0x6b, 0x05, 0xdc, - 0x9e, 0x1f, 0x84, 0xf1, 0x77, 0x5e, 0xf3, 0xea, 0xc5, 0xf3, 0xe8, 0xf8, - 0x41, 0xd6, 0xde, 0xb4, 0x5b, 0xcb, 0x3f, 0x86, 0xc7, 0x0f, 0x72, 0xfc, - 0xff, 0x4c, 0xc7, 0x0f, 0x8a, 0xf8, 0xf3, 0x5b, 0x31, 0xdc, 0xbb, 0xfe, - 0xe2, 0xc4, 0x79, 0x17, 0xd1, 0xf1, 0x5b, 0x59, 0xfb, 0xd5, 0x6f, 0x68, - 0xbd, 0x7b, 0xf0, 0x78, 0x80, 0xfb, 0x56, 0xdc, 0xf8, 0xec, 0x5d, 0x49, - 0x3a, 0x9e, 0xb7, 0xdf, 0xfb, 0x6b, 0xad, 0x6f, 0x14, 0x8f, 0xdf, 0xe6, - 0xe1, 0xd7, 0xc8, 0xf8, 0x6d, 0x12, 0xfd, 0x00, 0x17, 0x5e, 0xfe, 0xaf, - 0xf9, 0xcb, 0x2c, 0x3a, 0x9e, 0xb7, 0xbf, 0x74, 0x39, 0xea, 0x85, 0xf9, - 0x87, 0x30, 0xdc, 0x9f, 0x7b, 0xd5, 0x69, 0xa6, 0xeb, 0xeb, 0x1f, 0x62, - 0xed, 0x3f, 0xbb, 0xe5, 0x21, 0x0b, 0xe3, 0x2f, 0x02, 0xdc, 0x97, 0x19, - 0xc9, 0xe7, 0x5a, 0xe9, 0x78, 0xde, 0xbe, 0xf2, 0x0b, 0x0f, 0xed, 0x80, - 0xf9, 0x87, 0x81, 0x7e, 0x6b, 0x8d, 0x9d, 0x61, 0xeb, 0x1f, 0x66, 0xed, - 0x5d, 0x43, 0x0f, 0x59, 0x30, 0x3f, 0xc0, 0x8e, 0x69, 0xe6, 0xac, 0x0c, - 0x1d, 0xcf, 0xdb, 0xff, 0xe8, 0xd9, 0x87, 0x76, 0xc0, 0xfc, 0x23, 0xa6, - 0xbf, 0x1f, 0x18, 0x5f, 0xbf, 0x04, 0x17, 0x25, 0xb8, 0x22, 0xc1, 0xf9, - 0xed, 0xd2, 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0xf3, 0x3b, 0x80, - 0xbe, 0xe6, 0xb5, 0xb7, 0xb5, 0xd9, 0xb9, 0xa5, 0x4f, 0xe2, 0xf1, 0x00, - 0x17, 0xf2, 0x5f, 0x30, 0x2f, 0xd8, 0xbc, 0x05, 0xd6, 0x57, 0x04, 0xb8, - 0xb7, 0x65, 0xfb, 0x3d, 0xcd, 0xe7, 0x91, 0xf6, 0x0a, 0x6f, 0xdf, 0xb8, - 0x7b, 0x0b, 0xac, 0x2f, 0xff, 0x30, 0xf0, 0xa7, 0xed, 0xa0, 0x66, 0x2e, - 0xa6, 0xe3, 0x1f, 0x66, 0xed, 0x9b, 0xbf, 0xb7, 0x05, 0xd6, 0x57, 0x04, - 0xb8, 0xbf, 0x4d, 0xcb, 0x59, 0x97, 0xd3, 0xf1, 0xbc, 0x7d, 0xf7, 0x1b, - 0x5b, 0x2c, 0x2c, 0x1f, 0xf9, 0xaf, 0x53, 0x7a, 0x16, 0xb4, 0xd9, 0x94, - 0x7e, 0x02, 0x37, 0x66, 0x90, 0xb5, 0xf1, 0x36, 0x42, 0x3f, 0x6b, 0x5f, - 0xc2, 0xda, 0x2b, 0x04, 0x7e, 0x44, 0xe3, 0xed, 0xf9, 0x47, 0xa4, 0xf5, - 0x4b, 0x70, 0x51, 0x82, 0x2b, 0x12, 0x9c, 0xdf, 0x29, 0x8d, 0x97, 0xe0, - 0xa2, 0x04, 0x57, 0x24, 0x38, 0xbf, 0x4b, 0x1a, 0x2f, 0xc1, 0x45, 0x09, - 0xae, 0x48, 0x70, 0xfe, 0x51, 0x69, 0xbc, 0x04, 0x17, 0x25, 0xb8, 0x22, - 0xc1, 0xf9, 0x6f, 0x48, 0xe3, 0x25, 0xb8, 0x28, 0xc1, 0x15, 0x09, 0xce, - 0x3b, 0x18, 0x76, 0x37, 0xbd, 0x97, 0xe4, 0xe3, 0x01, 0x2e, 0xcf, 0xfb, - 0xd9, 0xd7, 0xf8, 0x78, 0x80, 0x4b, 0xbf, 0x39, 0x3c, 0x62, 0xb0, 0xf1, - 0x00, 0x17, 0x5e, 0xf8, 0xe8, 0x43, 0x06, 0xe7, 0x3b, 0x31, 0x9c, 0xdb, - 0xb5, 0xb4, 0xc1, 0x61, 0xe3, 0x01, 0xee, 0xef, 0x9e, 0x77, 0x1f, 0x83, - 0x8b, 0x00, 0xf7, 0xce, 0xd9, 0xbd, 0x6b, 0x35, 0x1b, 0x0f, 0x70, 0xfe, - 0x27, 0xdb, 0x8f, 0x33, 0x38, 0xdf, 0x25, 0xd1, 0x2f, 0xc1, 0x45, 0x09, - 0xae, 0x48, 0x70, 0x7e, 0xb5, 0x34, 0x5e, 0x82, 0x8b, 0x12, 0x5c, 0x91, - 0xe0, 0x7c, 0xb7, 0x34, 0x5e, 0x82, 0x8b, 0x12, 0x5c, 0x91, 0xe0, 0xfc, - 0x1a, 0x69, 0xbc, 0x04, 0x17, 0x25, 0xb8, 0x22, 0xc1, 0xf9, 0xb5, 0xd2, - 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0xf3, 0x57, 0x48, 0xe3, 0x25, - 0xb8, 0x28, 0xc1, 0x15, 0x09, 0xce, 0xaf, 0x83, 0xfd, 0xf9, 0xc3, 0x37, - 0xf8, 0x7e, 0xf6, 0x03, 0x7c, 0xf4, 0xab, 0x6f, 0x73, 0xb8, 0x48, 0xda, - 0x1f, 0x7f, 0x87, 0xc3, 0x15, 0xd2, 0xfe, 0x83, 0xf7, 0xbd, 0xfd, 0x5f, - 0x0f, 0xe7, 0xff, 0xf2, 0xbf, 0x3e, 0xce, 0xc7, 0x13, 0xf8, 0xa6, 0xef, - 0x73, 0xb8, 0x48, 0xe0, 0x07, 0x86, 0x39, 0x5c, 0x01, 0xb8, 0xf2, 0xf4, - 0xa3, 0x1c, 0xce, 0x6f, 0x00, 0xf8, 0xe5, 0x51, 0x6f, 0x3c, 0x81, 0x7f, - 0xfe, 0x2d, 0x6f, 0x3c, 0xc0, 0x68, 0xe6, 0xdc, 0x63, 0x7c, 0x3c, 0xc0, - 0xa3, 0x4b, 0x2f, 0xe0, 0x70, 0xfe, 0x33, 0x18, 0xb6, 0xbb, 0x4c, 0x0e, - 0xf7, 0x03, 0x5c, 0xbc, 0x3d, 0xcb, 0xe1, 0x22, 0xc0, 0xce, 0x8e, 0x9c, - 0x37, 0x1e, 0xe0, 0xa3, 0xcf, 0x9f, 0xed, 0x8d, 0xef, 0x01, 0xfc, 0xa5, - 0x57, 0xbd, 0xf5, 0xf7, 0x50, 0xfe, 0x54, 0xf8, 0x78, 0x09, 0xae, 0x48, - 0x70, 0x7e, 0xa3, 0x08, 0xf7, 0x4b, 0x70, 0x51, 0x82, 0x2b, 0x12, 0x9c, - 0xbf, 0x52, 0x1a, 0x2f, 0xc1, 0x45, 0x09, 0xae, 0x48, 0x70, 0xfe, 0xb3, - 0xd2, 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0x45, 0xff, 0xae, 0xda, - 0x3f, 0x98, 0x19, 0x84, 0x6b, 0xfa, 0x1b, 0x36, 0xff, 0xa6, 0x31, 0xa7, - 0x92, 0x4d, 0x36, 0x43, 0xf3, 0x9c, 0xcc, 0x1a, 0xfe, 0x4a, 0xbf, 0xe6, - 0x04, 0xe4, 0x93, 0xe2, 0x4b, 0x24, 0xb0, 0xfe, 0x07, 0x9f, 0x1b, 0xb7, - 0xdf, 0x98, 0x60, 0x6d, 0x1f, 0xcd, 0x41, 0x76, 0x6f, 0x6d, 0x7c, 0x6a, - 0xf4, 0xb3, 0xb3, 0x51, 0xfe, 0x98, 0x7e, 0x36, 0xab, 0xfb, 0x53, 0xd3, - 0x0a, 0x17, 0x6b, 0xef, 0x8f, 0x1a, 0xcc, 0xd6, 0x57, 0x89, 0x58, 0x5f, - 0xcd, 0xf9, 0x6a, 0x8c, 0xaf, 0x79, 0x5f, 0x51, 0x9c, 0xcf, 0xf5, 0x74, - 0x95, 0xc3, 0xe5, 0x27, 0xcb, 0xee, 0x2b, 0x9b, 0x70, 0xab, 0xe6, 0xdd, - 0x67, 0x10, 0xb2, 0x48, 0xbb, 0xaf, 0x9c, 0x6d, 0xb4, 0xef, 0x90, 0x36, - 0x88, 0x72, 0x25, 0x64, 0xb5, 0xd0, 0xfe, 0xf6, 0x56, 0xdc, 0x1f, 0x5d, - 0xa8, 0x33, 0xd4, 0x1f, 0x87, 0xcb, 0x4f, 0x46, 0xc4, 0x8f, 0x5e, 0x67, - 0x4d, 0x13, 0x0c, 0xfe, 0xdd, 0xee, 0x5f, 0x2d, 0x7e, 0x9d, 0x86, 0x4f, - 0xec, 0xfc, 0x9f, 0x7c, 0x78, 0x7a, 0xe9, 0xb1, 0x91, 0x14, 0x7f, 0xc0, - 0x7f, 0xf8, 0x83, 0xd6, 0x40, 0x7f, 0xa6, 0x7f, 0xbd, 0x76, 0xf4, 0x43, - 0x24, 0xca, 0x77, 0x2e, 0x23, 0xc2, 0x70, 0xa2, 0x92, 0xc8, 0x3f, 0x57, - 0x78, 0x50, 0x3a, 0x3f, 0xd4, 0xd5, 0xd9, 0x41, 0xf9, 0x8b, 0xf1, 0xa7, - 0x5b, 0xe9, 0xf9, 0xb2, 0xf5, 0xa0, 0x3e, 0x76, 0x8f, 0x9f, 0x0c, 0x7d, - 0x5c, 0x1b, 0x9e, 0x11, 0x00, 0xeb, 0x99, 0x9f, 0xf7, 0x77, 0x9b, 0xd4, - 0xfa, 0xa3, 0xd9, 0x8a, 0xf8, 0x2f, 0x50, 0xc4, 0xbf, 0x42, 0x11, 0xff, - 0x3a, 0x45, 0xfc, 0xd7, 0x29, 0xe2, 0xff, 0x92, 0x22, 0xfe, 0x7b, 0x15, - 0xf1, 0x6f, 0x55, 0xc4, 0xbf, 0x5b, 0x11, 0xff, 0xd3, 0x8a, 0xf8, 0xbf, - 0xab, 0x88, 0xff, 0xef, 0x15, 0xf1, 0xff, 0x83, 0x22, 0xfe, 0x37, 0x15, - 0xf1, 0x4f, 0x28, 0xe2, 0xff, 0x50, 0x11, 0x7f, 0x42, 0x53, 0xc3, 0x7f, - 0xa6, 0x5a, 0x7f, 0x34, 0x57, 0x11, 0x7f, 0x5e, 0x11, 0xff, 0x2a, 0x45, - 0xfc, 0x1b, 0x15, 0xf1, 0xdf, 0xac, 0x88, 0xff, 0x4e, 0x45, 0xfc, 0xf7, - 0x29, 0xe2, 0xdf, 0xae, 0x88, 0xff, 0x71, 0x45, 0xfc, 0xcf, 0x28, 0xe2, - 0xff, 0x9e, 0x22, 0xfe, 0x57, 0x14, 0xf1, 0x1f, 0x55, 0xc4, 0xff, 0xaf, - 0x8a, 0xf8, 0xdf, 0x57, 0xc4, 0xff, 0x5b, 0x45, 0xfc, 0x69, 0x5d, 0x0d, - 0x7f, 0x8b, 0x5a, 0x7f, 0xb4, 0x50, 0x11, 0xff, 0x52, 0x45, 0xfc, 0xdd, - 0x8a, 0xf8, 0xaf, 0x56, 0xc4, 0x7f, 0x9b, 0x22, 0xfe, 0xcd, 0x8a, 0xf8, - 0x1f, 0x52, 0xc4, 0xbf, 0x53, 0x11, 0xff, 0xb7, 0x15, 0xf1, 0xff, 0xa5, - 0x22, 0xfe, 0x97, 0x14, 0xf1, 0xff, 0x48, 0x11, 0xff, 0x1b, 0x8a, 0xf8, - 0x7f, 0xa1, 0x88, 0xff, 0xbf, 0x15, 0xf1, 0x23, 0x43, 0x0d, 0xff, 0x0c, - 0xb5, 0xfe, 0xee, 0x6c, 0x45, 0xfc, 0x17, 0x2a, 0xe2, 0x5f, 0xa1, 0x88, - 0x7f, 0xbd, 0x22, 0xfe, 0xeb, 0x14, 0xf1, 0xdf, 0xae, 0x88, 0xff, 0x5e, - 0x45, 0xfc, 0xdb, 0x14, 0xf1, 0xef, 0x56, 0xc4, 0x5f, 0x30, 0x4e, 0xc5, - 0xfd, 0xc3, 0xdd, 0x88, 0x2e, 0xfe, 0x24, 0x7c, 0xfd, 0xe5, 0x2a, 0x44, - 0xe2, 0x09, 0x47, 0x58, 0x06, 0x78, 0x53, 0x82, 0xde, 0x9f, 0xb2, 0x2c, - 0xbe, 0x30, 0x61, 0x02, 0xcc, 0xf3, 0x75, 0x2f, 0x5e, 0xc5, 0xe7, 0xdb, - 0xc5, 0xe3, 0x0b, 0x26, 0xeb, 0xcf, 0xef, 0x63, 0x1a, 0x1a, 0xd4, 0x0a, - 0xf4, 0xda, 0xf5, 0x24, 0xbe, 0xb5, 0x2d, 0x40, 0x65, 0xd3, 0xcf, 0xd7, - 0x16, 0x9c, 0xcb, 0xc8, 0x55, 0x0c, 0xff, 0xa9, 0xb9, 0xc3, 0x40, 0x6d, - 0x40, 0x4a, 0xe1, 0x90, 0x36, 0xc8, 0xf1, 0xbf, 0x35, 0x4e, 0xf1, 0x5b, - 0x48, 0x43, 0x0e, 0x84, 0xf2, 0xaf, 0x1f, 0x40, 0x94, 0x3e, 0x91, 0x7e, - 0xde, 0xbf, 0xf3, 0x6b, 0xe1, 0xeb, 0xb7, 0x2d, 0x84, 0x9c, 0xb4, 0xdd, - 0x88, 0x26, 0x2f, 0x45, 0xe5, 0x14, 0xda, 0x8f, 0x74, 0x16, 0xef, 0xb9, - 0x94, 0x04, 0x60, 0xfa, 0xbc, 0x0b, 0x76, 0x87, 0xc3, 0xe8, 0x71, 0x66, - 0x61, 0x7a, 0x9e, 0xfa, 0xd1, 0xfc, 0x96, 0xe4, 0xa2, 0xe6, 0x11, 0xd7, - 0x42, 0xbb, 0x06, 0xf7, 0x90, 0x54, 0xc2, 0x84, 0x11, 0x5c, 0x3f, 0xa7, - 0x0f, 0x69, 0x1b, 0x0f, 0xd1, 0x7c, 0xf4, 0x26, 0x9d, 0xac, 0x9f, 0x05, - 0xfb, 0x9c, 0x46, 0xc2, 0x87, 0x3e, 0x88, 0xe2, 0x10, 0xfa, 0xad, 0x3c, - 0xc2, 0x73, 0xf3, 0x78, 0x13, 0xba, 0x96, 0xe5, 0xab, 0xad, 0x6d, 0x63, - 0x8d, 0x20, 0x1c, 0xed, 0x4c, 0x48, 0xaa, 0xf1, 0x37, 0x1c, 0x64, 0xf8, - 0x85, 0xf8, 0x50, 0x27, 0xc3, 0x0f, 0xcb, 0x71, 0xf4, 0x6a, 0xfc, 0xd7, - 0x31, 0xfc, 0xe9, 0xc1, 0x31, 0x20, 0xc1, 0x3d, 0x2f, 0x12, 0xbf, 0x26, - 0xe2, 0x77, 0xb2, 0x07, 0xdb, 0xdb, 0xd8, 0xfe, 0x61, 0xd8, 0xaa, 0xe2, - 0x0f, 0xfd, 0x5c, 0xcf, 0xf0, 0x57, 0xe1, 0xf3, 0xe4, 0x61, 0x82, 0x8d, - 0xdf, 0x65, 0x90, 0xf5, 0x33, 0x7c, 0xbc, 0xff, 0xa7, 0xf6, 0xd3, 0xfe, - 0xa6, 0x84, 0x1f, 0xa1, 0x9d, 0xdc, 0xfd, 0x27, 0xfc, 0x76, 0xd0, 0xeb, - 0x9a, 0x03, 0x53, 0xb5, 0xdc, 0xa5, 0x43, 0xbc, 0x8b, 0xd1, 0xe3, 0xde, - 0xc0, 0xf3, 0xfd, 0x64, 0x3f, 0x47, 0x1a, 0x20, 0x9e, 0xea, 0x26, 0xb0, - 0x10, 0x75, 0x6e, 0x3c, 0xa8, 0xb5, 0xe1, 0x5d, 0x9f, 0xdc, 0x6c, 0x94, - 0x87, 0xb5, 0xb1, 0x9b, 0xaf, 0x74, 0xcd, 0x32, 0x5a, 0xae, 0x6b, 0xe8, - 0xb9, 0xc4, 0x8f, 0x11, 0xda, 0x8e, 0xf7, 0xeb, 0x60, 0x36, 0xe7, 0xd3, - 0x57, 0x4d, 0x3f, 0x97, 0x77, 0xbe, 0xfe, 0x23, 0xda, 0xca, 0x10, 0xfa, - 0x79, 0x7f, 0x46, 0xbf, 0x7b, 0x0b, 0xa7, 0x07, 0xe4, 0xed, 0x2c, 0xa0, - 0x97, 0xee, 0x07, 0xd0, 0x9b, 0x84, 0x5a, 0x86, 0xc3, 0x14, 0x46, 0x68, - 0x79, 0x8a, 0x0d, 0x49, 0x86, 0xdf, 0x57, 0xbc, 0xf3, 0xa7, 0xd1, 0xf3, - 0xd4, 0xc3, 0xcf, 0x17, 0xe1, 0x07, 0xe7, 0xd7, 0xe7, 0x23, 0xf8, 0x6f, - 0xa1, 0x8d, 0x06, 0xa5, 0x97, 0xae, 0x8f, 0xd3, 0xb7, 0x26, 0xb2, 0xbf, - 0xc8, 0x4f, 0x4f, 0x5e, 0xa5, 0xf3, 0x75, 0x46, 0x42, 0x58, 0x6f, 0xaf, - 0x46, 0x03, 0x31, 0x7d, 0x7e, 0x7c, 0x71, 0x42, 0x0f, 0x8b, 0x27, 0x02, - 0xab, 0x1d, 0x40, 0xba, 0x6f, 0x2e, 0x5b, 0x7f, 0x0f, 0x27, 0x29, 0x51, - 0xcf, 0x7d, 0x2d, 0x82, 0xdf, 0xe8, 0x8b, 0x8c, 0xde, 0x93, 0xbd, 0x3e, - 0x0b, 0xeb, 0x33, 0xc2, 0xcf, 0xc9, 0xfb, 0xe2, 0xf6, 0x1f, 0xdd, 0xee, - 0xd5, 0x9f, 0x84, 0xd3, 0xbf, 0xbf, 0x89, 0xf6, 0x87, 0x5e, 0x2b, 0x4d, - 0xdb, 0x00, 0x79, 0x2d, 0x27, 0xd0, 0x18, 0xd5, 0x17, 0xe3, 0x4d, 0x9e, - 0x7e, 0x44, 0x4d, 0xc8, 0x3b, 0xaa, 0x0a, 0xfc, 0x79, 0x1b, 0xf9, 0xf4, - 0x40, 0x42, 0x13, 0x75, 0x70, 0x79, 0xf3, 0xce, 0x93, 0x1e, 0xa4, 0xff, - 0xbe, 0x74, 0x7d, 0xf6, 0x82, 0xf7, 0xff, 0x7c, 0xa3, 0x5a, 0x7f, 0xf9, - 0x7c, 0x6c, 0xaa, 0xc1, 0x9f, 0xf9, 0x27, 0x88, 0xff, 0x0e, 0x0f, 0x7f, - 0x0f, 0x5f, 0x6f, 0x22, 0x3c, 0xbe, 0xbd, 0x53, 0xb2, 0x57, 0xae, 0x89, - 0x3d, 0x29, 0x48, 0xa9, 0x69, 0x2f, 0x1d, 0x42, 0x83, 0x55, 0xf6, 0x14, - 0x1b, 0x88, 0x26, 0x62, 0x1f, 0xe7, 0x31, 0x7e, 0xca, 0xf8, 0xcc, 0x40, - 0xfa, 0xb1, 0x2a, 0xff, 0x14, 0xb0, 0xaf, 0xc7, 0x88, 0x7d, 0xb5, 0xf1, - 0xae, 0x3a, 0x67, 0xec, 0x4d, 0x20, 0x3b, 0x8f, 0x4a, 0x29, 0xbc, 0xff, - 0xe8, 0x06, 0x26, 0x8d, 0x6e, 0x33, 0xec, 0xb7, 0x8b, 0x8e, 0x74, 0x3a, - 0x4d, 0x81, 0xf3, 0xcf, 0x04, 0xf8, 0x57, 0x7f, 0xc1, 0xd6, 0x47, 0x66, - 0x1b, 0x4e, 0x83, 0xfc, 0xd8, 0x01, 0x7b, 0x8a, 0xf6, 0x81, 0xfa, 0xa6, - 0xf4, 0x61, 0xa1, 0x35, 0xeb, 0x8f, 0x27, 0x9f, 0x19, 0xeb, 0x3f, 0x78, - 0xe7, 0xe5, 0xa7, 0x0b, 0x42, 0xd7, 0xcf, 0xf7, 0xc3, 0xf9, 0x52, 0x52, - 0x38, 0x0f, 0x2e, 0x72, 0x8c, 0xa0, 0xbd, 0xd0, 0xdd, 0xb5, 0x46, 0xf0, - 0x7c, 0xf2, 0xfe, 0x6c, 0x79, 0xc5, 0xaf, 0x9c, 0x83, 0x42, 0xe5, 0x83, - 0x7f, 0x79, 0x4a, 0xaf, 0x8f, 0xbe, 0x68, 0x7a, 0x3a, 0x8d, 0x93, 0x8b, - 0xbf, 0xeb, 0x24, 0xe3, 0x5f, 0x7d, 0x92, 0xf1, 0x7f, 0x86, 0xed, 0x0f, - 0x2a, 0x75, 0xea, 0x71, 0xfe, 0xe3, 0xeb, 0x92, 0x7d, 0x8a, 0x3a, 0x2f, - 0x8b, 0xc2, 0xcf, 0x0b, 0x3f, 0x0f, 0xce, 0x7b, 0x92, 0xbf, 0x39, 0x91, - 0x02, 0x7c, 0x39, 0x6c, 0x7f, 0x89, 0xbd, 0x68, 0xd9, 0x9c, 0x2a, 0x6d, - 0xf5, 0xf5, 0xd5, 0xbf, 0x7d, 0x8e, 0xeb, 0xcf, 0x5d, 0x46, 0x53, 0x72, - 0x08, 0xeb, 0xb2, 0xe3, 0xc9, 0xc2, 0x08, 0x1e, 0x4f, 0x68, 0x1d, 0x6f, - 0xf0, 0xf5, 0x67, 0x83, 0x16, 0xb4, 0x2f, 0x30, 0x7a, 0x71, 0x5a, 0x38, - 0xff, 0xdc, 0xbe, 0x27, 0x51, 0x99, 0x9e, 0x2f, 0x62, 0xaf, 0x27, 0x2f, - 0xa1, 0xf4, 0x62, 0x7d, 0xbc, 0x60, 0x36, 0x0c, 0x67, 0xf4, 0xf3, 0x7a, - 0xc8, 0x51, 0x03, 0x72, 0xc0, 0xf8, 0xbc, 0x5e, 0x1f, 0xaf, 0x9f, 0xb9, - 0xff, 0xb7, 0xfa, 0x32, 0x41, 0x9e, 0x7f, 0xe0, 0xed, 0xcf, 0xc3, 0xdc, - 0x9f, 0xce, 0x0a, 0xfe, 0x22, 0xeb, 0xcf, 0xce, 0x43, 0x7f, 0x6a, 0x6c, - 0x3e, 0x1b, 0xff, 0x1a, 0x12, 0xfa, 0xa3, 0xc3, 0x5a, 0x10, 0xe6, 0xfa, - 0xcf, 0xbd, 0xc7, 0x10, 0xec, 0x1f, 0xe7, 0x97, 0x85, 0x5e, 0xd3, 0x9a, - 0x60, 0xab, 0xdd, 0x63, 0xd4, 0x7f, 0x26, 0xfa, 0x62, 0x3c, 0xe3, 0xf3, - 0x2b, 0x23, 0xf0, 0x0b, 0x88, 0x5b, 0x2e, 0xec, 0xbf, 0xe7, 0x7f, 0x50, - 0x7e, 0x11, 0xfd, 0xe5, 0xf3, 0x0b, 0xc8, 0x9f, 0x9b, 0x0d, 0xf0, 0x0b, - 0x16, 0x50, 0xb8, 0xb2, 0xd1, 0x1f, 0x7f, 0x8e, 0x92, 0x3d, 0xe3, 0x5f, - 0x0e, 0x7b, 0xfc, 0x5a, 0xcf, 0xfd, 0x8b, 0x26, 0xb2, 0x7e, 0x56, 0xb7, - 0x98, 0x7a, 0x85, 0xf3, 0xa7, 0x41, 0x0f, 0xb6, 0xc3, 0xf4, 0x74, 0xbd, - 0x8b, 0x04, 0x79, 0xe7, 0xfc, 0x60, 0xfc, 0x72, 0x38, 0xbf, 0xa8, 0xa6, - 0x1c, 0x4f, 0xfb, 0xfc, 0x48, 0x57, 0xc9, 0xcf, 0x92, 0x74, 0xa8, 0xfc, - 0x53, 0x7e, 0x60, 0x7e, 0x3a, 0x2d, 0x3e, 0x3f, 0x80, 0xbd, 0x1d, 0x0d, - 0x01, 0x7e, 0xb0, 0x75, 0x3c, 0x6b, 0xf2, 0xf1, 0x37, 0x4c, 0x89, 0x1f, - 0x6f, 0x7a, 0xfc, 0x78, 0x8d, 0xcf, 0xdf, 0x44, 0xfd, 0x63, 0xc6, 0x8f, - 0x17, 0x38, 0x3f, 0x1e, 0x16, 0xda, 0xeb, 0xe4, 0x07, 0x1a, 0xe2, 0xfc, - 0x20, 0x02, 0x38, 0xde, 0xe8, 0xf3, 0xa3, 0xb1, 0x4a, 0x3e, 0x96, 0xc5, - 0xc9, 0x07, 0xee, 0x4d, 0xee, 0x13, 0xfc, 0x3c, 0x41, 0x31, 0xcb, 0xac, - 0x00, 0x3f, 0xb8, 0xbd, 0x7a, 0x0e, 0xdc, 0x11, 0x38, 0x4f, 0x6d, 0x53, - 0xe2, 0xc7, 0x2f, 0xab, 0xe4, 0x63, 0xd3, 0x0c, 0xaa, 0x3f, 0x98, 0xbf, - 0xd9, 0x82, 0xd7, 0x69, 0x70, 0xfe, 0x0f, 0xe1, 0x1d, 0xc9, 0x83, 0x5f, - 0x84, 0xc7, 0xaf, 0xd7, 0x83, 0xfd, 0xeb, 0x95, 0x97, 0x7a, 0xf9, 0x03, - 0xa3, 0x97, 0x89, 0xfa, 0x46, 0x90, 0x17, 0x4f, 0x1f, 0x73, 0xfe, 0x90, - 0xd6, 0x3d, 0x16, 0xd0, 0x87, 0xc0, 0x1f, 0xc4, 0x5e, 0xc9, 0xee, 0xe6, - 0xe0, 0xf8, 0x1b, 0xa7, 0xc4, 0x9f, 0xff, 0xf5, 0xf5, 0x0d, 0x9f, 0x3f, - 0x17, 0xb8, 0x3f, 0xda, 0x86, 0xc5, 0xed, 0x6d, 0x83, 0x11, 0x6c, 0xaf, - 0x93, 0x1f, 0xae, 0xc7, 0x0f, 0xd2, 0x3c, 0x9e, 0xf5, 0xf9, 0x91, 0xad, - 0x92, 0x97, 0x15, 0xa2, 0xbc, 0xc4, 0xea, 0x5f, 0x70, 0x50, 0x16, 0xcc, - 0x90, 0xf4, 0xaf, 0xfd, 0x59, 0xcb, 0x1f, 0xdf, 0x32, 0x25, 0x7e, 0xb0, - 0x2a, 0x8b, 0x7e, 0x7f, 0xff, 0x27, 0x66, 0x04, 0xee, 0xb7, 0x39, 0x9f, - 0x1f, 0x9e, 0xbe, 0x9d, 0x11, 0xe6, 0x3f, 0x72, 0x7e, 0xfc, 0xe3, 0xb5, - 0x11, 0xf1, 0x06, 0xf2, 0xcf, 0x78, 0x82, 0xf3, 0x83, 0xf1, 0xab, 0x34, - 0x18, 0xa9, 0x9f, 0xd7, 0x53, 0xfd, 0x5c, 0xba, 0x8f, 0xc5, 0x37, 0xb8, - 0xbc, 0x4c, 0x04, 0xef, 0x7b, 0x6e, 0xe4, 0x78, 0x0d, 0xf6, 0x6b, 0xc4, - 0x42, 0xa5, 0x45, 0x90, 0xe6, 0x1e, 0x0b, 0xdc, 0xc7, 0xc8, 0x78, 0xe8, - 0xee, 0xb4, 0x8a, 0xfa, 0xe9, 0xfc, 0x06, 0xdf, 0x3e, 0x3f, 0xce, 0xdc, - 0xe5, 0x24, 0x5a, 0xbe, 0x64, 0xaf, 0x81, 0xb6, 0xf7, 0x3b, 0x86, 0xb7, - 0x18, 0x47, 0xd7, 0xb0, 0x3f, 0x8c, 0xda, 0xec, 0xec, 0xb6, 0x28, 0x7f, - 0xb2, 0xb0, 0x15, 0x5b, 0x12, 0x67, 0x99, 0x9d, 0xca, 0x65, 0x21, 0x83, - 0x8e, 0x9e, 0xd1, 0x5f, 0x19, 0xdb, 0x82, 0xff, 0xde, 0xfc, 0xca, 0x3d, - 0x84, 0xa1, 0xc3, 0xcd, 0xf6, 0x73, 0x54, 0x18, 0xac, 0x0b, 0xe9, 0x78, - 0x9b, 0xfb, 0xab, 0x78, 0x72, 0xe2, 0xaf, 0xf2, 0x78, 0x11, 0x3e, 0xad, - 0xa1, 0xfb, 0xc9, 0xda, 0x9d, 0x01, 0xe1, 0x3e, 0xbb, 0x9a, 0xd9, 0x4b, - 0xce, 0x8f, 0xe6, 0xfd, 0xe2, 0x7d, 0x4f, 0x0f, 0xdc, 0xf7, 0x82, 0xf2, - 0xcc, 0xf5, 0x4f, 0xf7, 0xea, 0xcb, 0x82, 0xf7, 0x47, 0x87, 0xf3, 0x17, - 0x79, 0x06, 0x7f, 0x00, 0x05, 0xef, 0x4b, 0x9c, 0xdf, 0xf8, 0xbc, 0x30, - 0x89, 0x19, 0x98, 0xe9, 0xdb, 0xa3, 0x71, 0xcb, 0x97, 0x7f, 0xab, 0x4a, - 0x1f, 0xe4, 0x63, 0xf4, 0x81, 0xa7, 0xaf, 0xb8, 0x3e, 0x20, 0xd2, 0xb9, - 0xb7, 0x21, 0xa8, 0x0f, 0xf6, 0x4c, 0x83, 0x3e, 0x58, 0x69, 0xc8, 0xfa, - 0x60, 0x82, 0xd2, 0xcf, 0xd7, 0xb3, 0xef, 0xd8, 0x4c, 0x85, 0xf3, 0x5f, - 0xda, 0x5e, 0x5b, 0x1f, 0x26, 0xeb, 0xb2, 0x17, 0x35, 0xe9, 0x9f, 0xcd, - 0xbf, 0x9b, 0x61, 0xeb, 0x75, 0xc1, 0xde, 0x14, 0xed, 0x14, 0xdc, 0xa7, - 0xa8, 0xbf, 0x39, 0x90, 0x9c, 0x0a, 0x7f, 0xae, 0x34, 0xaa, 0xec, 0x89, - 0x26, 0xf0, 0x27, 0x37, 0xc0, 0x60, 0x4b, 0xf2, 0x7f, 0x25, 0x7c, 0x74, - 0xad, 0xae, 0xc1, 0xe3, 0x13, 0xc4, 0x3f, 0xc0, 0xfe, 0xaa, 0x95, 0x47, - 0x76, 0x12, 0xec, 0x61, 0xd6, 0xb5, 0xc0, 0x1e, 0xda, 0xef, 0x33, 0x79, - 0x76, 0x34, 0x88, 0x7f, 0x8e, 0xa0, 0xc9, 0x55, 0xe7, 0xe3, 0xfb, 0xa7, - 0x83, 0x36, 0xea, 0xcb, 0x89, 0xc8, 0xdf, 0xad, 0x95, 0xb1, 0x3e, 0xc0, - 0xda, 0x6e, 0x5f, 0x8f, 0x89, 0x9e, 0xfa, 0xea, 0x1e, 0x1a, 0x1f, 0x85, - 0x91, 0x7d, 0xd6, 0xfe, 0x04, 0xa0, 0xbe, 0x3e, 0x24, 0x5e, 0x8a, 0xfd, - 0x69, 0xae, 0x5f, 0xf5, 0xe0, 0x79, 0x79, 0x24, 0x52, 0xff, 0x48, 0xe7, - 0x43, 0x59, 0x9f, 0x67, 0x62, 0xed, 0x3f, 0x7c, 0xb5, 0x65, 0x7f, 0xc8, - 0xed, 0x69, 0xf0, 0xc7, 0x9f, 0x3d, 0x25, 0x79, 0xbe, 0xc3, 0xdb, 0x2f, - 0xcf, 0x7e, 0x35, 0x0b, 0xfb, 0x35, 0x30, 0xd0, 0xac, 0x22, 0xcf, 0x8f, - 0xd4, 0xf4, 0x07, 0xa3, 0xf4, 0x93, 0x78, 0x9e, 0xa3, 0xe8, 0xbd, 0xb7, - 0xfa, 0xfc, 0x89, 0xf4, 0xa2, 0x49, 0x15, 0x7a, 0xd1, 0xce, 0x9a, 0xe7, - 0x2f, 0x8a, 0xde, 0xfa, 0xce, 0xdf, 0x96, 0xea, 0xf3, 0x30, 0x4b, 0xa4, - 0x77, 0x60, 0x56, 0x9c, 0x7d, 0xf4, 0xf3, 0x03, 0x11, 0xfa, 0x1c, 0x7d, - 0x40, 0xe4, 0x9f, 0x1a, 0x94, 0xf1, 0x14, 0xa7, 0x9f, 0xeb, 0x6f, 0x7e, - 0x7e, 0x5a, 0xa9, 0xfc, 0xb7, 0x69, 0x58, 0x1f, 0x93, 0xf8, 0x2d, 0x56, - 0xd0, 0x7d, 0x4d, 0x29, 0x28, 0xf1, 0x4f, 0x2c, 0xa7, 0xe7, 0xe1, 0x28, - 0xad, 0xef, 0xb2, 0x6c, 0x94, 0xb4, 0x51, 0xc8, 0x79, 0xd0, 0x82, 0xe7, - 0x01, 0xc4, 0xaf, 0x09, 0xfe, 0x57, 0x58, 0xe4, 0xf9, 0x1b, 0xa0, 0x82, - 0x39, 0x3f, 0x73, 0x68, 0x23, 0x5a, 0x69, 0x05, 0xe2, 0x47, 0x5a, 0x56, - 0x63, 0xf1, 0xf1, 0xa4, 0x54, 0x3f, 0x99, 0x08, 0xb3, 0x0f, 0x74, 0x7f, - 0x9e, 0xd6, 0xfd, 0xfd, 0x08, 0xf0, 0xdb, 0x8d, 0xbb, 0x7f, 0xf1, 0xfd, - 0xe2, 0xe5, 0xc0, 0x93, 0x67, 0xd1, 0xf9, 0x3c, 0x7f, 0xa0, 0x4e, 0x7d, - 0x39, 0xcc, 0xfb, 0x9f, 0xc5, 0xe3, 0x47, 0x69, 0xf0, 0xaf, 0x1c, 0xaa, - 0x1f, 0x73, 0xd0, 0x9a, 0xb3, 0x4d, 0x64, 0x2d, 0xa1, 0xfa, 0x08, 0xad, - 0xe3, 0xf1, 0xe8, 0x63, 0x73, 0x68, 0xfc, 0x09, 0xd3, 0x9e, 0x4a, 0x81, - 0x1e, 0x75, 0x86, 0x40, 0x1e, 0x59, 0xfc, 0xd3, 0xb9, 0x4b, 0xb3, 0x63, - 0xf6, 0xbb, 0x59, 0x8a, 0xe7, 0x1f, 0xf2, 0xee, 0xbf, 0x3b, 0x78, 0x3e, - 0x08, 0x01, 0xfd, 0xbc, 0x7f, 0xd7, 0x75, 0xa2, 0xbd, 0x7e, 0xcb, 0xeb, - 0xcf, 0xe3, 0x77, 0x9b, 0x2c, 0xba, 0xfe, 0xc0, 0x78, 0xca, 0x0f, 0xc3, - 0xe3, 0x07, 0xa5, 0x27, 0x45, 0xe3, 0x77, 0xe5, 0xf8, 0xf8, 0x9d, 0x33, - 0x9f, 0xea, 0x1f, 0x1e, 0x7f, 0x28, 0x1d, 0x63, 0xf1, 0x87, 0xac, 0xa0, - 0x2f, 0xfd, 0xf8, 0x9b, 0x18, 0x2f, 0xfd, 0xee, 0x55, 0xe1, 0xf9, 0x0d, - 0xd9, 0xfe, 0xf3, 0xf5, 0xa4, 0x23, 0xe2, 0xd1, 0x9c, 0x3f, 0x8d, 0x52, - 0xfc, 0x3a, 0x53, 0x23, 0x7e, 0x9d, 0x65, 0xed, 0x39, 0x1e, 0x2c, 0x94, - 0xc6, 0xcf, 0x0a, 0xf8, 0x3b, 0xf0, 0xf9, 0x44, 0x64, 0x7e, 0x26, 0xab, - 0x89, 0xf9, 0x8d, 0xf0, 0x78, 0xf8, 0x5b, 0x57, 0x89, 0xfe, 0x7e, 0x5a, - 0x3f, 0xcb, 0x8c, 0x8b, 0x9f, 0x4b, 0xfd, 0x4b, 0x8a, 0xfd, 0x51, 0x23, - 0xeb, 0xcf, 0xe7, 0x3b, 0x83, 0xc1, 0x72, 0x7f, 0xb6, 0xbe, 0xf2, 0xfd, - 0x63, 0x1f, 0x24, 0xe2, 0xe2, 0xc9, 0x97, 0xde, 0xa2, 0x16, 0x4f, 0x7e, - 0xe7, 0x4f, 0xea, 0xcd, 0x9f, 0x7a, 0xfe, 0x9d, 0x52, 0x7c, 0xfe, 0xf2, - 0x76, 0x35, 0x7a, 0xc6, 0x75, 0xb5, 0xfe, 0x47, 0x3e, 0xad, 0x4a, 0x7f, - 0xb8, 0x3f, 0xe5, 0xe5, 0x0f, 0x24, 0xfc, 0x87, 0x6f, 0x16, 0xf8, 0x8f, - 0x0a, 0xed, 0xd9, 0xd8, 0x78, 0xed, 0x3b, 0x46, 0x38, 0x3d, 0xf5, 0xe2, - 0x77, 0xed, 0x6c, 0x6c, 0xbe, 0xe0, 0xcc, 0x3f, 0x55, 0x5e, 0x6f, 0x4a, - 0x29, 0xdf, 0x74, 0x93, 0x94, 0x9f, 0xac, 0x41, 0xcf, 0x6f, 0x35, 0xb5, - 0xfd, 0xba, 0xed, 0x49, 0x11, 0x7f, 0x2d, 0x7e, 0xa6, 0x4d, 0x35, 0xfc, - 0xab, 0x22, 0xf3, 0x3b, 0x8d, 0x52, 0xbe, 0x82, 0xdb, 0x63, 0x9a, 0xdf, - 0xe2, 0xf7, 0xa3, 0xf2, 0x47, 0x67, 0x53, 0xfb, 0xbb, 0xc7, 0x26, 0xd1, - 0xdc, 0x2b, 0xda, 0x37, 0x69, 0x61, 0xf7, 0x3f, 0x39, 0x9f, 0x9b, 0xe1, - 0xe7, 0x1d, 0x5f, 0xee, 0x1c, 0x85, 0xf5, 0xd7, 0xda, 0xef, 0x6b, 0xaf, - 0x56, 0x5b, 0xff, 0x3f, 0x3d, 0x51, 0x23, 0x1e, 0x8e, 0x16, 0xc5, 0xc5, - 0xc3, 0xf1, 0xb5, 0x82, 0xe6, 0x2f, 0xea, 0xef, 0xdf, 0x29, 0xf6, 0xaf, - 0xe4, 0x63, 0xfb, 0x23, 0xd4, 0xae, 0xa4, 0x1f, 0x35, 0xa6, 0x0f, 0xa3, - 0xd6, 0x9b, 0x59, 0xaa, 0xc6, 0x9f, 0x85, 0x33, 0x44, 0xfc, 0xff, 0x73, - 0x8b, 0x16, 0xcb, 0xff, 0xbf, 0x59, 0x5c, 0xe3, 0x3c, 0x17, 0xc4, 0xf5, - 0x6e, 0x69, 0x14, 0xcf, 0xf3, 0xbf, 0xfc, 0x19, 0xf2, 0xec, 0x15, 0xe9, - 0xdf, 0x27, 0xf6, 0x1f, 0x95, 0xfa, 0x3f, 0xfa, 0xba, 0x11, 0x4b, 0xcf, - 0x9d, 0x4b, 0xd4, 0xd6, 0x7b, 0x6d, 0x83, 0x5a, 0xff, 0x0f, 0xcf, 0x54, - 0xeb, 0xff, 0xc5, 0x4f, 0xab, 0xf5, 0xff, 0x3b, 0xc5, 0x7c, 0xe7, 0xb1, - 0xac, 0x5a, 0xff, 0xad, 0x6b, 0x15, 0xf3, 0xbb, 0xbd, 0x53, 0xab, 0x1f, - 0xe2, 0xe3, 0x2b, 0x3d, 0x6a, 0xf3, 0xfd, 0xc7, 0x51, 0x43, 0xed, 0x3c, - 0xff, 0x44, 0xad, 0xff, 0x15, 0x8a, 0xf8, 0xbf, 0xb9, 0x4a, 0x8d, 0xfe, - 0xf3, 0x9e, 0x51, 0xc3, 0xbf, 0x55, 0x51, 0x7f, 0x8f, 0x27, 0xc3, 0xfb, - 0xeb, 0x68, 0xe7, 0x21, 0x9a, 0x9f, 0x63, 0xfe, 0x27, 0xca, 0x08, 0xfe, - 0xab, 0x9f, 0x9f, 0xe0, 0xf5, 0x18, 0x11, 0xfe, 0x70, 0x69, 0x91, 0xe8, - 0x0f, 0x3b, 0xdc, 0x1f, 0x16, 0xf3, 0xd9, 0x01, 0x7f, 0x58, 0x8b, 0xbb, - 0xef, 0xfd, 0xca, 0x62, 0xf8, 0x1d, 0xf0, 0x8f, 0xf7, 0xe2, 0x11, 0x03, - 0x5a, 0x69, 0x58, 0x1b, 0x8b, 0xea, 0x3f, 0x43, 0xf1, 0x3c, 0xfe, 0x7b, - 0x52, 0xaa, 0x6f, 0x50, 0xed, 0x6f, 0xe5, 0x63, 0xf3, 0xd7, 0xaf, 0xd4, - 0xfd, 0xfe, 0x89, 0xa6, 0x29, 0xf9, 0x7f, 0x7f, 0x15, 0xe1, 0x0f, 0x79, - 0x99, 0x7a, 0xe6, 0xaf, 0x43, 0x3e, 0x27, 0x03, 0x67, 0x9d, 0xd5, 0x0f, - 0x11, 0x7b, 0xec, 0x24, 0x33, 0x41, 0xfc, 0x2a, 0xf9, 0x7d, 0x1d, 0x5d, - 0x12, 0x9b, 0xdf, 0xaf, 0xce, 0xf7, 0xee, 0x94, 0xe2, 0x5f, 0x9e, 0x3c, - 0x85, 0xc7, 0xbb, 0x24, 0xf9, 0x32, 0x99, 0x7c, 0xe5, 0x3a, 0x6b, 0xe5, - 0x7f, 0x99, 0xbc, 0xe5, 0x78, 0x42, 0x8e, 0xdb, 0xff, 0x5d, 0xc2, 0xfc, - 0x6e, 0xd7, 0x11, 0xcd, 0x69, 0x3b, 0x3b, 0x35, 0x6a, 0xd2, 0xf9, 0x1d, - 0xe4, 0xd0, 0x7a, 0xb0, 0xc9, 0xcd, 0xa8, 0xbc, 0x9f, 0xe6, 0x23, 0xf5, - 0x33, 0x88, 0x83, 0xc6, 0x9e, 0xdf, 0xba, 0x83, 0x07, 0xb0, 0xe9, 0xf3, - 0x90, 0xbd, 0x58, 0x22, 0x49, 0x8a, 0x49, 0x73, 0xdd, 0x99, 0xb6, 0x9f, - 0x6f, 0x80, 0x7d, 0xd1, 0xd1, 0x18, 0x8f, 0x47, 0x3b, 0x83, 0xbc, 0x9e, - 0x2e, 0x67, 0x91, 0x7a, 0x3a, 0xc0, 0xbf, 0xad, 0x7d, 0x0c, 0xfa, 0x27, - 0xcf, 0x0a, 0xe2, 0x3f, 0x47, 0xc4, 0xdf, 0x87, 0xdc, 0x9d, 0x80, 0xdf, - 0xd1, 0xdc, 0x02, 0xe0, 0xaf, 0x55, 0x0f, 0x12, 0x1a, 0x2f, 0xec, 0x21, - 0xf1, 0x5e, 0x9b, 0xe6, 0xaf, 0xf9, 0x56, 0x36, 0x86, 0xc9, 0x17, 0xcb, - 0xf7, 0x55, 0x3e, 0xd6, 0x79, 0xbe, 0xe2, 0xcb, 0xdc, 0xa5, 0x88, 0x88, - 0xf7, 0x00, 0x87, 0xe1, 0x8d, 0x06, 0x16, 0x22, 0x73, 0x49, 0xeb, 0xd1, - 0xab, 0xf0, 0xf1, 0xf5, 0xb9, 0x1f, 0x85, 0xad, 0x4f, 0x8e, 0x57, 0x43, - 0x3d, 0xcb, 0x32, 0xa8, 0x67, 0x01, 0xfa, 0x13, 0xa4, 0x9e, 0x85, 0xd3, - 0x63, 0x45, 0xd1, 0x4f, 0xf7, 0xef, 0x12, 0xaf, 0x3e, 0x0e, 0xa1, 0xc7, - 0x0d, 0x7f, 0x3c, 0x44, 0xe0, 0x1d, 0x8d, 0xd0, 0x6b, 0x55, 0xd3, 0x8b, - 0x6f, 0x52, 0x32, 0xff, 0xe9, 0xf3, 0x7b, 0xa3, 0x86, 0x5b, 0x32, 0xec, - 0x48, 0x7b, 0xf5, 0x82, 0x19, 0xed, 0xbf, 0xc0, 0xe7, 0xe7, 0xe3, 0xf1, - 0xf7, 0xef, 0x5f, 0x8c, 0x4f, 0xad, 0x7e, 0xac, 0xd6, 0xf9, 0x32, 0xf1, - 0xf9, 0x5a, 0x69, 0x06, 0xcf, 0x57, 0x54, 0xfc, 0x22, 0xfc, 0x3c, 0x79, - 0xfb, 0x61, 0xb5, 0x13, 0x79, 0x86, 0x09, 0x9d, 0xb4, 0xdd, 0xd0, 0xd5, - 0xb8, 0x04, 0x95, 0x67, 0xa0, 0xfd, 0x76, 0x26, 0x63, 0xe8, 0x8d, 0xc3, - 0x5f, 0xd6, 0x86, 0x07, 0x34, 0x7b, 0x44, 0x1b, 0x6b, 0x7d, 0xd2, 0x2e, - 0x6f, 0xfb, 0xdb, 0xf9, 0x6e, 0x17, 0xbe, 0x0d, 0xed, 0x9b, 0x99, 0x70, - 0xd3, 0x10, 0x67, 0x84, 0x75, 0x58, 0x1d, 0x39, 0x12, 0x87, 0x18, 0x6e, - 0x07, 0xfa, 0xdc, 0xef, 0x53, 0x4d, 0xe2, 0x9a, 0xdf, 0xb2, 0xcb, 0x06, - 0xdc, 0xc7, 0x2d, 0xae, 0x5f, 0xae, 0x11, 0x9e, 0x67, 0xaf, 0x59, 0x7f, - 0xec, 0xd5, 0x3f, 0xbd, 0x4b, 0xce, 0xbb, 0xff, 0x18, 0xe6, 0x72, 0x2a, - 0x6f, 0x2c, 0x5e, 0x9e, 0xb8, 0xdb, 0xab, 0x97, 0x30, 0xca, 0x24, 0xbe, - 0x57, 0x40, 0x25, 0x1a, 0xdf, 0xd3, 0x4b, 0x33, 0x52, 0x43, 0x06, 0x95, - 0xf0, 0xed, 0x08, 0xad, 0xe7, 0xe7, 0x23, 0x47, 0xe4, 0x4b, 0x13, 0xc7, - 0xc3, 0x6e, 0x38, 0x69, 0xb1, 0x3e, 0x01, 0x5b, 0xf7, 0x24, 0xd4, 0x4b, - 0x61, 0x66, 0x8f, 0x31, 0xcd, 0x59, 0x5e, 0x98, 0xe0, 0xfb, 0x91, 0x46, - 0x53, 0xd1, 0xe7, 0x72, 0x3c, 0x27, 0x79, 0x40, 0xaa, 0xff, 0xe4, 0xf5, - 0xb8, 0x1a, 0x2a, 0xb5, 0xc3, 0xa2, 0x4b, 0x43, 0x69, 0x27, 0x07, 0xf2, - 0xd9, 0x91, 0x0a, 0xc6, 0xd3, 0xf1, 0x25, 0xc9, 0x75, 0xda, 0x94, 0xe7, - 0x73, 0xd3, 0x07, 0x84, 0xf8, 0x0f, 0x9a, 0x79, 0x20, 0x5e, 0x7e, 0xcf, - 0x3c, 0x30, 0xc5, 0xfa, 0x4e, 0x29, 0x7f, 0x68, 0x85, 0xec, 0x5f, 0x1a, - 0x7c, 0xe5, 0xe7, 0x44, 0x7f, 0xfe, 0x45, 0x93, 0xe3, 0xdb, 0xa8, 0x53, - 0x7b, 0xcd, 0xed, 0xc9, 0x2e, 0xc9, 0xbe, 0x78, 0xf5, 0xe5, 0x42, 0x7e, - 0x6f, 0x56, 0xfc, 0x7a, 0xbc, 0xf9, 0x7d, 0x83, 0xb7, 0x82, 0x9f, 0x37, - 0x01, 0xf6, 0xdf, 0x67, 0xc6, 0x60, 0x3f, 0x7f, 0x9c, 0x63, 0xfc, 0x17, - 0xda, 0xab, 0xf4, 0x1b, 0x69, 0xa3, 0xfa, 0x8d, 0xe5, 0xe3, 0xe0, 0x73, - 0x74, 0xba, 0xe5, 0xa7, 0x55, 0xde, 0x1f, 0x2e, 0x3f, 0x0e, 0x2a, 0x5d, - 0xd4, 0xb6, 0x4d, 0x67, 0xf3, 0x63, 0x7c, 0x17, 0x8b, 0xf2, 0x23, 0xbf, - 0x0f, 0xad, 0x4e, 0xf9, 0xf9, 0xe4, 0xa9, 0x92, 0x1f, 0xa9, 0x3e, 0xc6, - 0x92, 0xf7, 0x07, 0x0f, 0xb7, 0xa0, 0x44, 0xc8, 0x8d, 0x94, 0x1f, 0x83, - 0xfa, 0x6f, 0x03, 0x9a, 0x14, 0xaf, 0x95, 0xe4, 0x49, 0x90, 0x1f, 0x74, - 0x6e, 0x4d, 0xf9, 0x59, 0x21, 0xc5, 0x9b, 0x59, 0xbe, 0xbc, 0x3a, 0xbf, - 0x63, 0x88, 0xfe, 0x35, 0xde, 0x67, 0x12, 0x6f, 0x2e, 0xa1, 0xf8, 0x7a, - 0xd1, 0xb9, 0xf1, 0xfe, 0x8f, 0xfb, 0x6e, 0x94, 0xbf, 0xad, 0x11, 0x7f, - 0x7b, 0xf2, 0x01, 0x13, 0xda, 0xd3, 0x4f, 0xb4, 0x83, 0x36, 0x71, 0x9f, - 0x7f, 0xac, 0x84, 0x2a, 0x44, 0x1f, 0x7a, 0xf5, 0x6d, 0x1a, 0xa9, 0x17, - 0xed, 0xcc, 0x6e, 0x75, 0x9a, 0xf6, 0x2e, 0xcf, 0xa5, 0x26, 0x0d, 0xf0, - 0xb7, 0xe9, 0x79, 0x00, 0xed, 0xbe, 0x04, 0x39, 0x89, 0x60, 0xbe, 0x65, - 0x40, 0xa8, 0x5f, 0xde, 0x31, 0x2f, 0x10, 0xaf, 0x81, 0x7a, 0xe4, 0xc9, - 0x85, 0x90, 0x46, 0xf1, 0xfb, 0x5b, 0x75, 0xf6, 0x37, 0xa1, 0xbf, 0x8d, - 0x0f, 0xc1, 0x83, 0x1a, 0x1a, 0x0a, 0xef, 0x6f, 0x62, 0xd9, 0x18, 0xbd, - 0x8f, 0xf9, 0xb3, 0x56, 0x96, 0xe9, 0x47, 0xba, 0x9f, 0x61, 0xfd, 0x93, - 0xc1, 0xfe, 0x51, 0xfe, 0x7a, 0x44, 0x7c, 0xba, 0xaa, 0x7e, 0x3e, 0x07, - 0xf2, 0x01, 0xc6, 0xfb, 0x03, 0xad, 0x3c, 0xe4, 0xcb, 0xc7, 0xf9, 0x91, - 0xf2, 0x91, 0x35, 0xf2, 0xc9, 0xe0, 0xfd, 0xa9, 0x27, 0xb6, 0xbe, 0x3d, - 0x24, 0xbf, 0xc5, 0x35, 0x4e, 0x36, 0x34, 0x5f, 0x4d, 0xfe, 0xd9, 0x9e, - 0x82, 0xf3, 0xec, 0xfa, 0xf5, 0x21, 0x1e, 0xfd, 0xf4, 0x28, 0x7b, 0xaf, - 0x34, 0x2a, 0x84, 0xd7, 0xcb, 0xc2, 0xe5, 0xd3, 0xcb, 0x2f, 0x69, 0x6a, - 0xf4, 0xdd, 0xca, 0xe9, 0x4b, 0x44, 0xd5, 0x2f, 0x36, 0x11, 0x7f, 0x8f, - 0xcb, 0xef, 0x0e, 0x2d, 0x98, 0x7f, 0x91, 0xe3, 0xfb, 0xe1, 0xf1, 0xf9, - 0x67, 0x03, 0xf4, 0x85, 0xd3, 0xb3, 0x31, 0x11, 0x1d, 0x9f, 0xeb, 0x21, - 0x1a, 0x0e, 0x8f, 0xd7, 0x6b, 0xe7, 0x17, 0x54, 0xf1, 0x47, 0xde, 0x17, - 0x51, 0xdd, 0xf1, 0xe4, 0x58, 0x7d, 0x2f, 0xeb, 0xef, 0x88, 0xf8, 0x5f, - 0xc9, 0x08, 0xd4, 0x47, 0x8b, 0xf7, 0xd3, 0x8e, 0x69, 0xc2, 0xdf, 0xc9, - 0xeb, 0x79, 0xe9, 0xf3, 0x41, 0x39, 0x8e, 0xbf, 0x65, 0x9a, 0xf0, 0xd3, - 0x7a, 0x67, 0x90, 0x67, 0xa2, 0xaf, 0x5a, 0xbc, 0xfa, 0x8b, 0x69, 0xc2, - 0x4f, 0xeb, 0x9d, 0x3d, 0x7b, 0xec, 0xd5, 0x77, 0xac, 0x9b, 0x26, 0xfc, - 0xb4, 0xde, 0x99, 0xdb, 0xff, 0x92, 0x97, 0x7f, 0x5c, 0xc7, 0xed, 0x8b, - 0x19, 0x73, 0x9e, 0xdc, 0xd5, 0x0b, 0xac, 0xc9, 0xde, 0x3e, 0xb8, 0xed, - 0xde, 0xcf, 0xdf, 0x17, 0x62, 0x72, 0x7f, 0xb4, 0x1e, 0x7b, 0x6c, 0xbd, - 0x18, 0x88, 0x4f, 0x24, 0x7c, 0x79, 0x27, 0xe4, 0x64, 0x02, 0xf2, 0x40, - 0x4e, 0xdf, 0x77, 0x02, 0xf5, 0x45, 0x03, 0xfc, 0x7d, 0x3f, 0x75, 0xbd, - 0x9f, 0xa4, 0xb6, 0x7c, 0x7b, 0xf6, 0xcf, 0xac, 0x61, 0xff, 0x98, 0x7d, - 0xc4, 0x5e, 0x38, 0xb1, 0x7f, 0x28, 0x3e, 0xdf, 0xea, 0x52, 0xfd, 0x91, - 0x23, 0xf6, 0x0e, 0xdf, 0x6c, 0x4b, 0xc7, 0x57, 0xe1, 0xfb, 0x47, 0xc1, - 0xf3, 0xcf, 0x2d, 0x7a, 0x9f, 0x73, 0x4c, 0xb0, 0xe7, 0x43, 0x5f, 0xef, - 0x5c, 0xfd, 0xa0, 0xee, 0xee, 0xd4, 0xc6, 0x50, 0x1a, 0xeb, 0x6b, 0xa7, - 0xeb, 0x91, 0x83, 0x17, 0x4e, 0x6a, 0x58, 0xf5, 0x14, 0x2e, 0x5e, 0x3b, - 0xa8, 0xc3, 0x7d, 0xe0, 0x87, 0x9d, 0xeb, 0xd0, 0x4f, 0xe9, 0x7d, 0x20, - 0x74, 0x7d, 0x4f, 0xa7, 0x7c, 0x7e, 0xe6, 0x83, 0xf1, 0x21, 0xb2, 0x17, - 0x1b, 0x32, 0xfe, 0xfb, 0xb6, 0xbc, 0x7c, 0x7b, 0xc4, 0xfb, 0xb6, 0x78, - 0x7e, 0x5f, 0x7c, 0xde, 0xeb, 0x80, 0x8f, 0xbf, 0xd4, 0x59, 0x47, 0xfc, - 0x89, 0xf7, 0xa7, 0xf9, 0x90, 0x94, 0x0e, 0xf9, 0x76, 0x6a, 0x5f, 0xbd, - 0xfc, 0x76, 0x0d, 0x7f, 0xc3, 0x8b, 0xb7, 0x30, 0x7f, 0xa3, 0x10, 0xef, - 0x6f, 0xb0, 0x78, 0x1e, 0x9d, 0x7d, 0x5b, 0x82, 0xdb, 0x17, 0x87, 0xf2, - 0x3f, 0x09, 0xfc, 0x77, 0x46, 0x02, 0xf5, 0xf5, 0xd6, 0x26, 0xf2, 0x3c, - 0x9d, 0xab, 0x83, 0xbd, 0x1c, 0x4a, 0x1d, 0xea, 0x3e, 0xae, 0x3b, 0x3b, - 0x31, 0x6c, 0x62, 0xfe, 0xdb, 0x5d, 0xbf, 0x19, 0x37, 0x78, 0x7e, 0x7b, - 0x17, 0xd4, 0x03, 0x58, 0xe0, 0x3f, 0xd8, 0x43, 0xd1, 0xf1, 0xbf, 0x48, - 0xfe, 0x13, 0x75, 0xb9, 0xa1, 0xd1, 0xe7, 0x7f, 0xe3, 0xff, 0x6b, 0xfe, - 0xcb, 0xf5, 0x05, 0xa6, 0xa7, 0xac, 0xd6, 0x18, 0xa2, 0x7f, 0xc2, 0xed, - 0xb5, 0x58, 0x7f, 0x50, 0x6d, 0xef, 0xd9, 0xf3, 0x93, 0xb9, 0x49, 0xe2, - 0x2f, 0x79, 0xfa, 0x2d, 0x17, 0xaf, 0xdf, 0xf8, 0x7c, 0xa6, 0x57, 0x5c, - 0xb2, 0x26, 0xee, 0xf9, 0x1b, 0x9b, 0xdc, 0x2f, 0x82, 0xfa, 0x96, 0xeb, - 0x1f, 0x8f, 0xd7, 0xf4, 0x7d, 0x64, 0x36, 0x56, 0x50, 0x4e, 0xdb, 0x50, - 0x02, 0xf4, 0xbd, 0x9b, 0x12, 0xea, 0x11, 0x67, 0x12, 0xfd, 0xa7, 0x8b, - 0xfd, 0x3d, 0x73, 0xc9, 0x61, 0xfe, 0xa6, 0xdf, 0xa8, 0x7c, 0x2c, 0xbf, - 0x2f, 0xf0, 0xf9, 0x6d, 0x71, 0x3c, 0x21, 0x0d, 0xf6, 0xb6, 0xc8, 0xed, - 0xc1, 0xa7, 0xf9, 0xfc, 0x59, 0x7e, 0x9f, 0x23, 0xf7, 0xe9, 0xc0, 0xf3, - 0xb0, 0x41, 0xfb, 0x4a, 0xc9, 0xdb, 0xaa, 0x81, 0x3c, 0xf6, 0x25, 0x84, - 0xfa, 0xb3, 0x46, 0x61, 0x7c, 0x2e, 0x1f, 0xf1, 0xbc, 0x17, 0xfd, 0xbc, - 0x19, 0xe1, 0x5f, 0x78, 0xf6, 0x50, 0xd0, 0xdf, 0x3e, 0xfd, 0xd4, 0x34, - 0xc0, 0x2b, 0x6b, 0xd9, 0xf3, 0xaa, 0xbe, 0x3d, 0x4b, 0x09, 0xf3, 0x73, - 0x7b, 0x27, 0xad, 0xc7, 0x8b, 0x0f, 0x1f, 0xe5, 0xf4, 0xdd, 0x81, 0xa4, - 0x78, 0x02, 0xed, 0xdf, 0x21, 0x8d, 0xaf, 0x71, 0xff, 0xbc, 0x48, 0xba, - 0x0f, 0x7e, 0xaa, 0xc6, 0x7d, 0x70, 0xd1, 0x54, 0xef, 0x83, 0xec, 0x0f, - 0xb7, 0x3f, 0xa0, 0x09, 0xf5, 0x2b, 0x35, 0xe4, 0x93, 0x3c, 0x7f, 0xd3, - 0x17, 0x88, 0xd7, 0xcd, 0x88, 0xef, 0x5f, 0x40, 0x3b, 0x2c, 0x91, 0xbe, - 0xd2, 0x42, 0x16, 0xef, 0x0c, 0x3f, 0x2f, 0x26, 0x3f, 0x9f, 0x7c, 0x81, - 0x0f, 0x64, 0x05, 0xfa, 0x52, 0xac, 0x1d, 0x9a, 0xd7, 0x82, 0xfc, 0x75, - 0x88, 0xfe, 0x29, 0xc7, 0x87, 0xf7, 0xbb, 0x14, 0xb4, 0xff, 0xd0, 0x3f, - 0x1f, 0xc2, 0x1f, 0x79, 0x7e, 0x8e, 0xdf, 0xb3, 0x8f, 0x1d, 0x73, 0x61, - 0x71, 0x55, 0xfd, 0xa9, 0x3e, 0x1b, 0x26, 0xf1, 0x00, 0xb8, 0xdf, 0x45, - 0xf1, 0x5f, 0xc2, 0x8f, 0xa5, 0x60, 0x8d, 0x11, 0xb7, 0x5f, 0xd5, 0xf9, - 0xec, 0xf0, 0xfe, 0x51, 0xfa, 0x56, 0x5e, 0x0f, 0x1f, 0x2f, 0xfb, 0x43, - 0x04, 0x5f, 0xc0, 0xbf, 0xf7, 0xf3, 0xe1, 0xe1, 0xfb, 0x89, 0x29, 0x2f, - 0x05, 0xe5, 0x17, 0xc6, 0xaf, 0xac, 0x4d, 0x3f, 0xd2, 0x65, 0xfa, 0xe3, - 0xfd, 0x41, 0xc7, 0xd7, 0xcf, 0x11, 0xf9, 0xe3, 0xa8, 0xfe, 0x36, 0x72, - 0x9d, 0xd6, 0xd0, 0xfb, 0x5f, 0xa8, 0x7d, 0xf3, 0xfc, 0x71, 0x7c, 0x7f, - 0xee, 0xe3, 0xfa, 0x21, 0x17, 0xf4, 0xff, 0x5b, 0x78, 0x7c, 0xfb, 0xd7, - 0x73, 0x22, 0xea, 0x73, 0xa8, 0xff, 0x1a, 0x7f, 0x5e, 0xca, 0x2f, 0xdf, - 0x29, 0xae, 0xdf, 0xad, 0x4f, 0xfe, 0x3d, 0xfd, 0xc5, 0xe2, 0x35, 0x7c, - 0xbd, 0xc9, 0x1a, 0xfc, 0x11, 0xe7, 0x7f, 0x82, 0xc4, 0xf3, 0x91, 0x89, - 0xc6, 0xea, 0xe4, 0x27, 0x76, 0x79, 0xd7, 0x18, 0xbe, 0x7e, 0x84, 0x57, - 0x22, 0xd3, 0x78, 0x97, 0xdc, 0x5e, 0xc7, 0x7d, 0xf8, 0x77, 0x64, 0xdf, - 0xbb, 0xa7, 0xc5, 0xbe, 0xfb, 0xf6, 0xba, 0xfb, 0xb4, 0xbd, 0x9e, 0x46, - 0x7b, 0xfd, 0xb9, 0x88, 0x7c, 0xba, 0xa7, 0x9f, 0x22, 0xf8, 0xe7, 0x52, - 0x63, 0x13, 0x78, 0x7f, 0xc3, 0xfd, 0x4a, 0xf6, 0x1a, 0x50, 0x67, 0x1a, - 0x82, 0xf6, 0x7a, 0xfd, 0x74, 0xd8, 0x6b, 0x77, 0xb1, 0xa2, 0xbd, 0x5e, - 0x32, 0x45, 0x7b, 0xed, 0xe5, 0xeb, 0x76, 0x08, 0xef, 0x17, 0x71, 0xb9, - 0x7c, 0x52, 0x36, 0x8d, 0x34, 0xf2, 0xf3, 0x1a, 0x69, 0xbf, 0xf7, 0x51, - 0xfb, 0xed, 0xcd, 0xef, 0xcc, 0xab, 0xa1, 0x8f, 0xba, 0x55, 0xec, 0x15, - 0xb6, 0x9f, 0xdd, 0xa2, 0xfd, 0xdc, 0x11, 0xfe, 0xbc, 0x73, 0xd0, 0x7e, - 0xf6, 0x29, 0xd9, 0xcf, 0x6e, 0x45, 0xfb, 0xa9, 0x46, 0x3f, 0xef, 0x5f, - 0xbf, 0xbd, 0xec, 0x9e, 0x66, 0x7b, 0xd9, 0xad, 0x68, 0x2f, 0xbb, 0x15, - 0xed, 0x65, 0xf7, 0x09, 0xdb, 0x4b, 0xfb, 0x84, 0xec, 0x65, 0x77, 0xbc, - 0xbd, 0x7c, 0x5a, 0xb2, 0x97, 0xa8, 0x3e, 0xf9, 0x94, 0x9f, 0x77, 0xf1, - 0xed, 0x65, 0xf4, 0x7c, 0x36, 0xd9, 0x4f, 0x9e, 0xcf, 0x3d, 0x45, 0xf6, - 0x8a, 0xbd, 0x7f, 0x42, 0x7e, 0xbf, 0x44, 0xd4, 0x7e, 0x21, 0x2f, 0xbe, - 0x7b, 0x62, 0xef, 0x03, 0xa0, 0xf5, 0x20, 0x1b, 0x30, 0x86, 0xa5, 0xf0, - 0xfe, 0xa5, 0x40, 0xfe, 0x23, 0xbc, 0xde, 0xc8, 0x03, 0xfc, 0xf8, 0xae, - 0x06, 0xf9, 0xdf, 0x46, 0xcb, 0xc5, 0xeb, 0xf5, 0x9f, 0x77, 0xe2, 0xf4, - 0xa2, 0xce, 0xac, 0xee, 0xb4, 0xed, 0xc5, 0x6c, 0x9d, 0x0c, 0xad, 0x37, - 0xc2, 0x8a, 0x55, 0x13, 0xf4, 0x75, 0x9d, 0xf1, 0xb2, 0x28, 0x7e, 0xd8, - 0x49, 0x2c, 0xbf, 0x67, 0x6c, 0x48, 0x8f, 0x9e, 0xbf, 0x04, 0x95, 0xb3, - 0xa8, 0x60, 0xe3, 0xbd, 0xdf, 0xdb, 0x92, 0x48, 0x40, 0x7c, 0x81, 0xbc, - 0x5f, 0x0a, 0x91, 0x97, 0x64, 0xbb, 0x1a, 0xad, 0x58, 0xb0, 0x51, 0x07, - 0x72, 0x3a, 0xb1, 0xbc, 0x8f, 0x26, 0xfc, 0x78, 0x08, 0x4b, 0xad, 0xa3, - 0xbe, 0xc1, 0xb2, 0x56, 0x25, 0xff, 0xdd, 0x08, 0x35, 0xc3, 0xf3, 0x61, - 0xfb, 0x06, 0x11, 0xd4, 0x33, 0x80, 0xbc, 0x2c, 0xae, 0x43, 0xdf, 0xf0, - 0x7a, 0x52, 0xbf, 0x3e, 0x6c, 0x93, 0x54, 0x1f, 0x36, 0x21, 0xd5, 0x1b, - 0x6c, 0x8a, 0xaf, 0x0f, 0x73, 0x17, 0xc5, 0xda, 0xd3, 0xea, 0xfc, 0x3e, - 0x7b, 0xbf, 0x09, 0xdd, 0xbc, 0x04, 0xe4, 0xbf, 0xe0, 0xe5, 0x5e, 0x39, - 0xf3, 0x88, 0xe6, 0x58, 0xad, 0x69, 0xf2, 0xfc, 0x1c, 0xd9, 0xef, 0x0d, - 0x86, 0xa7, 0x72, 0x20, 0x7f, 0x95, 0xde, 0x89, 0xe5, 0x71, 0xf8, 0xf2, - 0x51, 0x73, 0xc0, 0x70, 0x86, 0x79, 0x3d, 0x90, 0x9e, 0x41, 0xe5, 0x73, - 0xc9, 0x78, 0xe0, 0x97, 0xf5, 0x09, 0xe4, 0xd5, 0x97, 0x56, 0xd3, 0x23, - 0xe6, 0xc3, 0x80, 0x3d, 0x23, 0xa0, 0x5f, 0x6c, 0xff, 0x79, 0x36, 0x02, - 0x47, 0xbc, 0x8f, 0x22, 0xcc, 0x3e, 0xac, 0x30, 0xfd, 0xfc, 0xc5, 0x74, - 0xbf, 0x0f, 0xa3, 0x8a, 0x3f, 0x5b, 0x49, 0x7c, 0x6e, 0xfe, 0xa8, 0x79, - 0x8c, 0xc4, 0x47, 0xfd, 0xe7, 0xad, 0x28, 0x7f, 0x4a, 0x26, 0x9c, 0xd7, - 0xe1, 0x65, 0xb9, 0xc4, 0x80, 0x46, 0xf8, 0x43, 0x14, 0x96, 0xde, 0xc8, - 0xf9, 0x03, 0xf6, 0x39, 0x99, 0x8d, 0xe3, 0x4f, 0x5a, 0xe4, 0x0f, 0xe1, - 0xef, 0xda, 0x0c, 0xd8, 0xbf, 0x12, 0xf8, 0xe7, 0x01, 0xd8, 0xad, 0xd3, - 0x5f, 0x5f, 0x6e, 0xc6, 0xd5, 0x8f, 0x9d, 0x18, 0x7f, 0xaa, 0xf5, 0x83, - 0x58, 0x1f, 0x10, 0xd0, 0x5f, 0x82, 0x3f, 0xed, 0xc5, 0x1f, 0x3b, 0xb1, - 0x3f, 0xdd, 0x66, 0xeb, 0xe7, 0x66, 0x1e, 0xd4, 0x4a, 0xdf, 0x08, 0xd4, - 0x9b, 0x60, 0x77, 0xcb, 0xf5, 0x9e, 0xcf, 0x7e, 0x2a, 0xe1, 0xef, 0x6f, - 0x48, 0xbc, 0xd0, 0x44, 0xbd, 0x63, 0xff, 0xc9, 0xed, 0x5f, 0xfc, 0x79, - 0x0a, 0xac, 0xaf, 0xbe, 0xf3, 0x74, 0x4a, 0xd6, 0x87, 0x9c, 0xe7, 0xf5, - 0x60, 0xbd, 0xd8, 0x9f, 0x27, 0x6b, 0xac, 0xb7, 0xef, 0xc0, 0xc9, 0x5e, - 0x2f, 0xab, 0xf7, 0x1b, 0x25, 0xeb, 0x6b, 0x35, 0xe5, 0xf7, 0xaf, 0x79, - 0xeb, 0x73, 0xf0, 0xfa, 0xcc, 0x9e, 0x26, 0x34, 0xf1, 0xa0, 0x86, 0x82, - 0xf9, 0x02, 0xdb, 0x8f, 0x7f, 0xa1, 0xd2, 0x70, 0x52, 0xac, 0x9f, 0xfb, - 0x4e, 0x43, 0xec, 0xfa, 0xe6, 0x77, 0x19, 0x68, 0xc2, 0xbb, 0x4f, 0x28, - 0xd6, 0x3b, 0xd6, 0xa8, 0xc7, 0x22, 0xe7, 0xb7, 0xb5, 0x81, 0xeb, 0xbf, - 0x40, 0xfd, 0x1e, 0x39, 0x6f, 0x05, 0xb2, 0x5e, 0x3b, 0xc1, 0xea, 0x61, - 0xfd, 0xf5, 0x54, 0xe2, 0xf3, 0xdb, 0x81, 0x78, 0xba, 0xd3, 0x79, 0x32, - 0xcf, 0x1b, 0x1a, 0x4a, 0x89, 0xf5, 0x8a, 0x23, 0x29, 0x95, 0xfa, 0xc5, - 0xa4, 0x5d, 0x78, 0xd5, 0xbe, 0xa3, 0x1d, 0xad, 0xe9, 0xb0, 0x26, 0xa9, - 0x1d, 0x5a, 0x91, 0x8a, 0x8f, 0xef, 0xc7, 0xd7, 0x8f, 0x46, 0xd7, 0x4b, - 0x1c, 0x93, 0xdf, 0x4f, 0x49, 0xe5, 0x4f, 0xcf, 0x6e, 0x25, 0xef, 0xa3, - 0xf1, 0xf6, 0xab, 0x81, 0xcf, 0x6f, 0xd2, 0xfa, 0x08, 0x38, 0x2f, 0xad, - 0x2d, 0xa3, 0xc6, 0xa6, 0xd8, 0xfa, 0xe5, 0x73, 0x22, 0x7e, 0x6f, 0x10, - 0xee, 0xcf, 0x99, 0x36, 0xbc, 0x7f, 0x9e, 0xbf, 0x79, 0x6b, 0x32, 0xde, - 0x5f, 0x3d, 0x49, 0xe7, 0x27, 0xe2, 0x79, 0xc5, 0xea, 0x78, 0x83, 0x58, - 0x0f, 0x53, 0xf5, 0xfc, 0xa2, 0xb6, 0x8b, 0xdd, 0x2f, 0x18, 0x7d, 0x3a, - 0xf8, 0x33, 0x61, 0xf6, 0x14, 0x12, 0xd1, 0xf4, 0xfd, 0x05, 0x4e, 0xba, - 0x76, 0x7e, 0x46, 0xbe, 0x9f, 0x2e, 0x3d, 0x10, 0xff, 0xbe, 0xb7, 0x6b, - 0x23, 0xfc, 0x17, 0xef, 0xbe, 0x29, 0xdc, 0xc7, 0x47, 0xd2, 0x60, 0x9f, - 0xca, 0x09, 0x96, 0x4f, 0x72, 0x36, 0x04, 0xde, 0x2f, 0xd4, 0x28, 0xde, - 0xa7, 0xa7, 0x58, 0x7f, 0xb5, 0x4c, 0xf1, 0x3e, 0xbd, 0xfc, 0xc0, 0x89, - 0xbe, 0x2f, 0x91, 0xf1, 0x9f, 0x2a, 0x68, 0x67, 0xce, 0x61, 0x43, 0x98, - 0xdf, 0x44, 0x49, 0xc2, 0x8f, 0xd6, 0x9e, 0x02, 0x79, 0xee, 0xaa, 0xbb, - 0x9d, 0x74, 0x70, 0x0f, 0x93, 0xb4, 0x3e, 0x1e, 0xf9, 0xc7, 0xf4, 0xbc, - 0xd5, 0xba, 0xff, 0xf9, 0xf9, 0x56, 0xf1, 0xfd, 0xa0, 0x1c, 0x3f, 0x5d, - 0xcf, 0x30, 0x89, 0xd7, 0x95, 0xc2, 0xef, 0xef, 0xa5, 0x9d, 0xc9, 0x90, - 0xfb, 0x18, 0xc3, 0x47, 0x7d, 0xd9, 0x41, 0x5a, 0xcf, 0x92, 0xa8, 0xdb, - 0x9f, 0xf6, 0xe6, 0xa7, 0xcb, 0x1f, 0xf7, 0xec, 0x13, 0x8b, 0xbf, 0xf4, - 0x07, 0xea, 0xeb, 0xb8, 0x3c, 0x36, 0xaa, 0xec, 0xef, 0xb9, 0x81, 0x7c, - 0x24, 0x89, 0x27, 0xf5, 0xe6, 0x3d, 0xff, 0x8b, 0xf0, 0xa3, 0x10, 0x71, - 0x9f, 0xc4, 0x70, 0x7e, 0xa6, 0x7f, 0xdf, 0x46, 0xe8, 0x7a, 0x5e, 0x0f, - 0x7d, 0x6c, 0xce, 0xd4, 0xe5, 0xcb, 0xbd, 0xec, 0x94, 0xc9, 0x57, 0x38, - 0x7d, 0x7d, 0x51, 0xbf, 0xa7, 0x2a, 0xcb, 0x63, 0x54, 0x3e, 0x2b, 0x32, - 0xbe, 0xf6, 0xa0, 0x58, 0x4f, 0xc4, 0xeb, 0x45, 0xe5, 0xf8, 0x9a, 0xe2, - 0x7d, 0xcb, 0x93, 0x4f, 0x10, 0x90, 0x36, 0xdb, 0x80, 0xfb, 0x55, 0x5f, - 0x92, 0xe2, 0xeb, 0x11, 0xf6, 0xc7, 0x7b, 0x9f, 0x2a, 0xad, 0x87, 0x20, - 0xe8, 0xfc, 0xf7, 0x57, 0x78, 0xf2, 0xba, 0x3c, 0xe0, 0x3f, 0xa0, 0xc1, - 0x24, 0x97, 0x77, 0xdc, 0xdd, 0xfd, 0x76, 0x3a, 0xac, 0x1e, 0x62, 0x7a, - 0xee, 0xe3, 0xf4, 0xfe, 0x3b, 0x5b, 0xf7, 0xee, 0xe3, 0xd5, 0xf7, 0x97, - 0x1a, 0xcf, 0x0b, 0x48, 0xf8, 0x20, 0x3a, 0x0e, 0x7b, 0x5f, 0x5e, 0x38, - 0x6d, 0xf8, 0x1e, 0x8b, 0x79, 0x3e, 0xa6, 0x16, 0x0c, 0xfc, 0x13, 0xed, - 0x83, 0xdc, 0xbf, 0x4b, 0xad, 0x5e, 0x5c, 0x19, 0xff, 0x35, 0x27, 0x84, - 0x1f, 0x1e, 0x36, 0x88, 0x97, 0xcf, 0xc5, 0xb1, 0xf8, 0x40, 0xb4, 0xf2, - 0x7a, 0xfd, 0xfc, 0x9a, 0xe2, 0xef, 0xb7, 0x79, 0xbf, 0x5f, 0x6c, 0x49, - 0x70, 0x4e, 0x82, 0x6d, 0x09, 0x76, 0x24, 0x98, 0xc5, 0xfb, 0x7d, 0xd8, - 0x94, 0x60, 0x4b, 0x82, 0x73, 0x12, 0x6c, 0x4b, 0xf0, 0xa9, 0xfd, 0x3d, - 0x2a, 0x57, 0x82, 0x6b, 0xfe, 0xde, 0xda, 0x34, 0xd3, 0x77, 0xfa, 0x73, - 0xfa, 0x73, 0xfa, 0x13, 0xf3, 0xf9, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xec, 0x5d, 0x7b, 0x90, 0x1c, 0x47, 0x79, 0xef, 0xee, 0x99, 0x9d, 0x9d, - 0xdd, 0xdb, 0x5b, 0x8d, 0xce, 0x27, 0xb1, 0x3e, 0x4b, 0xd6, 0x9c, 0x74, - 0x96, 0x8e, 0xc4, 0xa8, 0xce, 0x8a, 0x2c, 0xce, 0x46, 0x31, 0x73, 0xd2, - 0xc9, 0x48, 0x46, 0x22, 0xc2, 0x3c, 0x22, 0x53, 0x3c, 0xf6, 0x70, 0x51, - 0x25, 0x83, 0x23, 0x9b, 0xc4, 0x49, 0xce, 0xd8, 0x29, 0xf7, 0xde, 0xed, - 0x3d, 0x0c, 0x3a, 0xd7, 0x59, 0x18, 0x23, 0x8c, 0x31, 0x7b, 0x92, 0x6c, - 0xab, 0x30, 0x15, 0xa8, 0x72, 0x52, 0x65, 0xf2, 0x47, 0xb2, 0xd6, 0x83, - 0x08, 0xca, 0xaa, 0x3a, 0x70, 0xe2, 0x22, 0x29, 0x2a, 0x59, 0x3b, 0x29, - 0x22, 0x1e, 0x51, 0x94, 0x02, 0x93, 0x33, 0x18, 0x94, 0x7e, 0xcf, 0x74, - 0xef, 0xcc, 0xec, 0x9e, 0x1e, 0x14, 0x09, 0xdc, 0x1f, 0xb6, 0xc7, 0x33, - 0xdb, 0xd3, 0xd3, 0xfd, 0xf5, 0xf7, 0xfe, 0x7e, 0xdf, 0x00, 0xd3, 0xaf, - 0x38, 0xbe, 0x0c, 0xcd, 0xb7, 0x72, 0x51, 0xc1, 0x22, 0xf6, 0xc5, 0xfc, - 0x83, 0x70, 0x2f, 0xac, 0x8f, 0xc3, 0xc3, 0xef, 0x06, 0x2f, 0xe0, 0x03, - 0x76, 0x75, 0x23, 0xb4, 0xb8, 0xbf, 0x36, 0x0f, 0x1e, 0xa1, 0x67, 0x76, - 0x85, 0xd3, 0xeb, 0xc2, 0xaf, 0x0e, 0x66, 0x30, 0xe7, 0x57, 0x37, 0x3b, - 0xcc, 0x7b, 0x4a, 0xe4, 0x77, 0xd9, 0x03, 0xc1, 0x83, 0xf9, 0xf1, 0x6b, - 0x3b, 0x2c, 0xee, 0x9f, 0x2a, 0x3c, 0x3a, 0x67, 0x97, 0x11, 0x02, 0x4b, - 0x97, 0x02, 0xa7, 0x5c, 0x9a, 0x54, 0xfa, 0xaf, 0x27, 0xea, 0x4f, 0x87, - 0xa9, 0xbd, 0x5c, 0xdd, 0xa2, 0xfc, 0x03, 0x6b, 0x89, 0xfe, 0x1a, 0xa0, - 0x65, 0xdb, 0xd6, 0x40, 0x99, 0x7f, 0x76, 0x6b, 0x6a, 0x3f, 0xce, 0x3c, - 0x66, 0xea, 0x44, 0x6d, 0xcb, 0x7b, 0xfa, 0xe9, 0x2d, 0x9c, 0xc7, 0x39, - 0x7e, 0x2d, 0xfa, 0xc5, 0xc9, 0xfb, 0x6e, 0x9d, 0x31, 0xd2, 0xe9, 0x23, - 0xbe, 0xce, 0x6f, 0xfc, 0x7e, 0x2a, 0xaf, 0xfc, 0x8e, 0xd9, 0xe2, 0x46, - 0x1a, 0xb4, 0xa6, 0xfe, 0xbc, 0x98, 0xf7, 0xbd, 0x27, 0x23, 0xbf, 0x0f, - 0x80, 0xb7, 0x1b, 0xf2, 0x4b, 0xe1, 0x6d, 0x31, 0xfb, 0xd2, 0xf7, 0xc5, - 0xf3, 0x7b, 0x10, 0xae, 0x65, 0xfc, 0x8b, 0x95, 0x27, 0x97, 0xfd, 0xcf, - 0xd3, 0x2f, 0x47, 0xe4, 0x7f, 0xf4, 0x89, 0xfd, 0xf1, 0x59, 0x73, 0x6e, - 0x3f, 0x23, 0xe9, 0x83, 0xe6, 0x0a, 0x06, 0xae, 0x9f, 0xf1, 0x32, 0x7c, - 0xfd, 0xa3, 0xf4, 0xd2, 0x20, 0xf4, 0x32, 0x4c, 0xed, 0x4d, 0xff, 0x96, - 0x0d, 0x50, 0xe4, 0x23, 0x4a, 0xf9, 0x86, 0x44, 0xbd, 0x22, 0x95, 0xdd, - 0xee, 0x0d, 0xef, 0x70, 0x24, 0xbe, 0x91, 0x49, 0x2f, 0x76, 0x17, 0xc0, - 0xd3, 0xf6, 0x64, 0x61, 0xb6, 0x40, 0xae, 0x0b, 0xd4, 0xbf, 0xb9, 0xc3, - 0x58, 0x6f, 0xe5, 0x3f, 0x66, 0xf5, 0x84, 0x4c, 0x1c, 0xe2, 0x2d, 0x52, - 0xa2, 0xd7, 0x18, 0xaa, 0x2a, 0x58, 0xb6, 0xad, 0xb7, 0x4d, 0xfa, 0x89, - 0xd4, 0x03, 0x09, 0x7c, 0x15, 0xd6, 0xff, 0xd5, 0x0b, 0xdf, 0xc7, 0x54, - 0x2e, 0x3f, 0x12, 0xef, 0x08, 0xd2, 0xf2, 0x19, 0x7d, 0xc4, 0xe8, 0x29, - 0x17, 0x8e, 0x9f, 0x3e, 0xff, 0x4b, 0xac, 0x7f, 0x5c, 0xc4, 0xf9, 0x1f, - 0xf8, 0x95, 0x9e, 0xff, 0x3f, 0xb8, 0x44, 0xe7, 0xbf, 0x79, 0xbf, 0xd2, - 0xd7, 0xeb, 0xff, 0xda, 0xfe, 0xfc, 0x7f, 0xe5, 0xff, 0xfb, 0xdc, 0x88, - 0x3d, 0x1c, 0x39, 0xbf, 0x72, 0xff, 0x7b, 0x17, 0xc9, 0xff, 0x25, 0x7f, - 0x6f, 0xd2, 0x27, 0x25, 0xfe, 0xb5, 0xb2, 0x97, 0x7e, 0xb3, 0xf7, 0xbb, - 0xf9, 0xef, 0x05, 0xa3, 0x3e, 0xaf, 0xa0, 0xd9, 0xcb, 0xa6, 0x3d, 0x97, - 0xc7, 0x6f, 0x62, 0xff, 0xee, 0x11, 0xf5, 0xc5, 0xb2, 0x1e, 0x79, 0x2c, - 0xd0, 0xe5, 0xed, 0x31, 0xfd, 0x5a, 0xf2, 0x4f, 0xbc, 0x9a, 0xfb, 0xff, - 0xfc, 0x24, 0xfd, 0x3f, 0x8c, 0xb7, 0xc9, 0xfa, 0xfa, 0x38, 0x79, 0x6c, - 0xa9, 0xfb, 0x79, 0xdc, 0x1f, 0x37, 0x1e, 0x7e, 0xf7, 0x7c, 0xb8, 0xff, - 0x07, 0xb4, 0xfd, 0x57, 0xfe, 0xd2, 0x5f, 0xfc, 0x66, 0xee, 0xb7, 0xfe, - 0xd7, 0x6c, 0xaf, 0xbf, 0x2b, 0x66, 0xbd, 0x91, 0x79, 0xde, 0x2e, 0xd9, - 0x7e, 0xb6, 0x5c, 0xff, 0xe4, 0xfd, 0xfb, 0xe5, 0x6f, 0xf7, 0xef, 0x57, - 0x72, 0xfe, 0x85, 0xf7, 0x52, 0xee, 0x3f, 0x3f, 0xff, 0xc7, 0x86, 0xfb, - 0xb5, 0xf3, 0xdf, 0xa5, 0xf8, 0x41, 0xd6, 0xe0, 0x0f, 0x8b, 0xa6, 0x17, - 0x83, 0x1e, 0x9b, 0xce, 0x7f, 0x5d, 0xe7, 0x47, 0xbf, 0x3d, 0xff, 0x17, - 0x79, 0xfe, 0xb5, 0xfd, 0x8d, 0x39, 0xff, 0x06, 0xff, 0x5f, 0xdc, 0x7e, - 0xfe, 0xfa, 0x9d, 0x77, 0x03, 0xef, 0x45, 0xc5, 0xeb, 0x7e, 0x60, 0xf6, - 0x37, 0xb1, 0x45, 0xbc, 0x12, 0x71, 0x7c, 0xef, 0x51, 0x9b, 0xe7, 0x2b, - 0xe5, 0x8c, 0xf8, 0xc6, 0x8c, 0x86, 0xdf, 0xae, 0xbe, 0x55, 0xe0, 0x03, - 0x85, 0x0b, 0xa2, 0xc7, 0x0f, 0x9e, 0xd1, 0xf1, 0xf7, 0xee, 0xee, 0x78, - 0xa3, 0xc4, 0x0f, 0x9a, 0x01, 0xbc, 0xfe, 0x79, 0x9f, 0x45, 0xeb, 0x9f, - 0x01, 0xec, 0xb4, 0x82, 0x48, 0xff, 0x33, 0x99, 0xff, 0x66, 0xc9, 0x7c, - 0x2b, 0xfa, 0x42, 0x0a, 0xb9, 0xed, 0xab, 0xfc, 0xd5, 0x7a, 0xc1, 0x6d, - 0x23, 0xde, 0xf1, 0xce, 0xf0, 0xfd, 0x00, 0x1c, 0x19, 0x7b, 0x11, 0xae, - 0x05, 0x8d, 0x82, 0xc2, 0xc3, 0x0e, 0xe4, 0xf8, 0xbe, 0x8c, 0x1f, 0x4e, - 0x3f, 0x0f, 0x6b, 0xd1, 0xf8, 0xa1, 0x56, 0xdf, 0xfb, 0xa4, 0xc2, 0xcf, - 0xdd, 0x42, 0xfb, 0x57, 0x21, 0xdf, 0x01, 0xee, 0xa8, 0x45, 0xeb, 0xd7, - 0x78, 0x3d, 0xcd, 0xe7, 0x22, 0xf5, 0x90, 0x7b, 0x65, 0xbe, 0xcc, 0xcf, - 0x38, 0x7e, 0x2d, 0x9f, 0xd7, 0xb8, 0xd5, 0xe4, 0xcf, 0x6f, 0xd1, 0x0f, - 0x4a, 0xd5, 0xff, 0x8b, 0x7e, 0x50, 0x7e, 0x7a, 0x7d, 0x63, 0x7d, 0x75, - 0x42, 0x3e, 0x87, 0x11, 0x9f, 0x06, 0x59, 0x23, 0xbf, 0xad, 0x8e, 0x71, - 0x06, 0xae, 0x20, 0x1f, 0xb8, 0xfe, 0x1f, 0x01, 0x98, 0xca, 0x7f, 0xb6, - 0x97, 0xfd, 0x7a, 0xeb, 0x08, 0x53, 0x35, 0xf1, 0x30, 0xdb, 0xff, 0x89, - 0xa7, 0x2c, 0x78, 0x3f, 0xc4, 0x91, 0x7a, 0x7a, 0x59, 0xef, 0x0e, 0x02, - 0x16, 0xff, 0x0d, 0xac, 0x6c, 0x14, 0x7f, 0x16, 0xd4, 0xd5, 0xfe, 0xb1, - 0xaf, 0xc9, 0xba, 0xdf, 0xb2, 0xc9, 0xfa, 0xb8, 0x71, 0xf5, 0xf2, 0x3b, - 0x10, 0xaf, 0xcf, 0x13, 0x78, 0xba, 0x26, 0x7e, 0xb4, 0xad, 0xef, 0x57, - 0xf3, 0xef, 0xbf, 0x81, 0x40, 0x90, 0x45, 0x61, 0x7d, 0x3d, 0x3f, 0x97, - 0xea, 0xfd, 0xfe, 0x29, 0x11, 0x7f, 0xd9, 0x07, 0x18, 0xbd, 0x85, 0xfd, - 0x5b, 0x34, 0x3c, 0xfd, 0x90, 0x5e, 0xbe, 0x41, 0x53, 0xf3, 0xc6, 0xbe, - 0x05, 0xcf, 0xc2, 0xc6, 0x34, 0xcf, 0x7f, 0x1f, 0xb0, 0x93, 0xe9, 0x4b, - 0xe2, 0xbf, 0x3e, 0xf3, 0xc3, 0xaf, 0x14, 0x80, 0x8e, 0xdf, 0x80, 0x5a, - 0xd4, 0xaf, 0x0a, 0x79, 0x84, 0x21, 0xdf, 0x5f, 0x9c, 0x9e, 0x3f, 0xa9, - 0xf2, 0xdf, 0x12, 0xce, 0xb7, 0xc0, 0xb3, 0x91, 0xe7, 0xb3, 0x71, 0x2b, - 0xaf, 0x17, 0x2a, 0x3e, 0x32, 0xf2, 0xc4, 0xcb, 0xc5, 0x6c, 0xf5, 0xd8, - 0x08, 0xcb, 0x3b, 0xc4, 0xdf, 0xcd, 0x20, 0x8a, 0x5f, 0x63, 0xd3, 0xa9, - 0x96, 0xd9, 0xfb, 0x54, 0xbe, 0x0f, 0xd2, 0xfb, 0x65, 0x8e, 0xaa, 0xf8, - 0x5b, 0xe0, 0x56, 0xd9, 0xf3, 0x1e, 0x79, 0x5e, 0xc5, 0x63, 0x85, 0x7d, - 0xe3, 0xc2, 0x4e, 0x1c, 0x78, 0xbe, 0x05, 0x06, 0x5f, 0x67, 0x78, 0x0b, - 0x49, 0xe7, 0xf1, 0xfa, 0xa8, 0x3d, 0x14, 0xf1, 0x97, 0x00, 0x70, 0x0a, - 0x44, 0xf7, 0x23, 0xac, 0x77, 0x16, 0xf4, 0x64, 0x4f, 0x83, 0x80, 0xf6, - 0x1b, 0x58, 0xb8, 0x8f, 0xf5, 0xa3, 0xe8, 0x39, 0xc0, 0x52, 0x8c, 0xf0, - 0x36, 0x5e, 0x97, 0x8e, 0x91, 0x07, 0xf0, 0xda, 0xe7, 0xde, 0x0e, 0xc3, - 0xf5, 0x5d, 0x21, 0xf1, 0xf6, 0x45, 0xfc, 0xfd, 0x1b, 0xda, 0x78, 0x12, - 0xde, 0x2b, 0x3c, 0xff, 0x7a, 0x3c, 0x9a, 0xaf, 0xdf, 0x84, 0x23, 0xfa, - 0xe1, 0xd5, 0x30, 0x7a, 0x90, 0x5c, 0x4f, 0xfd, 0xc7, 0x9c, 0xbd, 0x00, - 0x83, 0x6a, 0x1c, 0xbd, 0xec, 0x40, 0x5b, 0xb2, 0x84, 0xde, 0xe1, 0x59, - 0xd0, 0x18, 0x4b, 0xc6, 0x3b, 0x78, 0x7b, 0x02, 0xbe, 0x1c, 0xe7, 0x0f, - 0x1c, 0x7f, 0x81, 0xf7, 0x83, 0x91, 0xeb, 0x41, 0xf8, 0x48, 0x43, 0xc5, - 0xe3, 0xb1, 0x95, 0x80, 0x6f, 0xc0, 0xd6, 0xb3, 0x9e, 0x45, 0xe1, 0xfb, - 0x2e, 0x0c, 0x3f, 0x04, 0x3a, 0x97, 0x0a, 0x3f, 0x64, 0x46, 0xab, 0xcf, - 0x0e, 0xeb, 0x7b, 0x17, 0x2c, 0x76, 0x7f, 0x88, 0xe2, 0xa7, 0x55, 0x69, - 0xfd, 0xae, 0xed, 0x4f, 0x48, 0xbc, 0x75, 0xfa, 0x27, 0xf0, 0x7b, 0x24, - 0xfd, 0x95, 0x17, 0x4c, 0x7c, 0x1e, 0x3e, 0x5f, 0x9f, 0xf2, 0xb3, 0x6c, - 0xa7, 0xa4, 0xd7, 0x3c, 0x08, 0x72, 0xb4, 0x5f, 0x01, 0x0d, 0xd8, 0x5f, - 0x01, 0x59, 0x21, 0x23, 0xfb, 0x5b, 0xab, 0xfa, 0xef, 0x49, 0xfc, 0xf2, - 0x51, 0x41, 0x5f, 0xa0, 0x9e, 0x8e, 0xcf, 0xbe, 0x4b, 0xcf, 0x57, 0x52, - 0xf6, 0xb5, 0x4f, 0xe3, 0xb6, 0x6c, 0x3f, 0x0a, 0xd1, 0xfa, 0x47, 0xf2, - 0x42, 0xb4, 0x8c, 0xc8, 0x83, 0xed, 0x03, 0x54, 0xce, 0x91, 0xf1, 0xf7, - 0x65, 0x9b, 0xf8, 0x7f, 0x90, 0xcd, 0x1a, 0xf1, 0x33, 0x7c, 0x8d, 0xb1, - 0x9f, 0x4d, 0xf5, 0x09, 0x62, 0x3d, 0xc2, 0x78, 0xbb, 0xcf, 0xf0, 0xb4, - 0x92, 0xf2, 0xbf, 0xaf, 0x51, 0xf9, 0xc9, 0x97, 0xb7, 0x7e, 0xbe, 0x19, - 0x9f, 0xb1, 0x53, 0xe7, 0x47, 0xf6, 0xc3, 0x28, 0x72, 0xcd, 0x53, 0x79, - 0x8a, 0x60, 0xc5, 0x96, 0x6b, 0xa6, 0xe9, 0x1a, 0xe0, 0x42, 0xf5, 0xe5, - 0x13, 0xb4, 0x7e, 0xfe, 0x49, 0xf2, 0xa6, 0x79, 0x0b, 0x56, 0x30, 0xec, - 0x44, 0xf6, 0x52, 0x3f, 0x0b, 0xb6, 0xf3, 0xfc, 0xba, 0xe5, 0x53, 0xbd, - 0x39, 0x6c, 0x0d, 0xe0, 0xab, 0x9f, 0x0f, 0xf5, 0x2d, 0xb2, 0xc9, 0x89, - 0xfd, 0x5e, 0xc0, 0xf0, 0x8c, 0x65, 0x2f, 0xcb, 0x14, 0x41, 0xe9, 0x75, - 0xd0, 0x98, 0x82, 0x87, 0x7b, 0xde, 0x51, 0x3b, 0x4f, 0x5e, 0x84, 0x9f, - 0xa9, 0x8b, 0xe7, 0x21, 0xc5, 0x4b, 0x99, 0xa2, 0xf9, 0xd8, 0x4e, 0x99, - 0xf2, 0xa7, 0xfc, 0x0b, 0xc7, 0x38, 0xde, 0x4b, 0x90, 0xf5, 0x2b, 0x74, - 0xfe, 0x23, 0xda, 0x7c, 0x09, 0x7b, 0xb5, 0x6e, 0xa6, 0xf9, 0xce, 0x60, - 0x3d, 0x2a, 0x1f, 0x62, 0x78, 0x2b, 0xd2, 0x7e, 0xc8, 0xf2, 0x7e, 0x49, - 0x34, 0x5f, 0xea, 0x10, 0x19, 0x73, 0x9f, 0xc3, 0xeb, 0xcf, 0x37, 0x4b, - 0xff, 0xca, 0x0a, 0x5e, 0xbf, 0x54, 0x40, 0x5b, 0x18, 0x56, 0xeb, 0xd9, - 0x8c, 0xcf, 0xd6, 0xa7, 0x2a, 0xd6, 0xbb, 0x1f, 0xb4, 0x83, 0x87, 0x42, - 0xfb, 0x73, 0xec, 0xbc, 0x8d, 0x7a, 0xf1, 0xd6, 0x71, 0x7a, 0x03, 0xd7, - 0xca, 0xf1, 0xaf, 0x8c, 0xc5, 0xc7, 0xa6, 0xcf, 0xdf, 0x40, 0x9e, 0x57, - 0xf1, 0x77, 0xf9, 0x3c, 0x05, 0xd6, 0x88, 0xed, 0x0f, 0x21, 0xf9, 0x8b, - 0xa0, 0x0f, 0x5b, 0xcc, 0xef, 0x28, 0x68, 0x0f, 0xaf, 0x45, 0x8d, 0xbf, - 0x2c, 0x7d, 0xfc, 0x33, 0xc6, 0xf8, 0xfd, 0x70, 0x91, 0xe3, 0x77, 0xb5, - 0x98, 0x7f, 0xc6, 0x98, 0xff, 0x62, 0xc7, 0x5f, 0x12, 0x3f, 0xbe, 0x9a, - 0x6f, 0xac, 0xfc, 0x6e, 0xc2, 0x13, 0x08, 0xf7, 0xa7, 0x90, 0x3e, 0xde, - 0xd1, 0x36, 0xf1, 0x70, 0x54, 0xfe, 0x4a, 0xbe, 0xc5, 0xfc, 0xac, 0xa4, - 0xf9, 0xdd, 0x18, 0x3f, 0xbf, 0x6c, 0x8b, 0xf9, 0x25, 0x8e, 0xb7, 0x29, - 0x76, 0xbc, 0x04, 0xbc, 0x1e, 0x45, 0xef, 0x47, 0x69, 0x43, 0xa5, 0xd8, - 0xf1, 0x58, 0xfe, 0xd3, 0x82, 0xa4, 0xd7, 0xf5, 0xf2, 0x68, 0xc7, 0xe2, - 0xa7, 0xb0, 0x7a, 0xb5, 0x68, 0x3d, 0xa1, 0xf8, 0x7b, 0x49, 0xc9, 0xd3, - 0x0c, 0x8c, 0xbe, 0x2f, 0x1c, 0xff, 0xf7, 0xb4, 0xfe, 0x4a, 0xe5, 0x0d, - 0x4b, 0x85, 0x3c, 0xa0, 0xfc, 0x7f, 0x85, 0xe2, 0xff, 0xa5, 0x31, 0x86, - 0x86, 0x87, 0xcb, 0xb7, 0x92, 0x7d, 0xed, 0x71, 0x31, 0xe3, 0xaa, 0xf5, - 0xa1, 0x0a, 0xca, 0x0d, 0xd0, 0x92, 0x3b, 0x29, 0x7f, 0xcf, 0x9d, 0x3f, - 0x7f, 0x7e, 0x09, 0xf9, 0xc7, 0x5d, 0xdf, 0xd9, 0x01, 0xbd, 0xfa, 0x75, - 0xfd, 0x63, 0x95, 0x91, 0xbd, 0xc0, 0xbf, 0xa2, 0x13, 0x87, 0x78, 0x6d, - 0x9c, 0x5f, 0x97, 0x59, 0xfd, 0xe1, 0xe4, 0x4b, 0x95, 0xfc, 0x46, 0xda, - 0x71, 0xa8, 0xf6, 0x82, 0x03, 0xad, 0xf2, 0xee, 0x7e, 0xe4, 0xf4, 0x6e, - 0x47, 0xa5, 0x25, 0x36, 0xb6, 0x89, 0x2e, 0xf3, 0xc8, 0x23, 0x4e, 0xe1, - 0x9a, 0xd7, 0xd6, 0x81, 0x46, 0x07, 0xd5, 0x8f, 0x5e, 0x96, 0xf5, 0x17, - 0xe7, 0x57, 0x11, 0x71, 0x82, 0x28, 0x0b, 0x06, 0x0f, 0x43, 0x2a, 0xaf, - 0x30, 0x91, 0x8f, 0x03, 0xe0, 0x24, 0xb2, 0x3b, 0x80, 0xb7, 0x76, 0xec, - 0x6b, 0x4c, 0x7e, 0xbe, 0x1b, 0x6c, 0xb3, 0x50, 0xa7, 0x7f, 0xeb, 0xea, - 0x57, 0x7e, 0xdf, 0xa2, 0xfc, 0xb2, 0x0b, 0x9c, 0x24, 0xcf, 0x8e, 0x8d, - 0xac, 0x46, 0xcf, 0x21, 0xa2, 0x9f, 0xcf, 0xad, 0x1d, 0x26, 0x9a, 0x95, - 0xc5, 0x75, 0xfc, 0x83, 0x80, 0xe1, 0x93, 0x64, 0x6a, 0x45, 0x2b, 0x86, - 0x7f, 0x96, 0xc1, 0xd1, 0x3a, 0xbd, 0x8f, 0xed, 0xf2, 0x92, 0xb8, 0xfb, - 0x01, 0xf8, 0x0e, 0xbb, 0x0f, 0x6c, 0x1c, 0x7b, 0xdf, 0x07, 0x0d, 0x76, - 0x5f, 0xd9, 0x33, 0xc8, 0xe8, 0x87, 0x01, 0x0c, 0x3c, 0xe0, 0x50, 0x9f, - 0x5c, 0x02, 0xaa, 0x7f, 0x0f, 0x4b, 0xd7, 0xc7, 0xca, 0x1b, 0x2a, 0xe2, - 0xa2, 0x93, 0x68, 0x79, 0x5e, 0x8c, 0xeb, 0xa6, 0xfd, 0x6e, 0xca, 0x1f, - 0xae, 0xb3, 0x5a, 0x4a, 0x8f, 0x17, 0x6e, 0x2a, 0xfd, 0xef, 0x68, 0x2f, - 0x95, 0x84, 0x6a, 0xbc, 0x33, 0x82, 0xbe, 0xdc, 0x2e, 0x2a, 0xc4, 0x26, - 0x76, 0x7e, 0x0a, 0x6e, 0x64, 0xf8, 0x25, 0x4d, 0xef, 0xa3, 0xf2, 0xbf, - 0x3b, 0x42, 0x9f, 0x64, 0xf6, 0xc3, 0x8c, 0xff, 0x8b, 0x7c, 0x30, 0x0a, - 0x73, 0xfa, 0x06, 0xd0, 0x5c, 0x8f, 0xba, 0x87, 0x41, 0xd2, 0x33, 0x7a, - 0xcd, 0x53, 0x15, 0x65, 0x80, 0xdf, 0xdf, 0x9e, 0x11, 0x87, 0x61, 0x84, - 0xe1, 0x30, 0xe0, 0xbf, 0x12, 0x78, 0x92, 0x13, 0x3e, 0xbf, 0xfe, 0x04, - 0xe4, 0xcb, 0x3b, 0xd4, 0xcb, 0xf5, 0xf9, 0x69, 0xc4, 0x1f, 0xc8, 0xdc, - 0xa1, 0xf2, 0x9d, 0x65, 0xac, 0xe9, 0xe7, 0xab, 0x12, 0xea, 0x63, 0x37, - 0x94, 0xa2, 0xeb, 0x27, 0xa1, 0x7c, 0x13, 0xf0, 0x5a, 0x63, 0xcf, 0xcf, - 0x72, 0x75, 0x7e, 0x62, 0xf6, 0xe3, 0xca, 0xba, 0xbb, 0xae, 0xfa, 0x41, - 0x29, 0x7f, 0x81, 0x5d, 0xbf, 0x9b, 0x07, 0xc4, 0x13, 0x9e, 0xbf, 0xc4, - 0xf9, 0x3a, 0x4d, 0xf9, 0xc9, 0xe6, 0xfe, 0x9b, 0xf9, 0xca, 0x98, 0xd6, - 0x73, 0xd9, 0x59, 0xa1, 0x3f, 0x92, 0xeb, 0x67, 0x71, 0xe7, 0x61, 0x91, - 0x3f, 0xc7, 0xe8, 0xbf, 0xc1, 0x7a, 0x60, 0xab, 0xf9, 0xcb, 0xf5, 0x12, - 0xfd, 0x2a, 0xa0, 0xdd, 0x10, 0x01, 0xff, 0xd5, 0x71, 0xdf, 0x27, 0xf5, - 0xb5, 0x7f, 0xcd, 0x2d, 0xee, 0xfb, 0x7e, 0x67, 0x91, 0xfd, 0xb0, 0xcd, - 0xfc, 0x65, 0x1f, 0xbc, 0x81, 0xeb, 0x83, 0x46, 0xff, 0x28, 0x89, 0xaf, - 0xfb, 0x77, 0x3f, 0x39, 0x4f, 0xff, 0xee, 0x32, 0xf5, 0x37, 0x9f, 0xd7, - 0x71, 0xd3, 0xe7, 0xfa, 0xe9, 0x7a, 0x5c, 0x2b, 0x7e, 0xe0, 0x72, 0xc3, - 0x9e, 0x3a, 0x05, 0xfc, 0x7a, 0xe1, 0xe9, 0x89, 0x09, 0x41, 0x6f, 0x67, - 0x39, 0x2e, 0x3d, 0x3e, 0x21, 0xae, 0x7d, 0xde, 0x3f, 0xb3, 0x76, 0xb3, - 0xd0, 0xf7, 0x9c, 0x47, 0x58, 0xbf, 0x06, 0x7c, 0xb3, 0xa0, 0x57, 0x6a, - 0xe6, 0x74, 0xf4, 0x8c, 0x33, 0xfc, 0x23, 0x7a, 0x9e, 0xba, 0x3d, 0xa2, - 0xc0, 0x97, 0x7a, 0x6c, 0xc2, 0xb4, 0x21, 0xc3, 0x23, 0x25, 0x5a, 0x03, - 0x8a, 0xf6, 0x97, 0x43, 0x75, 0xc4, 0xcf, 0x13, 0xb7, 0xaf, 0x7c, 0x6e, - 0xf7, 0xf9, 0x2e, 0xf7, 0xcb, 0x4d, 0x17, 0x84, 0xf7, 0x9d, 0x98, 0x4d, - 0xb0, 0x8c, 0xc8, 0xef, 0xbb, 0x9e, 0xc7, 0xa8, 0xeb, 0x61, 0xf2, 0xbf, - 0x17, 0x00, 0xf5, 0x67, 0x95, 0xaa, 0x8d, 0x6a, 0x39, 0x6f, 0xd9, 0xeb, - 0x21, 0xce, 0x0e, 0xbe, 0x7f, 0x12, 0x8f, 0x51, 0x97, 0xe9, 0x92, 0x29, - 0x08, 0xbc, 0xd7, 0x01, 0x26, 0xfc, 0xd3, 0x45, 0xc4, 0x76, 0xdb, 0x60, - 0x59, 0xea, 0x7d, 0x03, 0x27, 0x41, 0xdf, 0x55, 0x60, 0x1e, 0x7c, 0xef, - 0x5e, 0x5e, 0xff, 0xee, 0x07, 0x20, 0x7f, 0xd5, 0x01, 0x04, 0xb6, 0xbf, - 0x0e, 0xcb, 0xac, 0x1e, 0x0a, 0xfb, 0x01, 0xf9, 0xfe, 0x7d, 0x64, 0xbc, - 0xdd, 0x3b, 0x1f, 0xc2, 0xae, 0x3b, 0x8c, 0xec, 0x37, 0x93, 0x43, 0xb9, - 0x9d, 0xd7, 0x93, 0xfd, 0x8d, 0x85, 0x61, 0xd9, 0xe5, 0xf6, 0xf5, 0xd1, - 0x63, 0xa0, 0xd2, 0xf3, 0xb0, 0x2f, 0xc6, 0x0e, 0xdc, 0xbd, 0xc7, 0xef, - 0xa8, 0x14, 0x3e, 0xf3, 0x32, 0xaa, 0x14, 0xa7, 0x68, 0xbf, 0x34, 0x77, - 0x80, 0x5c, 0x37, 0xef, 0xaf, 0xb2, 0x00, 0x9c, 0xb4, 0x7e, 0xbe, 0x91, - 0xf3, 0xd8, 0x10, 0x78, 0xca, 0xf2, 0x7c, 0x35, 0x98, 0xea, 0xe7, 0xb9, - 0x7d, 0x31, 0xf4, 0x88, 0x1f, 0xea, 0xe2, 0xfc, 0xe2, 0xe4, 0x1d, 0x67, - 0x2c, 0x7e, 0x3e, 0xf3, 0x17, 0x84, 0x1f, 0xbe, 0x3a, 0xb1, 0xdf, 0xc1, - 0x65, 0xae, 0x1f, 0x5d, 0xf4, 0xf9, 0x37, 0xfa, 0x23, 0x2d, 0xb6, 0xbf, - 0x92, 0xb9, 0xde, 0x91, 0x7e, 0x59, 0x3c, 0xde, 0x63, 0xf0, 0x03, 0x60, - 0x37, 0xd8, 0xa4, 0xbc, 0xe9, 0x67, 0x01, 0xf2, 0x81, 0xb0, 0x5c, 0xd4, - 0x79, 0x0b, 0x9a, 0xce, 0xdf, 0xa7, 0x4c, 0xf9, 0xe4, 0x07, 0x9d, 0x4f, - 0x53, 0x8a, 0xce, 0x09, 0xfa, 0xb8, 0xb2, 0xdc, 0xb9, 0xae, 0xfa, 0xfc, - 0x5a, 0xc9, 0xdf, 0xed, 0xc6, 0x57, 0x35, 0x7e, 0x33, 0x66, 0xfe, 0xbe, - 0xc1, 0xd2, 0x05, 0x92, 0xf8, 0x95, 0x9a, 0xdf, 0xa5, 0xe5, 0x57, 0xf7, - 0x5c, 0x2a, 0x7e, 0x65, 0xf4, 0xcf, 0x5e, 0x34, 0xbf, 0x82, 0x3a, 0xbf, - 0xea, 0x7e, 0xaa, 0x97, 0xe2, 0x45, 0x83, 0xea, 0x09, 0xf9, 0x1e, 0x15, - 0x4f, 0x61, 0xe7, 0x6f, 0x79, 0x8d, 0xe1, 0x49, 0x93, 0xe7, 0xd9, 0xb9, - 0x9b, 0x16, 0xfc, 0x0a, 0x7c, 0xbd, 0x1c, 0xf2, 0xab, 0x1c, 0x95, 0x97, - 0x41, 0xe6, 0xea, 0xda, 0x52, 0xff, 0x50, 0x37, 0xa8, 0x23, 0x27, 0x43, - 0xf8, 0x95, 0xb7, 0xc0, 0xfc, 0x51, 0xb7, 0x5a, 0xd8, 0xae, 0xbd, 0x73, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Thu Apr 20 04:33:50 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1C4D9D477D3; Thu, 20 Apr 2017 04:33:50 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 8A95B29F; Thu, 20 Apr 2017 04:33:49 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3K4Xm0L088090; Thu, 20 Apr 2017 04:33:48 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3K4Xm56088087; Thu, 20 Apr 2017 04:33:48 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704200433.v3K4Xm56088087@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Thu, 20 Apr 2017 04:33:48 +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: r317183 - stable/10/sys/dev/qlxgbe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Apr 2017 04:33:50 -0000 Author: davidcs Date: Thu Apr 20 04:33:47 2017 New Revision: 317183 URL: https://svnweb.freebsd.org/changeset/base/317183 Log: MFC r316183 Upgrade firmware and other related files to version 5.4.64 Modified: stable/10/sys/dev/qlxgbe/ql_boot.c stable/10/sys/dev/qlxgbe/ql_fw.c stable/10/sys/dev/qlxgbe/ql_minidump.c stable/10/sys/dev/qlxgbe/ql_reset.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/qlxgbe/ql_boot.c ============================================================================== --- stable/10/sys/dev/qlxgbe/ql_boot.c Thu Apr 20 04:26:47 2017 (r317182) +++ stable/10/sys/dev/qlxgbe/ql_boot.c Thu Apr 20 04:33:47 2017 (r317183) @@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$"); unsigned int ql83xx_bootloader_version_major = 5; unsigned int ql83xx_bootloader_version_minor = 4; -unsigned int ql83xx_bootloader_version_sub = 62; +unsigned int ql83xx_bootloader_version_sub = 64; unsigned char ql83xx_bootloader[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10957,9 +10957,9 @@ unsigned char ql83xx_bootloader[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x02, 0x00, 0x40, 0x40, 0x05, 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x40, 0x40, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x9b, 0x64, 0x97, 0x0e + 0x00, 0x00, 0x00, 0x00, 0x9b, 0x64, 0x95, 0x0e }; unsigned int ql83xx_bootloader_len = 131072; Modified: stable/10/sys/dev/qlxgbe/ql_fw.c ============================================================================== --- stable/10/sys/dev/qlxgbe/ql_fw.c Thu Apr 20 04:26:47 2017 (r317182) +++ stable/10/sys/dev/qlxgbe/ql_fw.c Thu Apr 20 04:33:47 2017 (r317183) @@ -35,32 +35,32 @@ __FBSDID("$FreeBSD$"); unsigned int ql83xx_firmware_version_major = 5; unsigned int ql83xx_firmware_version_minor = 4; -unsigned int ql83xx_firmware_version_sub = 62; +unsigned int ql83xx_firmware_version_sub = 64; unsigned char ql83xx_firmware[] = { - 0x03, 0x00, 0x40, 0x40, 0x05, 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc4, 0x5e, 0x1b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x88, 0xcd, 0x7d, 0x72, 0x3d, 0x1f, 0x5f, 0xe0, + 0x03, 0x00, 0x40, 0x40, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe4, 0x42, 0x1b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0x7e, 0x74, 0x37, 0x27, 0xc9, 0xab, 0x39, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xef, 0x03, 0x00, + 0xe0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xef, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0xf9, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7a, 0x9f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x4e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xf9, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9f, 0x90, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x9f, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe5, 0x98, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x71, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x65, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x89, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -69,118 +69,118 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x56, 0xa3, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7b, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x65, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6f, 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd1, 0xb8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xec, 0xa9, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xbd, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x94, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xae, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xde, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x35, 0xd0, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x8c, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9a, 0xb9, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1a, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2f, 0xef, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9f, 0xd8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfb, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xe4, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xdd, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x72, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x67, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0xeb, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4f, 0x25, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xba, 0x0e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x30, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x86, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xb4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x19, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xdc, 0x4c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x56, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x3f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x5e, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x51, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x47, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcc, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x68, 0x61, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd3, 0x4a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x25, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8e, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x4c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x6e, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7c, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x57, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x8f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x79, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x30, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xbd, 0x19, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x30, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x56, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd1, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x1a, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -189,7 +189,7 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x56, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0x3f, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x58, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -232,9 +232,9 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x5f, 0x1a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb2, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x49, 0x1a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe8, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x92, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -249,7838 +249,7837 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xda, 0xec, 0x3d, - 0x6d, 0x70, 0x5c, 0xd5, 0x75, 0xf7, 0x7d, 0xec, 0xee, 0xd3, 0x6a, 0x57, - 0x5e, 0x83, 0x4c, 0x84, 0x90, 0xe3, 0x27, 0xdb, 0xd8, 0xe2, 0x33, 0x6b, - 0x63, 0x1b, 0x63, 0x9c, 0xfa, 0x49, 0x96, 0x8d, 0xed, 0xc8, 0x44, 0x40, - 0xca, 0x37, 0x44, 0x24, 0x0d, 0x35, 0x84, 0x60, 0x31, 0x25, 0xa9, 0xf8, - 0x28, 0x7e, 0xb2, 0x25, 0xd9, 0x04, 0x9b, 0xc8, 0xd8, 0x01, 0x87, 0xd0, - 0xb0, 0x92, 0x31, 0xa5, 0x2d, 0x93, 0x2e, 0x93, 0x4c, 0x60, 0xda, 0xce, - 0xb0, 0xd8, 0x99, 0x60, 0x52, 0xdc, 0xba, 0x3f, 0x48, 0x43, 0x18, 0x9a, - 0xed, 0xa4, 0x4c, 0x55, 0x02, 0x64, 0xdb, 0xe9, 0x10, 0x39, 0xa9, 0xa1, - 0xf7, 0xdc, 0x8f, 0xf7, 0xde, 0xbd, 0xfb, 0xde, 0xdb, 0xbd, 0xb2, 0xec, - 0x4c, 0x3a, 0x5e, 0x66, 0xf0, 0x1e, 0xdd, 0x7b, 0xcf, 0x3d, 0xf7, 0xdc, - 0x73, 0xcf, 0x39, 0xf7, 0x9c, 0xf3, 0xde, 0x22, 0x0d, 0xd1, 0x8f, 0x89, - 0x0c, 0xa4, 0xa3, 0xdb, 0xd0, 0x69, 0xf8, 0xf7, 0x13, 0xa6, 0x9f, 0x3e, - 0x06, 0x1f, 0x7d, 0xf7, 0x6d, 0xf2, 0xdf, 0x57, 0xaa, 0x60, 0xf1, 0x53, - 0x94, 0xe0, 0x82, 0x22, 0xec, 0xea, 0xc8, 0x26, 0x5f, 0xf6, 0xa4, 0xc8, - 0x3f, 0xfd, 0x55, 0xfd, 0x35, 0xe4, 0x3a, 0xb9, 0x00, 0xcc, 0xbe, 0xdb, - 0x85, 0x0c, 0xa5, 0x17, 0x95, 0x0c, 0x4e, 0x3a, 0x42, 0x0d, 0x05, 0x93, - 0x02, 0xbd, 0x37, 0xd2, 0xcf, 0x9d, 0x51, 0xf3, 0xad, 0x43, 0x11, 0xf3, - 0x29, 0xc2, 0x1c, 0xdf, 0x91, 0x69, 0xc6, 0x37, 0x5f, 0x9b, 0x5e, 0x7c, - 0x8b, 0xa7, 0x19, 0xdf, 0x66, 0x7d, 0x6a, 0xf8, 0xf8, 0xf8, 0x9b, 0xcc, - 0x29, 0x8d, 0x0f, 0x91, 0xb7, 0xbc, 0x0b, 0xa8, 0xce, 0x5b, 0x7c, 0xeb, - 0xfa, 0x99, 0x68, 0xe8, 0x9b, 0x18, 0x25, 0xc0, 0x47, 0x3b, 0x86, 0xde, - 0xf8, 0x71, 0x8f, 0x96, 0xdb, 0x8d, 0x87, 0x00, 0x5c, 0xb8, 0x6b, 0xf6, - 0xca, 0x15, 0x88, 0xb4, 0x57, 0x78, 0xfb, 0x7b, 0x77, 0x6b, 0x05, 0xdc, - 0x9e, 0x1f, 0x84, 0xf1, 0x77, 0x5e, 0xf3, 0xea, 0xc5, 0xf3, 0xe8, 0xf8, - 0x41, 0xd6, 0xde, 0xb4, 0x5b, 0xcb, 0x3f, 0x86, 0xc7, 0x0f, 0x72, 0xfc, - 0xff, 0x4c, 0xc7, 0x0f, 0x8a, 0xf8, 0xf3, 0x5b, 0x31, 0xdc, 0xbb, 0xfe, - 0xe2, 0xc4, 0x79, 0x17, 0xd1, 0xf1, 0x5b, 0x59, 0xfb, 0xd5, 0x6f, 0x68, - 0xbd, 0x7b, 0xf0, 0x78, 0x80, 0xfb, 0x56, 0xdc, 0xf8, 0xec, 0x5d, 0x49, - 0x3a, 0x9e, 0xb7, 0xdf, 0xfb, 0x6b, 0xad, 0x6f, 0x14, 0x8f, 0xdf, 0xe6, - 0xe1, 0xd7, 0xc8, 0xf8, 0x6d, 0x12, 0xfd, 0x00, 0x17, 0x5e, 0xfe, 0xaf, - 0xf9, 0xcb, 0x2c, 0x3a, 0x9e, 0xb7, 0xbf, 0x74, 0x39, 0xea, 0x85, 0xf9, - 0x87, 0x30, 0xdc, 0x9f, 0x7b, 0xd5, 0x69, 0xa6, 0xeb, 0xeb, 0x1f, 0x62, - 0xed, 0x3f, 0xbb, 0xe5, 0x21, 0x0b, 0xe3, 0x2f, 0x02, 0xdc, 0x97, 0x19, - 0xc9, 0xe7, 0x5a, 0xe9, 0x78, 0xde, 0xbe, 0xf2, 0x0b, 0x0f, 0xed, 0x80, - 0xf9, 0x87, 0x81, 0x7e, 0x6b, 0x8d, 0x9d, 0x61, 0xeb, 0x1f, 0x66, 0xed, - 0x5d, 0x43, 0x0f, 0x59, 0x30, 0x3f, 0xc0, 0x8e, 0x69, 0xe6, 0xac, 0x0c, - 0x1d, 0xcf, 0xdb, 0xff, 0xe8, 0xd9, 0x87, 0x76, 0xc0, 0xfc, 0x23, 0xa6, - 0xbf, 0x1f, 0x18, 0x5f, 0xbf, 0x04, 0x17, 0x25, 0xb8, 0x22, 0xc1, 0xf9, - 0xed, 0xd2, 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0xf3, 0x3b, 0x80, - 0xbe, 0xe6, 0xb5, 0xb7, 0xb5, 0xd9, 0xb9, 0xa5, 0x4f, 0xe2, 0xf1, 0x00, - 0x17, 0xf2, 0x5f, 0x30, 0x2f, 0xd8, 0xbc, 0x05, 0xd6, 0x57, 0x04, 0xb8, - 0xb7, 0x65, 0xfb, 0x3d, 0xcd, 0xe7, 0x91, 0xf6, 0x0a, 0x6f, 0xdf, 0xb8, - 0x7b, 0x0b, 0xac, 0x2f, 0xff, 0x30, 0xf0, 0xa7, 0xed, 0xa0, 0x66, 0x2e, - 0xa6, 0xe3, 0x1f, 0x66, 0xed, 0x9b, 0xbf, 0xb7, 0x05, 0xd6, 0x57, 0x04, - 0xb8, 0xbf, 0x4d, 0xcb, 0x59, 0x97, 0xd3, 0xf1, 0xbc, 0x7d, 0xf7, 0x1b, - 0x5b, 0x2c, 0x2c, 0x1f, 0xf9, 0xaf, 0x53, 0x7a, 0x16, 0xb4, 0xd9, 0x94, - 0x7e, 0x02, 0x37, 0x66, 0x90, 0xb5, 0xf1, 0x36, 0x42, 0x3f, 0x6b, 0x5f, - 0xc2, 0xda, 0x2b, 0x04, 0x7e, 0x44, 0xe3, 0xed, 0xf9, 0x47, 0xa4, 0xf5, - 0x4b, 0x70, 0x51, 0x82, 0x2b, 0x12, 0x9c, 0xdf, 0x29, 0x8d, 0x97, 0xe0, - 0xa2, 0x04, 0x57, 0x24, 0x38, 0xbf, 0x4b, 0x1a, 0x2f, 0xc1, 0x45, 0x09, - 0xae, 0x48, 0x70, 0xfe, 0x51, 0x69, 0xbc, 0x04, 0x17, 0x25, 0xb8, 0x22, - 0xc1, 0xf9, 0x6f, 0x48, 0xe3, 0x25, 0xb8, 0x28, 0xc1, 0x15, 0x09, 0xce, - 0x3b, 0x18, 0x76, 0x37, 0xbd, 0x97, 0xe4, 0xe3, 0x01, 0x2e, 0xcf, 0xfb, - 0xd9, 0xd7, 0xf8, 0x78, 0x80, 0x4b, 0xbf, 0x39, 0x3c, 0x62, 0xb0, 0xf1, - 0x00, 0x17, 0x5e, 0xf8, 0xe8, 0x43, 0x06, 0xe7, 0x3b, 0x31, 0x9c, 0xdb, - 0xb5, 0xb4, 0xc1, 0x61, 0xe3, 0x01, 0xee, 0xef, 0x9e, 0x77, 0x1f, 0x83, - 0x8b, 0x00, 0xf7, 0xce, 0xd9, 0xbd, 0x6b, 0x35, 0x1b, 0x0f, 0x70, 0xfe, - 0x27, 0xdb, 0x8f, 0x33, 0x38, 0xdf, 0x25, 0xd1, 0x2f, 0xc1, 0x45, 0x09, - 0xae, 0x48, 0x70, 0x7e, 0xb5, 0x34, 0x5e, 0x82, 0x8b, 0x12, 0x5c, 0x91, - 0xe0, 0x7c, 0xb7, 0x34, 0x5e, 0x82, 0x8b, 0x12, 0x5c, 0x91, 0xe0, 0xfc, - 0x1a, 0x69, 0xbc, 0x04, 0x17, 0x25, 0xb8, 0x22, 0xc1, 0xf9, 0xb5, 0xd2, - 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0xf3, 0x57, 0x48, 0xe3, 0x25, - 0xb8, 0x28, 0xc1, 0x15, 0x09, 0xce, 0xaf, 0x83, 0xfd, 0xf9, 0xc3, 0x37, - 0xf8, 0x7e, 0xf6, 0x03, 0x7c, 0xf4, 0xab, 0x6f, 0x73, 0xb8, 0x48, 0xda, - 0x1f, 0x7f, 0x87, 0xc3, 0x15, 0xd2, 0xfe, 0x83, 0xf7, 0xbd, 0xfd, 0x5f, - 0x0f, 0xe7, 0xff, 0xf2, 0xbf, 0x3e, 0xce, 0xc7, 0x13, 0xf8, 0xa6, 0xef, - 0x73, 0xb8, 0x48, 0xe0, 0x07, 0x86, 0x39, 0x5c, 0x01, 0xb8, 0xf2, 0xf4, - 0xa3, 0x1c, 0xce, 0x6f, 0x00, 0xf8, 0xe5, 0x51, 0x6f, 0x3c, 0x81, 0x7f, - 0xfe, 0x2d, 0x6f, 0x3c, 0xc0, 0x68, 0xe6, 0xdc, 0x63, 0x7c, 0x3c, 0xc0, - 0xa3, 0x4b, 0x2f, 0xe0, 0x70, 0xfe, 0x33, 0x18, 0xb6, 0xbb, 0x4c, 0x0e, - 0xf7, 0x03, 0x5c, 0xbc, 0x3d, 0xcb, 0xe1, 0x22, 0xc0, 0xce, 0x8e, 0x9c, - 0x37, 0x1e, 0xe0, 0xa3, 0xcf, 0x9f, 0xed, 0x8d, 0xef, 0x01, 0xfc, 0xa5, - 0x57, 0xbd, 0xf5, 0xf7, 0x50, 0xfe, 0x54, 0xf8, 0x78, 0x09, 0xae, 0x48, - 0x70, 0x7e, 0xa3, 0x08, 0xf7, 0x4b, 0x70, 0x51, 0x82, 0x2b, 0x12, 0x9c, - 0xbf, 0x52, 0x1a, 0x2f, 0xc1, 0x45, 0x09, 0xae, 0x48, 0x70, 0xfe, 0xb3, - 0xd2, 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0x45, 0xff, 0xae, 0xda, - 0x3f, 0x98, 0x19, 0x84, 0x6b, 0xfa, 0x1b, 0x36, 0xff, 0xa6, 0x31, 0xa7, - 0x92, 0x4d, 0x36, 0x43, 0xf3, 0x9c, 0xcc, 0x1a, 0xfe, 0x4a, 0xbf, 0xe6, - 0x04, 0xe4, 0x93, 0xe2, 0x4b, 0x24, 0xb0, 0xfe, 0x07, 0x9f, 0x1b, 0xb7, - 0xdf, 0x98, 0x60, 0x6d, 0x1f, 0xcd, 0x41, 0x76, 0x6f, 0x6d, 0x7c, 0x6a, - 0xf4, 0xb3, 0xb3, 0x51, 0xfe, 0x98, 0x7e, 0x36, 0xab, 0xfb, 0x53, 0xd3, - 0x0a, 0x17, 0x6b, 0xef, 0x8f, 0x1a, 0xcc, 0xd6, 0x57, 0x89, 0x58, 0x5f, - 0xcd, 0xf9, 0x6a, 0x8c, 0xaf, 0x79, 0x5f, 0x51, 0x9c, 0xcf, 0xf5, 0x74, - 0x95, 0xc3, 0xe5, 0x27, 0xcb, 0xee, 0x2b, 0x9b, 0x70, 0xab, 0xe6, 0xdd, - 0x67, 0x10, 0xb2, 0x48, 0xbb, 0xaf, 0x9c, 0x6d, 0xb4, 0xef, 0x90, 0x36, - 0x88, 0x72, 0x25, 0x64, 0xb5, 0xd0, 0xfe, 0xf6, 0x56, 0xdc, 0x1f, 0x5d, - 0xa8, 0x33, 0xd4, 0x1f, 0x87, 0xcb, 0x4f, 0x46, 0xc4, 0x8f, 0x5e, 0x67, - 0x4d, 0x13, 0x0c, 0xfe, 0xdd, 0xee, 0x5f, 0x2d, 0x7e, 0x9d, 0x86, 0x4f, - 0xec, 0xfc, 0x9f, 0x7c, 0x78, 0x7a, 0xe9, 0xb1, 0x91, 0x14, 0x7f, 0xc0, - 0x7f, 0xf8, 0x83, 0xd6, 0x40, 0x7f, 0xa6, 0x7f, 0xbd, 0x76, 0xf4, 0x43, - 0x24, 0xca, 0x77, 0x2e, 0x23, 0xc2, 0x70, 0xa2, 0x92, 0xc8, 0x3f, 0x57, - 0x78, 0x50, 0x3a, 0x3f, 0xd4, 0xd5, 0xd9, 0x41, 0xf9, 0x8b, 0xf1, 0xa7, - 0x5b, 0xe9, 0xf9, 0xb2, 0xf5, 0xa0, 0x3e, 0x76, 0x8f, 0x9f, 0x0c, 0x7d, - 0x5c, 0x1b, 0x9e, 0x11, 0x00, 0xeb, 0x99, 0x9f, 0xf7, 0x77, 0x9b, 0xd4, - 0xfa, 0xa3, 0xd9, 0x8a, 0xf8, 0x2f, 0x50, 0xc4, 0xbf, 0x42, 0x11, 0xff, - 0x3a, 0x45, 0xfc, 0xd7, 0x29, 0xe2, 0xff, 0x92, 0x22, 0xfe, 0x7b, 0x15, - 0xf1, 0x6f, 0x55, 0xc4, 0xbf, 0x5b, 0x11, 0xff, 0xd3, 0x8a, 0xf8, 0xbf, - 0xab, 0x88, 0xff, 0xef, 0x15, 0xf1, 0xff, 0x83, 0x22, 0xfe, 0x37, 0x15, - 0xf1, 0x4f, 0x28, 0xe2, 0xff, 0x50, 0x11, 0x7f, 0x42, 0x53, 0xc3, 0x7f, - 0xa6, 0x5a, 0x7f, 0x34, 0x57, 0x11, 0x7f, 0x5e, 0x11, 0xff, 0x2a, 0x45, - 0xfc, 0x1b, 0x15, 0xf1, 0xdf, 0xac, 0x88, 0xff, 0x4e, 0x45, 0xfc, 0xf7, - 0x29, 0xe2, 0xdf, 0xae, 0x88, 0xff, 0x71, 0x45, 0xfc, 0xcf, 0x28, 0xe2, - 0xff, 0x9e, 0x22, 0xfe, 0x57, 0x14, 0xf1, 0x1f, 0x55, 0xc4, 0xff, 0xaf, - 0x8a, 0xf8, 0xdf, 0x57, 0xc4, 0xff, 0x5b, 0x45, 0xfc, 0x69, 0x5d, 0x0d, - 0x7f, 0x8b, 0x5a, 0x7f, 0xb4, 0x50, 0x11, 0xff, 0x52, 0x45, 0xfc, 0xdd, - 0x8a, 0xf8, 0xaf, 0x56, 0xc4, 0x7f, 0x9b, 0x22, 0xfe, 0xcd, 0x8a, 0xf8, - 0x1f, 0x52, 0xc4, 0xbf, 0x53, 0x11, 0xff, 0xb7, 0x15, 0xf1, 0xff, 0xa5, - 0x22, 0xfe, 0x97, 0x14, 0xf1, 0xff, 0x48, 0x11, 0xff, 0x1b, 0x8a, 0xf8, - 0x7f, 0xa1, 0x88, 0xff, 0xbf, 0x15, 0xf1, 0x23, 0x43, 0x0d, 0xff, 0x0c, - 0xb5, 0xfe, 0xee, 0x6c, 0x45, 0xfc, 0x17, 0x2a, 0xe2, 0x5f, 0xa1, 0x88, - 0x7f, 0xbd, 0x22, 0xfe, 0xeb, 0x14, 0xf1, 0xdf, 0xae, 0x88, 0xff, 0x5e, - 0x45, 0xfc, 0xdb, 0x14, 0xf1, 0xef, 0x56, 0xc4, 0x5f, 0x30, 0x4e, 0xc5, - 0xfd, 0xc3, 0xdd, 0x88, 0x2e, 0xfe, 0x24, 0x7c, 0xfd, 0xe5, 0x2a, 0x44, - 0xe2, 0x09, 0x47, 0x58, 0x06, 0x78, 0x53, 0x82, 0xde, 0x9f, 0xb2, 0x2c, - 0xbe, 0x30, 0x61, 0x02, 0xcc, 0xf3, 0x75, 0x2f, 0x5e, 0xc5, 0xe7, 0xdb, - 0xc5, 0xe3, 0x0b, 0x26, 0xeb, 0xcf, 0xef, 0x63, 0x1a, 0x1a, 0xd4, 0x0a, - 0xf4, 0xda, 0xf5, 0x24, 0xbe, 0xb5, 0x2d, 0x40, 0x65, 0xd3, 0xcf, 0xd7, - 0x16, 0x9c, 0xcb, 0xc8, 0x55, 0x0c, 0xff, 0xa9, 0xb9, 0xc3, 0x40, 0x6d, - 0x40, 0x4a, 0xe1, 0x90, 0x36, 0xc8, 0xf1, 0xbf, 0x35, 0x4e, 0xf1, 0x5b, - 0x48, 0x43, 0x0e, 0x84, 0xf2, 0xaf, 0x1f, 0x40, 0x94, 0x3e, 0x91, 0x7e, - 0xde, 0xbf, 0xf3, 0x6b, 0xe1, 0xeb, 0xb7, 0x2d, 0x84, 0x9c, 0xb4, 0xdd, - 0x88, 0x26, 0x2f, 0x45, 0xe5, 0x14, 0xda, 0x8f, 0x74, 0x16, 0xef, 0xb9, - 0x94, 0x04, 0x60, 0xfa, 0xbc, 0x0b, 0x76, 0x87, 0xc3, 0xe8, 0x71, 0x66, - 0x61, 0x7a, 0x9e, 0xfa, 0xd1, 0xfc, 0x96, 0xe4, 0xa2, 0xe6, 0x11, 0xd7, - 0x42, 0xbb, 0x06, 0xf7, 0x90, 0x54, 0xc2, 0x84, 0x11, 0x5c, 0x3f, 0xa7, - 0x0f, 0x69, 0x1b, 0x0f, 0xd1, 0x7c, 0xf4, 0x26, 0x9d, 0xac, 0x9f, 0x05, - 0xfb, 0x9c, 0x46, 0xc2, 0x87, 0x3e, 0x88, 0xe2, 0x10, 0xfa, 0xad, 0x3c, - 0xc2, 0x73, 0xf3, 0x78, 0x13, 0xba, 0x96, 0xe5, 0xab, 0xad, 0x6d, 0x63, - 0x8d, 0x20, 0x1c, 0xed, 0x4c, 0x48, 0xaa, 0xf1, 0x37, 0x1c, 0x64, 0xf8, - 0x85, 0xf8, 0x50, 0x27, 0xc3, 0x0f, 0xcb, 0x71, 0xf4, 0x6a, 0xfc, 0xd7, - 0x31, 0xfc, 0xe9, 0xc1, 0x31, 0x20, 0xc1, 0x3d, 0x2f, 0x12, 0xbf, 0x26, - 0xe2, 0x77, 0xb2, 0x07, 0xdb, 0xdb, 0xd8, 0xfe, 0x61, 0xd8, 0xaa, 0xe2, - 0x0f, 0xfd, 0x5c, 0xcf, 0xf0, 0x57, 0xe1, 0xf3, 0xe4, 0x61, 0x82, 0x8d, - 0xdf, 0x65, 0x90, 0xf5, 0x33, 0x7c, 0xbc, 0xff, 0xa7, 0xf6, 0xd3, 0xfe, - 0xa6, 0x84, 0x1f, 0xa1, 0x9d, 0xdc, 0xfd, 0x27, 0xfc, 0x76, 0xd0, 0xeb, - 0x9a, 0x03, 0x53, 0xb5, 0xdc, 0xa5, 0x43, 0xbc, 0x8b, 0xd1, 0xe3, 0xde, - 0xc0, 0xf3, 0xfd, 0x64, 0x3f, 0x47, 0x1a, 0x20, 0x9e, 0xea, 0x26, 0xb0, - 0x10, 0x75, 0x6e, 0x3c, 0xa8, 0xb5, 0xe1, 0x5d, 0x9f, 0xdc, 0x6c, 0x94, - 0x87, 0xb5, 0xb1, 0x9b, 0xaf, 0x74, 0xcd, 0x32, 0x5a, 0xae, 0x6b, 0xe8, - 0xb9, 0xc4, 0x8f, 0x11, 0xda, 0x8e, 0xf7, 0xeb, 0x60, 0x36, 0xe7, 0xd3, - 0x57, 0x4d, 0x3f, 0x97, 0x77, 0xbe, 0xfe, 0x23, 0xda, 0xca, 0x10, 0xfa, - 0x79, 0x7f, 0x46, 0xbf, 0x7b, 0x0b, 0xa7, 0x07, 0xe4, 0xed, 0x2c, 0xa0, - 0x97, 0xee, 0x07, 0xd0, 0x9b, 0x84, 0x5a, 0x86, 0xc3, 0x14, 0x46, 0x68, - 0x79, 0x8a, 0x0d, 0x49, 0x86, 0xdf, 0x57, 0xbc, 0xf3, 0xa7, 0xd1, 0xf3, - 0xd4, 0xc3, 0xcf, 0x17, 0xe1, 0x07, 0xe7, 0xd7, 0xe7, 0x23, 0xf8, 0x6f, - 0xa1, 0x8d, 0x06, 0xa5, 0x97, 0xae, 0x8f, 0xd3, 0xb7, 0x26, 0xb2, 0xbf, - 0xc8, 0x4f, 0x4f, 0x5e, 0xa5, 0xf3, 0x75, 0x46, 0x42, 0x58, 0x6f, 0xaf, - 0x46, 0x03, 0x31, 0x7d, 0x7e, 0x7c, 0x71, 0x42, 0x0f, 0x8b, 0x27, 0x02, - 0xab, 0x1d, 0x40, 0xba, 0x6f, 0x2e, 0x5b, 0x7f, 0x0f, 0x27, 0x29, 0x51, - 0xcf, 0x7d, 0x2d, 0x82, 0xdf, 0xe8, 0x8b, 0x8c, 0xde, 0x93, 0xbd, 0x3e, - 0x0b, 0xeb, 0x33, 0xc2, 0xcf, 0xc9, 0xfb, 0xe2, 0xf6, 0x1f, 0xdd, 0xee, - 0xd5, 0x9f, 0x84, 0xd3, 0xbf, 0xbf, 0x89, 0xf6, 0x87, 0x5e, 0x2b, 0x4d, - 0xdb, 0x00, 0x79, 0x2d, 0x27, 0xd0, 0x18, 0xd5, 0x17, 0xe3, 0x4d, 0x9e, - 0x7e, 0x44, 0x4d, 0xc8, 0x3b, 0xaa, 0x0a, 0xfc, 0x79, 0x1b, 0xf9, 0xf4, - 0x40, 0x42, 0x13, 0x75, 0x70, 0x79, 0xf3, 0xce, 0x93, 0x1e, 0xa4, 0xff, - 0xbe, 0x74, 0x7d, 0xf6, 0x82, 0xf7, 0xff, 0x7c, 0xa3, 0x5a, 0x7f, 0xf9, - 0x7c, 0x6c, 0xaa, 0xc1, 0x9f, 0xf9, 0x27, 0x88, 0xff, 0x0e, 0x0f, 0x7f, - 0x0f, 0x5f, 0x6f, 0x22, 0x3c, 0xbe, 0xbd, 0x53, 0xb2, 0x57, 0xae, 0x89, - 0x3d, 0x29, 0x48, 0xa9, 0x69, 0x2f, 0x1d, 0x42, 0x83, 0x55, 0xf6, 0x14, - 0x1b, 0x88, 0x26, 0x62, 0x1f, 0xe7, 0x31, 0x7e, 0xca, 0xf8, 0xcc, 0x40, - 0xfa, 0xb1, 0x2a, 0xff, 0x14, 0xb0, 0xaf, 0xc7, 0x88, 0x7d, 0xb5, 0xf1, - 0xae, 0x3a, 0x67, 0xec, 0x4d, 0x20, 0x3b, 0x8f, 0x4a, 0x29, 0xbc, 0xff, - 0xe8, 0x06, 0x26, 0x8d, 0x6e, 0x33, 0xec, 0xb7, 0x8b, 0x8e, 0x74, 0x3a, - 0x4d, 0x81, 0xf3, 0xcf, 0x04, 0xf8, 0x57, 0x7f, 0xc1, 0xd6, 0x47, 0x66, - 0x1b, 0x4e, 0x83, 0xfc, 0xd8, 0x01, 0x7b, 0x8a, 0xf6, 0x81, 0xfa, 0xa6, - 0xf4, 0x61, 0xa1, 0x35, 0xeb, 0x8f, 0x27, 0x9f, 0x19, 0xeb, 0x3f, 0x78, - 0xe7, 0xe5, 0xa7, 0x0b, 0x42, 0xd7, 0xcf, 0xf7, 0xc3, 0xf9, 0x52, 0x52, - 0x38, 0x0f, 0x2e, 0x72, 0x8c, 0xa0, 0xbd, 0xd0, 0xdd, 0xb5, 0x46, 0xf0, - 0x7c, 0xf2, 0xfe, 0x6c, 0x79, 0xc5, 0xaf, 0x9c, 0x83, 0x42, 0xe5, 0x83, - 0x7f, 0x79, 0x4a, 0xaf, 0x8f, 0xbe, 0x68, 0x7a, 0x3a, 0x8d, 0x93, 0x8b, - 0xbf, 0xeb, 0x24, 0xe3, 0x5f, 0x7d, 0x92, 0xf1, 0x7f, 0x86, 0xed, 0x0f, - 0x2a, 0x75, 0xea, 0x71, 0xfe, 0xe3, 0xeb, 0x92, 0x7d, 0x8a, 0x3a, 0x2f, - 0x8b, 0xc2, 0xcf, 0x0b, 0x3f, 0x0f, 0xce, 0x7b, 0x92, 0xbf, 0x39, 0x91, - 0x02, 0x7c, 0x39, 0x6c, 0x7f, 0x89, 0xbd, 0x68, 0xd9, 0x9c, 0x2a, 0x6d, - 0xf5, 0xf5, 0xd5, 0xbf, 0x7d, 0x8e, 0xeb, 0xcf, 0x5d, 0x46, 0x53, 0x72, - 0x08, 0xeb, 0xb2, 0xe3, 0xc9, 0xc2, 0x08, 0x1e, 0x4f, 0x68, 0x1d, 0x6f, - 0xf0, 0xf5, 0x67, 0x83, 0x16, 0xb4, 0x2f, 0x30, 0x7a, 0x71, 0x5a, 0x38, - 0xff, 0xdc, 0xbe, 0x27, 0x51, 0x99, 0x9e, 0x2f, 0x62, 0xaf, 0x27, 0x2f, - 0xa1, 0xf4, 0x62, 0x7d, 0xbc, 0x60, 0x36, 0x0c, 0x67, 0xf4, 0xf3, 0x7a, - 0xc8, 0x51, 0x03, 0x72, 0xc0, 0xf8, 0xbc, 0x5e, 0x1f, 0xaf, 0x9f, 0xb9, - 0xff, 0xb7, 0xfa, 0x32, 0x41, 0x9e, 0x7f, 0xe0, 0xed, 0xcf, 0xc3, 0xdc, - 0x9f, 0xce, 0x0a, 0xfe, 0x22, 0xeb, 0xcf, 0xce, 0x43, 0x7f, 0x6a, 0x6c, - 0x3e, 0x1b, 0xff, 0x1a, 0x12, 0xfa, 0xa3, 0xc3, 0x5a, 0x10, 0xe6, 0xfa, - 0xcf, 0xbd, 0xc7, 0x10, 0xec, 0x1f, 0xe7, 0x97, 0x85, 0x5e, 0xd3, 0x9a, - 0x60, 0xab, 0xdd, 0x63, 0xd4, 0x7f, 0x26, 0xfa, 0x62, 0x3c, 0xe3, 0xf3, - 0x2b, 0x23, 0xf0, 0x0b, 0x88, 0x5b, 0x2e, 0xec, 0xbf, 0xe7, 0x7f, 0x50, - 0x7e, 0x11, 0xfd, 0xe5, 0xf3, 0x0b, 0xc8, 0x9f, 0x9b, 0x0d, 0xf0, 0x0b, - 0x16, 0x50, 0xb8, 0xb2, 0xd1, 0x1f, 0x7f, 0x8e, 0x92, 0x3d, 0xe3, 0x5f, - 0x0e, 0x7b, 0xfc, 0x5a, 0xcf, 0xfd, 0x8b, 0x26, 0xb2, 0x7e, 0x56, 0xb7, - 0x98, 0x7a, 0x85, 0xf3, 0xa7, 0x41, 0x0f, 0xb6, 0xc3, 0xf4, 0x74, 0xbd, - 0x8b, 0x04, 0x79, 0xe7, 0xfc, 0x60, 0xfc, 0x72, 0x38, 0xbf, 0xa8, 0xa6, - 0x1c, 0x4f, 0xfb, 0xfc, 0x48, 0x57, 0xc9, 0xcf, 0x92, 0x74, 0xa8, 0xfc, - 0x53, 0x7e, 0x60, 0x7e, 0x3a, 0x2d, 0x3e, 0x3f, 0x80, 0xbd, 0x1d, 0x0d, - 0x01, 0x7e, 0xb0, 0x75, 0x3c, 0x6b, 0xf2, 0xf1, 0x37, 0x4c, 0x89, 0x1f, - 0x6f, 0x7a, 0xfc, 0x78, 0x8d, 0xcf, 0xdf, 0x44, 0xfd, 0x63, 0xc6, 0x8f, - 0x17, 0x38, 0x3f, 0x1e, 0x16, 0xda, 0xeb, 0xe4, 0x07, 0x1a, 0xe2, 0xfc, - 0x20, 0x02, 0x38, 0xde, 0xe8, 0xf3, 0xa3, 0xb1, 0x4a, 0x3e, 0x96, 0xc5, - 0xc9, 0x07, 0xee, 0x4d, 0xee, 0x13, 0xfc, 0x3c, 0x41, 0x31, 0xcb, 0xac, - 0x00, 0x3f, 0xb8, 0xbd, 0x7a, 0x0e, 0xdc, 0x11, 0x38, 0x4f, 0x6d, 0x53, - 0xe2, 0xc7, 0x2f, 0xab, 0xe4, 0x63, 0xd3, 0x0c, 0xaa, 0x3f, 0x98, 0xbf, - 0xd9, 0x82, 0xd7, 0x69, 0x70, 0xfe, 0x0f, 0xe1, 0x1d, 0xc9, 0x83, 0x5f, - 0x84, 0xc7, 0xaf, 0xd7, 0x83, 0xfd, 0xeb, 0x95, 0x97, 0x7a, 0xf9, 0x03, - 0xa3, 0x97, 0x89, 0xfa, 0x46, 0x90, 0x17, 0x4f, 0x1f, 0x73, 0xfe, 0x90, - 0xd6, 0x3d, 0x16, 0xd0, 0x87, 0xc0, 0x1f, 0xc4, 0x5e, 0xc9, 0xee, 0xe6, - 0xe0, 0xf8, 0x1b, 0xa7, 0xc4, 0x9f, 0xff, 0xf5, 0xf5, 0x0d, 0x9f, 0x3f, - 0x17, 0xb8, 0x3f, 0xda, 0x86, 0xc5, 0xed, 0x6d, 0x83, 0x11, 0x6c, 0xaf, - 0x93, 0x1f, 0xae, 0xc7, 0x0f, 0xd2, 0x3c, 0x9e, 0xf5, 0xf9, 0x91, 0xad, - 0x92, 0x97, 0x15, 0xa2, 0xbc, 0xc4, 0xea, 0x5f, 0x70, 0x50, 0x16, 0xcc, - 0x90, 0xf4, 0xaf, 0xfd, 0x59, 0xcb, 0x1f, 0xdf, 0x32, 0x25, 0x7e, 0xb0, - 0x2a, 0x8b, 0x7e, 0x7f, 0xff, 0x27, 0x66, 0x04, 0xee, 0xb7, 0x39, 0x9f, - 0x1f, 0x9e, 0xbe, 0x9d, 0x11, 0xe6, 0x3f, 0x72, 0x7e, 0xfc, 0xe3, 0xb5, - 0x11, 0xf1, 0x06, 0xf2, 0xcf, 0x78, 0x82, 0xf3, 0x83, 0xf1, 0xab, 0x34, - 0x18, 0xa9, 0x9f, 0xd7, 0x53, 0xfd, 0x5c, 0xba, 0x8f, 0xc5, 0x37, 0xb8, - 0xbc, 0x4c, 0x04, 0xef, 0x7b, 0x6e, 0xe4, 0x78, 0x0d, 0xf6, 0x6b, 0xc4, - 0x42, 0xa5, 0x45, 0x90, 0xe6, 0x1e, 0x0b, 0xdc, 0xc7, 0xc8, 0x78, 0xe8, - 0xee, 0xb4, 0x8a, 0xfa, 0xe9, 0xfc, 0x06, 0xdf, 0x3e, 0x3f, 0xce, 0xdc, - 0xe5, 0x24, 0x5a, 0xbe, 0x64, 0xaf, 0x81, 0xb6, 0xf7, 0x3b, 0x86, 0xb7, - 0x18, 0x47, 0xd7, 0xb0, 0x3f, 0x8c, 0xda, 0xec, 0xec, 0xb6, 0x28, 0x7f, - 0xb2, 0xb0, 0x15, 0x5b, 0x12, 0x67, 0x99, 0x9d, 0xca, 0x65, 0x21, 0x83, - 0x8e, 0x9e, 0xd1, 0x5f, 0x19, 0xdb, 0x82, 0xff, 0xde, 0xfc, 0xca, 0x3d, - 0x84, 0xa1, 0xc3, 0xcd, 0xf6, 0x73, 0x54, 0x18, 0xac, 0x0b, 0xe9, 0x78, - 0x9b, 0xfb, 0xab, 0x78, 0x72, 0xe2, 0xaf, 0xf2, 0x78, 0x11, 0x3e, 0xad, - 0xa1, 0xfb, 0xc9, 0xda, 0x9d, 0x01, 0xe1, 0x3e, 0xbb, 0x9a, 0xd9, 0x4b, - 0xce, 0x8f, 0xe6, 0xfd, 0xe2, 0x7d, 0x4f, 0x0f, 0xdc, 0xf7, 0x82, 0xf2, - 0xcc, 0xf5, 0x4f, 0xf7, 0xea, 0xcb, 0x82, 0xf7, 0x47, 0x87, 0xf3, 0x17, - 0x79, 0x06, 0x7f, 0x00, 0x05, 0xef, 0x4b, 0x9c, 0xdf, 0xf8, 0xbc, 0x30, - 0x89, 0x19, 0x98, 0xe9, 0xdb, 0xa3, 0x71, 0xcb, 0x97, 0x7f, 0xab, 0x4a, - 0x1f, 0xe4, 0x63, 0xf4, 0x81, 0xa7, 0xaf, 0xb8, 0x3e, 0x20, 0xd2, 0xb9, - 0xb7, 0x21, 0xa8, 0x0f, 0xf6, 0x4c, 0x83, 0x3e, 0x58, 0x69, 0xc8, 0xfa, - 0x60, 0x82, 0xd2, 0xcf, 0xd7, 0xb3, 0xef, 0xd8, 0x4c, 0x85, 0xf3, 0x5f, - 0xda, 0x5e, 0x5b, 0x1f, 0x26, 0xeb, 0xb2, 0x17, 0x35, 0xe9, 0x9f, 0xcd, - 0xbf, 0x9b, 0x61, 0xeb, 0x75, 0xc1, 0xde, 0x14, 0xed, 0x14, 0xdc, 0xa7, - 0xa8, 0xbf, 0x39, 0x90, 0x9c, 0x0a, 0x7f, 0xae, 0x34, 0xaa, 0xec, 0x89, - 0x26, 0xf0, 0x27, 0x37, 0xc0, 0x60, 0x4b, 0xf2, 0x7f, 0x25, 0x7c, 0x74, - 0xad, 0xae, 0xc1, 0xe3, 0x13, 0xc4, 0x3f, 0xc0, 0xfe, 0xaa, 0x95, 0x47, - 0x76, 0x12, 0xec, 0x61, 0xd6, 0xb5, 0xc0, 0x1e, 0xda, 0xef, 0x33, 0x79, - 0x76, 0x34, 0x88, 0x7f, 0x8e, 0xa0, 0xc9, 0x55, 0xe7, 0xe3, 0xfb, 0xa7, - 0x83, 0x36, 0xea, 0xcb, 0x89, 0xc8, 0xdf, 0xad, 0x95, 0xb1, 0x3e, 0xc0, - 0xda, 0x6e, 0x5f, 0x8f, 0x89, 0x9e, 0xfa, 0xea, 0x1e, 0x1a, 0x1f, 0x85, - 0x91, 0x7d, 0xd6, 0xfe, 0x04, 0xa0, 0xbe, 0x3e, 0x24, 0x5e, 0x8a, 0xfd, - 0x69, 0xae, 0x5f, 0xf5, 0xe0, 0x79, 0x79, 0x24, 0x52, 0xff, 0x48, 0xe7, - 0x43, 0x59, 0x9f, 0x67, 0x62, 0xed, 0x3f, 0x7c, 0xb5, 0x65, 0x7f, 0xc8, - 0xed, 0x69, 0xf0, 0xc7, 0x9f, 0x3d, 0x25, 0x79, 0xbe, 0xc3, 0xdb, 0x2f, - 0xcf, 0x7e, 0x35, 0x0b, 0xfb, 0x35, 0x30, 0xd0, 0xac, 0x22, 0xcf, 0x8f, - 0xd4, 0xf4, 0x07, 0xa3, 0xf4, 0x93, 0x78, 0x9e, 0xa3, 0xe8, 0xbd, 0xb7, - 0xfa, 0xfc, 0x89, 0xf4, 0xa2, 0x49, 0x15, 0x7a, 0xd1, 0xce, 0x9a, 0xe7, - 0x2f, 0x8a, 0xde, 0xfa, 0xce, 0xdf, 0x96, 0xea, 0xf3, 0x30, 0x4b, 0xa4, - 0x77, 0x60, 0x56, 0x9c, 0x7d, 0xf4, 0xf3, 0x03, 0x11, 0xfa, 0x1c, 0x7d, - 0x40, 0xe4, 0x9f, 0x1a, 0x94, 0xf1, 0x14, 0xa7, 0x9f, 0xeb, 0x6f, 0x7e, - 0x7e, 0x5a, 0xa9, 0xfc, 0xb7, 0x69, 0x58, 0x1f, 0x93, 0xf8, 0x2d, 0x56, - 0xd0, 0x7d, 0x4d, 0x29, 0x28, 0xf1, 0x4f, 0x2c, 0xa7, 0xe7, 0xe1, 0x28, - 0xad, 0xef, 0xb2, 0x6c, 0x94, 0xb4, 0x51, 0xc8, 0x79, 0xd0, 0x82, 0xe7, - 0x01, 0xc4, 0xaf, 0x09, 0xfe, 0x57, 0x58, 0xe4, 0xf9, 0x1b, 0xa0, 0x82, - 0x39, 0x3f, 0x73, 0x68, 0x23, 0x5a, 0x69, 0x05, 0xe2, 0x47, 0x5a, 0x56, - 0x63, 0xf1, 0xf1, 0xa4, 0x54, 0x3f, 0x99, 0x08, 0xb3, 0x0f, 0x74, 0x7f, - 0x9e, 0xd6, 0xfd, 0xfd, 0x08, 0xf0, 0xdb, 0x8d, 0xbb, 0x7f, 0xf1, 0xfd, - 0xe2, 0xe5, 0xc0, 0x93, 0x67, 0xd1, 0xf9, 0x3c, 0x7f, 0xa0, 0x4e, 0x7d, - 0x39, 0xcc, 0xfb, 0x9f, 0xc5, 0xe3, 0x47, 0x69, 0xf0, 0xaf, 0x1c, 0xaa, - 0x1f, 0x73, 0xd0, 0x9a, 0xb3, 0x4d, 0x64, 0x2d, 0xa1, 0xfa, 0x08, 0xad, - 0xe3, 0xf1, 0xe8, 0x63, 0x73, 0x68, 0xfc, 0x09, 0xd3, 0x9e, 0x4a, 0x81, - 0x1e, 0x75, 0x86, 0x40, 0x1e, 0x59, 0xfc, 0xd3, 0xb9, 0x4b, 0xb3, 0x63, - 0xf6, 0xbb, 0x59, 0x8a, 0xe7, 0x1f, 0xf2, 0xee, 0xbf, 0x3b, 0x78, 0x3e, - 0x08, 0x01, 0xfd, 0xbc, 0x7f, 0xd7, 0x75, 0xa2, 0xbd, 0x7e, 0xcb, 0xeb, - 0xcf, 0xe3, 0x77, 0x9b, 0x2c, 0xba, 0xfe, 0xc0, 0x78, 0xca, 0x0f, 0xc3, - 0xe3, 0x07, 0xa5, 0x27, 0x45, 0xe3, 0x77, 0xe5, 0xf8, 0xf8, 0x9d, 0x33, - 0x9f, 0xea, 0x1f, 0x1e, 0x7f, 0x28, 0x1d, 0x63, 0xf1, 0x87, 0xac, 0xa0, - 0x2f, 0xfd, 0xf8, 0x9b, 0x18, 0x2f, 0xfd, 0xee, 0x55, 0xe1, 0xf9, 0x0d, - 0xd9, 0xfe, 0xf3, 0xf5, 0xa4, 0x23, 0xe2, 0xd1, 0x9c, 0x3f, 0x8d, 0x52, - 0xfc, 0x3a, 0x53, 0x23, 0x7e, 0x9d, 0x65, 0xed, 0x39, 0x1e, 0x2c, 0x94, - 0xc6, 0xcf, 0x0a, 0xf8, 0x3b, 0xf0, 0xf9, 0x44, 0x64, 0x7e, 0x26, 0xab, - 0x89, 0xf9, 0x8d, 0xf0, 0x78, 0xf8, 0x5b, 0x57, 0x89, 0xfe, 0x7e, 0x5a, - 0x3f, 0xcb, 0x8c, 0x8b, 0x9f, 0x4b, 0xfd, 0x4b, 0x8a, 0xfd, 0x51, 0x23, - 0xeb, 0xcf, 0xe7, 0x3b, 0x83, 0xc1, 0x72, 0x7f, 0xb6, 0xbe, 0xf2, 0xfd, - 0x63, 0x1f, 0x24, 0xe2, 0xe2, 0xc9, 0x97, 0xde, 0xa2, 0x16, 0x4f, 0x7e, - 0xe7, 0x4f, 0xea, 0xcd, 0x9f, 0x7a, 0xfe, 0x9d, 0x52, 0x7c, 0xfe, 0xf2, - 0x76, 0x35, 0x7a, 0xc6, 0x75, 0xb5, 0xfe, 0x47, 0x3e, 0xad, 0x4a, 0x7f, - 0xb8, 0x3f, 0xe5, 0xe5, 0x0f, 0x24, 0xfc, 0x87, 0x6f, 0x16, 0xf8, 0x8f, - 0x0a, 0xed, 0xd9, 0xd8, 0x78, 0xed, 0x3b, 0x46, 0x38, 0x3d, 0xf5, 0xe2, - 0x77, 0xed, 0x6c, 0x6c, 0xbe, 0xe0, 0xcc, 0x3f, 0x55, 0x5e, 0x6f, 0x4a, - 0x29, 0xdf, 0x74, 0x93, 0x94, 0x9f, 0xac, 0x41, 0xcf, 0x6f, 0x35, 0xb5, - 0xfd, 0xba, 0xed, 0x49, 0x11, 0x7f, 0x2d, 0x7e, 0xa6, 0x4d, 0x35, 0xfc, - 0xab, 0x22, 0xf3, 0x3b, 0x8d, 0x52, 0xbe, 0x82, 0xdb, 0x63, 0x9a, 0xdf, - 0xe2, 0xf7, 0xa3, 0xf2, 0x47, 0x67, 0x53, 0xfb, 0xbb, 0xc7, 0x26, 0xd1, - 0xdc, 0x2b, 0xda, 0x37, 0x69, 0x61, 0xf7, 0x3f, 0x39, 0x9f, 0x9b, 0xe1, - 0xe7, 0x1d, 0x5f, 0xee, 0x1c, 0x85, 0xf5, 0xd7, 0xda, 0xef, 0x6b, 0xaf, - 0x56, 0x5b, 0xff, 0x3f, 0x3d, 0x51, 0x23, 0x1e, 0x8e, 0x16, 0xc5, 0xc5, - 0xc3, 0xf1, 0xb5, 0x82, 0xe6, 0x2f, 0xea, 0xef, 0xdf, 0x29, 0xf6, 0xaf, - 0xe4, 0x63, 0xfb, 0x23, 0xd4, 0xae, 0xa4, 0x1f, 0x35, 0xa6, 0x0f, 0xa3, - 0xd6, 0x9b, 0x59, 0xaa, 0xc6, 0x9f, 0x85, 0x33, 0x44, 0xfc, 0xff, 0x73, - 0x8b, 0x16, 0xcb, 0xff, 0xbf, 0x59, 0x5c, 0xe3, 0x3c, 0x17, 0xc4, 0xf5, - 0x6e, 0x69, 0x14, 0xcf, 0xf3, 0xbf, 0xfc, 0x19, 0xf2, 0xec, 0x15, 0xe9, - 0xdf, 0x27, 0xf6, 0x1f, 0x95, 0xfa, 0x3f, 0xfa, 0xba, 0x11, 0x4b, 0xcf, - 0x9d, 0x4b, 0xd4, 0xd6, 0x7b, 0x6d, 0x83, 0x5a, 0xff, 0x0f, 0xcf, 0x54, - 0xeb, 0xff, 0xc5, 0x4f, 0xab, 0xf5, 0xff, 0x3b, 0xc5, 0x7c, 0xe7, 0xb1, - 0xac, 0x5a, 0xff, 0xad, 0x6b, 0x15, 0xf3, 0xbb, 0xbd, 0x53, 0xab, 0x1f, - 0xe2, 0xe3, 0x2b, 0x3d, 0x6a, 0xf3, 0xfd, 0xc7, 0x51, 0x43, 0xed, 0x3c, - 0xff, 0x44, 0xad, 0xff, 0x15, 0x8a, 0xf8, 0xbf, 0xb9, 0x4a, 0x8d, 0xfe, - 0xf3, 0x9e, 0x51, 0xc3, 0xbf, 0x55, 0x51, 0x7f, 0x8f, 0x27, 0xc3, 0xfb, - 0xeb, 0x68, 0xe7, 0x21, 0x9a, 0x9f, 0x63, 0xfe, 0x27, 0xca, 0x08, 0xfe, - 0xab, 0x9f, 0x9f, 0xe0, 0xf5, 0x18, 0x11, 0xfe, 0x70, 0x69, 0x91, 0xe8, - 0x0f, 0x3b, 0xdc, 0x1f, 0x16, 0xf3, 0xd9, 0x01, 0x7f, 0x58, 0x8b, 0xbb, - 0xef, 0xfd, 0xca, 0x62, 0xf8, 0x1d, 0xf0, 0x8f, 0xf7, 0xe2, 0x11, 0x03, - 0x5a, 0x69, 0x58, 0x1b, 0x8b, 0xea, 0x3f, 0x43, 0xf1, 0x3c, 0xfe, 0x7b, - 0x52, 0xaa, 0x6f, 0x50, 0xed, 0x6f, 0xe5, 0x63, 0xf3, 0xd7, 0xaf, 0xd4, - 0xfd, 0xfe, 0x89, 0xa6, 0x29, 0xf9, 0x7f, 0x7f, 0x15, 0xe1, 0x0f, 0x79, - 0x99, 0x7a, 0xe6, 0xaf, 0x43, 0x3e, 0x27, 0x03, 0x67, 0x9d, 0xd5, 0x0f, - 0x11, 0x7b, 0xec, 0x24, 0x33, 0x41, 0xfc, 0x2a, 0xf9, 0x7d, 0x1d, 0x5d, - 0x12, 0x9b, 0xdf, 0xaf, 0xce, 0xf7, 0xee, 0x94, 0xe2, 0x5f, 0x9e, 0x3c, - 0x85, 0xc7, 0xbb, 0x24, 0xf9, 0x32, 0x99, 0x7c, 0xe5, 0x3a, 0x6b, 0xe5, - 0x7f, 0x99, 0xbc, 0xe5, 0x78, 0x42, 0x8e, 0xdb, 0xff, 0x5d, 0xc2, 0xfc, - 0x6e, 0xd7, 0x11, 0xcd, 0x69, 0x3b, 0x3b, 0x35, 0x6a, 0xd2, 0xf9, 0x1d, - 0xe4, 0xd0, 0x7a, 0xb0, 0xc9, 0xcd, 0xa8, 0xbc, 0x9f, 0xe6, 0x23, 0xf5, - 0x33, 0x88, 0x83, 0xc6, 0x9e, 0xdf, 0xba, 0x83, 0x07, 0xb0, 0xe9, 0xf3, - 0x90, 0xbd, 0x58, 0x22, 0x49, 0x8a, 0x49, 0x73, 0xdd, 0x99, 0xb6, 0x9f, - 0x6f, 0x80, 0x7d, 0xd1, 0xd1, 0x18, 0x8f, 0x47, 0x3b, 0x83, 0xbc, 0x9e, - 0x2e, 0x67, 0x91, 0x7a, 0x3a, 0xc0, 0xbf, 0xad, 0x7d, 0x0c, 0xfa, 0x27, - 0xcf, 0x0a, 0xe2, 0x3f, 0x47, 0xc4, 0xdf, 0x87, 0xdc, 0x9d, 0x80, 0xdf, - 0xd1, 0xdc, 0x02, 0xe0, 0xaf, 0x55, 0x0f, 0x12, 0x1a, 0x2f, 0xec, 0x21, - 0xf1, 0x5e, 0x9b, 0xe6, 0xaf, 0xf9, 0x56, 0x36, 0x86, 0xc9, 0x17, 0xcb, - 0xf7, 0x55, 0x3e, 0xd6, 0x79, 0xbe, 0xe2, 0xcb, 0xdc, 0xa5, 0x88, 0x88, - 0xf7, 0x00, 0x87, 0xe1, 0x8d, 0x06, 0x16, 0x22, 0x73, 0x49, 0xeb, 0xd1, - 0xab, 0xf0, 0xf1, 0xf5, 0xb9, 0x1f, 0x85, 0xad, 0x4f, 0x8e, 0x57, 0x43, - 0x3d, 0xcb, 0x32, 0xa8, 0x67, 0x01, 0xfa, 0x13, 0xa4, 0x9e, 0x85, 0xd3, - 0x63, 0x45, 0xd1, 0x4f, 0xf7, 0xef, 0x12, 0xaf, 0x3e, 0x0e, 0xa1, 0xc7, - 0x0d, 0x7f, 0x3c, 0x44, 0xe0, 0x1d, 0x8d, 0xd0, 0x6b, 0x55, 0xd3, 0x8b, - 0x6f, 0x52, 0x32, 0xff, 0xe9, 0xf3, 0x7b, 0xa3, 0x86, 0x5b, 0x32, 0xec, - 0x48, 0x7b, 0xf5, 0x82, 0x19, 0xed, 0xbf, 0xc0, 0xe7, 0xe7, 0xe3, 0xf1, - 0xf7, 0xef, 0x5f, 0x8c, 0x4f, 0xad, 0x7e, 0xac, 0xd6, 0xf9, 0x32, 0xf1, - 0xf9, 0x5a, 0x69, 0x06, 0xcf, 0x57, 0x54, 0xfc, 0x22, 0xfc, 0x3c, 0x79, - 0xfb, 0x61, 0xb5, 0x13, 0x79, 0x86, 0x09, 0x9d, 0xb4, 0xdd, 0xd0, 0xd5, - 0xb8, 0x04, 0x95, 0x67, 0xa0, 0xfd, 0x76, 0x26, 0x63, 0xe8, 0x8d, 0xc3, - 0x5f, 0xd6, 0x86, 0x07, 0x34, 0x7b, 0x44, 0x1b, 0x6b, 0x7d, 0xd2, 0x2e, - 0x6f, 0xfb, 0xdb, 0xf9, 0x6e, 0x17, 0xbe, 0x0d, 0xed, 0x9b, 0x99, 0x70, - 0xd3, 0x10, 0x67, 0x84, 0x75, 0x58, 0x1d, 0x39, 0x12, 0x87, 0x18, 0x6e, - 0x07, 0xfa, 0xdc, 0xef, 0x53, 0x4d, 0xe2, 0x9a, 0xdf, 0xb2, 0xcb, 0x06, - 0xdc, 0xc7, 0x2d, 0xae, 0x5f, 0xae, 0x11, 0x9e, 0x67, 0xaf, 0x59, 0x7f, - 0xec, 0xd5, 0x3f, 0xbd, 0x4b, 0xce, 0xbb, 0xff, 0x18, 0xe6, 0x72, 0x2a, - 0x6f, 0x2c, 0x5e, 0x9e, 0xb8, 0xdb, 0xab, 0x97, 0x30, 0xca, 0x24, 0xbe, - 0x57, 0x40, 0x25, 0x1a, 0xdf, 0xd3, 0x4b, 0x33, 0x52, 0x43, 0x06, 0x95, - 0xf0, 0xed, 0x08, 0xad, 0xe7, 0xe7, 0x23, 0x47, 0xe4, 0x4b, 0x13, 0xc7, - 0xc3, 0x6e, 0x38, 0x69, 0xb1, 0x3e, 0x01, 0x5b, 0xf7, 0x24, 0xd4, 0x4b, - 0x61, 0x66, 0x8f, 0x31, 0xcd, 0x59, 0x5e, 0x98, 0xe0, 0xfb, 0x91, 0x46, - 0x53, 0xd1, 0xe7, 0x72, 0x3c, 0x27, 0x79, 0x40, 0xaa, 0xff, 0xe4, 0xf5, - 0xb8, 0x1a, 0x2a, 0xb5, 0xc3, 0xa2, 0x4b, 0x43, 0x69, 0x27, 0x07, 0xf2, - 0xd9, 0x91, 0x0a, 0xc6, 0xd3, 0xf1, 0x25, 0xc9, 0x75, 0xda, 0x94, 0xe7, - 0x73, 0xd3, 0x07, 0x84, 0xf8, 0x0f, 0x9a, 0x79, 0x20, 0x5e, 0x7e, 0xcf, - 0x3c, 0x30, 0xc5, 0xfa, 0x4e, 0x29, 0x7f, 0x68, 0x85, 0xec, 0x5f, 0x1a, - 0x7c, 0xe5, 0xe7, 0x44, 0x7f, 0xfe, 0x45, 0x93, 0xe3, 0xdb, 0xa8, 0x53, - 0x7b, 0xcd, 0xed, 0xc9, 0x2e, 0xc9, 0xbe, 0x78, 0xf5, 0xe5, 0x42, 0x7e, - 0x6f, 0x56, 0xfc, 0x7a, 0xbc, 0xf9, 0x7d, 0x83, 0xb7, 0x82, 0x9f, 0x37, - 0x01, 0xf6, 0xdf, 0x67, 0xc6, 0x60, 0x3f, 0x7f, 0x9c, 0x63, 0xfc, 0x17, - 0xda, 0xab, 0xf4, 0x1b, 0x69, 0xa3, 0xfa, 0x8d, 0xe5, 0xe3, 0xe0, 0x73, - 0x74, 0xba, 0xe5, 0xa7, 0x55, 0xde, 0x1f, 0x2e, 0x3f, 0x0e, 0x2a, 0x5d, - 0xd4, 0xb6, 0x4d, 0x67, 0xf3, 0x63, 0x7c, 0x17, 0x8b, 0xf2, 0x23, 0xbf, - 0x0f, 0xad, 0x4e, 0xf9, 0xf9, 0xe4, 0xa9, 0x92, 0x1f, 0xa9, 0x3e, 0xc6, - 0x92, 0xf7, 0x07, 0x0f, 0xb7, 0xa0, 0x44, 0xc8, 0x8d, 0x94, 0x1f, 0x83, - 0xfa, 0x6f, 0x03, 0x9a, 0x14, 0xaf, 0x95, 0xe4, 0x49, 0x90, 0x1f, 0x74, - 0x6e, 0x4d, 0xf9, 0x59, 0x21, 0xc5, 0x9b, 0x59, 0xbe, 0xbc, 0x3a, 0xbf, - 0x63, 0x88, 0xfe, 0x35, 0xde, 0x67, 0x12, 0x6f, 0x2e, 0xa1, 0xf8, 0x7a, - 0xd1, 0xb9, 0xf1, 0xfe, 0x8f, 0xfb, 0x6e, 0x94, 0xbf, 0xad, 0x11, 0x7f, - 0x7b, 0xf2, 0x01, 0x13, 0xda, 0xd3, 0x4f, 0xb4, 0x83, 0x36, 0x71, 0x9f, - 0x7f, 0xac, 0x84, 0x2a, 0x44, 0x1f, 0x7a, 0xf5, 0x6d, 0x1a, 0xa9, 0x17, - 0xed, 0xcc, 0x6e, 0x75, 0x9a, 0xf6, 0x2e, 0xcf, 0xa5, 0x26, 0x0d, 0xf0, - 0xb7, 0xe9, 0x79, 0x00, 0xed, 0xbe, 0x04, 0x39, 0x89, 0x60, 0xbe, 0x65, - 0x40, 0xa8, 0x5f, 0xde, 0x31, 0x2f, 0x10, 0xaf, 0x81, 0x7a, 0xe4, 0xc9, - 0x85, 0x90, 0x46, 0xf1, 0xfb, 0x5b, 0x75, 0xf6, 0x37, 0xa1, 0xbf, 0x8d, - 0x0f, 0xc1, 0x83, 0x1a, 0x1a, 0x0a, 0xef, 0x6f, 0x62, 0xd9, 0x18, 0xbd, - 0x8f, 0xf9, 0xb3, 0x56, 0x96, 0xe9, 0x47, 0xba, 0x9f, 0x61, 0xfd, 0x93, - 0xc1, 0xfe, 0x51, 0xfe, 0x7a, 0x44, 0x7c, 0xba, 0xaa, 0x7e, 0x3e, 0x07, - 0xf2, 0x01, 0xc6, 0xfb, 0x03, 0xad, 0x3c, 0xe4, 0xcb, 0xc7, 0xf9, 0x91, - 0xf2, 0x91, 0x35, 0xf2, 0xc9, 0xe0, 0xfd, 0xa9, 0x27, 0xb6, 0xbe, 0x3d, - 0x24, 0xbf, 0xc5, 0x35, 0x4e, 0x36, 0x34, 0x5f, 0x4d, 0xfe, 0xd9, 0x9e, - 0x82, 0xf3, 0xec, 0xfa, 0xf5, 0x21, 0x1e, 0xfd, 0xf4, 0x28, 0x7b, 0xaf, - 0x34, 0x2a, 0x84, 0xd7, 0xcb, 0xc2, 0xe5, 0xd3, 0xcb, 0x2f, 0x69, 0x6a, - 0xf4, 0xdd, 0xca, 0xe9, 0x4b, 0x44, 0xd5, 0x2f, 0x36, 0x11, 0x7f, 0x8f, - 0xcb, 0xef, 0x0e, 0x2d, 0x98, 0x7f, 0x91, 0xe3, 0xfb, 0xe1, 0xf1, 0xf9, - 0x67, 0x03, 0xf4, 0x85, 0xd3, 0xb3, 0x31, 0x11, 0x1d, 0x9f, 0xeb, 0x21, - 0x1a, 0x0e, 0x8f, 0xd7, 0x6b, 0xe7, 0x17, 0x54, 0xf1, 0x47, 0xde, 0x17, - 0x51, 0xdd, 0xf1, 0xe4, 0x58, 0x7d, 0x2f, 0xeb, 0xef, 0x88, 0xf8, 0x5f, - 0xc9, 0x08, 0xd4, 0x47, 0x8b, 0xf7, 0xd3, 0x8e, 0x69, 0xc2, 0xdf, 0xc9, - 0xeb, 0x79, 0xe9, 0xf3, 0x41, 0x39, 0x8e, 0xbf, 0x65, 0x9a, 0xf0, 0xd3, - 0x7a, 0x67, 0x90, 0x67, 0xa2, 0xaf, 0x5a, 0xbc, 0xfa, 0x8b, 0x69, 0xc2, - 0x4f, 0xeb, 0x9d, 0x3d, 0x7b, 0xec, 0xd5, 0x77, 0xac, 0x9b, 0x26, 0xfc, - 0xb4, 0xde, 0x99, 0xdb, 0xff, 0x92, 0x97, 0x7f, 0x5c, 0xc7, 0xed, 0x8b, - 0x19, 0x73, 0x9e, 0xdc, 0xd5, 0x0b, 0xac, 0xc9, 0xde, 0x3e, 0xb8, 0xed, - 0xde, 0xcf, 0xdf, 0x17, 0x62, 0x72, 0x7f, 0xb4, 0x1e, 0x7b, 0x6c, 0xbd, - 0x18, 0x88, 0x4f, 0x24, 0x7c, 0x79, 0x27, 0xe4, 0x64, 0x02, 0xf2, 0x40, - 0x4e, 0xdf, 0x77, 0x02, 0xf5, 0x45, 0x03, 0xfc, 0x7d, 0x3f, 0x75, 0xbd, - 0x9f, 0xa4, 0xb6, 0x7c, 0x7b, 0xf6, 0xcf, 0xac, 0x61, 0xff, 0x98, 0x7d, - 0xc4, 0x5e, 0x38, 0xb1, 0x7f, 0x28, 0x3e, 0xdf, 0xea, 0x52, 0xfd, 0x91, - 0x23, 0xf6, 0x0e, 0xdf, 0x6c, 0x4b, 0xc7, 0x57, 0xe1, 0xfb, 0x47, 0xc1, - 0xf3, 0xcf, 0x2d, 0x7a, 0x9f, 0x73, 0x4c, 0xb0, 0xe7, 0x43, 0x5f, 0xef, - 0x5c, 0xfd, 0xa0, 0xee, 0xee, 0xd4, 0xc6, 0x50, 0x1a, 0xeb, 0x6b, 0xa7, - 0xeb, 0x91, 0x83, 0x17, 0x4e, 0x6a, 0x58, 0xf5, 0x14, 0x2e, 0x5e, 0x3b, - 0xa8, 0xc3, 0x7d, 0xe0, 0x87, 0x9d, 0xeb, 0xd0, 0x4f, 0xe9, 0x7d, 0x20, - 0x74, 0x7d, 0x4f, 0xa7, 0x7c, 0x7e, 0xe6, 0x83, 0xf1, 0x21, 0xb2, 0x17, - 0x1b, 0x32, 0xfe, 0xfb, 0xb6, 0xbc, 0x7c, 0x7b, 0xc4, 0xfb, 0xb6, 0x78, - 0x7e, 0x5f, 0x7c, 0xde, 0xeb, 0x80, 0x8f, 0xbf, 0xd4, 0x59, 0x47, 0xfc, - 0x89, 0xf7, 0xa7, 0xf9, 0x90, 0x94, 0x0e, 0xf9, 0x76, 0x6a, 0x5f, 0xbd, - 0xfc, 0x76, 0x0d, 0x7f, 0xc3, 0x8b, 0xb7, 0x30, 0x7f, 0xa3, 0x10, 0xef, - 0x6f, 0xb0, 0x78, 0x1e, 0x9d, 0x7d, 0x5b, 0x82, 0xdb, 0x17, 0x87, 0xf2, - 0x3f, 0x09, 0xfc, 0x77, 0x46, 0x02, 0xf5, 0xf5, 0xd6, 0x26, 0xf2, 0x3c, - 0x9d, 0xab, 0x83, 0xbd, 0x1c, 0x4a, 0x1d, 0xea, 0x3e, 0xae, 0x3b, 0x3b, - 0x31, 0x6c, 0x62, 0xfe, 0xdb, 0x5d, 0xbf, 0x19, 0x37, 0x78, 0x7e, 0x7b, - 0x17, 0xd4, 0x03, 0x58, 0xe0, 0x3f, 0xd8, 0x43, 0xd1, 0xf1, 0xbf, 0x48, - 0xfe, 0x13, 0x75, 0xb9, 0xa1, 0xd1, 0xe7, 0x7f, 0xe3, 0xff, 0x6b, 0xfe, - 0xcb, 0xf5, 0x05, 0xa6, 0xa7, 0xac, 0xd6, 0x18, 0xa2, 0x7f, 0xc2, 0xed, - 0xb5, 0x58, 0x7f, 0x50, 0x6d, 0xef, 0xd9, 0xf3, 0x93, 0xb9, 0x49, 0xe2, - 0x2f, 0x79, 0xfa, 0x2d, 0x17, 0xaf, 0xdf, 0xf8, 0x7c, 0xa6, 0x57, 0x5c, - 0xb2, 0x26, 0xee, 0xf9, 0x1b, 0x9b, 0xdc, 0x2f, 0x82, 0xfa, 0x96, 0xeb, - 0x1f, 0x8f, 0xd7, 0xf4, 0x7d, 0x64, 0x36, 0x56, 0x50, 0x4e, 0xdb, 0x50, - 0x02, 0xf4, 0xbd, 0x9b, 0x12, 0xea, 0x11, 0x67, 0x12, 0xfd, 0xa7, 0x8b, - 0xfd, 0x3d, 0x73, 0xc9, 0x61, 0xfe, 0xa6, 0xdf, 0xa8, 0x7c, 0x2c, 0xbf, - 0x2f, 0xf0, 0xf9, 0x6d, 0x71, 0x3c, 0x21, 0x0d, 0xf6, 0xb6, 0xc8, 0xed, - 0xc1, 0xa7, 0xf9, 0xfc, 0x59, 0x7e, 0x9f, 0x23, 0xf7, 0xe9, 0xc0, 0xf3, - 0xb0, 0x41, 0xfb, 0x4a, 0xc9, 0xdb, 0xaa, 0x81, 0x3c, 0xf6, 0x25, 0x84, - 0xfa, 0xb3, 0x46, 0x61, 0x7c, 0x2e, 0x1f, 0xf1, 0xbc, 0x17, 0xfd, 0xbc, - 0x19, 0xe1, 0x5f, 0x78, 0xf6, 0x50, 0xd0, 0xdf, 0x3e, 0xfd, 0xd4, 0x34, - 0xc0, 0x2b, 0x6b, 0xd9, 0xf3, 0xaa, 0xbe, 0x3d, 0x4b, 0x09, 0xf3, 0x73, - 0x7b, 0x27, 0xad, 0xc7, 0x8b, 0x0f, 0x1f, 0xe5, 0xf4, 0xdd, 0x81, 0xa4, - 0x78, 0x02, 0xed, 0xdf, 0x21, 0x8d, 0xaf, 0x71, 0xff, 0xbc, 0x48, 0xba, - 0x0f, 0x7e, 0xaa, 0xc6, 0x7d, 0x70, 0xd1, 0x54, 0xef, 0x83, 0xec, 0x0f, - 0xb7, 0x3f, 0xa0, 0x09, 0xf5, 0x2b, 0x35, 0xe4, 0x93, 0x3c, 0x7f, 0xd3, - 0x17, 0x88, 0xd7, 0xcd, 0x88, 0xef, 0x5f, 0x40, 0x3b, 0x2c, 0x91, 0xbe, - 0xd2, 0x42, 0x16, 0xef, 0x0c, 0x3f, 0x2f, 0x26, 0x3f, 0x9f, 0x7c, 0x81, - 0x0f, 0x64, 0x05, 0xfa, 0x52, 0xac, 0x1d, 0x9a, 0xd7, 0x82, 0xfc, 0x75, - 0x88, 0xfe, 0x29, 0xc7, 0x87, 0xf7, 0xbb, 0x14, 0xb4, 0xff, 0xd0, 0x3f, - 0x1f, 0xc2, 0x1f, 0x79, 0x7e, 0x8e, 0xdf, 0xb3, 0x8f, 0x1d, 0x73, 0x61, - 0x71, 0x55, 0xfd, 0xa9, 0x3e, 0x1b, 0x26, 0xf1, 0x00, 0xb8, 0xdf, 0x45, - 0xf1, 0x5f, 0xc2, 0x8f, 0xa5, 0x60, 0x8d, 0x11, 0xb7, 0x5f, 0xd5, 0xf9, - 0xec, 0xf0, 0xfe, 0x51, 0xfa, 0x56, 0x5e, 0x0f, 0x1f, 0x2f, 0xfb, 0x43, - 0x04, 0x5f, 0xc0, 0xbf, 0xf7, 0xf3, 0xe1, 0xe1, 0xfb, 0x89, 0x29, 0x2f, - 0x05, 0xe5, 0x17, 0xc6, 0xaf, 0xac, 0x4d, 0x3f, 0xd2, 0x65, 0xfa, 0xe3, - 0xfd, 0x41, 0xc7, 0xd7, 0xcf, 0x11, 0xf9, 0xe3, 0xa8, 0xfe, 0x36, 0x72, - 0x9d, 0xd6, 0xd0, 0xfb, 0x5f, 0xa8, 0x7d, 0xf3, 0xfc, 0x71, 0x7c, 0x7f, - 0xee, 0xe3, 0xfa, 0x21, 0x17, 0xf4, 0xff, 0x5b, 0x78, 0x7c, 0xfb, 0xd7, - 0x73, 0x22, 0xea, 0x73, 0xa8, 0xff, 0x1a, 0x7f, 0x5e, 0xca, 0x2f, 0xdf, - 0x29, 0xae, 0xdf, 0xad, 0x4f, 0xfe, 0x3d, 0xfd, 0xc5, 0xe2, 0x35, 0x7c, - 0xbd, 0xc9, 0x1a, 0xfc, 0x11, 0xe7, 0x7f, 0x82, 0xc4, 0xf3, 0x91, 0x89, - 0xc6, 0xea, 0xe4, 0x27, 0x76, 0x79, 0xd7, 0x18, 0xbe, 0x7e, 0x84, 0x57, - 0x22, 0xd3, 0x78, 0x97, 0xdc, 0x5e, 0xc7, 0x7d, 0xf8, 0x77, 0x64, 0xdf, - 0xbb, 0xa7, 0xc5, 0xbe, 0xfb, 0xf6, 0xba, 0xfb, 0xb4, 0xbd, 0x9e, 0x46, - 0x7b, 0xfd, 0xb9, 0x88, 0x7c, 0xba, 0xa7, 0x9f, 0x22, 0xf8, 0xe7, 0x52, - 0x63, 0x13, 0x78, 0x7f, 0xc3, 0xfd, 0x4a, 0xf6, 0x1a, 0x50, 0x67, 0x1a, - 0x82, 0xf6, 0x7a, 0xfd, 0x74, 0xd8, 0x6b, 0x77, 0xb1, 0xa2, 0xbd, 0x5e, - 0x32, 0x45, 0x7b, 0xed, 0xe5, 0xeb, 0x76, 0x08, 0xef, 0x17, 0x71, 0xb9, - 0x7c, 0x52, 0x36, 0x8d, 0x34, 0xf2, 0xf3, 0x1a, 0x69, 0xbf, 0xf7, 0x51, - 0xfb, 0xed, 0xcd, 0xef, 0xcc, 0xab, 0xa1, 0x8f, 0xba, 0x55, 0xec, 0x15, - 0xb6, 0x9f, 0xdd, 0xa2, 0xfd, 0xdc, 0x11, 0xfe, 0xbc, 0x73, 0xd0, 0x7e, - 0xf6, 0x29, 0xd9, 0xcf, 0x6e, 0x45, 0xfb, 0xa9, 0x46, 0x3f, 0xef, 0x5f, - 0xbf, 0xbd, 0xec, 0x9e, 0x66, 0x7b, 0xd9, 0xad, 0x68, 0x2f, 0xbb, 0x15, - 0xed, 0x65, 0xf7, 0x09, 0xdb, 0x4b, 0xfb, 0x84, 0xec, 0x65, 0x77, 0xbc, - 0xbd, 0x7c, 0x5a, 0xb2, 0x97, 0xa8, 0x3e, 0xf9, 0x94, 0x9f, 0x77, 0xf1, - 0xed, 0x65, 0xf4, 0x7c, 0x36, 0xd9, 0x4f, 0x9e, 0xcf, 0x3d, 0x45, 0xf6, - 0x8a, 0xbd, 0x7f, 0x42, 0x7e, 0xbf, 0x44, 0xd4, 0x7e, 0x21, 0x2f, 0xbe, - 0x7b, 0x62, 0xef, 0x03, 0xa0, 0xf5, 0x20, 0x1b, 0x30, 0x86, 0xa5, 0xf0, - 0xfe, 0xa5, 0x40, 0xfe, 0x23, 0xbc, 0xde, 0xc8, 0x03, 0xfc, 0xf8, 0xae, - 0x06, 0xf9, 0xdf, 0x46, 0xcb, 0xc5, 0xeb, 0xf5, 0x9f, 0x77, 0xe2, 0xf4, - 0xa2, 0xce, 0xac, 0xee, 0xb4, 0xed, 0xc5, 0x6c, 0x9d, 0x0c, 0xad, 0x37, - 0xc2, 0x8a, 0x55, 0x13, 0xf4, 0x75, 0x9d, 0xf1, 0xb2, 0x28, 0x7e, 0xd8, - 0x49, 0x2c, 0xbf, 0x67, 0x6c, 0x48, 0x8f, 0x9e, 0xbf, 0x04, 0x95, 0xb3, - 0xa8, 0x60, 0xe3, 0xbd, 0xdf, 0xdb, 0x92, 0x48, 0x40, 0x7c, 0x81, 0xbc, - 0x5f, 0x0a, 0x91, 0x97, 0x64, 0xbb, 0x1a, 0xad, 0x58, 0xb0, 0x51, 0x07, - 0x72, 0x3a, 0xb1, 0xbc, 0x8f, 0x26, 0xfc, 0x78, 0x08, 0x4b, 0xad, 0xa3, - 0xbe, 0xc1, 0xb2, 0x56, 0x25, 0xff, 0xdd, 0x08, 0x35, 0xc3, 0xf3, 0x61, - 0xfb, 0x06, 0x11, 0xd4, 0x33, 0x80, 0xbc, 0x2c, 0xae, 0x43, 0xdf, 0xf0, - 0x7a, 0x52, 0xbf, 0x3e, 0x6c, 0x93, 0x54, 0x1f, 0x36, 0x21, 0xd5, 0x1b, - 0x6c, 0x8a, 0xaf, 0x0f, 0x73, 0x17, 0xc5, 0xda, 0xd3, 0xea, 0xfc, 0x3e, - 0x7b, 0xbf, 0x09, 0xdd, 0xbc, 0x04, 0xe4, 0xbf, 0xe0, 0xe5, 0x5e, 0x39, - 0xf3, 0x88, 0xe6, 0x58, 0xad, 0x69, 0xf2, 0xfc, 0x1c, 0xd9, 0xef, 0x0d, - 0x86, 0xa7, 0x72, 0x20, 0x7f, 0x95, 0xde, 0x89, 0xe5, 0x71, 0xf8, 0xf2, - 0x51, 0x73, 0xc0, 0x70, 0x86, 0x79, 0x3d, 0x90, 0x9e, 0x41, 0xe5, 0x73, - 0xc9, 0x78, 0xe0, 0x97, 0xf5, 0x09, 0xe4, 0xd5, 0x97, 0x56, 0xd3, 0x23, - 0xe6, 0xc3, 0x80, 0x3d, 0x23, 0xa0, 0x5f, 0x6c, 0xff, 0x79, 0x36, 0x02, - 0x47, 0xbc, 0x8f, 0x22, 0xcc, 0x3e, 0xac, 0x30, 0xfd, 0xfc, 0xc5, 0x74, - 0xbf, 0x0f, 0xa3, 0x8a, 0x3f, 0x5b, 0x49, 0x7c, 0x6e, 0xfe, 0xa8, 0x79, - 0x8c, 0xc4, 0x47, 0xfd, 0xe7, 0xad, 0x28, 0x7f, 0x4a, 0x26, 0x9c, 0xd7, - 0xe1, 0x65, 0xb9, 0xc4, 0x80, 0x46, 0xf8, 0x43, 0x14, 0x96, 0xde, 0xc8, - 0xf9, 0x03, 0xf6, 0x39, 0x99, 0x8d, 0xe3, 0x4f, 0x5a, 0xe4, 0x0f, 0xe1, - 0xef, 0xda, 0x0c, 0xd8, 0xbf, 0x12, 0xf8, 0xe7, 0x01, 0xd8, 0xad, 0xd3, - 0x5f, 0x5f, 0x6e, 0xc6, 0xd5, 0x8f, 0x9d, 0x18, 0x7f, 0xaa, 0xf5, 0x83, - 0x58, 0x1f, 0x10, 0xd0, 0x5f, 0x82, 0x3f, 0xed, 0xc5, 0x1f, 0x3b, 0xb1, - 0x3f, 0xdd, 0x66, 0xeb, 0xe7, 0x66, 0x1e, 0xd4, 0x4a, 0xdf, 0x08, 0xd4, - 0x9b, 0x60, 0x77, 0xcb, 0xf5, 0x9e, 0xcf, 0x7e, 0x2a, 0xe1, 0xef, 0x6f, - 0x48, 0xbc, 0xd0, 0x44, 0xbd, 0x63, 0xff, 0xc9, 0xed, 0x5f, 0xfc, 0x79, - 0x0a, 0xac, 0xaf, 0xbe, 0xf3, 0x74, 0x4a, 0xd6, 0x87, 0x9c, 0xe7, 0xf5, - 0x60, 0xbd, 0xd8, 0x9f, 0x27, 0x6b, 0xac, 0xb7, 0xef, 0xc0, 0xc9, 0x5e, - 0x2f, 0xab, 0xf7, 0x1b, 0x25, 0xeb, 0x6b, 0x35, 0xe5, 0xf7, 0xaf, 0x79, - 0xeb, 0x73, 0xf0, 0xfa, 0xcc, 0x9e, 0x26, 0x34, 0xf1, 0xa0, 0x86, 0x82, - 0xf9, 0x02, 0xdb, 0x8f, 0x7f, 0xa1, 0xd2, 0x70, 0x52, 0xac, 0x9f, 0xfb, - 0x4e, 0x43, 0xec, 0xfa, 0xe6, 0x77, 0x19, 0x68, 0xc2, 0xbb, 0x4f, 0x28, - 0xd6, 0x3b, 0xd6, 0xa8, 0xc7, 0x22, 0xe7, 0xb7, 0xb5, 0x81, 0xeb, 0xbf, - 0x40, 0xfd, 0x1e, 0x39, 0x6f, 0x05, 0xb2, 0x5e, 0x3b, 0xc1, 0xea, 0x61, - 0xfd, 0xf5, 0x54, 0xe2, 0xf3, 0xdb, 0x81, 0x78, 0xba, 0xd3, 0x79, 0x32, - 0xcf, 0x1b, 0x1a, 0x4a, 0x89, 0xf5, 0x8a, 0x23, 0x29, 0x95, 0xfa, 0xc5, - 0xa4, 0x5d, 0x78, 0xd5, 0xbe, 0xa3, 0x1d, 0xad, 0xe9, 0xb0, 0x26, 0xa9, - 0x1d, 0x5a, 0x91, 0x8a, 0x8f, 0xef, 0xc7, 0xd7, 0x8f, 0x46, 0xd7, 0x4b, - 0x1c, 0x93, 0xdf, 0x4f, 0x49, 0xe5, 0x4f, 0xcf, 0x6e, 0x25, 0xef, 0xa3, - 0xf1, 0xf6, 0xab, 0x81, 0xcf, 0x6f, 0xd2, 0xfa, 0x08, 0x38, 0x2f, 0xad, - 0x2d, 0xa3, 0xc6, 0xa6, 0xd8, 0xfa, 0xe5, 0x73, 0x22, 0x7e, 0x6f, 0x10, - 0xee, 0xcf, 0x99, 0x36, 0xbc, 0x7f, 0x9e, 0xbf, 0x79, 0x6b, 0x32, 0xde, - 0x5f, 0x3d, 0x49, 0xe7, 0x27, 0xe2, 0x79, 0xc5, 0xea, 0x78, 0x83, 0x58, - 0x0f, 0x53, 0xf5, 0xfc, 0xa2, 0xb6, 0x8b, 0xdd, 0x2f, 0x18, 0x7d, 0x3a, - 0xf8, 0x33, 0x61, 0xf6, 0x14, 0x12, 0xd1, 0xf4, 0xfd, 0x05, 0x4e, 0xba, - 0x76, 0x7e, 0x46, 0xbe, 0x9f, 0x2e, 0x3d, 0x10, 0xff, 0xbe, 0xb7, 0x6b, - 0x23, 0xfc, 0x17, 0xef, 0xbe, 0x29, 0xdc, 0xc7, 0x47, 0xd2, 0x60, 0x9f, - 0xca, 0x09, 0x96, 0x4f, 0x72, 0x36, 0x04, 0xde, 0x2f, 0xd4, 0x28, 0xde, - 0xa7, 0xa7, 0x58, 0x7f, 0xb5, 0x4c, 0xf1, 0x3e, 0xbd, 0xfc, 0xc0, 0x89, - 0xbe, 0x2f, 0x91, 0xf1, 0x9f, 0x2a, 0x68, 0x67, 0xce, 0x61, 0x43, 0x98, - 0xdf, 0x44, 0x49, 0xc2, 0x8f, 0xd6, 0x9e, 0x02, 0x79, 0xee, 0xaa, 0xbb, - 0x9d, 0x74, 0x70, 0x0f, 0x93, 0xb4, 0x3e, 0x1e, 0xf9, 0xc7, 0xf4, 0xbc, - 0xd5, 0xba, 0xff, 0xf9, 0xf9, 0x56, 0xf1, 0xfd, 0xa0, 0x1c, 0x3f, 0x5d, - 0xcf, 0x30, 0x89, 0xd7, 0x95, 0xc2, 0xef, 0xef, 0xa5, 0x9d, 0xc9, 0x90, - 0xfb, 0x18, 0xc3, 0x47, 0x7d, 0xd9, 0x41, 0x5a, 0xcf, 0x92, 0xa8, 0xdb, - 0x9f, 0xf6, 0xe6, 0xa7, 0xcb, 0x1f, 0xf7, 0xec, 0x13, 0x8b, 0xbf, 0xf4, - 0x07, 0xea, 0xeb, 0xb8, 0x3c, 0x36, 0xaa, 0xec, 0xef, 0xb9, 0x81, 0x7c, - 0x24, 0x89, 0x27, 0xf5, 0xe6, 0x3d, 0xff, 0x8b, 0xf0, 0xa3, 0x10, 0x71, - 0x9f, 0xc4, 0x70, 0x7e, 0xa6, 0x7f, 0xdf, 0x46, 0xe8, 0x7a, 0x5e, 0x0f, - 0x7d, 0x6c, 0xce, 0xd4, 0xe5, 0xcb, 0xbd, 0xec, 0x94, 0xc9, 0x57, 0x38, - 0x7d, 0x7d, 0x51, 0xbf, 0xa7, 0x2a, 0xcb, 0x63, 0x54, 0x3e, 0x2b, 0x32, - 0xbe, 0xf6, 0xa0, 0x58, 0x4f, 0xc4, 0xeb, 0x45, 0xe5, 0xf8, 0x9a, 0xe2, - 0x7d, 0xcb, 0x93, 0x4f, 0x10, 0x90, 0x36, 0xdb, 0x80, 0xfb, 0x55, 0x5f, - 0x92, 0xe2, 0xeb, 0x11, 0xf6, 0xc7, 0x7b, 0x9f, 0x2a, 0xad, 0x87, 0x20, - 0xe8, 0xfc, 0xf7, 0x57, 0x78, 0xf2, 0xba, 0x3c, 0xe0, 0x3f, 0xa0, 0xc1, - 0x24, 0x97, 0x77, 0xdc, 0xdd, 0xfd, 0x76, 0x3a, 0xac, 0x1e, 0x62, 0x7a, - 0xee, 0xe3, 0xf4, 0xfe, 0x3b, 0x5b, 0xf7, 0xee, 0xe3, 0xd5, 0xf7, 0x97, - 0x1a, 0xcf, 0x0b, 0x48, 0xf8, 0x20, 0x3a, 0x0e, 0x7b, 0x5f, 0x5e, 0x38, - 0x6d, 0xf8, 0x1e, 0x8b, 0x79, 0x3e, 0xa6, 0x16, 0x0c, 0xfc, 0x13, 0xed, - 0x83, 0xdc, 0xbf, 0x4b, 0xad, 0x5e, 0x5c, 0x19, 0xff, 0x35, 0x27, 0x84, - 0x1f, 0x1e, 0x36, 0x88, 0x97, 0xcf, 0xc5, 0xb1, 0xf8, 0x40, 0xb4, 0xf2, - 0x7a, 0xfd, 0xfc, 0x9a, 0xe2, 0xef, 0xb7, 0x79, 0xbf, 0x5f, 0x6c, 0x49, - 0x70, 0x4e, 0x82, 0x6d, 0x09, 0x76, 0x24, 0x98, 0xc5, 0xfb, 0x7d, 0xd8, - 0x94, 0x60, 0x4b, 0x82, 0x73, 0x12, 0x6c, 0x4b, 0xf0, 0xa9, 0xfd, 0x3d, - 0x2a, 0x57, 0x82, 0x6b, 0xfe, 0xde, 0xda, 0x34, 0xd3, 0x77, 0xfa, 0x73, - 0xfa, 0x73, 0xfa, 0x13, 0xf3, 0xf9, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xec, 0x5d, 0x7b, 0x90, 0x1c, 0x47, 0x79, 0xef, 0xee, 0x99, 0x9d, 0x9d, - 0xdd, 0xdb, 0x5b, 0x8d, 0xce, 0x27, 0xb1, 0x3e, 0x4b, 0xd6, 0x9c, 0x74, - 0x96, 0x8e, 0xc4, 0xa8, 0xce, 0x8a, 0x2c, 0xce, 0x46, 0x31, 0x73, 0xd2, - 0xc9, 0x48, 0x46, 0x22, 0xc2, 0x3c, 0x22, 0x53, 0x3c, 0xf6, 0x70, 0x51, - 0x25, 0x83, 0x23, 0x9b, 0xc4, 0x49, 0xce, 0xd8, 0x29, 0xf7, 0xde, 0xed, - 0x3d, 0x0c, 0x3a, 0xd7, 0x59, 0x18, 0x23, 0x8c, 0x31, 0x7b, 0x92, 0x6c, - 0xab, 0x30, 0x15, 0xa8, 0x72, 0x52, 0x65, 0xf2, 0x47, 0xb2, 0xd6, 0x83, - 0x08, 0xca, 0xaa, 0x3a, 0x70, 0xe2, 0x22, 0x29, 0x2a, 0x59, 0x3b, 0x29, - 0x22, 0x1e, 0x51, 0x94, 0x02, 0x93, 0x33, 0x18, 0x94, 0x7e, 0xcf, 0x74, - 0xef, 0xcc, 0xec, 0x9e, 0x1e, 0x14, 0x09, 0xdc, 0x1f, 0xb6, 0xc7, 0x33, - 0xdb, 0xd3, 0xd3, 0xfd, 0xf5, 0xf7, 0xfe, 0x7e, 0xdf, 0x00, 0xd3, 0xaf, - 0x38, 0xbe, 0x0c, 0xcd, 0xb7, 0x72, 0x51, 0xc1, 0x22, 0xf6, 0xc5, 0xfc, - 0x83, 0x70, 0x2f, 0xac, 0x8f, 0xc3, 0xc3, 0xef, 0x06, 0x2f, 0xe0, 0x03, - 0x76, 0x75, 0x23, 0xb4, 0xb8, 0xbf, 0x36, 0x0f, 0x1e, 0xa1, 0x67, 0x76, - 0x85, 0xd3, 0xeb, 0xc2, 0xaf, 0x0e, 0x66, 0x30, 0xe7, 0x57, 0x37, 0x3b, - 0xcc, 0x7b, 0x4a, 0xe4, 0x77, 0xd9, 0x03, 0xc1, 0x83, 0xf9, 0xf1, 0x6b, - 0x3b, 0x2c, 0xee, 0x9f, 0x2a, 0x3c, 0x3a, 0x67, 0x97, 0x11, 0x02, 0x4b, - 0x97, 0x02, 0xa7, 0x5c, 0x9a, 0x54, 0xfa, 0xaf, 0x27, 0xea, 0x4f, 0x87, - 0xa9, 0xbd, 0x5c, 0xdd, 0xa2, 0xfc, 0x03, 0x6b, 0x89, 0xfe, 0x1a, 0xa0, - 0x65, 0xdb, 0xd6, 0x40, 0x99, 0x7f, 0x76, 0x6b, 0x6a, 0x3f, 0xce, 0x3c, - 0x66, 0xea, 0x44, 0x6d, 0xcb, 0x7b, 0xfa, 0xe9, 0x2d, 0x9c, 0xc7, 0x39, - 0x7e, 0x2d, 0xfa, 0xc5, 0xc9, 0xfb, 0x6e, 0x9d, 0x31, 0xd2, 0xe9, 0x23, - 0xbe, 0xce, 0x6f, 0xfc, 0x7e, 0x2a, 0xaf, 0xfc, 0x8e, 0xd9, 0xe2, 0x46, - 0x1a, 0xb4, 0xa6, 0xfe, 0xbc, 0x98, 0xf7, 0xbd, 0x27, 0x23, 0xbf, 0x0f, - 0x80, 0xb7, 0x1b, 0xf2, 0x4b, 0xe1, 0x6d, 0x31, 0xfb, 0xd2, 0xf7, 0xc5, - 0xf3, 0x7b, 0x10, 0xae, 0x65, 0xfc, 0x8b, 0x95, 0x27, 0x97, 0xfd, 0xcf, - 0xd3, 0x2f, 0x47, 0xe4, 0x7f, 0xf4, 0x89, 0xfd, 0xf1, 0x59, 0x73, 0x6e, - 0x3f, 0x23, 0xe9, 0x83, 0xe6, 0x0a, 0x06, 0xae, 0x9f, 0xf1, 0x32, 0x7c, - 0xfd, 0xa3, 0xf4, 0xd2, 0x20, 0xf4, 0x32, 0x4c, 0xed, 0x4d, 0xff, 0x96, - 0x0d, 0x50, 0xe4, 0x23, 0x4a, 0xf9, 0x86, 0x44, 0xbd, 0x22, 0x95, 0xdd, - 0xee, 0x0d, 0xef, 0x70, 0x24, 0xbe, 0x91, 0x49, 0x2f, 0x76, 0x17, 0xc0, - 0xd3, 0xf6, 0x64, 0x61, 0xb6, 0x40, 0xae, 0x0b, 0xd4, 0xbf, 0xb9, 0xc3, - 0x58, 0x6f, 0xe5, 0x3f, 0x66, 0xf5, 0x84, 0x4c, 0x1c, 0xe2, 0x2d, 0x52, - 0xa2, 0xd7, 0x18, 0xaa, 0x2a, 0x58, 0xb6, 0xad, 0xb7, 0x4d, 0xfa, 0x89, - 0xd4, 0x03, 0x09, 0x7c, 0x15, 0xd6, 0xff, 0xd5, 0x0b, 0xdf, 0xc7, 0x54, - 0x2e, 0x3f, 0x12, 0xef, 0x08, 0xd2, 0xf2, 0x19, 0x7d, 0xc4, 0xe8, 0x29, - 0x17, 0x8e, 0x9f, 0x3e, 0xff, 0x4b, 0xac, 0x7f, 0x5c, 0xc4, 0xf9, 0x1f, - 0xf8, 0x95, 0x9e, 0xff, 0x3f, 0xb8, 0x44, 0xe7, 0xbf, 0x79, 0xbf, 0xd2, - 0xd7, 0xeb, 0xff, 0xda, 0xfe, 0xfc, 0x7f, 0xe5, 0xff, 0xfb, 0xdc, 0x88, - 0x3d, 0x1c, 0x39, 0xbf, 0x72, 0xff, 0x7b, 0x17, 0xc9, 0xff, 0x25, 0x7f, - 0x6f, 0xd2, 0x27, 0x25, 0xfe, 0xb5, 0xb2, 0x97, 0x7e, 0xb3, 0xf7, 0xbb, - 0xf9, 0xef, 0x05, 0xa3, 0x3e, 0xaf, 0xa0, 0xd9, 0xcb, 0xa6, 0x3d, 0x97, - 0xc7, 0x6f, 0x62, 0xff, 0xee, 0x11, 0xf5, 0xc5, 0xb2, 0x1e, 0x79, 0x2c, - 0xd0, 0xe5, 0xed, 0x31, 0xfd, 0x5a, 0xf2, 0x4f, 0xbc, 0x9a, 0xfb, 0xff, - 0xfc, 0x24, 0xfd, 0x3f, 0x8c, 0xb7, 0xc9, 0xfa, 0xfa, 0x38, 0x79, 0x6c, - 0xa9, 0xfb, 0x79, 0xdc, 0x1f, 0x37, 0x1e, 0x7e, 0xf7, 0x7c, 0xb8, 0xff, - 0x07, 0xb4, 0xfd, 0x57, 0xfe, 0xd2, 0x5f, 0xfc, 0x66, 0xee, 0xb7, 0xfe, - 0xd7, 0x6c, 0xaf, 0xbf, 0x2b, 0x66, 0xbd, 0x91, 0x79, 0xde, 0x2e, 0xd9, - 0x7e, 0xb6, 0x5c, 0xff, 0xe4, 0xfd, 0xfb, 0xe5, 0x6f, 0xf7, 0xef, 0x57, - 0x72, 0xfe, 0x85, 0xf7, 0x52, 0xee, 0x3f, 0x3f, 0xff, 0xc7, 0x86, 0xfb, - 0xb5, 0xf3, 0xdf, 0xa5, 0xf8, 0x41, 0xd6, 0xe0, 0x0f, 0x8b, 0xa6, 0x17, - 0x83, 0x1e, 0x9b, 0xce, 0x7f, 0x5d, 0xe7, 0x47, 0xbf, 0x3d, 0xff, 0x17, - 0x79, 0xfe, 0xb5, 0xfd, 0x8d, 0x39, 0xff, 0x06, 0xff, 0x5f, 0xdc, 0x7e, - 0xfe, 0xfa, 0x9d, 0x77, 0x03, 0xef, 0x45, 0xc5, 0xeb, 0x7e, 0x60, 0xf6, - 0x37, 0xb1, 0x45, 0xbc, 0x12, 0x71, 0x7c, 0xef, 0x51, 0x9b, 0xe7, 0x2b, - 0xe5, 0x8c, 0xf8, 0xc6, 0x8c, 0x86, 0xdf, 0xae, 0xbe, 0x55, 0xe0, 0x03, - 0x85, 0x0b, 0xa2, 0xc7, 0x0f, 0x9e, 0xd1, 0xf1, 0xf7, 0xee, 0xee, 0x78, - 0xa3, 0xc4, 0x0f, 0x9a, 0x01, 0xbc, 0xfe, 0x79, 0x9f, 0x45, 0xeb, 0x9f, - 0x01, 0xec, 0xb4, 0x82, 0x48, 0xff, 0x33, 0x99, 0xff, 0x66, 0xc9, 0x7c, - 0x2b, 0xfa, 0x42, 0x0a, 0xb9, 0xed, 0xab, 0xfc, 0xd5, 0x7a, 0xc1, 0x6d, - 0x23, 0xde, 0xf1, 0xce, 0xf0, 0xfd, 0x00, 0x1c, 0x19, 0x7b, 0x11, 0xae, - 0x05, 0x8d, 0x82, 0xc2, 0xc3, 0x0e, 0xe4, 0xf8, 0xbe, 0x8c, 0x1f, 0x4e, - 0x3f, 0x0f, 0x6b, 0xd1, 0xf8, 0xa1, 0x56, 0xdf, 0xfb, 0xa4, 0xc2, 0xcf, - 0xdd, 0x42, 0xfb, 0x57, 0x21, 0xdf, 0x01, 0xee, 0xa8, 0x45, 0xeb, 0xd7, - 0x78, 0x3d, 0xcd, 0xe7, 0x22, 0xf5, 0x90, 0x7b, 0x65, 0xbe, 0xcc, 0xcf, - 0x38, 0x7e, 0x2d, 0x9f, 0xd7, 0xb8, 0xd5, 0xe4, 0xcf, 0x6f, 0xd1, 0x0f, - 0x4a, 0xd5, 0xff, 0x8b, 0x7e, 0x50, 0x7e, 0x7a, 0x7d, 0x63, 0x7d, 0x75, - 0x42, 0x3e, 0x87, 0x11, 0x9f, 0x06, 0x59, 0x23, 0xbf, 0xad, 0x8e, 0x71, - 0x06, 0xae, 0x20, 0x1f, 0xb8, 0xfe, 0x1f, 0x01, 0x98, 0xca, 0x7f, 0xb6, - 0x97, 0xfd, 0x7a, 0xeb, 0x08, 0x53, 0x35, 0xf1, 0x30, 0xdb, 0xff, 0x89, - 0xa7, 0x2c, 0x78, 0x3f, 0xc4, 0x91, 0x7a, 0x7a, 0x59, 0xef, 0x0e, 0x02, - 0x16, 0xff, 0x0d, 0xac, 0x6c, 0x14, 0x7f, 0x16, 0xd4, 0xd5, 0xfe, 0xb1, - 0xaf, 0xc9, 0xba, 0xdf, 0xb2, 0xc9, 0xfa, 0xb8, 0x71, 0xf5, 0xf2, 0x3b, - 0x10, 0xaf, 0xcf, 0x13, 0x78, 0xba, 0x26, 0x7e, 0xb4, 0xad, 0xef, 0x57, - 0xf3, 0xef, 0xbf, 0x81, 0x40, 0x90, 0x45, 0x61, 0x7d, 0x3d, 0x3f, 0x97, - 0xea, 0xfd, 0xfe, 0x29, 0x11, 0x7f, 0xd9, 0x07, 0x18, 0xbd, 0x85, 0xfd, - 0x5b, 0x34, 0x3c, 0xfd, 0x90, 0x5e, 0xbe, 0x41, 0x53, 0xf3, 0xc6, 0xbe, - 0x05, 0xcf, 0xc2, 0xc6, 0x34, 0xcf, 0x7f, 0x1f, 0xb0, 0x93, 0xe9, 0x4b, - 0xe2, 0xbf, 0x3e, 0xf3, 0xc3, 0xaf, 0x14, 0x80, 0x8e, 0xdf, 0x80, 0x5a, - 0xd4, 0xaf, 0x0a, 0x79, 0x84, 0x21, 0xdf, 0x5f, 0x9c, 0x9e, 0x3f, 0xa9, - 0xf2, 0xdf, 0x12, 0xce, 0xb7, 0xc0, 0xb3, 0x91, 0xe7, 0xb3, 0x71, 0x2b, - 0xaf, 0x17, 0x2a, 0x3e, 0x32, 0xf2, 0xc4, 0xcb, 0xc5, 0x6c, 0xf5, 0xd8, - 0x08, 0xcb, 0x3b, 0xc4, 0xdf, 0xcd, 0x20, 0x8a, 0x5f, 0x63, 0xd3, 0xa9, - 0x96, 0xd9, 0xfb, 0x54, 0xbe, 0x0f, 0xd2, 0xfb, 0x65, 0x8e, 0xaa, 0xf8, - 0x5b, 0xe0, 0x56, 0xd9, 0xf3, 0x1e, 0x79, 0x5e, 0xc5, 0x63, 0x85, 0x7d, - 0xe3, 0xc2, 0x4e, 0x1c, 0x78, 0xbe, 0x05, 0x06, 0x5f, 0x67, 0x78, 0x0b, - 0x49, 0xe7, 0xf1, 0xfa, 0xa8, 0x3d, 0x14, 0xf1, 0x97, 0x00, 0x70, 0x0a, - 0x44, 0xf7, 0x23, 0xac, 0x77, 0x16, 0xf4, 0x64, 0x4f, 0x83, 0x80, 0xf6, - 0x1b, 0x58, 0xb8, 0x8f, 0xf5, 0xa3, 0xe8, 0x39, 0xc0, 0x52, 0x8c, 0xf0, - 0x36, 0x5e, 0x97, 0x8e, 0x91, 0x07, 0xf0, 0xda, 0xe7, 0xde, 0x0e, 0xc3, - 0xf5, 0x5d, 0x21, 0xf1, 0xf6, 0x45, 0xfc, 0xfd, 0x1b, 0xda, 0x78, 0x12, - 0xde, 0x2b, 0x3c, 0xff, 0x7a, 0x3c, 0x9a, 0xaf, 0xdf, 0x84, 0x23, 0xfa, - 0xe1, 0xd5, 0x30, 0x7a, 0x90, 0x5c, 0x4f, 0xfd, 0xc7, 0x9c, 0xbd, 0x00, - 0x83, 0x6a, 0x1c, 0xbd, 0xec, 0x40, 0x5b, 0xb2, 0x84, 0xde, 0xe1, 0x59, - 0xd0, 0x18, 0x4b, 0xc6, 0x3b, 0x78, 0x7b, 0x02, 0xbe, 0x1c, 0xe7, 0x0f, - 0x1c, 0x7f, 0x81, 0xf7, 0x83, 0x91, 0xeb, 0x41, 0xf8, 0x48, 0x43, 0xc5, - 0xe3, 0xb1, 0x95, 0x80, 0x6f, 0xc0, 0xd6, 0xb3, 0x9e, 0x45, 0xe1, 0xfb, - 0x2e, 0x0c, 0x3f, 0x04, 0x3a, 0x97, 0x0a, 0x3f, 0x64, 0x46, 0xab, 0xcf, - 0x0e, 0xeb, 0x7b, 0x17, 0x2c, 0x76, 0x7f, 0x88, 0xe2, 0xa7, 0x55, 0x69, - 0xfd, 0xae, 0xed, 0x4f, 0x48, 0xbc, 0x75, 0xfa, 0x27, 0xf0, 0x7b, 0x24, - 0xfd, 0x95, 0x17, 0x4c, 0x7c, 0x1e, 0x3e, 0x5f, 0x9f, 0xf2, 0xb3, 0x6c, - 0xa7, 0xa4, 0xd7, 0x3c, 0x08, 0x72, 0xb4, 0x5f, 0x01, 0x0d, 0xd8, 0x5f, - 0x01, 0x59, 0x21, 0x23, 0xfb, 0x5b, 0xab, 0xfa, 0xef, 0x49, 0xfc, 0xf2, - 0x51, 0x41, 0x5f, 0xa0, 0x9e, 0x8e, 0xcf, 0xbe, 0x4b, 0xcf, 0x57, 0x52, - 0xf6, 0xb5, 0x4f, 0xe3, 0xb6, 0x6c, 0x3f, 0x0a, 0xd1, 0xfa, 0x47, 0xf2, - 0x42, 0xb4, 0x8c, 0xc8, 0x83, 0xed, 0x03, 0x54, 0xce, 0x91, 0xf1, 0xf7, - 0x65, 0x9b, 0xf8, 0x7f, 0x90, 0xcd, 0x1a, 0xf1, 0x33, 0x7c, 0x8d, 0xb1, - 0x9f, 0x4d, 0xf5, 0x09, 0x62, 0x3d, 0xc2, 0x78, 0xbb, 0xcf, 0xf0, 0xb4, - 0x92, 0xf2, 0xbf, 0xaf, 0x51, 0xf9, 0xc9, 0x97, 0xb7, 0x7e, 0xbe, 0x19, - 0x9f, 0xb1, 0x53, 0xe7, 0x47, 0xf6, 0xc3, 0x28, 0x72, 0xcd, 0x53, 0x79, - 0x8a, 0x60, 0xc5, 0x96, 0x6b, 0xa6, 0xe9, 0x1a, 0xe0, 0x42, 0xf5, 0xe5, - 0x13, 0xb4, 0x7e, 0xfe, 0x49, 0xf2, 0xa6, 0x79, 0x0b, 0x56, 0x30, 0xec, - 0x44, 0xf6, 0x52, 0x3f, 0x0b, 0xb6, 0xf3, 0xfc, 0xba, 0xe5, 0x53, 0xbd, - 0x39, 0x6c, 0x0d, 0xe0, 0xab, 0x9f, 0x0f, 0xf5, 0x2d, 0xb2, 0xc9, 0x89, - 0xfd, 0x5e, 0xc0, 0xf0, 0x8c, 0x65, 0x2f, 0xcb, 0x14, 0x41, 0xe9, 0x75, - 0xd0, 0x98, 0x82, 0x87, 0x7b, 0xde, 0x51, 0x3b, 0x4f, 0x5e, 0x84, 0x9f, - 0xa9, 0x8b, 0xe7, 0x21, 0xc5, 0x4b, 0x99, 0xa2, 0xf9, 0xd8, 0x4e, 0x99, - 0xf2, 0xa7, 0xfc, 0x0b, 0xc7, 0x38, 0xde, 0x4b, 0x90, 0xf5, 0x2b, 0x74, - 0xfe, 0x23, 0xda, 0x7c, 0x09, 0x7b, 0xb5, 0x6e, 0xa6, 0xf9, 0xce, 0x60, - 0x3d, 0x2a, 0x1f, 0x62, 0x78, 0x2b, 0xd2, 0x7e, 0xc8, 0xf2, 0x7e, 0x49, - 0x34, 0x5f, 0xea, 0x10, 0x19, 0x73, 0x9f, 0xc3, 0xeb, 0xcf, 0x37, 0x4b, - 0xff, 0xca, 0x0a, 0x5e, 0xbf, 0x54, 0x40, 0x5b, 0x18, 0x56, 0xeb, 0xd9, - 0x8c, 0xcf, 0xd6, 0xa7, 0x2a, 0xd6, 0xbb, 0x1f, 0xb4, 0x83, 0x87, 0x42, - 0xfb, 0x73, 0xec, 0xbc, 0x8d, 0x7a, 0xf1, 0xd6, 0x71, 0x7a, 0x03, 0xd7, - 0xca, 0xf1, 0xaf, 0x8c, 0xc5, 0xc7, 0xa6, 0xcf, 0xdf, 0x40, 0x9e, 0x57, - 0xf1, 0x77, 0xf9, 0x3c, 0x05, 0xd6, 0x88, 0xed, 0x0f, 0x21, 0xf9, 0x8b, - 0xa0, 0x0f, 0x5b, 0xcc, 0xef, 0x28, 0x68, 0x0f, 0xaf, 0x45, 0x8d, 0xbf, - 0x2c, 0x7d, 0xfc, 0x33, 0xc6, 0xf8, 0xfd, 0x70, 0x91, 0xe3, 0x77, 0xb5, - 0x98, 0x7f, 0xc6, 0x98, 0xff, 0x62, 0xc7, 0x5f, 0x12, 0x3f, 0xbe, 0x9a, - 0x6f, 0xac, 0xfc, 0x6e, 0xc2, 0x13, 0x08, 0xf7, 0xa7, 0x90, 0x3e, 0xde, - 0xd1, 0x36, 0xf1, 0x70, 0x54, 0xfe, 0x4a, 0xbe, 0xc5, 0xfc, 0xac, 0xa4, - 0xf9, 0xdd, 0x18, 0x3f, 0xbf, 0x6c, 0x8b, 0xf9, 0x25, 0x8e, 0xb7, 0x29, - 0x76, 0xbc, 0x04, 0xbc, 0x1e, 0x45, 0xef, 0x47, 0x69, 0x43, 0xa5, 0xd8, - 0xf1, 0x58, 0xfe, 0xd3, 0x82, 0xa4, 0xd7, 0xf5, 0xf2, 0x68, 0xc7, 0xe2, - 0xa7, 0xb0, 0x7a, 0xb5, 0x68, 0x3d, 0xa1, 0xf8, 0x7b, 0x49, 0xc9, 0xd3, - 0x0c, 0x8c, 0xbe, 0x2f, 0x1c, 0xff, 0xf7, 0xb4, 0xfe, 0x4a, 0xe5, 0x0d, - 0x4b, 0x85, 0x3c, 0xa0, 0xfc, 0x7f, 0x85, 0xe2, 0xff, 0xa5, 0x31, 0x86, - 0x86, 0x87, 0xcb, 0xb7, 0x92, 0x7d, 0xed, 0x71, 0x31, 0xe3, 0xaa, 0xf5, - 0xa1, 0x0a, 0xca, 0x0d, 0xd0, 0x92, 0x3b, 0x29, 0x7f, 0xcf, 0x9d, 0x3f, - 0x7f, 0x7e, 0x09, 0xf9, 0xc7, 0x5d, 0xdf, 0xd9, 0x01, 0xbd, 0xfa, 0x75, - 0xfd, 0x63, 0x95, 0x91, 0xbd, 0xc0, 0xbf, 0xa2, 0x13, 0x87, 0x78, 0x6d, - 0x9c, 0x5f, 0x97, 0x59, 0xfd, 0xe1, 0xe4, 0x4b, 0x95, 0xfc, 0x46, 0xda, - 0x71, 0xa8, 0xf6, 0x82, 0x03, 0xad, 0xf2, 0xee, 0x7e, 0xe4, 0xf4, 0x6e, - 0x47, 0xa5, 0x25, 0x36, 0xb6, 0x89, 0x2e, 0xf3, 0xc8, 0x23, 0x4e, 0xe1, - 0x9a, 0xd7, 0xd6, 0x81, 0x46, 0x07, 0xd5, 0x8f, 0x5e, 0x96, 0xf5, 0x17, - 0xe7, 0x57, 0x11, 0x71, 0x82, 0x28, 0x0b, 0x06, 0x0f, 0x43, 0x2a, 0xaf, - 0x30, 0x91, 0x8f, 0x03, 0xe0, 0x24, 0xb2, 0x3b, 0x80, 0xb7, 0x76, 0xec, - 0x6b, 0x4c, 0x7e, 0xbe, 0x1b, 0x6c, 0xb3, 0x50, 0xa7, 0x7f, 0xeb, 0xea, - 0x57, 0x7e, 0xdf, 0xa2, 0xfc, 0xb2, 0x0b, 0x9c, 0x24, 0xcf, 0x8e, 0x8d, - 0xac, 0x46, 0xcf, 0x21, 0xa2, 0x9f, 0xcf, 0xad, 0x1d, 0x26, 0x9a, 0x95, - 0xc5, 0x75, 0xfc, 0x83, 0x80, 0xe1, 0x93, 0x64, 0x6a, 0x45, 0x2b, 0x86, - 0x7f, 0x96, 0xc1, 0xd1, 0x3a, 0xbd, 0x8f, 0xed, 0xf2, 0x92, 0xb8, 0xfb, - 0x01, 0xf8, 0x0e, 0xbb, 0x0f, 0x6c, 0x1c, 0x7b, 0xdf, 0x07, 0x0d, 0x76, - 0x5f, 0xd9, 0x33, 0xc8, 0xe8, 0x87, 0x01, 0x0c, 0x3c, 0xe0, 0x50, 0x9f, - 0x5c, 0x02, 0xaa, 0x7f, 0x0f, 0x4b, 0xd7, 0xc7, 0xca, 0x1b, 0x2a, 0xe2, - 0xa2, 0x93, 0x68, 0x79, 0x5e, 0x8c, 0xeb, 0xa6, 0xfd, 0x6e, 0xca, 0x1f, - 0xae, 0xb3, 0x5a, 0x4a, 0x8f, 0x17, 0x6e, 0x2a, 0xfd, 0xef, 0x68, 0x2f, - 0x95, 0x84, 0x6a, 0xbc, 0x33, 0x82, 0xbe, 0xdc, 0x2e, 0x2a, 0xc4, 0x26, - 0x76, 0x7e, 0x0a, 0x6e, 0x64, 0xf8, 0x25, 0x4d, 0xef, 0xa3, 0xf2, 0xbf, - 0x3b, 0x42, 0x9f, 0x64, 0xf6, 0xc3, 0x8c, 0xff, 0x8b, 0x7c, 0x30, 0x0a, - 0x73, 0xfa, 0x06, 0xd0, 0x5c, 0x8f, 0xba, 0x87, 0x41, 0xd2, 0x33, 0x7a, - 0xcd, 0x53, 0x15, 0x65, 0x80, 0xdf, 0xdf, 0x9e, 0x11, 0x87, 0x61, 0x84, - 0xe1, 0x30, 0xe0, 0xbf, 0x12, 0x78, 0x92, 0x13, 0x3e, 0xbf, 0xfe, 0x04, - 0xe4, 0xcb, 0x3b, 0xd4, 0xcb, 0xf5, 0xf9, 0x69, 0xc4, 0x1f, 0xc8, 0xdc, - 0xa1, 0xf2, 0x9d, 0x65, 0xac, 0xe9, 0xe7, 0xab, 0x12, 0xea, 0x63, 0x37, - 0x94, 0xa2, 0xeb, 0x27, 0xa1, 0x7c, 0x13, 0xf0, 0x5a, 0x63, 0xcf, 0xcf, - 0x72, 0x75, 0x7e, 0x62, 0xf6, 0xe3, 0xca, 0xba, 0xbb, 0xae, 0xfa, 0x41, - 0x29, 0x7f, 0x81, 0x5d, 0xbf, 0x9b, 0x07, 0xc4, 0x13, 0x9e, 0xbf, 0xc4, - 0xf9, 0x3a, 0x4d, 0xf9, 0xc9, 0xe6, 0xfe, 0x9b, 0xf9, 0xca, 0x98, 0xd6, - 0x73, 0xd9, 0x59, 0xa1, 0x3f, 0x92, 0xeb, 0x67, 0x71, 0xe7, 0x61, 0x91, - 0x3f, 0xc7, 0xe8, 0xbf, 0xc1, 0x7a, 0x60, 0xab, 0xf9, 0xcb, 0xf5, 0x12, - 0xfd, 0x2a, 0xa0, 0xdd, 0x10, 0x01, 0xff, 0xd5, 0x71, 0xdf, 0x27, 0xf5, - 0xb5, 0x7f, 0xcd, 0x2d, 0xee, 0xfb, 0x7e, 0x67, 0x91, 0xfd, 0xb0, 0xcd, - 0xfc, 0x65, 0x1f, 0xbc, 0x81, 0xeb, 0x83, 0x46, 0xff, 0x28, 0x89, 0xaf, - 0xfb, 0x77, 0x3f, 0x39, 0x4f, 0xff, 0xee, 0x32, 0xf5, 0x37, 0x9f, 0xd7, - 0x71, 0xd3, 0xe7, 0xfa, 0xe9, 0x7a, 0x5c, 0x2b, 0x7e, 0xe0, 0x72, 0xc3, - 0x9e, 0x3a, 0x05, 0xfc, 0x7a, 0xe1, 0xe9, 0x89, 0x09, 0x41, 0x6f, 0x67, - 0x39, 0x2e, 0x3d, 0x3e, 0x21, 0xae, 0x7d, 0xde, 0x3f, 0xb3, 0x76, 0xb3, - 0xd0, 0xf7, 0x9c, 0x47, 0x58, 0xbf, 0x06, 0x7c, 0xb3, 0xa0, 0x57, 0x6a, - 0xe6, 0x74, 0xf4, 0x8c, 0x33, 0xfc, 0x23, 0x7a, 0x9e, 0xba, 0x3d, 0xa2, - 0xc0, 0x97, 0x7a, 0x6c, 0xc2, 0xb4, 0x21, 0xc3, 0x23, 0x25, 0x5a, 0x03, - 0x8a, 0xf6, 0x97, 0x43, 0x75, 0xc4, 0xcf, 0x13, 0xb7, 0xaf, 0x7c, 0x6e, - 0xf7, 0xf9, 0x2e, 0xf7, 0xcb, 0x4d, 0x17, 0x84, 0xf7, 0x9d, 0x98, 0x4d, - 0xb0, 0x8c, 0xc8, 0xef, 0xbb, 0x9e, 0xc7, 0xa8, 0xeb, 0x61, 0xf2, 0xbf, - 0x17, 0x00, 0xf5, 0x67, 0x95, 0xaa, 0x8d, 0x6a, 0x39, 0x6f, 0xd9, 0xeb, - 0x21, 0xce, 0x0e, 0xbe, 0x7f, 0x12, 0x8f, 0x51, 0x97, 0xe9, 0x92, 0x29, - 0x08, 0xbc, 0xd7, 0x01, 0x26, 0xfc, 0xd3, 0x45, 0xc4, 0x76, 0xdb, 0x60, - 0x59, 0xea, 0x7d, 0x03, 0x27, 0x41, 0xdf, 0x55, 0x60, 0x1e, 0x7c, 0xef, - 0x5e, 0x5e, 0xff, 0xee, 0x07, 0x20, 0x7f, 0xd5, 0x01, 0x04, 0xb6, 0xbf, - 0x0e, 0xcb, 0xac, 0x1e, 0x0a, 0xfb, 0x01, 0xf9, 0xfe, 0x7d, 0x64, 0xbc, - 0xdd, 0x3b, 0x1f, 0xc2, 0xae, 0x3b, 0x8c, 0xec, 0x37, 0x93, 0x43, 0xb9, - 0x9d, 0xd7, 0x93, 0xfd, 0x8d, 0x85, 0x61, 0xd9, 0xe5, 0xf6, 0xf5, 0xd1, - 0x63, 0xa0, 0xd2, 0xf3, 0xb0, 0x2f, 0xc6, 0x0e, 0xdc, 0xbd, 0xc7, 0xef, - 0xa8, 0x14, 0x3e, 0xf3, 0x32, 0xaa, 0x14, 0xa7, 0x68, 0xbf, 0x34, 0x77, - 0x80, 0x5c, 0x37, 0xef, 0xaf, 0xb2, 0x00, 0x9c, 0xb4, 0x7e, 0xbe, 0x91, - 0xf3, 0xd8, 0x10, 0x78, 0xca, 0xf2, 0x7c, 0x35, 0x98, 0xea, 0xe7, 0xb9, - 0x7d, 0x31, 0xf4, 0x88, 0x1f, 0xea, 0xe2, 0xfc, 0xe2, 0xe4, 0x1d, 0x67, - 0x2c, 0x7e, 0x3e, 0xf3, 0x17, 0x84, 0x1f, 0xbe, 0x3a, 0xb1, 0xdf, 0xc1, - 0x65, 0xae, 0x1f, 0x5d, 0xf4, 0xf9, 0x37, 0xfa, 0x23, 0x2d, 0xb6, 0xbf, - 0x92, 0xb9, 0xde, 0x91, 0x7e, 0x59, 0x3c, 0xde, 0x63, 0xf0, 0x03, 0x60, - 0x37, 0xd8, 0xa4, 0xbc, 0xe9, 0x67, 0x01, 0xf2, 0x81, 0xb0, 0x5c, 0xd4, - 0x79, 0x0b, 0x9a, 0xce, 0xdf, 0xa7, 0x4c, 0xf9, 0xe4, 0x07, 0x9d, 0x4f, - 0x53, 0x8a, 0xce, 0x09, 0xfa, 0xb8, 0xb2, 0xdc, 0xb9, 0xae, 0xfa, 0xfc, - 0x5a, 0xc9, 0xdf, 0xed, 0xc6, 0x57, 0x35, 0x7e, 0x33, 0x66, 0xfe, 0xbe, - 0xc1, 0xd2, 0x05, 0x92, 0xf8, 0x95, 0x9a, 0xdf, 0xa5, 0xe5, 0x57, 0xf7, - 0x5c, 0x2a, 0x7e, 0x65, 0xf4, 0xcf, 0x5e, 0x34, 0xbf, 0x82, 0x3a, 0xbf, - 0xea, 0x7e, 0xaa, 0x97, 0xe2, 0x45, 0x83, 0xea, 0x09, 0xf9, 0x1e, 0x15, - 0x4f, 0x61, 0xe7, 0x6f, 0x79, 0x8d, 0xe1, 0x49, 0x93, 0xe7, 0xd9, 0xb9, - 0x9b, 0x16, 0xfc, 0x0a, 0x7c, 0xbd, 0x1c, 0xf2, 0xab, 0x1c, 0x95, 0x97, - 0x41, 0xe6, 0xea, 0xda, 0x52, 0xff, 0x50, 0x37, 0xa8, 0x23, 0x27, 0x43, - 0xf8, 0x95, 0xb7, 0xc0, 0xfc, 0x51, 0xb7, 0x5a, 0xd8, 0xae, 0xbd, 0x73, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Thu Apr 20 04:36:51 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B989CD478BE; Thu, 20 Apr 2017 04:36:51 +0000 (UTC) (envelope-from davidcs@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 mx1.freebsd.org (Postfix) with ESMTPS id 392456EA; Thu, 20 Apr 2017 04:36:51 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3K4ao1W088257; Thu, 20 Apr 2017 04:36:50 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3K4aocm088254; Thu, 20 Apr 2017 04:36:50 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201704200436.v3K4aocm088254@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Thu, 20 Apr 2017 04:36:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r317184 - stable/9/sys/dev/qlxgbe X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Apr 2017 04:36:51 -0000 Author: davidcs Date: Thu Apr 20 04:36:49 2017 New Revision: 317184 URL: https://svnweb.freebsd.org/changeset/base/317184 Log: MFC r316183 Upgrade firmware and other related files to version 5.4.64 Modified: stable/9/sys/dev/qlxgbe/ql_boot.c stable/9/sys/dev/qlxgbe/ql_fw.c stable/9/sys/dev/qlxgbe/ql_minidump.c stable/9/sys/dev/qlxgbe/ql_reset.c Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) Modified: stable/9/sys/dev/qlxgbe/ql_boot.c ============================================================================== --- stable/9/sys/dev/qlxgbe/ql_boot.c Thu Apr 20 04:33:47 2017 (r317183) +++ stable/9/sys/dev/qlxgbe/ql_boot.c Thu Apr 20 04:36:49 2017 (r317184) @@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$"); unsigned int ql83xx_bootloader_version_major = 5; unsigned int ql83xx_bootloader_version_minor = 4; -unsigned int ql83xx_bootloader_version_sub = 62; +unsigned int ql83xx_bootloader_version_sub = 64; unsigned char ql83xx_bootloader[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10957,9 +10957,9 @@ unsigned char ql83xx_bootloader[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x02, 0x00, 0x40, 0x40, 0x05, 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x40, 0x40, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x9b, 0x64, 0x97, 0x0e + 0x00, 0x00, 0x00, 0x00, 0x9b, 0x64, 0x95, 0x0e }; unsigned int ql83xx_bootloader_len = 131072; Modified: stable/9/sys/dev/qlxgbe/ql_fw.c ============================================================================== --- stable/9/sys/dev/qlxgbe/ql_fw.c Thu Apr 20 04:33:47 2017 (r317183) +++ stable/9/sys/dev/qlxgbe/ql_fw.c Thu Apr 20 04:36:49 2017 (r317184) @@ -35,32 +35,32 @@ __FBSDID("$FreeBSD$"); unsigned int ql83xx_firmware_version_major = 5; unsigned int ql83xx_firmware_version_minor = 4; -unsigned int ql83xx_firmware_version_sub = 62; +unsigned int ql83xx_firmware_version_sub = 64; unsigned char ql83xx_firmware[] = { - 0x03, 0x00, 0x40, 0x40, 0x05, 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc4, 0x5e, 0x1b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x88, 0xcd, 0x7d, 0x72, 0x3d, 0x1f, 0x5f, 0xe0, + 0x03, 0x00, 0x40, 0x40, 0x05, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe4, 0x42, 0x1b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0x7e, 0x74, 0x37, 0x27, 0xc9, 0xab, 0x39, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xef, 0x03, 0x00, + 0xe0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xef, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0xf9, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7a, 0x9f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x4e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xf9, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9f, 0x90, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x9f, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe5, 0x98, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x71, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x65, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x89, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -69,118 +69,118 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x56, 0xa3, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7b, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x65, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6f, 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd1, 0xb8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xec, 0xa9, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xbd, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x94, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x54, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xae, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xde, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x35, 0xd0, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x8c, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9a, 0xb9, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1a, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2f, 0xef, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9f, 0xd8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfb, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xe4, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xdd, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x72, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x67, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0xeb, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4f, 0x25, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xba, 0x0e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x30, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x86, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xb4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x19, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xdc, 0x4c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x56, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x3f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x5e, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x51, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x47, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcc, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x68, 0x61, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd3, 0x4a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x25, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8e, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x4c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x6e, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7c, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x57, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x8f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x79, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x30, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xbd, 0x19, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x30, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x56, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd1, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x1a, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -189,7 +189,7 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8c, 0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x56, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0x3f, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x58, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -232,9 +232,9 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x5f, 0x1a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb2, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x49, 0x1a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcb, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe8, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x92, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -249,7838 +249,7837 @@ unsigned char ql83xx_firmware[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xda, 0xec, 0x3d, - 0x6d, 0x70, 0x5c, 0xd5, 0x75, 0xf7, 0x7d, 0xec, 0xee, 0xd3, 0x6a, 0x57, - 0x5e, 0x83, 0x4c, 0x84, 0x90, 0xe3, 0x27, 0xdb, 0xd8, 0xe2, 0x33, 0x6b, - 0x63, 0x1b, 0x63, 0x9c, 0xfa, 0x49, 0x96, 0x8d, 0xed, 0xc8, 0x44, 0x40, - 0xca, 0x37, 0x44, 0x24, 0x0d, 0x35, 0x84, 0x60, 0x31, 0x25, 0xa9, 0xf8, - 0x28, 0x7e, 0xb2, 0x25, 0xd9, 0x04, 0x9b, 0xc8, 0xd8, 0x01, 0x87, 0xd0, - 0xb0, 0x92, 0x31, 0xa5, 0x2d, 0x93, 0x2e, 0x93, 0x4c, 0x60, 0xda, 0xce, - 0xb0, 0xd8, 0x99, 0x60, 0x52, 0xdc, 0xba, 0x3f, 0x48, 0x43, 0x18, 0x9a, - 0xed, 0xa4, 0x4c, 0x55, 0x02, 0x64, 0xdb, 0xe9, 0x10, 0x39, 0xa9, 0xa1, - 0xf7, 0xdc, 0x8f, 0xf7, 0xde, 0xbd, 0xfb, 0xde, 0xdb, 0xbd, 0xb2, 0xec, - 0x4c, 0x3a, 0x5e, 0x66, 0xf0, 0x1e, 0xdd, 0x7b, 0xcf, 0x3d, 0xf7, 0xdc, - 0x73, 0xcf, 0x39, 0xf7, 0x9c, 0xf3, 0xde, 0x22, 0x0d, 0xd1, 0x8f, 0x89, - 0x0c, 0xa4, 0xa3, 0xdb, 0xd0, 0x69, 0xf8, 0xf7, 0x13, 0xa6, 0x9f, 0x3e, - 0x06, 0x1f, 0x7d, 0xf7, 0x6d, 0xf2, 0xdf, 0x57, 0xaa, 0x60, 0xf1, 0x53, - 0x94, 0xe0, 0x82, 0x22, 0xec, 0xea, 0xc8, 0x26, 0x5f, 0xf6, 0xa4, 0xc8, - 0x3f, 0xfd, 0x55, 0xfd, 0x35, 0xe4, 0x3a, 0xb9, 0x00, 0xcc, 0xbe, 0xdb, - 0x85, 0x0c, 0xa5, 0x17, 0x95, 0x0c, 0x4e, 0x3a, 0x42, 0x0d, 0x05, 0x93, - 0x02, 0xbd, 0x37, 0xd2, 0xcf, 0x9d, 0x51, 0xf3, 0xad, 0x43, 0x11, 0xf3, - 0x29, 0xc2, 0x1c, 0xdf, 0x91, 0x69, 0xc6, 0x37, 0x5f, 0x9b, 0x5e, 0x7c, - 0x8b, 0xa7, 0x19, 0xdf, 0x66, 0x7d, 0x6a, 0xf8, 0xf8, 0xf8, 0x9b, 0xcc, - 0x29, 0x8d, 0x0f, 0x91, 0xb7, 0xbc, 0x0b, 0xa8, 0xce, 0x5b, 0x7c, 0xeb, - 0xfa, 0x99, 0x68, 0xe8, 0x9b, 0x18, 0x25, 0xc0, 0x47, 0x3b, 0x86, 0xde, - 0xf8, 0x71, 0x8f, 0x96, 0xdb, 0x8d, 0x87, 0x00, 0x5c, 0xb8, 0x6b, 0xf6, - 0xca, 0x15, 0x88, 0xb4, 0x57, 0x78, 0xfb, 0x7b, 0x77, 0x6b, 0x05, 0xdc, - 0x9e, 0x1f, 0x84, 0xf1, 0x77, 0x5e, 0xf3, 0xea, 0xc5, 0xf3, 0xe8, 0xf8, - 0x41, 0xd6, 0xde, 0xb4, 0x5b, 0xcb, 0x3f, 0x86, 0xc7, 0x0f, 0x72, 0xfc, - 0xff, 0x4c, 0xc7, 0x0f, 0x8a, 0xf8, 0xf3, 0x5b, 0x31, 0xdc, 0xbb, 0xfe, - 0xe2, 0xc4, 0x79, 0x17, 0xd1, 0xf1, 0x5b, 0x59, 0xfb, 0xd5, 0x6f, 0x68, - 0xbd, 0x7b, 0xf0, 0x78, 0x80, 0xfb, 0x56, 0xdc, 0xf8, 0xec, 0x5d, 0x49, - 0x3a, 0x9e, 0xb7, 0xdf, 0xfb, 0x6b, 0xad, 0x6f, 0x14, 0x8f, 0xdf, 0xe6, - 0xe1, 0xd7, 0xc8, 0xf8, 0x6d, 0x12, 0xfd, 0x00, 0x17, 0x5e, 0xfe, 0xaf, - 0xf9, 0xcb, 0x2c, 0x3a, 0x9e, 0xb7, 0xbf, 0x74, 0x39, 0xea, 0x85, 0xf9, - 0x87, 0x30, 0xdc, 0x9f, 0x7b, 0xd5, 0x69, 0xa6, 0xeb, 0xeb, 0x1f, 0x62, - 0xed, 0x3f, 0xbb, 0xe5, 0x21, 0x0b, 0xe3, 0x2f, 0x02, 0xdc, 0x97, 0x19, - 0xc9, 0xe7, 0x5a, 0xe9, 0x78, 0xde, 0xbe, 0xf2, 0x0b, 0x0f, 0xed, 0x80, - 0xf9, 0x87, 0x81, 0x7e, 0x6b, 0x8d, 0x9d, 0x61, 0xeb, 0x1f, 0x66, 0xed, - 0x5d, 0x43, 0x0f, 0x59, 0x30, 0x3f, 0xc0, 0x8e, 0x69, 0xe6, 0xac, 0x0c, - 0x1d, 0xcf, 0xdb, 0xff, 0xe8, 0xd9, 0x87, 0x76, 0xc0, 0xfc, 0x23, 0xa6, - 0xbf, 0x1f, 0x18, 0x5f, 0xbf, 0x04, 0x17, 0x25, 0xb8, 0x22, 0xc1, 0xf9, - 0xed, 0xd2, 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0xf3, 0x3b, 0x80, - 0xbe, 0xe6, 0xb5, 0xb7, 0xb5, 0xd9, 0xb9, 0xa5, 0x4f, 0xe2, 0xf1, 0x00, - 0x17, 0xf2, 0x5f, 0x30, 0x2f, 0xd8, 0xbc, 0x05, 0xd6, 0x57, 0x04, 0xb8, - 0xb7, 0x65, 0xfb, 0x3d, 0xcd, 0xe7, 0x91, 0xf6, 0x0a, 0x6f, 0xdf, 0xb8, - 0x7b, 0x0b, 0xac, 0x2f, 0xff, 0x30, 0xf0, 0xa7, 0xed, 0xa0, 0x66, 0x2e, - 0xa6, 0xe3, 0x1f, 0x66, 0xed, 0x9b, 0xbf, 0xb7, 0x05, 0xd6, 0x57, 0x04, - 0xb8, 0xbf, 0x4d, 0xcb, 0x59, 0x97, 0xd3, 0xf1, 0xbc, 0x7d, 0xf7, 0x1b, - 0x5b, 0x2c, 0x2c, 0x1f, 0xf9, 0xaf, 0x53, 0x7a, 0x16, 0xb4, 0xd9, 0x94, - 0x7e, 0x02, 0x37, 0x66, 0x90, 0xb5, 0xf1, 0x36, 0x42, 0x3f, 0x6b, 0x5f, - 0xc2, 0xda, 0x2b, 0x04, 0x7e, 0x44, 0xe3, 0xed, 0xf9, 0x47, 0xa4, 0xf5, - 0x4b, 0x70, 0x51, 0x82, 0x2b, 0x12, 0x9c, 0xdf, 0x29, 0x8d, 0x97, 0xe0, - 0xa2, 0x04, 0x57, 0x24, 0x38, 0xbf, 0x4b, 0x1a, 0x2f, 0xc1, 0x45, 0x09, - 0xae, 0x48, 0x70, 0xfe, 0x51, 0x69, 0xbc, 0x04, 0x17, 0x25, 0xb8, 0x22, - 0xc1, 0xf9, 0x6f, 0x48, 0xe3, 0x25, 0xb8, 0x28, 0xc1, 0x15, 0x09, 0xce, - 0x3b, 0x18, 0x76, 0x37, 0xbd, 0x97, 0xe4, 0xe3, 0x01, 0x2e, 0xcf, 0xfb, - 0xd9, 0xd7, 0xf8, 0x78, 0x80, 0x4b, 0xbf, 0x39, 0x3c, 0x62, 0xb0, 0xf1, - 0x00, 0x17, 0x5e, 0xf8, 0xe8, 0x43, 0x06, 0xe7, 0x3b, 0x31, 0x9c, 0xdb, - 0xb5, 0xb4, 0xc1, 0x61, 0xe3, 0x01, 0xee, 0xef, 0x9e, 0x77, 0x1f, 0x83, - 0x8b, 0x00, 0xf7, 0xce, 0xd9, 0xbd, 0x6b, 0x35, 0x1b, 0x0f, 0x70, 0xfe, - 0x27, 0xdb, 0x8f, 0x33, 0x38, 0xdf, 0x25, 0xd1, 0x2f, 0xc1, 0x45, 0x09, - 0xae, 0x48, 0x70, 0x7e, 0xb5, 0x34, 0x5e, 0x82, 0x8b, 0x12, 0x5c, 0x91, - 0xe0, 0x7c, 0xb7, 0x34, 0x5e, 0x82, 0x8b, 0x12, 0x5c, 0x91, 0xe0, 0xfc, - 0x1a, 0x69, 0xbc, 0x04, 0x17, 0x25, 0xb8, 0x22, 0xc1, 0xf9, 0xb5, 0xd2, - 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0xf3, 0x57, 0x48, 0xe3, 0x25, - 0xb8, 0x28, 0xc1, 0x15, 0x09, 0xce, 0xaf, 0x83, 0xfd, 0xf9, 0xc3, 0x37, - 0xf8, 0x7e, 0xf6, 0x03, 0x7c, 0xf4, 0xab, 0x6f, 0x73, 0xb8, 0x48, 0xda, - 0x1f, 0x7f, 0x87, 0xc3, 0x15, 0xd2, 0xfe, 0x83, 0xf7, 0xbd, 0xfd, 0x5f, - 0x0f, 0xe7, 0xff, 0xf2, 0xbf, 0x3e, 0xce, 0xc7, 0x13, 0xf8, 0xa6, 0xef, - 0x73, 0xb8, 0x48, 0xe0, 0x07, 0x86, 0x39, 0x5c, 0x01, 0xb8, 0xf2, 0xf4, - 0xa3, 0x1c, 0xce, 0x6f, 0x00, 0xf8, 0xe5, 0x51, 0x6f, 0x3c, 0x81, 0x7f, - 0xfe, 0x2d, 0x6f, 0x3c, 0xc0, 0x68, 0xe6, 0xdc, 0x63, 0x7c, 0x3c, 0xc0, - 0xa3, 0x4b, 0x2f, 0xe0, 0x70, 0xfe, 0x33, 0x18, 0xb6, 0xbb, 0x4c, 0x0e, - 0xf7, 0x03, 0x5c, 0xbc, 0x3d, 0xcb, 0xe1, 0x22, 0xc0, 0xce, 0x8e, 0x9c, - 0x37, 0x1e, 0xe0, 0xa3, 0xcf, 0x9f, 0xed, 0x8d, 0xef, 0x01, 0xfc, 0xa5, - 0x57, 0xbd, 0xf5, 0xf7, 0x50, 0xfe, 0x54, 0xf8, 0x78, 0x09, 0xae, 0x48, - 0x70, 0x7e, 0xa3, 0x08, 0xf7, 0x4b, 0x70, 0x51, 0x82, 0x2b, 0x12, 0x9c, - 0xbf, 0x52, 0x1a, 0x2f, 0xc1, 0x45, 0x09, 0xae, 0x48, 0x70, 0xfe, 0xb3, - 0xd2, 0x78, 0x09, 0x2e, 0x4a, 0x70, 0x45, 0x82, 0x45, 0xff, 0xae, 0xda, - 0x3f, 0x98, 0x19, 0x84, 0x6b, 0xfa, 0x1b, 0x36, 0xff, 0xa6, 0x31, 0xa7, - 0x92, 0x4d, 0x36, 0x43, 0xf3, 0x9c, 0xcc, 0x1a, 0xfe, 0x4a, 0xbf, 0xe6, - 0x04, 0xe4, 0x93, 0xe2, 0x4b, 0x24, 0xb0, 0xfe, 0x07, 0x9f, 0x1b, 0xb7, - 0xdf, 0x98, 0x60, 0x6d, 0x1f, 0xcd, 0x41, 0x76, 0x6f, 0x6d, 0x7c, 0x6a, - 0xf4, 0xb3, 0xb3, 0x51, 0xfe, 0x98, 0x7e, 0x36, 0xab, 0xfb, 0x53, 0xd3, - 0x0a, 0x17, 0x6b, 0xef, 0x8f, 0x1a, 0xcc, 0xd6, 0x57, 0x89, 0x58, 0x5f, - 0xcd, 0xf9, 0x6a, 0x8c, 0xaf, 0x79, 0x5f, 0x51, 0x9c, 0xcf, 0xf5, 0x74, - 0x95, 0xc3, 0xe5, 0x27, 0xcb, 0xee, 0x2b, 0x9b, 0x70, 0xab, 0xe6, 0xdd, - 0x67, 0x10, 0xb2, 0x48, 0xbb, 0xaf, 0x9c, 0x6d, 0xb4, 0xef, 0x90, 0x36, - 0x88, 0x72, 0x25, 0x64, 0xb5, 0xd0, 0xfe, 0xf6, 0x56, 0xdc, 0x1f, 0x5d, - 0xa8, 0x33, 0xd4, 0x1f, 0x87, 0xcb, 0x4f, 0x46, 0xc4, 0x8f, 0x5e, 0x67, - 0x4d, 0x13, 0x0c, 0xfe, 0xdd, 0xee, 0x5f, 0x2d, 0x7e, 0x9d, 0x86, 0x4f, - 0xec, 0xfc, 0x9f, 0x7c, 0x78, 0x7a, 0xe9, 0xb1, 0x91, 0x14, 0x7f, 0xc0, - 0x7f, 0xf8, 0x83, 0xd6, 0x40, 0x7f, 0xa6, 0x7f, 0xbd, 0x76, 0xf4, 0x43, - 0x24, 0xca, 0x77, 0x2e, 0x23, 0xc2, 0x70, 0xa2, 0x92, 0xc8, 0x3f, 0x57, - 0x78, 0x50, 0x3a, 0x3f, 0xd4, 0xd5, 0xd9, 0x41, 0xf9, 0x8b, 0xf1, 0xa7, - 0x5b, 0xe9, 0xf9, 0xb2, 0xf5, 0xa0, 0x3e, 0x76, 0x8f, 0x9f, 0x0c, 0x7d, - 0x5c, 0x1b, 0x9e, 0x11, 0x00, 0xeb, 0x99, 0x9f, 0xf7, 0x77, 0x9b, 0xd4, - 0xfa, 0xa3, 0xd9, 0x8a, 0xf8, 0x2f, 0x50, 0xc4, 0xbf, 0x42, 0x11, 0xff, - 0x3a, 0x45, 0xfc, 0xd7, 0x29, 0xe2, 0xff, 0x92, 0x22, 0xfe, 0x7b, 0x15, - 0xf1, 0x6f, 0x55, 0xc4, 0xbf, 0x5b, 0x11, 0xff, 0xd3, 0x8a, 0xf8, 0xbf, - 0xab, 0x88, 0xff, 0xef, 0x15, 0xf1, 0xff, 0x83, 0x22, 0xfe, 0x37, 0x15, - 0xf1, 0x4f, 0x28, 0xe2, 0xff, 0x50, 0x11, 0x7f, 0x42, 0x53, 0xc3, 0x7f, - 0xa6, 0x5a, 0x7f, 0x34, 0x57, 0x11, 0x7f, 0x5e, 0x11, 0xff, 0x2a, 0x45, - 0xfc, 0x1b, 0x15, 0xf1, 0xdf, 0xac, 0x88, 0xff, 0x4e, 0x45, 0xfc, 0xf7, - 0x29, 0xe2, 0xdf, 0xae, 0x88, 0xff, 0x71, 0x45, 0xfc, 0xcf, 0x28, 0xe2, - 0xff, 0x9e, 0x22, 0xfe, 0x57, 0x14, 0xf1, 0x1f, 0x55, 0xc4, 0xff, 0xaf, - 0x8a, 0xf8, 0xdf, 0x57, 0xc4, 0xff, 0x5b, 0x45, 0xfc, 0x69, 0x5d, 0x0d, - 0x7f, 0x8b, 0x5a, 0x7f, 0xb4, 0x50, 0x11, 0xff, 0x52, 0x45, 0xfc, 0xdd, - 0x8a, 0xf8, 0xaf, 0x56, 0xc4, 0x7f, 0x9b, 0x22, 0xfe, 0xcd, 0x8a, 0xf8, - 0x1f, 0x52, 0xc4, 0xbf, 0x53, 0x11, 0xff, 0xb7, 0x15, 0xf1, 0xff, 0xa5, - 0x22, 0xfe, 0x97, 0x14, 0xf1, 0xff, 0x48, 0x11, 0xff, 0x1b, 0x8a, 0xf8, - 0x7f, 0xa1, 0x88, 0xff, 0xbf, 0x15, 0xf1, 0x23, 0x43, 0x0d, 0xff, 0x0c, - 0xb5, 0xfe, 0xee, 0x6c, 0x45, 0xfc, 0x17, 0x2a, 0xe2, 0x5f, 0xa1, 0x88, - 0x7f, 0xbd, 0x22, 0xfe, 0xeb, 0x14, 0xf1, 0xdf, 0xae, 0x88, 0xff, 0x5e, - 0x45, 0xfc, 0xdb, 0x14, 0xf1, 0xef, 0x56, 0xc4, 0x5f, 0x30, 0x4e, 0xc5, - 0xfd, 0xc3, 0xdd, 0x88, 0x2e, 0xfe, 0x24, 0x7c, 0xfd, 0xe5, 0x2a, 0x44, - 0xe2, 0x09, 0x47, 0x58, 0x06, 0x78, 0x53, 0x82, 0xde, 0x9f, 0xb2, 0x2c, - 0xbe, 0x30, 0x61, 0x02, 0xcc, 0xf3, 0x75, 0x2f, 0x5e, 0xc5, 0xe7, 0xdb, - 0xc5, 0xe3, 0x0b, 0x26, 0xeb, 0xcf, 0xef, 0x63, 0x1a, 0x1a, 0xd4, 0x0a, - 0xf4, 0xda, 0xf5, 0x24, 0xbe, 0xb5, 0x2d, 0x40, 0x65, 0xd3, 0xcf, 0xd7, - 0x16, 0x9c, 0xcb, 0xc8, 0x55, 0x0c, 0xff, 0xa9, 0xb9, 0xc3, 0x40, 0x6d, - 0x40, 0x4a, 0xe1, 0x90, 0x36, 0xc8, 0xf1, 0xbf, 0x35, 0x4e, 0xf1, 0x5b, - 0x48, 0x43, 0x0e, 0x84, 0xf2, 0xaf, 0x1f, 0x40, 0x94, 0x3e, 0x91, 0x7e, - 0xde, 0xbf, 0xf3, 0x6b, 0xe1, 0xeb, 0xb7, 0x2d, 0x84, 0x9c, 0xb4, 0xdd, - 0x88, 0x26, 0x2f, 0x45, 0xe5, 0x14, 0xda, 0x8f, 0x74, 0x16, 0xef, 0xb9, - 0x94, 0x04, 0x60, 0xfa, 0xbc, 0x0b, 0x76, 0x87, 0xc3, 0xe8, 0x71, 0x66, - 0x61, 0x7a, 0x9e, 0xfa, 0xd1, 0xfc, 0x96, 0xe4, 0xa2, 0xe6, 0x11, 0xd7, - 0x42, 0xbb, 0x06, 0xf7, 0x90, 0x54, 0xc2, 0x84, 0x11, 0x5c, 0x3f, 0xa7, - 0x0f, 0x69, 0x1b, 0x0f, 0xd1, 0x7c, 0xf4, 0x26, 0x9d, 0xac, 0x9f, 0x05, - 0xfb, 0x9c, 0x46, 0xc2, 0x87, 0x3e, 0x88, 0xe2, 0x10, 0xfa, 0xad, 0x3c, - 0xc2, 0x73, 0xf3, 0x78, 0x13, 0xba, 0x96, 0xe5, 0xab, 0xad, 0x6d, 0x63, - 0x8d, 0x20, 0x1c, 0xed, 0x4c, 0x48, 0xaa, 0xf1, 0x37, 0x1c, 0x64, 0xf8, - 0x85, 0xf8, 0x50, 0x27, 0xc3, 0x0f, 0xcb, 0x71, 0xf4, 0x6a, 0xfc, 0xd7, - 0x31, 0xfc, 0xe9, 0xc1, 0x31, 0x20, 0xc1, 0x3d, 0x2f, 0x12, 0xbf, 0x26, - 0xe2, 0x77, 0xb2, 0x07, 0xdb, 0xdb, 0xd8, 0xfe, 0x61, 0xd8, 0xaa, 0xe2, - 0x0f, 0xfd, 0x5c, 0xcf, 0xf0, 0x57, 0xe1, 0xf3, 0xe4, 0x61, 0x82, 0x8d, - 0xdf, 0x65, 0x90, 0xf5, 0x33, 0x7c, 0xbc, 0xff, 0xa7, 0xf6, 0xd3, 0xfe, - 0xa6, 0x84, 0x1f, 0xa1, 0x9d, 0xdc, 0xfd, 0x27, 0xfc, 0x76, 0xd0, 0xeb, - 0x9a, 0x03, 0x53, 0xb5, 0xdc, 0xa5, 0x43, 0xbc, 0x8b, 0xd1, 0xe3, 0xde, - 0xc0, 0xf3, 0xfd, 0x64, 0x3f, 0x47, 0x1a, 0x20, 0x9e, 0xea, 0x26, 0xb0, - 0x10, 0x75, 0x6e, 0x3c, 0xa8, 0xb5, 0xe1, 0x5d, 0x9f, 0xdc, 0x6c, 0x94, - 0x87, 0xb5, 0xb1, 0x9b, 0xaf, 0x74, 0xcd, 0x32, 0x5a, 0xae, 0x6b, 0xe8, - 0xb9, 0xc4, 0x8f, 0x11, 0xda, 0x8e, 0xf7, 0xeb, 0x60, 0x36, 0xe7, 0xd3, - 0x57, 0x4d, 0x3f, 0x97, 0x77, 0xbe, 0xfe, 0x23, 0xda, 0xca, 0x10, 0xfa, - 0x79, 0x7f, 0x46, 0xbf, 0x7b, 0x0b, 0xa7, 0x07, 0xe4, 0xed, 0x2c, 0xa0, - 0x97, 0xee, 0x07, 0xd0, 0x9b, 0x84, 0x5a, 0x86, 0xc3, 0x14, 0x46, 0x68, - 0x79, 0x8a, 0x0d, 0x49, 0x86, 0xdf, 0x57, 0xbc, 0xf3, 0xa7, 0xd1, 0xf3, - 0xd4, 0xc3, 0xcf, 0x17, 0xe1, 0x07, 0xe7, 0xd7, 0xe7, 0x23, 0xf8, 0x6f, - 0xa1, 0x8d, 0x06, 0xa5, 0x97, 0xae, 0x8f, 0xd3, 0xb7, 0x26, 0xb2, 0xbf, - 0xc8, 0x4f, 0x4f, 0x5e, 0xa5, 0xf3, 0x75, 0x46, 0x42, 0x58, 0x6f, 0xaf, - 0x46, 0x03, 0x31, 0x7d, 0x7e, 0x7c, 0x71, 0x42, 0x0f, 0x8b, 0x27, 0x02, - 0xab, 0x1d, 0x40, 0xba, 0x6f, 0x2e, 0x5b, 0x7f, 0x0f, 0x27, 0x29, 0x51, - 0xcf, 0x7d, 0x2d, 0x82, 0xdf, 0xe8, 0x8b, 0x8c, 0xde, 0x93, 0xbd, 0x3e, - 0x0b, 0xeb, 0x33, 0xc2, 0xcf, 0xc9, 0xfb, 0xe2, 0xf6, 0x1f, 0xdd, 0xee, - 0xd5, 0x9f, 0x84, 0xd3, 0xbf, 0xbf, 0x89, 0xf6, 0x87, 0x5e, 0x2b, 0x4d, - 0xdb, 0x00, 0x79, 0x2d, 0x27, 0xd0, 0x18, 0xd5, 0x17, 0xe3, 0x4d, 0x9e, - 0x7e, 0x44, 0x4d, 0xc8, 0x3b, 0xaa, 0x0a, 0xfc, 0x79, 0x1b, 0xf9, 0xf4, - 0x40, 0x42, 0x13, 0x75, 0x70, 0x79, 0xf3, 0xce, 0x93, 0x1e, 0xa4, 0xff, - 0xbe, 0x74, 0x7d, 0xf6, 0x82, 0xf7, 0xff, 0x7c, 0xa3, 0x5a, 0x7f, 0xf9, - 0x7c, 0x6c, 0xaa, 0xc1, 0x9f, 0xf9, 0x27, 0x88, 0xff, 0x0e, 0x0f, 0x7f, - 0x0f, 0x5f, 0x6f, 0x22, 0x3c, 0xbe, 0xbd, 0x53, 0xb2, 0x57, 0xae, 0x89, - 0x3d, 0x29, 0x48, 0xa9, 0x69, 0x2f, 0x1d, 0x42, 0x83, 0x55, 0xf6, 0x14, - 0x1b, 0x88, 0x26, 0x62, 0x1f, 0xe7, 0x31, 0x7e, 0xca, 0xf8, 0xcc, 0x40, - 0xfa, 0xb1, 0x2a, 0xff, 0x14, 0xb0, 0xaf, 0xc7, 0x88, 0x7d, 0xb5, 0xf1, - 0xae, 0x3a, 0x67, 0xec, 0x4d, 0x20, 0x3b, 0x8f, 0x4a, 0x29, 0xbc, 0xff, - 0xe8, 0x06, 0x26, 0x8d, 0x6e, 0x33, 0xec, 0xb7, 0x8b, 0x8e, 0x74, 0x3a, - 0x4d, 0x81, 0xf3, 0xcf, 0x04, 0xf8, 0x57, 0x7f, 0xc1, 0xd6, 0x47, 0x66, - 0x1b, 0x4e, 0x83, 0xfc, 0xd8, 0x01, 0x7b, 0x8a, 0xf6, 0x81, 0xfa, 0xa6, - 0xf4, 0x61, 0xa1, 0x35, 0xeb, 0x8f, 0x27, 0x9f, 0x19, 0xeb, 0x3f, 0x78, - 0xe7, 0xe5, 0xa7, 0x0b, 0x42, 0xd7, 0xcf, 0xf7, 0xc3, 0xf9, 0x52, 0x52, - 0x38, 0x0f, 0x2e, 0x72, 0x8c, 0xa0, 0xbd, 0xd0, 0xdd, 0xb5, 0x46, 0xf0, - 0x7c, 0xf2, 0xfe, 0x6c, 0x79, 0xc5, 0xaf, 0x9c, 0x83, 0x42, 0xe5, 0x83, - 0x7f, 0x79, 0x4a, 0xaf, 0x8f, 0xbe, 0x68, 0x7a, 0x3a, 0x8d, 0x93, 0x8b, - 0xbf, 0xeb, 0x24, 0xe3, 0x5f, 0x7d, 0x92, 0xf1, 0x7f, 0x86, 0xed, 0x0f, - 0x2a, 0x75, 0xea, 0x71, 0xfe, 0xe3, 0xeb, 0x92, 0x7d, 0x8a, 0x3a, 0x2f, - 0x8b, 0xc2, 0xcf, 0x0b, 0x3f, 0x0f, 0xce, 0x7b, 0x92, 0xbf, 0x39, 0x91, - 0x02, 0x7c, 0x39, 0x6c, 0x7f, 0x89, 0xbd, 0x68, 0xd9, 0x9c, 0x2a, 0x6d, - 0xf5, 0xf5, 0xd5, 0xbf, 0x7d, 0x8e, 0xeb, 0xcf, 0x5d, 0x46, 0x53, 0x72, - 0x08, 0xeb, 0xb2, 0xe3, 0xc9, 0xc2, 0x08, 0x1e, 0x4f, 0x68, 0x1d, 0x6f, - 0xf0, 0xf5, 0x67, 0x83, 0x16, 0xb4, 0x2f, 0x30, 0x7a, 0x71, 0x5a, 0x38, - 0xff, 0xdc, 0xbe, 0x27, 0x51, 0x99, 0x9e, 0x2f, 0x62, 0xaf, 0x27, 0x2f, - 0xa1, 0xf4, 0x62, 0x7d, 0xbc, 0x60, 0x36, 0x0c, 0x67, 0xf4, 0xf3, 0x7a, - 0xc8, 0x51, 0x03, 0x72, 0xc0, 0xf8, 0xbc, 0x5e, 0x1f, 0xaf, 0x9f, 0xb9, - 0xff, 0xb7, 0xfa, 0x32, 0x41, 0x9e, 0x7f, 0xe0, 0xed, 0xcf, 0xc3, 0xdc, - 0x9f, 0xce, 0x0a, 0xfe, 0x22, 0xeb, 0xcf, 0xce, 0x43, 0x7f, 0x6a, 0x6c, - 0x3e, 0x1b, 0xff, 0x1a, 0x12, 0xfa, 0xa3, 0xc3, 0x5a, 0x10, 0xe6, 0xfa, - 0xcf, 0xbd, 0xc7, 0x10, 0xec, 0x1f, 0xe7, 0x97, 0x85, 0x5e, 0xd3, 0x9a, - 0x60, 0xab, 0xdd, 0x63, 0xd4, 0x7f, 0x26, 0xfa, 0x62, 0x3c, 0xe3, 0xf3, - 0x2b, 0x23, 0xf0, 0x0b, 0x88, 0x5b, 0x2e, 0xec, 0xbf, 0xe7, 0x7f, 0x50, - 0x7e, 0x11, 0xfd, 0xe5, 0xf3, 0x0b, 0xc8, 0x9f, 0x9b, 0x0d, 0xf0, 0x0b, - 0x16, 0x50, 0xb8, 0xb2, 0xd1, 0x1f, 0x7f, 0x8e, 0x92, 0x3d, 0xe3, 0x5f, - 0x0e, 0x7b, 0xfc, 0x5a, 0xcf, 0xfd, 0x8b, 0x26, 0xb2, 0x7e, 0x56, 0xb7, - 0x98, 0x7a, 0x85, 0xf3, 0xa7, 0x41, 0x0f, 0xb6, 0xc3, 0xf4, 0x74, 0xbd, - 0x8b, 0x04, 0x79, 0xe7, 0xfc, 0x60, 0xfc, 0x72, 0x38, 0xbf, 0xa8, 0xa6, - 0x1c, 0x4f, 0xfb, 0xfc, 0x48, 0x57, 0xc9, 0xcf, 0x92, 0x74, 0xa8, 0xfc, - 0x53, 0x7e, 0x60, 0x7e, 0x3a, 0x2d, 0x3e, 0x3f, 0x80, 0xbd, 0x1d, 0x0d, - 0x01, 0x7e, 0xb0, 0x75, 0x3c, 0x6b, 0xf2, 0xf1, 0x37, 0x4c, 0x89, 0x1f, - 0x6f, 0x7a, 0xfc, 0x78, 0x8d, 0xcf, 0xdf, 0x44, 0xfd, 0x63, 0xc6, 0x8f, - 0x17, 0x38, 0x3f, 0x1e, 0x16, 0xda, 0xeb, 0xe4, 0x07, 0x1a, 0xe2, 0xfc, - 0x20, 0x02, 0x38, 0xde, 0xe8, 0xf3, 0xa3, 0xb1, 0x4a, 0x3e, 0x96, 0xc5, - 0xc9, 0x07, 0xee, 0x4d, 0xee, 0x13, 0xfc, 0x3c, 0x41, 0x31, 0xcb, 0xac, - 0x00, 0x3f, 0xb8, 0xbd, 0x7a, 0x0e, 0xdc, 0x11, 0x38, 0x4f, 0x6d, 0x53, - 0xe2, 0xc7, 0x2f, 0xab, 0xe4, 0x63, 0xd3, 0x0c, 0xaa, 0x3f, 0x98, 0xbf, - 0xd9, 0x82, 0xd7, 0x69, 0x70, 0xfe, 0x0f, 0xe1, 0x1d, 0xc9, 0x83, 0x5f, - 0x84, 0xc7, 0xaf, 0xd7, 0x83, 0xfd, 0xeb, 0x95, 0x97, 0x7a, 0xf9, 0x03, - 0xa3, 0x97, 0x89, 0xfa, 0x46, 0x90, 0x17, 0x4f, 0x1f, 0x73, 0xfe, 0x90, - 0xd6, 0x3d, 0x16, 0xd0, 0x87, 0xc0, 0x1f, 0xc4, 0x5e, 0xc9, 0xee, 0xe6, - 0xe0, 0xf8, 0x1b, 0xa7, 0xc4, 0x9f, 0xff, 0xf5, 0xf5, 0x0d, 0x9f, 0x3f, - 0x17, 0xb8, 0x3f, 0xda, 0x86, 0xc5, 0xed, 0x6d, 0x83, 0x11, 0x6c, 0xaf, - 0x93, 0x1f, 0xae, 0xc7, 0x0f, 0xd2, 0x3c, 0x9e, 0xf5, 0xf9, 0x91, 0xad, - 0x92, 0x97, 0x15, 0xa2, 0xbc, 0xc4, 0xea, 0x5f, 0x70, 0x50, 0x16, 0xcc, - 0x90, 0xf4, 0xaf, 0xfd, 0x59, 0xcb, 0x1f, 0xdf, 0x32, 0x25, 0x7e, 0xb0, - 0x2a, 0x8b, 0x7e, 0x7f, 0xff, 0x27, 0x66, 0x04, 0xee, 0xb7, 0x39, 0x9f, - 0x1f, 0x9e, 0xbe, 0x9d, 0x11, 0xe6, 0x3f, 0x72, 0x7e, 0xfc, 0xe3, 0xb5, - 0x11, 0xf1, 0x06, 0xf2, 0xcf, 0x78, 0x82, 0xf3, 0x83, 0xf1, 0xab, 0x34, - 0x18, 0xa9, 0x9f, 0xd7, 0x53, 0xfd, 0x5c, 0xba, 0x8f, 0xc5, 0x37, 0xb8, - 0xbc, 0x4c, 0x04, 0xef, 0x7b, 0x6e, 0xe4, 0x78, 0x0d, 0xf6, 0x6b, 0xc4, - 0x42, 0xa5, 0x45, 0x90, 0xe6, 0x1e, 0x0b, 0xdc, 0xc7, 0xc8, 0x78, 0xe8, - 0xee, 0xb4, 0x8a, 0xfa, 0xe9, 0xfc, 0x06, 0xdf, 0x3e, 0x3f, 0xce, 0xdc, - 0xe5, 0x24, 0x5a, 0xbe, 0x64, 0xaf, 0x81, 0xb6, 0xf7, 0x3b, 0x86, 0xb7, - 0x18, 0x47, 0xd7, 0xb0, 0x3f, 0x8c, 0xda, 0xec, 0xec, 0xb6, 0x28, 0x7f, - 0xb2, 0xb0, 0x15, 0x5b, 0x12, 0x67, 0x99, 0x9d, 0xca, 0x65, 0x21, 0x83, - 0x8e, 0x9e, 0xd1, 0x5f, 0x19, 0xdb, 0x82, 0xff, 0xde, 0xfc, 0xca, 0x3d, - 0x84, 0xa1, 0xc3, 0xcd, 0xf6, 0x73, 0x54, 0x18, 0xac, 0x0b, 0xe9, 0x78, - 0x9b, 0xfb, 0xab, 0x78, 0x72, 0xe2, 0xaf, 0xf2, 0x78, 0x11, 0x3e, 0xad, - 0xa1, 0xfb, 0xc9, 0xda, 0x9d, 0x01, 0xe1, 0x3e, 0xbb, 0x9a, 0xd9, 0x4b, - 0xce, 0x8f, 0xe6, 0xfd, 0xe2, 0x7d, 0x4f, 0x0f, 0xdc, 0xf7, 0x82, 0xf2, - 0xcc, 0xf5, 0x4f, 0xf7, 0xea, 0xcb, 0x82, 0xf7, 0x47, 0x87, 0xf3, 0x17, - 0x79, 0x06, 0x7f, 0x00, 0x05, 0xef, 0x4b, 0x9c, 0xdf, 0xf8, 0xbc, 0x30, - 0x89, 0x19, 0x98, 0xe9, 0xdb, 0xa3, 0x71, 0xcb, 0x97, 0x7f, 0xab, 0x4a, - 0x1f, 0xe4, 0x63, 0xf4, 0x81, 0xa7, 0xaf, 0xb8, 0x3e, 0x20, 0xd2, 0xb9, - 0xb7, 0x21, 0xa8, 0x0f, 0xf6, 0x4c, 0x83, 0x3e, 0x58, 0x69, 0xc8, 0xfa, - 0x60, 0x82, 0xd2, 0xcf, 0xd7, 0xb3, 0xef, 0xd8, 0x4c, 0x85, 0xf3, 0x5f, - 0xda, 0x5e, 0x5b, 0x1f, 0x26, 0xeb, 0xb2, 0x17, 0x35, 0xe9, 0x9f, 0xcd, - 0xbf, 0x9b, 0x61, 0xeb, 0x75, 0xc1, 0xde, 0x14, 0xed, 0x14, 0xdc, 0xa7, - 0xa8, 0xbf, 0x39, 0x90, 0x9c, 0x0a, 0x7f, 0xae, 0x34, 0xaa, 0xec, 0x89, - 0x26, 0xf0, 0x27, 0x37, 0xc0, 0x60, 0x4b, 0xf2, 0x7f, 0x25, 0x7c, 0x74, - 0xad, 0xae, 0xc1, 0xe3, 0x13, 0xc4, 0x3f, 0xc0, 0xfe, 0xaa, 0x95, 0x47, - 0x76, 0x12, 0xec, 0x61, 0xd6, 0xb5, 0xc0, 0x1e, 0xda, 0xef, 0x33, 0x79, - 0x76, 0x34, 0x88, 0x7f, 0x8e, 0xa0, 0xc9, 0x55, 0xe7, 0xe3, 0xfb, 0xa7, - 0x83, 0x36, 0xea, 0xcb, 0x89, 0xc8, 0xdf, 0xad, 0x95, 0xb1, 0x3e, 0xc0, - 0xda, 0x6e, 0x5f, 0x8f, 0x89, 0x9e, 0xfa, 0xea, 0x1e, 0x1a, 0x1f, 0x85, - 0x91, 0x7d, 0xd6, 0xfe, 0x04, 0xa0, 0xbe, 0x3e, 0x24, 0x5e, 0x8a, 0xfd, - 0x69, 0xae, 0x5f, 0xf5, 0xe0, 0x79, 0x79, 0x24, 0x52, 0xff, 0x48, 0xe7, - 0x43, 0x59, 0x9f, 0x67, 0x62, 0xed, 0x3f, 0x7c, 0xb5, 0x65, 0x7f, 0xc8, - 0xed, 0x69, 0xf0, 0xc7, 0x9f, 0x3d, 0x25, 0x79, 0xbe, 0xc3, 0xdb, 0x2f, - 0xcf, 0x7e, 0x35, 0x0b, 0xfb, 0x35, 0x30, 0xd0, 0xac, 0x22, 0xcf, 0x8f, - 0xd4, 0xf4, 0x07, 0xa3, 0xf4, 0x93, 0x78, 0x9e, 0xa3, 0xe8, 0xbd, 0xb7, - 0xfa, 0xfc, 0x89, 0xf4, 0xa2, 0x49, 0x15, 0x7a, 0xd1, 0xce, 0x9a, 0xe7, - 0x2f, 0x8a, 0xde, 0xfa, 0xce, 0xdf, 0x96, 0xea, 0xf3, 0x30, 0x4b, 0xa4, - 0x77, 0x60, 0x56, 0x9c, 0x7d, 0xf4, 0xf3, 0x03, 0x11, 0xfa, 0x1c, 0x7d, - 0x40, 0xe4, 0x9f, 0x1a, 0x94, 0xf1, 0x14, 0xa7, 0x9f, 0xeb, 0x6f, 0x7e, - 0x7e, 0x5a, 0xa9, 0xfc, 0xb7, 0x69, 0x58, 0x1f, 0x93, 0xf8, 0x2d, 0x56, - 0xd0, 0x7d, 0x4d, 0x29, 0x28, 0xf1, 0x4f, 0x2c, 0xa7, 0xe7, 0xe1, 0x28, - 0xad, 0xef, 0xb2, 0x6c, 0x94, 0xb4, 0x51, 0xc8, 0x79, 0xd0, 0x82, 0xe7, - 0x01, 0xc4, 0xaf, 0x09, 0xfe, 0x57, 0x58, 0xe4, 0xf9, 0x1b, 0xa0, 0x82, - 0x39, 0x3f, 0x73, 0x68, 0x23, 0x5a, 0x69, 0x05, 0xe2, 0x47, 0x5a, 0x56, - 0x63, 0xf1, 0xf1, 0xa4, 0x54, 0x3f, 0x99, 0x08, 0xb3, 0x0f, 0x74, 0x7f, - 0x9e, 0xd6, 0xfd, 0xfd, 0x08, 0xf0, 0xdb, 0x8d, 0xbb, 0x7f, 0xf1, 0xfd, - 0xe2, 0xe5, 0xc0, 0x93, 0x67, 0xd1, 0xf9, 0x3c, 0x7f, 0xa0, 0x4e, 0x7d, - 0x39, 0xcc, 0xfb, 0x9f, 0xc5, 0xe3, 0x47, 0x69, 0xf0, 0xaf, 0x1c, 0xaa, - 0x1f, 0x73, 0xd0, 0x9a, 0xb3, 0x4d, 0x64, 0x2d, 0xa1, 0xfa, 0x08, 0xad, - 0xe3, 0xf1, 0xe8, 0x63, 0x73, 0x68, 0xfc, 0x09, 0xd3, 0x9e, 0x4a, 0x81, - 0x1e, 0x75, 0x86, 0x40, 0x1e, 0x59, 0xfc, 0xd3, 0xb9, 0x4b, 0xb3, 0x63, - 0xf6, 0xbb, 0x59, 0x8a, 0xe7, 0x1f, 0xf2, 0xee, 0xbf, 0x3b, 0x78, 0x3e, - 0x08, 0x01, 0xfd, 0xbc, 0x7f, 0xd7, 0x75, 0xa2, 0xbd, 0x7e, 0xcb, 0xeb, - 0xcf, 0xe3, 0x77, 0x9b, 0x2c, 0xba, 0xfe, 0xc0, 0x78, 0xca, 0x0f, 0xc3, - 0xe3, 0x07, 0xa5, 0x27, 0x45, 0xe3, 0x77, 0xe5, 0xf8, 0xf8, 0x9d, 0x33, - 0x9f, 0xea, 0x1f, 0x1e, 0x7f, 0x28, 0x1d, 0x63, 0xf1, 0x87, 0xac, 0xa0, - 0x2f, 0xfd, 0xf8, 0x9b, 0x18, 0x2f, 0xfd, 0xee, 0x55, 0xe1, 0xf9, 0x0d, - 0xd9, 0xfe, 0xf3, 0xf5, 0xa4, 0x23, 0xe2, 0xd1, 0x9c, 0x3f, 0x8d, 0x52, - 0xfc, 0x3a, 0x53, 0x23, 0x7e, 0x9d, 0x65, 0xed, 0x39, 0x1e, 0x2c, 0x94, - 0xc6, 0xcf, 0x0a, 0xf8, 0x3b, 0xf0, 0xf9, 0x44, 0x64, 0x7e, 0x26, 0xab, - 0x89, 0xf9, 0x8d, 0xf0, 0x78, 0xf8, 0x5b, 0x57, 0x89, 0xfe, 0x7e, 0x5a, - 0x3f, 0xcb, 0x8c, 0x8b, 0x9f, 0x4b, 0xfd, 0x4b, 0x8a, 0xfd, 0x51, 0x23, - 0xeb, 0xcf, 0xe7, 0x3b, 0x83, 0xc1, 0x72, 0x7f, 0xb6, 0xbe, 0xf2, 0xfd, - 0x63, 0x1f, 0x24, 0xe2, 0xe2, 0xc9, 0x97, 0xde, 0xa2, 0x16, 0x4f, 0x7e, - 0xe7, 0x4f, 0xea, 0xcd, 0x9f, 0x7a, 0xfe, 0x9d, 0x52, 0x7c, 0xfe, 0xf2, - 0x76, 0x35, 0x7a, 0xc6, 0x75, 0xb5, 0xfe, 0x47, 0x3e, 0xad, 0x4a, 0x7f, - 0xb8, 0x3f, 0xe5, 0xe5, 0x0f, 0x24, 0xfc, 0x87, 0x6f, 0x16, 0xf8, 0x8f, - 0x0a, 0xed, 0xd9, 0xd8, 0x78, 0xed, 0x3b, 0x46, 0x38, 0x3d, 0xf5, 0xe2, - 0x77, 0xed, 0x6c, 0x6c, 0xbe, 0xe0, 0xcc, 0x3f, 0x55, 0x5e, 0x6f, 0x4a, - 0x29, 0xdf, 0x74, 0x93, 0x94, 0x9f, 0xac, 0x41, 0xcf, 0x6f, 0x35, 0xb5, - 0xfd, 0xba, 0xed, 0x49, 0x11, 0x7f, 0x2d, 0x7e, 0xa6, 0x4d, 0x35, 0xfc, - 0xab, 0x22, 0xf3, 0x3b, 0x8d, 0x52, 0xbe, 0x82, 0xdb, 0x63, 0x9a, 0xdf, - 0xe2, 0xf7, 0xa3, 0xf2, 0x47, 0x67, 0x53, 0xfb, 0xbb, 0xc7, 0x26, 0xd1, - 0xdc, 0x2b, 0xda, 0x37, 0x69, 0x61, 0xf7, 0x3f, 0x39, 0x9f, 0x9b, 0xe1, - 0xe7, 0x1d, 0x5f, 0xee, 0x1c, 0x85, 0xf5, 0xd7, 0xda, 0xef, 0x6b, 0xaf, - 0x56, 0x5b, 0xff, 0x3f, 0x3d, 0x51, 0x23, 0x1e, 0x8e, 0x16, 0xc5, 0xc5, - 0xc3, 0xf1, 0xb5, 0x82, 0xe6, 0x2f, 0xea, 0xef, 0xdf, 0x29, 0xf6, 0xaf, - 0xe4, 0x63, 0xfb, 0x23, 0xd4, 0xae, 0xa4, 0x1f, 0x35, 0xa6, 0x0f, 0xa3, - 0xd6, 0x9b, 0x59, 0xaa, 0xc6, 0x9f, 0x85, 0x33, 0x44, 0xfc, 0xff, 0x73, - 0x8b, 0x16, 0xcb, 0xff, 0xbf, 0x59, 0x5c, 0xe3, 0x3c, 0x17, 0xc4, 0xf5, - 0x6e, 0x69, 0x14, 0xcf, 0xf3, 0xbf, 0xfc, 0x19, 0xf2, 0xec, 0x15, 0xe9, - 0xdf, 0x27, 0xf6, 0x1f, 0x95, 0xfa, 0x3f, 0xfa, 0xba, 0x11, 0x4b, 0xcf, - 0x9d, 0x4b, 0xd4, 0xd6, 0x7b, 0x6d, 0x83, 0x5a, 0xff, 0x0f, 0xcf, 0x54, - 0xeb, 0xff, 0xc5, 0x4f, 0xab, 0xf5, 0xff, 0x3b, 0xc5, 0x7c, 0xe7, 0xb1, - 0xac, 0x5a, 0xff, 0xad, 0x6b, 0x15, 0xf3, 0xbb, 0xbd, 0x53, 0xab, 0x1f, - 0xe2, 0xe3, 0x2b, 0x3d, 0x6a, 0xf3, 0xfd, 0xc7, 0x51, 0x43, 0xed, 0x3c, - 0xff, 0x44, 0xad, 0xff, 0x15, 0x8a, 0xf8, 0xbf, 0xb9, 0x4a, 0x8d, 0xfe, - 0xf3, 0x9e, 0x51, 0xc3, 0xbf, 0x55, 0x51, 0x7f, 0x8f, 0x27, 0xc3, 0xfb, - 0xeb, 0x68, 0xe7, 0x21, 0x9a, 0x9f, 0x63, 0xfe, 0x27, 0xca, 0x08, 0xfe, - 0xab, 0x9f, 0x9f, 0xe0, 0xf5, 0x18, 0x11, 0xfe, 0x70, 0x69, 0x91, 0xe8, - 0x0f, 0x3b, 0xdc, 0x1f, 0x16, 0xf3, 0xd9, 0x01, 0x7f, 0x58, 0x8b, 0xbb, - 0xef, 0xfd, 0xca, 0x62, 0xf8, 0x1d, 0xf0, 0x8f, 0xf7, 0xe2, 0x11, 0x03, - 0x5a, 0x69, 0x58, 0x1b, 0x8b, 0xea, 0x3f, 0x43, 0xf1, 0x3c, 0xfe, 0x7b, - 0x52, 0xaa, 0x6f, 0x50, 0xed, 0x6f, 0xe5, 0x63, 0xf3, 0xd7, 0xaf, 0xd4, - 0xfd, 0xfe, 0x89, 0xa6, 0x29, 0xf9, 0x7f, 0x7f, 0x15, 0xe1, 0x0f, 0x79, - 0x99, 0x7a, 0xe6, 0xaf, 0x43, 0x3e, 0x27, 0x03, 0x67, 0x9d, 0xd5, 0x0f, - 0x11, 0x7b, 0xec, 0x24, 0x33, 0x41, 0xfc, 0x2a, 0xf9, 0x7d, 0x1d, 0x5d, - 0x12, 0x9b, 0xdf, 0xaf, 0xce, 0xf7, 0xee, 0x94, 0xe2, 0x5f, 0x9e, 0x3c, - 0x85, 0xc7, 0xbb, 0x24, 0xf9, 0x32, 0x99, 0x7c, 0xe5, 0x3a, 0x6b, 0xe5, - 0x7f, 0x99, 0xbc, 0xe5, 0x78, 0x42, 0x8e, 0xdb, 0xff, 0x5d, 0xc2, 0xfc, - 0x6e, 0xd7, 0x11, 0xcd, 0x69, 0x3b, 0x3b, 0x35, 0x6a, 0xd2, 0xf9, 0x1d, - 0xe4, 0xd0, 0x7a, 0xb0, 0xc9, 0xcd, 0xa8, 0xbc, 0x9f, 0xe6, 0x23, 0xf5, - 0x33, 0x88, 0x83, 0xc6, 0x9e, 0xdf, 0xba, 0x83, 0x07, 0xb0, 0xe9, 0xf3, - 0x90, 0xbd, 0x58, 0x22, 0x49, 0x8a, 0x49, 0x73, 0xdd, 0x99, 0xb6, 0x9f, - 0x6f, 0x80, 0x7d, 0xd1, 0xd1, 0x18, 0x8f, 0x47, 0x3b, 0x83, 0xbc, 0x9e, - 0x2e, 0x67, 0x91, 0x7a, 0x3a, 0xc0, 0xbf, 0xad, 0x7d, 0x0c, 0xfa, 0x27, - 0xcf, 0x0a, 0xe2, 0x3f, 0x47, 0xc4, 0xdf, 0x87, 0xdc, 0x9d, 0x80, 0xdf, - 0xd1, 0xdc, 0x02, 0xe0, 0xaf, 0x55, 0x0f, 0x12, 0x1a, 0x2f, 0xec, 0x21, - 0xf1, 0x5e, 0x9b, 0xe6, 0xaf, 0xf9, 0x56, 0x36, 0x86, 0xc9, 0x17, 0xcb, - 0xf7, 0x55, 0x3e, 0xd6, 0x79, 0xbe, 0xe2, 0xcb, 0xdc, 0xa5, 0x88, 0x88, - 0xf7, 0x00, 0x87, 0xe1, 0x8d, 0x06, 0x16, 0x22, 0x73, 0x49, 0xeb, 0xd1, - 0xab, 0xf0, 0xf1, 0xf5, 0xb9, 0x1f, 0x85, 0xad, 0x4f, 0x8e, 0x57, 0x43, - 0x3d, 0xcb, 0x32, 0xa8, 0x67, 0x01, 0xfa, 0x13, 0xa4, 0x9e, 0x85, 0xd3, - 0x63, 0x45, 0xd1, 0x4f, 0xf7, 0xef, 0x12, 0xaf, 0x3e, 0x0e, 0xa1, 0xc7, - 0x0d, 0x7f, 0x3c, 0x44, 0xe0, 0x1d, 0x8d, 0xd0, 0x6b, 0x55, 0xd3, 0x8b, - 0x6f, 0x52, 0x32, 0xff, 0xe9, 0xf3, 0x7b, 0xa3, 0x86, 0x5b, 0x32, 0xec, - 0x48, 0x7b, 0xf5, 0x82, 0x19, 0xed, 0xbf, 0xc0, 0xe7, 0xe7, 0xe3, 0xf1, - 0xf7, 0xef, 0x5f, 0x8c, 0x4f, 0xad, 0x7e, 0xac, 0xd6, 0xf9, 0x32, 0xf1, - 0xf9, 0x5a, 0x69, 0x06, 0xcf, 0x57, 0x54, 0xfc, 0x22, 0xfc, 0x3c, 0x79, - 0xfb, 0x61, 0xb5, 0x13, 0x79, 0x86, 0x09, 0x9d, 0xb4, 0xdd, 0xd0, 0xd5, - 0xb8, 0x04, 0x95, 0x67, 0xa0, 0xfd, 0x76, 0x26, 0x63, 0xe8, 0x8d, 0xc3, - 0x5f, 0xd6, 0x86, 0x07, 0x34, 0x7b, 0x44, 0x1b, 0x6b, 0x7d, 0xd2, 0x2e, - 0x6f, 0xfb, 0xdb, 0xf9, 0x6e, 0x17, 0xbe, 0x0d, 0xed, 0x9b, 0x99, 0x70, - 0xd3, 0x10, 0x67, 0x84, 0x75, 0x58, 0x1d, 0x39, 0x12, 0x87, 0x18, 0x6e, - 0x07, 0xfa, 0xdc, 0xef, 0x53, 0x4d, 0xe2, 0x9a, 0xdf, 0xb2, 0xcb, 0x06, - 0xdc, 0xc7, 0x2d, 0xae, 0x5f, 0xae, 0x11, 0x9e, 0x67, 0xaf, 0x59, 0x7f, - 0xec, 0xd5, 0x3f, 0xbd, 0x4b, 0xce, 0xbb, 0xff, 0x18, 0xe6, 0x72, 0x2a, - 0x6f, 0x2c, 0x5e, 0x9e, 0xb8, 0xdb, 0xab, 0x97, 0x30, 0xca, 0x24, 0xbe, - 0x57, 0x40, 0x25, 0x1a, 0xdf, 0xd3, 0x4b, 0x33, 0x52, 0x43, 0x06, 0x95, - 0xf0, 0xed, 0x08, 0xad, 0xe7, 0xe7, 0x23, 0x47, 0xe4, 0x4b, 0x13, 0xc7, - 0xc3, 0x6e, 0x38, 0x69, 0xb1, 0x3e, 0x01, 0x5b, 0xf7, 0x24, 0xd4, 0x4b, - 0x61, 0x66, 0x8f, 0x31, 0xcd, 0x59, 0x5e, 0x98, 0xe0, 0xfb, 0x91, 0x46, - 0x53, 0xd1, 0xe7, 0x72, 0x3c, 0x27, 0x79, 0x40, 0xaa, 0xff, 0xe4, 0xf5, - 0xb8, 0x1a, 0x2a, 0xb5, 0xc3, 0xa2, 0x4b, 0x43, 0x69, 0x27, 0x07, 0xf2, - 0xd9, 0x91, 0x0a, 0xc6, 0xd3, 0xf1, 0x25, 0xc9, 0x75, 0xda, 0x94, 0xe7, - 0x73, 0xd3, 0x07, 0x84, 0xf8, 0x0f, 0x9a, 0x79, 0x20, 0x5e, 0x7e, 0xcf, - 0x3c, 0x30, 0xc5, 0xfa, 0x4e, 0x29, 0x7f, 0x68, 0x85, 0xec, 0x5f, 0x1a, - 0x7c, 0xe5, 0xe7, 0x44, 0x7f, 0xfe, 0x45, 0x93, 0xe3, 0xdb, 0xa8, 0x53, - 0x7b, 0xcd, 0xed, 0xc9, 0x2e, 0xc9, 0xbe, 0x78, 0xf5, 0xe5, 0x42, 0x7e, - 0x6f, 0x56, 0xfc, 0x7a, 0xbc, 0xf9, 0x7d, 0x83, 0xb7, 0x82, 0x9f, 0x37, - 0x01, 0xf6, 0xdf, 0x67, 0xc6, 0x60, 0x3f, 0x7f, 0x9c, 0x63, 0xfc, 0x17, - 0xda, 0xab, 0xf4, 0x1b, 0x69, 0xa3, 0xfa, 0x8d, 0xe5, 0xe3, 0xe0, 0x73, - 0x74, 0xba, 0xe5, 0xa7, 0x55, 0xde, 0x1f, 0x2e, 0x3f, 0x0e, 0x2a, 0x5d, - 0xd4, 0xb6, 0x4d, 0x67, 0xf3, 0x63, 0x7c, 0x17, 0x8b, 0xf2, 0x23, 0xbf, - 0x0f, 0xad, 0x4e, 0xf9, 0xf9, 0xe4, 0xa9, 0x92, 0x1f, 0xa9, 0x3e, 0xc6, - 0x92, 0xf7, 0x07, 0x0f, 0xb7, 0xa0, 0x44, 0xc8, 0x8d, 0x94, 0x1f, 0x83, - 0xfa, 0x6f, 0x03, 0x9a, 0x14, 0xaf, 0x95, 0xe4, 0x49, 0x90, 0x1f, 0x74, - 0x6e, 0x4d, 0xf9, 0x59, 0x21, 0xc5, 0x9b, 0x59, 0xbe, 0xbc, 0x3a, 0xbf, - 0x63, 0x88, 0xfe, 0x35, 0xde, 0x67, 0x12, 0x6f, 0x2e, 0xa1, 0xf8, 0x7a, - 0xd1, 0xb9, 0xf1, 0xfe, 0x8f, 0xfb, 0x6e, 0x94, 0xbf, 0xad, 0x11, 0x7f, - 0x7b, 0xf2, 0x01, 0x13, 0xda, 0xd3, 0x4f, 0xb4, 0x83, 0x36, 0x71, 0x9f, - 0x7f, 0xac, 0x84, 0x2a, 0x44, 0x1f, 0x7a, 0xf5, 0x6d, 0x1a, 0xa9, 0x17, - 0xed, 0xcc, 0x6e, 0x75, 0x9a, 0xf6, 0x2e, 0xcf, 0xa5, 0x26, 0x0d, 0xf0, - 0xb7, 0xe9, 0x79, 0x00, 0xed, 0xbe, 0x04, 0x39, 0x89, 0x60, 0xbe, 0x65, - 0x40, 0xa8, 0x5f, 0xde, 0x31, 0x2f, 0x10, 0xaf, 0x81, 0x7a, 0xe4, 0xc9, - 0x85, 0x90, 0x46, 0xf1, 0xfb, 0x5b, 0x75, 0xf6, 0x37, 0xa1, 0xbf, 0x8d, - 0x0f, 0xc1, 0x83, 0x1a, 0x1a, 0x0a, 0xef, 0x6f, 0x62, 0xd9, 0x18, 0xbd, - 0x8f, 0xf9, 0xb3, 0x56, 0x96, 0xe9, 0x47, 0xba, 0x9f, 0x61, 0xfd, 0x93, - 0xc1, 0xfe, 0x51, 0xfe, 0x7a, 0x44, 0x7c, 0xba, 0xaa, 0x7e, 0x3e, 0x07, - 0xf2, 0x01, 0xc6, 0xfb, 0x03, 0xad, 0x3c, 0xe4, 0xcb, 0xc7, 0xf9, 0x91, - 0xf2, 0x91, 0x35, 0xf2, 0xc9, 0xe0, 0xfd, 0xa9, 0x27, 0xb6, 0xbe, 0x3d, - 0x24, 0xbf, 0xc5, 0x35, 0x4e, 0x36, 0x34, 0x5f, 0x4d, 0xfe, 0xd9, 0x9e, - 0x82, 0xf3, 0xec, 0xfa, 0xf5, 0x21, 0x1e, 0xfd, 0xf4, 0x28, 0x7b, 0xaf, - 0x34, 0x2a, 0x84, 0xd7, 0xcb, 0xc2, 0xe5, 0xd3, 0xcb, 0x2f, 0x69, 0x6a, - 0xf4, 0xdd, 0xca, 0xe9, 0x4b, 0x44, 0xd5, 0x2f, 0x36, 0x11, 0x7f, 0x8f, - 0xcb, 0xef, 0x0e, 0x2d, 0x98, 0x7f, 0x91, 0xe3, 0xfb, 0xe1, 0xf1, 0xf9, - 0x67, 0x03, 0xf4, 0x85, 0xd3, 0xb3, 0x31, 0x11, 0x1d, 0x9f, 0xeb, 0x21, - 0x1a, 0x0e, 0x8f, 0xd7, 0x6b, 0xe7, 0x17, 0x54, 0xf1, 0x47, 0xde, 0x17, - 0x51, 0xdd, 0xf1, 0xe4, 0x58, 0x7d, 0x2f, 0xeb, 0xef, 0x88, 0xf8, 0x5f, - 0xc9, 0x08, 0xd4, 0x47, 0x8b, 0xf7, 0xd3, 0x8e, 0x69, 0xc2, 0xdf, 0xc9, - 0xeb, 0x79, 0xe9, 0xf3, 0x41, 0x39, 0x8e, 0xbf, 0x65, 0x9a, 0xf0, 0xd3, - 0x7a, 0x67, 0x90, 0x67, 0xa2, 0xaf, 0x5a, 0xbc, 0xfa, 0x8b, 0x69, 0xc2, - 0x4f, 0xeb, 0x9d, 0x3d, 0x7b, 0xec, 0xd5, 0x77, 0xac, 0x9b, 0x26, 0xfc, - 0xb4, 0xde, 0x99, 0xdb, 0xff, 0x92, 0x97, 0x7f, 0x5c, 0xc7, 0xed, 0x8b, - 0x19, 0x73, 0x9e, 0xdc, 0xd5, 0x0b, 0xac, 0xc9, 0xde, 0x3e, 0xb8, 0xed, - 0xde, 0xcf, 0xdf, 0x17, 0x62, 0x72, 0x7f, 0xb4, 0x1e, 0x7b, 0x6c, 0xbd, - 0x18, 0x88, 0x4f, 0x24, 0x7c, 0x79, 0x27, 0xe4, 0x64, 0x02, 0xf2, 0x40, - 0x4e, 0xdf, 0x77, 0x02, 0xf5, 0x45, 0x03, 0xfc, 0x7d, 0x3f, 0x75, 0xbd, - 0x9f, 0xa4, 0xb6, 0x7c, 0x7b, 0xf6, 0xcf, 0xac, 0x61, 0xff, 0x98, 0x7d, - 0xc4, 0x5e, 0x38, 0xb1, 0x7f, 0x28, 0x3e, 0xdf, 0xea, 0x52, 0xfd, 0x91, - 0x23, 0xf6, 0x0e, 0xdf, 0x6c, 0x4b, 0xc7, 0x57, 0xe1, 0xfb, 0x47, 0xc1, - 0xf3, 0xcf, 0x2d, 0x7a, 0x9f, 0x73, 0x4c, 0xb0, 0xe7, 0x43, 0x5f, 0xef, - 0x5c, 0xfd, 0xa0, 0xee, 0xee, 0xd4, 0xc6, 0x50, 0x1a, 0xeb, 0x6b, 0xa7, - 0xeb, 0x91, 0x83, 0x17, 0x4e, 0x6a, 0x58, 0xf5, 0x14, 0x2e, 0x5e, 0x3b, - 0xa8, 0xc3, 0x7d, 0xe0, 0x87, 0x9d, 0xeb, 0xd0, 0x4f, 0xe9, 0x7d, 0x20, - 0x74, 0x7d, 0x4f, 0xa7, 0x7c, 0x7e, 0xe6, 0x83, 0xf1, 0x21, 0xb2, 0x17, - 0x1b, 0x32, 0xfe, 0xfb, 0xb6, 0xbc, 0x7c, 0x7b, 0xc4, 0xfb, 0xb6, 0x78, - 0x7e, 0x5f, 0x7c, 0xde, 0xeb, 0x80, 0x8f, 0xbf, 0xd4, 0x59, 0x47, 0xfc, - 0x89, 0xf7, 0xa7, 0xf9, 0x90, 0x94, 0x0e, 0xf9, 0x76, 0x6a, 0x5f, 0xbd, - 0xfc, 0x76, 0x0d, 0x7f, 0xc3, 0x8b, 0xb7, 0x30, 0x7f, 0xa3, 0x10, 0xef, - 0x6f, 0xb0, 0x78, 0x1e, 0x9d, 0x7d, 0x5b, 0x82, 0xdb, 0x17, 0x87, 0xf2, - 0x3f, 0x09, 0xfc, 0x77, 0x46, 0x02, 0xf5, 0xf5, 0xd6, 0x26, 0xf2, 0x3c, - 0x9d, 0xab, 0x83, 0xbd, 0x1c, 0x4a, 0x1d, 0xea, 0x3e, 0xae, 0x3b, 0x3b, - 0x31, 0x6c, 0x62, 0xfe, 0xdb, 0x5d, 0xbf, 0x19, 0x37, 0x78, 0x7e, 0x7b, - 0x17, 0xd4, 0x03, 0x58, 0xe0, 0x3f, 0xd8, 0x43, 0xd1, 0xf1, 0xbf, 0x48, - 0xfe, 0x13, 0x75, 0xb9, 0xa1, 0xd1, 0xe7, 0x7f, 0xe3, 0xff, 0x6b, 0xfe, - 0xcb, 0xf5, 0x05, 0xa6, 0xa7, 0xac, 0xd6, 0x18, 0xa2, 0x7f, 0xc2, 0xed, - 0xb5, 0x58, 0x7f, 0x50, 0x6d, 0xef, 0xd9, 0xf3, 0x93, 0xb9, 0x49, 0xe2, - 0x2f, 0x79, 0xfa, 0x2d, 0x17, 0xaf, 0xdf, 0xf8, 0x7c, 0xa6, 0x57, 0x5c, - 0xb2, 0x26, 0xee, 0xf9, 0x1b, 0x9b, 0xdc, 0x2f, 0x82, 0xfa, 0x96, 0xeb, - 0x1f, 0x8f, 0xd7, 0xf4, 0x7d, 0x64, 0x36, 0x56, 0x50, 0x4e, 0xdb, 0x50, - 0x02, 0xf4, 0xbd, 0x9b, 0x12, 0xea, 0x11, 0x67, 0x12, 0xfd, 0xa7, 0x8b, - 0xfd, 0x3d, 0x73, 0xc9, 0x61, 0xfe, 0xa6, 0xdf, 0xa8, 0x7c, 0x2c, 0xbf, - 0x2f, 0xf0, 0xf9, 0x6d, 0x71, 0x3c, 0x21, 0x0d, 0xf6, 0xb6, 0xc8, 0xed, - 0xc1, 0xa7, 0xf9, 0xfc, 0x59, 0x7e, 0x9f, 0x23, 0xf7, 0xe9, 0xc0, 0xf3, - 0xb0, 0x41, 0xfb, 0x4a, 0xc9, 0xdb, 0xaa, 0x81, 0x3c, 0xf6, 0x25, 0x84, - 0xfa, 0xb3, 0x46, 0x61, 0x7c, 0x2e, 0x1f, 0xf1, 0xbc, 0x17, 0xfd, 0xbc, - 0x19, 0xe1, 0x5f, 0x78, 0xf6, 0x50, 0xd0, 0xdf, 0x3e, 0xfd, 0xd4, 0x34, - 0xc0, 0x2b, 0x6b, 0xd9, 0xf3, 0xaa, 0xbe, 0x3d, 0x4b, 0x09, 0xf3, 0x73, - 0x7b, 0x27, 0xad, 0xc7, 0x8b, 0x0f, 0x1f, 0xe5, 0xf4, 0xdd, 0x81, 0xa4, - 0x78, 0x02, 0xed, 0xdf, 0x21, 0x8d, 0xaf, 0x71, 0xff, 0xbc, 0x48, 0xba, - 0x0f, 0x7e, 0xaa, 0xc6, 0x7d, 0x70, 0xd1, 0x54, 0xef, 0x83, 0xec, 0x0f, - 0xb7, 0x3f, 0xa0, 0x09, 0xf5, 0x2b, 0x35, 0xe4, 0x93, 0x3c, 0x7f, 0xd3, - 0x17, 0x88, 0xd7, 0xcd, 0x88, 0xef, 0x5f, 0x40, 0x3b, 0x2c, 0x91, 0xbe, - 0xd2, 0x42, 0x16, 0xef, 0x0c, 0x3f, 0x2f, 0x26, 0x3f, 0x9f, 0x7c, 0x81, - 0x0f, 0x64, 0x05, 0xfa, 0x52, 0xac, 0x1d, 0x9a, 0xd7, 0x82, 0xfc, 0x75, - 0x88, 0xfe, 0x29, 0xc7, 0x87, 0xf7, 0xbb, 0x14, 0xb4, 0xff, 0xd0, 0x3f, - 0x1f, 0xc2, 0x1f, 0x79, 0x7e, 0x8e, 0xdf, 0xb3, 0x8f, 0x1d, 0x73, 0x61, - 0x71, 0x55, 0xfd, 0xa9, 0x3e, 0x1b, 0x26, 0xf1, 0x00, 0xb8, 0xdf, 0x45, - 0xf1, 0x5f, 0xc2, 0x8f, 0xa5, 0x60, 0x8d, 0x11, 0xb7, 0x5f, 0xd5, 0xf9, - 0xec, 0xf0, 0xfe, 0x51, 0xfa, 0x56, 0x5e, 0x0f, 0x1f, 0x2f, 0xfb, 0x43, - 0x04, 0x5f, 0xc0, 0xbf, 0xf7, 0xf3, 0xe1, 0xe1, 0xfb, 0x89, 0x29, 0x2f, - 0x05, 0xe5, 0x17, 0xc6, 0xaf, 0xac, 0x4d, 0x3f, 0xd2, 0x65, 0xfa, 0xe3, - 0xfd, 0x41, 0xc7, 0xd7, 0xcf, 0x11, 0xf9, 0xe3, 0xa8, 0xfe, 0x36, 0x72, - 0x9d, 0xd6, 0xd0, 0xfb, 0x5f, 0xa8, 0x7d, 0xf3, 0xfc, 0x71, 0x7c, 0x7f, - 0xee, 0xe3, 0xfa, 0x21, 0x17, 0xf4, 0xff, 0x5b, 0x78, 0x7c, 0xfb, 0xd7, - 0x73, 0x22, 0xea, 0x73, 0xa8, 0xff, 0x1a, 0x7f, 0x5e, 0xca, 0x2f, 0xdf, - 0x29, 0xae, 0xdf, 0xad, 0x4f, 0xfe, 0x3d, 0xfd, 0xc5, 0xe2, 0x35, 0x7c, - 0xbd, 0xc9, 0x1a, 0xfc, 0x11, 0xe7, 0x7f, 0x82, 0xc4, 0xf3, 0x91, 0x89, - 0xc6, 0xea, 0xe4, 0x27, 0x76, 0x79, 0xd7, 0x18, 0xbe, 0x7e, 0x84, 0x57, - 0x22, 0xd3, 0x78, 0x97, 0xdc, 0x5e, 0xc7, 0x7d, 0xf8, 0x77, 0x64, 0xdf, - 0xbb, 0xa7, 0xc5, 0xbe, 0xfb, 0xf6, 0xba, 0xfb, 0xb4, 0xbd, 0x9e, 0x46, - 0x7b, 0xfd, 0xb9, 0x88, 0x7c, 0xba, 0xa7, 0x9f, 0x22, 0xf8, 0xe7, 0x52, - 0x63, 0x13, 0x78, 0x7f, 0xc3, 0xfd, 0x4a, 0xf6, 0x1a, 0x50, 0x67, 0x1a, - 0x82, 0xf6, 0x7a, 0xfd, 0x74, 0xd8, 0x6b, 0x77, 0xb1, 0xa2, 0xbd, 0x5e, - 0x32, 0x45, 0x7b, 0xed, 0xe5, 0xeb, 0x76, 0x08, 0xef, 0x17, 0x71, 0xb9, - 0x7c, 0x52, 0x36, 0x8d, 0x34, 0xf2, 0xf3, 0x1a, 0x69, 0xbf, 0xf7, 0x51, - 0xfb, 0xed, 0xcd, 0xef, 0xcc, 0xab, 0xa1, 0x8f, 0xba, 0x55, 0xec, 0x15, - 0xb6, 0x9f, 0xdd, 0xa2, 0xfd, 0xdc, 0x11, 0xfe, 0xbc, 0x73, 0xd0, 0x7e, - 0xf6, 0x29, 0xd9, 0xcf, 0x6e, 0x45, 0xfb, 0xa9, 0x46, 0x3f, 0xef, 0x5f, - 0xbf, 0xbd, 0xec, 0x9e, 0x66, 0x7b, 0xd9, 0xad, 0x68, 0x2f, 0xbb, 0x15, - 0xed, 0x65, 0xf7, 0x09, 0xdb, 0x4b, 0xfb, 0x84, 0xec, 0x65, 0x77, 0xbc, - 0xbd, 0x7c, 0x5a, 0xb2, 0x97, 0xa8, 0x3e, 0xf9, 0x94, 0x9f, 0x77, 0xf1, - 0xed, 0x65, 0xf4, 0x7c, 0x36, 0xd9, 0x4f, 0x9e, 0xcf, 0x3d, 0x45, 0xf6, - 0x8a, 0xbd, 0x7f, 0x42, 0x7e, 0xbf, 0x44, 0xd4, 0x7e, 0x21, 0x2f, 0xbe, - 0x7b, 0x62, 0xef, 0x03, 0xa0, 0xf5, 0x20, 0x1b, 0x30, 0x86, 0xa5, 0xf0, - 0xfe, 0xa5, 0x40, 0xfe, 0x23, 0xbc, 0xde, 0xc8, 0x03, 0xfc, 0xf8, 0xae, - 0x06, 0xf9, 0xdf, 0x46, 0xcb, 0xc5, 0xeb, 0xf5, 0x9f, 0x77, 0xe2, 0xf4, - 0xa2, 0xce, 0xac, 0xee, 0xb4, 0xed, 0xc5, 0x6c, 0x9d, 0x0c, 0xad, 0x37, - 0xc2, 0x8a, 0x55, 0x13, 0xf4, 0x75, 0x9d, 0xf1, 0xb2, 0x28, 0x7e, 0xd8, - 0x49, 0x2c, 0xbf, 0x67, 0x6c, 0x48, 0x8f, 0x9e, 0xbf, 0x04, 0x95, 0xb3, - 0xa8, 0x60, 0xe3, 0xbd, 0xdf, 0xdb, 0x92, 0x48, 0x40, 0x7c, 0x81, 0xbc, - 0x5f, 0x0a, 0x91, 0x97, 0x64, 0xbb, 0x1a, 0xad, 0x58, 0xb0, 0x51, 0x07, - 0x72, 0x3a, 0xb1, 0xbc, 0x8f, 0x26, 0xfc, 0x78, 0x08, 0x4b, 0xad, 0xa3, - 0xbe, 0xc1, 0xb2, 0x56, 0x25, 0xff, 0xdd, 0x08, 0x35, 0xc3, 0xf3, 0x61, - 0xfb, 0x06, 0x11, 0xd4, 0x33, 0x80, 0xbc, 0x2c, 0xae, 0x43, 0xdf, 0xf0, - 0x7a, 0x52, 0xbf, 0x3e, 0x6c, 0x93, 0x54, 0x1f, 0x36, 0x21, 0xd5, 0x1b, - 0x6c, 0x8a, 0xaf, 0x0f, 0x73, 0x17, 0xc5, 0xda, 0xd3, 0xea, 0xfc, 0x3e, - 0x7b, 0xbf, 0x09, 0xdd, 0xbc, 0x04, 0xe4, 0xbf, 0xe0, 0xe5, 0x5e, 0x39, - 0xf3, 0x88, 0xe6, 0x58, 0xad, 0x69, 0xf2, 0xfc, 0x1c, 0xd9, 0xef, 0x0d, - 0x86, 0xa7, 0x72, 0x20, 0x7f, 0x95, 0xde, 0x89, 0xe5, 0x71, 0xf8, 0xf2, - 0x51, 0x73, 0xc0, 0x70, 0x86, 0x79, 0x3d, 0x90, 0x9e, 0x41, 0xe5, 0x73, - 0xc9, 0x78, 0xe0, 0x97, 0xf5, 0x09, 0xe4, 0xd5, 0x97, 0x56, 0xd3, 0x23, - 0xe6, 0xc3, 0x80, 0x3d, 0x23, 0xa0, 0x5f, 0x6c, 0xff, 0x79, 0x36, 0x02, - 0x47, 0xbc, 0x8f, 0x22, 0xcc, 0x3e, 0xac, 0x30, 0xfd, 0xfc, 0xc5, 0x74, - 0xbf, 0x0f, 0xa3, 0x8a, 0x3f, 0x5b, 0x49, 0x7c, 0x6e, 0xfe, 0xa8, 0x79, - 0x8c, 0xc4, 0x47, 0xfd, 0xe7, 0xad, 0x28, 0x7f, 0x4a, 0x26, 0x9c, 0xd7, - 0xe1, 0x65, 0xb9, 0xc4, 0x80, 0x46, 0xf8, 0x43, 0x14, 0x96, 0xde, 0xc8, - 0xf9, 0x03, 0xf6, 0x39, 0x99, 0x8d, 0xe3, 0x4f, 0x5a, 0xe4, 0x0f, 0xe1, - 0xef, 0xda, 0x0c, 0xd8, 0xbf, 0x12, 0xf8, 0xe7, 0x01, 0xd8, 0xad, 0xd3, - 0x5f, 0x5f, 0x6e, 0xc6, 0xd5, 0x8f, 0x9d, 0x18, 0x7f, 0xaa, 0xf5, 0x83, - 0x58, 0x1f, 0x10, 0xd0, 0x5f, 0x82, 0x3f, 0xed, 0xc5, 0x1f, 0x3b, 0xb1, - 0x3f, 0xdd, 0x66, 0xeb, 0xe7, 0x66, 0x1e, 0xd4, 0x4a, 0xdf, 0x08, 0xd4, - 0x9b, 0x60, 0x77, 0xcb, 0xf5, 0x9e, 0xcf, 0x7e, 0x2a, 0xe1, 0xef, 0x6f, - 0x48, 0xbc, 0xd0, 0x44, 0xbd, 0x63, 0xff, 0xc9, 0xed, 0x5f, 0xfc, 0x79, - 0x0a, 0xac, 0xaf, 0xbe, 0xf3, 0x74, 0x4a, 0xd6, 0x87, 0x9c, 0xe7, 0xf5, - 0x60, 0xbd, 0xd8, 0x9f, 0x27, 0x6b, 0xac, 0xb7, 0xef, 0xc0, 0xc9, 0x5e, - 0x2f, 0xab, 0xf7, 0x1b, 0x25, 0xeb, 0x6b, 0x35, 0xe5, 0xf7, 0xaf, 0x79, - 0xeb, 0x73, 0xf0, 0xfa, 0xcc, 0x9e, 0x26, 0x34, 0xf1, 0xa0, 0x86, 0x82, - 0xf9, 0x02, 0xdb, 0x8f, 0x7f, 0xa1, 0xd2, 0x70, 0x52, 0xac, 0x9f, 0xfb, - 0x4e, 0x43, 0xec, 0xfa, 0xe6, 0x77, 0x19, 0x68, 0xc2, 0xbb, 0x4f, 0x28, - 0xd6, 0x3b, 0xd6, 0xa8, 0xc7, 0x22, 0xe7, 0xb7, 0xb5, 0x81, 0xeb, 0xbf, - 0x40, 0xfd, 0x1e, 0x39, 0x6f, 0x05, 0xb2, 0x5e, 0x3b, 0xc1, 0xea, 0x61, - 0xfd, 0xf5, 0x54, 0xe2, 0xf3, 0xdb, 0x81, 0x78, 0xba, 0xd3, 0x79, 0x32, - 0xcf, 0x1b, 0x1a, 0x4a, 0x89, 0xf5, 0x8a, 0x23, 0x29, 0x95, 0xfa, 0xc5, - 0xa4, 0x5d, 0x78, 0xd5, 0xbe, 0xa3, 0x1d, 0xad, 0xe9, 0xb0, 0x26, 0xa9, - 0x1d, 0x5a, 0x91, 0x8a, 0x8f, 0xef, 0xc7, 0xd7, 0x8f, 0x46, 0xd7, 0x4b, - 0x1c, 0x93, 0xdf, 0x4f, 0x49, 0xe5, 0x4f, 0xcf, 0x6e, 0x25, 0xef, 0xa3, - 0xf1, 0xf6, 0xab, 0x81, 0xcf, 0x6f, 0xd2, 0xfa, 0x08, 0x38, 0x2f, 0xad, - 0x2d, 0xa3, 0xc6, 0xa6, 0xd8, 0xfa, 0xe5, 0x73, 0x22, 0x7e, 0x6f, 0x10, - 0xee, 0xcf, 0x99, 0x36, 0xbc, 0x7f, 0x9e, 0xbf, 0x79, 0x6b, 0x32, 0xde, - 0x5f, 0x3d, 0x49, 0xe7, 0x27, 0xe2, 0x79, 0xc5, 0xea, 0x78, 0x83, 0x58, - 0x0f, 0x53, 0xf5, 0xfc, 0xa2, 0xb6, 0x8b, 0xdd, 0x2f, 0x18, 0x7d, 0x3a, - 0xf8, 0x33, 0x61, 0xf6, 0x14, 0x12, 0xd1, 0xf4, 0xfd, 0x05, 0x4e, 0xba, - 0x76, 0x7e, 0x46, 0xbe, 0x9f, 0x2e, 0x3d, 0x10, 0xff, 0xbe, 0xb7, 0x6b, - 0x23, 0xfc, 0x17, 0xef, 0xbe, 0x29, 0xdc, 0xc7, 0x47, 0xd2, 0x60, 0x9f, - 0xca, 0x09, 0x96, 0x4f, 0x72, 0x36, 0x04, 0xde, 0x2f, 0xd4, 0x28, 0xde, - 0xa7, 0xa7, 0x58, 0x7f, 0xb5, 0x4c, 0xf1, 0x3e, 0xbd, 0xfc, 0xc0, 0x89, - 0xbe, 0x2f, 0x91, 0xf1, 0x9f, 0x2a, 0x68, 0x67, 0xce, 0x61, 0x43, 0x98, - 0xdf, 0x44, 0x49, 0xc2, 0x8f, 0xd6, 0x9e, 0x02, 0x79, 0xee, 0xaa, 0xbb, - 0x9d, 0x74, 0x70, 0x0f, 0x93, 0xb4, 0x3e, 0x1e, 0xf9, 0xc7, 0xf4, 0xbc, - 0xd5, 0xba, 0xff, 0xf9, 0xf9, 0x56, 0xf1, 0xfd, 0xa0, 0x1c, 0x3f, 0x5d, - 0xcf, 0x30, 0x89, 0xd7, 0x95, 0xc2, 0xef, 0xef, 0xa5, 0x9d, 0xc9, 0x90, - 0xfb, 0x18, 0xc3, 0x47, 0x7d, 0xd9, 0x41, 0x5a, 0xcf, 0x92, 0xa8, 0xdb, - 0x9f, 0xf6, 0xe6, 0xa7, 0xcb, 0x1f, 0xf7, 0xec, 0x13, 0x8b, 0xbf, 0xf4, - 0x07, 0xea, 0xeb, 0xb8, 0x3c, 0x36, 0xaa, 0xec, 0xef, 0xb9, 0x81, 0x7c, - 0x24, 0x89, 0x27, 0xf5, 0xe6, 0x3d, 0xff, 0x8b, 0xf0, 0xa3, 0x10, 0x71, - 0x9f, 0xc4, 0x70, 0x7e, 0xa6, 0x7f, 0xdf, 0x46, 0xe8, 0x7a, 0x5e, 0x0f, - 0x7d, 0x6c, 0xce, 0xd4, 0xe5, 0xcb, 0xbd, 0xec, 0x94, 0xc9, 0x57, 0x38, - 0x7d, 0x7d, 0x51, 0xbf, 0xa7, 0x2a, 0xcb, 0x63, 0x54, 0x3e, 0x2b, 0x32, - 0xbe, 0xf6, 0xa0, 0x58, 0x4f, 0xc4, 0xeb, 0x45, 0xe5, 0xf8, 0x9a, 0xe2, - 0x7d, 0xcb, 0x93, 0x4f, 0x10, 0x90, 0x36, 0xdb, 0x80, 0xfb, 0x55, 0x5f, - 0x92, 0xe2, 0xeb, 0x11, 0xf6, 0xc7, 0x7b, 0x9f, 0x2a, 0xad, 0x87, 0x20, - 0xe8, 0xfc, 0xf7, 0x57, 0x78, 0xf2, 0xba, 0x3c, 0xe0, 0x3f, 0xa0, 0xc1, - 0x24, 0x97, 0x77, 0xdc, 0xdd, 0xfd, 0x76, 0x3a, 0xac, 0x1e, 0x62, 0x7a, - 0xee, 0xe3, 0xf4, 0xfe, 0x3b, 0x5b, 0xf7, 0xee, 0xe3, 0xd5, 0xf7, 0x97, - 0x1a, 0xcf, 0x0b, 0x48, 0xf8, 0x20, 0x3a, 0x0e, 0x7b, 0x5f, 0x5e, 0x38, - 0x6d, 0xf8, 0x1e, 0x8b, 0x79, 0x3e, 0xa6, 0x16, 0x0c, 0xfc, 0x13, 0xed, - 0x83, 0xdc, 0xbf, 0x4b, 0xad, 0x5e, 0x5c, 0x19, 0xff, 0x35, 0x27, 0x84, - 0x1f, 0x1e, 0x36, 0x88, 0x97, 0xcf, 0xc5, 0xb1, 0xf8, 0x40, 0xb4, 0xf2, - 0x7a, 0xfd, 0xfc, 0x9a, 0xe2, 0xef, 0xb7, 0x79, 0xbf, 0x5f, 0x6c, 0x49, - 0x70, 0x4e, 0x82, 0x6d, 0x09, 0x76, 0x24, 0x98, 0xc5, 0xfb, 0x7d, 0xd8, - 0x94, 0x60, 0x4b, 0x82, 0x73, 0x12, 0x6c, 0x4b, 0xf0, 0xa9, 0xfd, 0x3d, - 0x2a, 0x57, 0x82, 0x6b, 0xfe, 0xde, 0xda, 0x34, 0xd3, 0x77, 0xfa, 0x73, - 0xfa, 0x73, 0xfa, 0x13, 0xf3, 0xf9, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xec, 0x5d, 0x7b, 0x90, 0x1c, 0x47, 0x79, 0xef, 0xee, 0x99, 0x9d, 0x9d, - 0xdd, 0xdb, 0x5b, 0x8d, 0xce, 0x27, 0xb1, 0x3e, 0x4b, 0xd6, 0x9c, 0x74, - 0x96, 0x8e, 0xc4, 0xa8, 0xce, 0x8a, 0x2c, 0xce, 0x46, 0x31, 0x73, 0xd2, - 0xc9, 0x48, 0x46, 0x22, 0xc2, 0x3c, 0x22, 0x53, 0x3c, 0xf6, 0x70, 0x51, - 0x25, 0x83, 0x23, 0x9b, 0xc4, 0x49, 0xce, 0xd8, 0x29, 0xf7, 0xde, 0xed, - 0x3d, 0x0c, 0x3a, 0xd7, 0x59, 0x18, 0x23, 0x8c, 0x31, 0x7b, 0x92, 0x6c, - 0xab, 0x30, 0x15, 0xa8, 0x72, 0x52, 0x65, 0xf2, 0x47, 0xb2, 0xd6, 0x83, - 0x08, 0xca, 0xaa, 0x3a, 0x70, 0xe2, 0x22, 0x29, 0x2a, 0x59, 0x3b, 0x29, - 0x22, 0x1e, 0x51, 0x94, 0x02, 0x93, 0x33, 0x18, 0x94, 0x7e, 0xcf, 0x74, - 0xef, 0xcc, 0xec, 0x9e, 0x1e, 0x14, 0x09, 0xdc, 0x1f, 0xb6, 0xc7, 0x33, - 0xdb, 0xd3, 0xd3, 0xfd, 0xf5, 0xf7, 0xfe, 0x7e, 0xdf, 0x00, 0xd3, 0xaf, - 0x38, 0xbe, 0x0c, 0xcd, 0xb7, 0x72, 0x51, 0xc1, 0x22, 0xf6, 0xc5, 0xfc, - 0x83, 0x70, 0x2f, 0xac, 0x8f, 0xc3, 0xc3, 0xef, 0x06, 0x2f, 0xe0, 0x03, - 0x76, 0x75, 0x23, 0xb4, 0xb8, 0xbf, 0x36, 0x0f, 0x1e, 0xa1, 0x67, 0x76, - 0x85, 0xd3, 0xeb, 0xc2, 0xaf, 0x0e, 0x66, 0x30, 0xe7, 0x57, 0x37, 0x3b, - 0xcc, 0x7b, 0x4a, 0xe4, 0x77, 0xd9, 0x03, 0xc1, 0x83, 0xf9, 0xf1, 0x6b, - 0x3b, 0x2c, 0xee, 0x9f, 0x2a, 0x3c, 0x3a, 0x67, 0x97, 0x11, 0x02, 0x4b, - 0x97, 0x02, 0xa7, 0x5c, 0x9a, 0x54, 0xfa, 0xaf, 0x27, 0xea, 0x4f, 0x87, - 0xa9, 0xbd, 0x5c, 0xdd, 0xa2, 0xfc, 0x03, 0x6b, 0x89, 0xfe, 0x1a, 0xa0, - 0x65, 0xdb, 0xd6, 0x40, 0x99, 0x7f, 0x76, 0x6b, 0x6a, 0x3f, 0xce, 0x3c, - 0x66, 0xea, 0x44, 0x6d, 0xcb, 0x7b, 0xfa, 0xe9, 0x2d, 0x9c, 0xc7, 0x39, - 0x7e, 0x2d, 0xfa, 0xc5, 0xc9, 0xfb, 0x6e, 0x9d, 0x31, 0xd2, 0xe9, 0x23, - 0xbe, 0xce, 0x6f, 0xfc, 0x7e, 0x2a, 0xaf, 0xfc, 0x8e, 0xd9, 0xe2, 0x46, - 0x1a, 0xb4, 0xa6, 0xfe, 0xbc, 0x98, 0xf7, 0xbd, 0x27, 0x23, 0xbf, 0x0f, - 0x80, 0xb7, 0x1b, 0xf2, 0x4b, 0xe1, 0x6d, 0x31, 0xfb, 0xd2, 0xf7, 0xc5, - 0xf3, 0x7b, 0x10, 0xae, 0x65, 0xfc, 0x8b, 0x95, 0x27, 0x97, 0xfd, 0xcf, - 0xd3, 0x2f, 0x47, 0xe4, 0x7f, 0xf4, 0x89, 0xfd, 0xf1, 0x59, 0x73, 0x6e, - 0x3f, 0x23, 0xe9, 0x83, 0xe6, 0x0a, 0x06, 0xae, 0x9f, 0xf1, 0x32, 0x7c, - 0xfd, 0xa3, 0xf4, 0xd2, 0x20, 0xf4, 0x32, 0x4c, 0xed, 0x4d, 0xff, 0x96, - 0x0d, 0x50, 0xe4, 0x23, 0x4a, 0xf9, 0x86, 0x44, 0xbd, 0x22, 0x95, 0xdd, - 0xee, 0x0d, 0xef, 0x70, 0x24, 0xbe, 0x91, 0x49, 0x2f, 0x76, 0x17, 0xc0, - 0xd3, 0xf6, 0x64, 0x61, 0xb6, 0x40, 0xae, 0x0b, 0xd4, 0xbf, 0xb9, 0xc3, - 0x58, 0x6f, 0xe5, 0x3f, 0x66, 0xf5, 0x84, 0x4c, 0x1c, 0xe2, 0x2d, 0x52, - 0xa2, 0xd7, 0x18, 0xaa, 0x2a, 0x58, 0xb6, 0xad, 0xb7, 0x4d, 0xfa, 0x89, - 0xd4, 0x03, 0x09, 0x7c, 0x15, 0xd6, 0xff, 0xd5, 0x0b, 0xdf, 0xc7, 0x54, - 0x2e, 0x3f, 0x12, 0xef, 0x08, 0xd2, 0xf2, 0x19, 0x7d, 0xc4, 0xe8, 0x29, - 0x17, 0x8e, 0x9f, 0x3e, 0xff, 0x4b, 0xac, 0x7f, 0x5c, 0xc4, 0xf9, 0x1f, - 0xf8, 0x95, 0x9e, 0xff, 0x3f, 0xb8, 0x44, 0xe7, 0xbf, 0x79, 0xbf, 0xd2, - 0xd7, 0xeb, 0xff, 0xda, 0xfe, 0xfc, 0x7f, 0xe5, 0xff, 0xfb, 0xdc, 0x88, - 0x3d, 0x1c, 0x39, 0xbf, 0x72, 0xff, 0x7b, 0x17, 0xc9, 0xff, 0x25, 0x7f, - 0x6f, 0xd2, 0x27, 0x25, 0xfe, 0xb5, 0xb2, 0x97, 0x7e, 0xb3, 0xf7, 0xbb, - 0xf9, 0xef, 0x05, 0xa3, 0x3e, 0xaf, 0xa0, 0xd9, 0xcb, 0xa6, 0x3d, 0x97, - 0xc7, 0x6f, 0x62, 0xff, 0xee, 0x11, 0xf5, 0xc5, 0xb2, 0x1e, 0x79, 0x2c, - 0xd0, 0xe5, 0xed, 0x31, 0xfd, 0x5a, 0xf2, 0x4f, 0xbc, 0x9a, 0xfb, 0xff, - 0xfc, 0x24, 0xfd, 0x3f, 0x8c, 0xb7, 0xc9, 0xfa, 0xfa, 0x38, 0x79, 0x6c, - 0xa9, 0xfb, 0x79, 0xdc, 0x1f, 0x37, 0x1e, 0x7e, 0xf7, 0x7c, 0xb8, 0xff, - 0x07, 0xb4, 0xfd, 0x57, 0xfe, 0xd2, 0x5f, 0xfc, 0x66, 0xee, 0xb7, 0xfe, - 0xd7, 0x6c, 0xaf, 0xbf, 0x2b, 0x66, 0xbd, 0x91, 0x79, 0xde, 0x2e, 0xd9, - 0x7e, 0xb6, 0x5c, 0xff, 0xe4, 0xfd, 0xfb, 0xe5, 0x6f, 0xf7, 0xef, 0x57, - 0x72, 0xfe, 0x85, 0xf7, 0x52, 0xee, 0x3f, 0x3f, 0xff, 0xc7, 0x86, 0xfb, - 0xb5, 0xf3, 0xdf, 0xa5, 0xf8, 0x41, 0xd6, 0xe0, 0x0f, 0x8b, 0xa6, 0x17, - 0x83, 0x1e, 0x9b, 0xce, 0x7f, 0x5d, 0xe7, 0x47, 0xbf, 0x3d, 0xff, 0x17, - 0x79, 0xfe, 0xb5, 0xfd, 0x8d, 0x39, 0xff, 0x06, 0xff, 0x5f, 0xdc, 0x7e, - 0xfe, 0xfa, 0x9d, 0x77, 0x03, 0xef, 0x45, 0xc5, 0xeb, 0x7e, 0x60, 0xf6, - 0x37, 0xb1, 0x45, 0xbc, 0x12, 0x71, 0x7c, 0xef, 0x51, 0x9b, 0xe7, 0x2b, - 0xe5, 0x8c, 0xf8, 0xc6, 0x8c, 0x86, 0xdf, 0xae, 0xbe, 0x55, 0xe0, 0x03, - 0x85, 0x0b, 0xa2, 0xc7, 0x0f, 0x9e, 0xd1, 0xf1, 0xf7, 0xee, 0xee, 0x78, - 0xa3, 0xc4, 0x0f, 0x9a, 0x01, 0xbc, 0xfe, 0x79, 0x9f, 0x45, 0xeb, 0x9f, - 0x01, 0xec, 0xb4, 0x82, 0x48, 0xff, 0x33, 0x99, 0xff, 0x66, 0xc9, 0x7c, - 0x2b, 0xfa, 0x42, 0x0a, 0xb9, 0xed, 0xab, 0xfc, 0xd5, 0x7a, 0xc1, 0x6d, - 0x23, 0xde, 0xf1, 0xce, 0xf0, 0xfd, 0x00, 0x1c, 0x19, 0x7b, 0x11, 0xae, - 0x05, 0x8d, 0x82, 0xc2, 0xc3, 0x0e, 0xe4, 0xf8, 0xbe, 0x8c, 0x1f, 0x4e, - 0x3f, 0x0f, 0x6b, 0xd1, 0xf8, 0xa1, 0x56, 0xdf, 0xfb, 0xa4, 0xc2, 0xcf, - 0xdd, 0x42, 0xfb, 0x57, 0x21, 0xdf, 0x01, 0xee, 0xa8, 0x45, 0xeb, 0xd7, - 0x78, 0x3d, 0xcd, 0xe7, 0x22, 0xf5, 0x90, 0x7b, 0x65, 0xbe, 0xcc, 0xcf, - 0x38, 0x7e, 0x2d, 0x9f, 0xd7, 0xb8, 0xd5, 0xe4, 0xcf, 0x6f, 0xd1, 0x0f, - 0x4a, 0xd5, 0xff, 0x8b, 0x7e, 0x50, 0x7e, 0x7a, 0x7d, 0x63, 0x7d, 0x75, - 0x42, 0x3e, 0x87, 0x11, 0x9f, 0x06, 0x59, 0x23, 0xbf, 0xad, 0x8e, 0x71, - 0x06, 0xae, 0x20, 0x1f, 0xb8, 0xfe, 0x1f, 0x01, 0x98, 0xca, 0x7f, 0xb6, - 0x97, 0xfd, 0x7a, 0xeb, 0x08, 0x53, 0x35, 0xf1, 0x30, 0xdb, 0xff, 0x89, - 0xa7, 0x2c, 0x78, 0x3f, 0xc4, 0x91, 0x7a, 0x7a, 0x59, 0xef, 0x0e, 0x02, - 0x16, 0xff, 0x0d, 0xac, 0x6c, 0x14, 0x7f, 0x16, 0xd4, 0xd5, 0xfe, 0xb1, - 0xaf, 0xc9, 0xba, 0xdf, 0xb2, 0xc9, 0xfa, 0xb8, 0x71, 0xf5, 0xf2, 0x3b, - 0x10, 0xaf, 0xcf, 0x13, 0x78, 0xba, 0x26, 0x7e, 0xb4, 0xad, 0xef, 0x57, - 0xf3, 0xef, 0xbf, 0x81, 0x40, 0x90, 0x45, 0x61, 0x7d, 0x3d, 0x3f, 0x97, - 0xea, 0xfd, 0xfe, 0x29, 0x11, 0x7f, 0xd9, 0x07, 0x18, 0xbd, 0x85, 0xfd, - 0x5b, 0x34, 0x3c, 0xfd, 0x90, 0x5e, 0xbe, 0x41, 0x53, 0xf3, 0xc6, 0xbe, - 0x05, 0xcf, 0xc2, 0xc6, 0x34, 0xcf, 0x7f, 0x1f, 0xb0, 0x93, 0xe9, 0x4b, - 0xe2, 0xbf, 0x3e, 0xf3, 0xc3, 0xaf, 0x14, 0x80, 0x8e, 0xdf, 0x80, 0x5a, - 0xd4, 0xaf, 0x0a, 0x79, 0x84, 0x21, 0xdf, 0x5f, 0x9c, 0x9e, 0x3f, 0xa9, - 0xf2, 0xdf, 0x12, 0xce, 0xb7, 0xc0, 0xb3, 0x91, 0xe7, 0xb3, 0x71, 0x2b, - 0xaf, 0x17, 0x2a, 0x3e, 0x32, 0xf2, 0xc4, 0xcb, 0xc5, 0x6c, 0xf5, 0xd8, - 0x08, 0xcb, 0x3b, 0xc4, 0xdf, 0xcd, 0x20, 0x8a, 0x5f, 0x63, 0xd3, 0xa9, - 0x96, 0xd9, 0xfb, 0x54, 0xbe, 0x0f, 0xd2, 0xfb, 0x65, 0x8e, 0xaa, 0xf8, - 0x5b, 0xe0, 0x56, 0xd9, 0xf3, 0x1e, 0x79, 0x5e, 0xc5, 0x63, 0x85, 0x7d, - 0xe3, 0xc2, 0x4e, 0x1c, 0x78, 0xbe, 0x05, 0x06, 0x5f, 0x67, 0x78, 0x0b, - 0x49, 0xe7, 0xf1, 0xfa, 0xa8, 0x3d, 0x14, 0xf1, 0x97, 0x00, 0x70, 0x0a, - 0x44, 0xf7, 0x23, 0xac, 0x77, 0x16, 0xf4, 0x64, 0x4f, 0x83, 0x80, 0xf6, - 0x1b, 0x58, 0xb8, 0x8f, 0xf5, 0xa3, 0xe8, 0x39, 0xc0, 0x52, 0x8c, 0xf0, - 0x36, 0x5e, 0x97, 0x8e, 0x91, 0x07, 0xf0, 0xda, 0xe7, 0xde, 0x0e, 0xc3, - 0xf5, 0x5d, 0x21, 0xf1, 0xf6, 0x45, 0xfc, 0xfd, 0x1b, 0xda, 0x78, 0x12, - 0xde, 0x2b, 0x3c, 0xff, 0x7a, 0x3c, 0x9a, 0xaf, 0xdf, 0x84, 0x23, 0xfa, - 0xe1, 0xd5, 0x30, 0x7a, 0x90, 0x5c, 0x4f, 0xfd, 0xc7, 0x9c, 0xbd, 0x00, - 0x83, 0x6a, 0x1c, 0xbd, 0xec, 0x40, 0x5b, 0xb2, 0x84, 0xde, 0xe1, 0x59, - 0xd0, 0x18, 0x4b, 0xc6, 0x3b, 0x78, 0x7b, 0x02, 0xbe, 0x1c, 0xe7, 0x0f, - 0x1c, 0x7f, 0x81, 0xf7, 0x83, 0x91, 0xeb, 0x41, 0xf8, 0x48, 0x43, 0xc5, - 0xe3, 0xb1, 0x95, 0x80, 0x6f, 0xc0, 0xd6, 0xb3, 0x9e, 0x45, 0xe1, 0xfb, - 0x2e, 0x0c, 0x3f, 0x04, 0x3a, 0x97, 0x0a, 0x3f, 0x64, 0x46, 0xab, 0xcf, - 0x0e, 0xeb, 0x7b, 0x17, 0x2c, 0x76, 0x7f, 0x88, 0xe2, 0xa7, 0x55, 0x69, - 0xfd, 0xae, 0xed, 0x4f, 0x48, 0xbc, 0x75, 0xfa, 0x27, 0xf0, 0x7b, 0x24, - 0xfd, 0x95, 0x17, 0x4c, 0x7c, 0x1e, 0x3e, 0x5f, 0x9f, 0xf2, 0xb3, 0x6c, - 0xa7, 0xa4, 0xd7, 0x3c, 0x08, 0x72, 0xb4, 0x5f, 0x01, 0x0d, 0xd8, 0x5f, - 0x01, 0x59, 0x21, 0x23, 0xfb, 0x5b, 0xab, 0xfa, 0xef, 0x49, 0xfc, 0xf2, - 0x51, 0x41, 0x5f, 0xa0, 0x9e, 0x8e, 0xcf, 0xbe, 0x4b, 0xcf, 0x57, 0x52, - 0xf6, 0xb5, 0x4f, 0xe3, 0xb6, 0x6c, 0x3f, 0x0a, 0xd1, 0xfa, 0x47, 0xf2, - 0x42, 0xb4, 0x8c, 0xc8, 0x83, 0xed, 0x03, 0x54, 0xce, 0x91, 0xf1, 0xf7, - 0x65, 0x9b, 0xf8, 0x7f, 0x90, 0xcd, 0x1a, 0xf1, 0x33, 0x7c, 0x8d, 0xb1, - 0x9f, 0x4d, 0xf5, 0x09, 0x62, 0x3d, 0xc2, 0x78, 0xbb, 0xcf, 0xf0, 0xb4, - 0x92, 0xf2, 0xbf, 0xaf, 0x51, 0xf9, 0xc9, 0x97, 0xb7, 0x7e, 0xbe, 0x19, - 0x9f, 0xb1, 0x53, 0xe7, 0x47, 0xf6, 0xc3, 0x28, 0x72, 0xcd, 0x53, 0x79, - 0x8a, 0x60, 0xc5, 0x96, 0x6b, 0xa6, 0xe9, 0x1a, 0xe0, 0x42, 0xf5, 0xe5, - 0x13, 0xb4, 0x7e, 0xfe, 0x49, 0xf2, 0xa6, 0x79, 0x0b, 0x56, 0x30, 0xec, - 0x44, 0xf6, 0x52, 0x3f, 0x0b, 0xb6, 0xf3, 0xfc, 0xba, 0xe5, 0x53, 0xbd, - 0x39, 0x6c, 0x0d, 0xe0, 0xab, 0x9f, 0x0f, 0xf5, 0x2d, 0xb2, 0xc9, 0x89, - 0xfd, 0x5e, 0xc0, 0xf0, 0x8c, 0x65, 0x2f, 0xcb, 0x14, 0x41, 0xe9, 0x75, - 0xd0, 0x98, 0x82, 0x87, 0x7b, 0xde, 0x51, 0x3b, 0x4f, 0x5e, 0x84, 0x9f, - 0xa9, 0x8b, 0xe7, 0x21, 0xc5, 0x4b, 0x99, 0xa2, 0xf9, 0xd8, 0x4e, 0x99, - 0xf2, 0xa7, 0xfc, 0x0b, 0xc7, 0x38, 0xde, 0x4b, 0x90, 0xf5, 0x2b, 0x74, - 0xfe, 0x23, 0xda, 0x7c, 0x09, 0x7b, 0xb5, 0x6e, 0xa6, 0xf9, 0xce, 0x60, - 0x3d, 0x2a, 0x1f, 0x62, 0x78, 0x2b, 0xd2, 0x7e, 0xc8, 0xf2, 0x7e, 0x49, - 0x34, 0x5f, 0xea, 0x10, 0x19, 0x73, 0x9f, 0xc3, 0xeb, 0xcf, 0x37, 0x4b, - 0xff, 0xca, 0x0a, 0x5e, 0xbf, 0x54, 0x40, 0x5b, 0x18, 0x56, 0xeb, 0xd9, - 0x8c, 0xcf, 0xd6, 0xa7, 0x2a, 0xd6, 0xbb, 0x1f, 0xb4, 0x83, 0x87, 0x42, - 0xfb, 0x73, 0xec, 0xbc, 0x8d, 0x7a, 0xf1, 0xd6, 0x71, 0x7a, 0x03, 0xd7, - 0xca, 0xf1, 0xaf, 0x8c, 0xc5, 0xc7, 0xa6, 0xcf, 0xdf, 0x40, 0x9e, 0x57, - 0xf1, 0x77, 0xf9, 0x3c, 0x05, 0xd6, 0x88, 0xed, 0x0f, 0x21, 0xf9, 0x8b, - 0xa0, 0x0f, 0x5b, 0xcc, 0xef, 0x28, 0x68, 0x0f, 0xaf, 0x45, 0x8d, 0xbf, - 0x2c, 0x7d, 0xfc, 0x33, 0xc6, 0xf8, 0xfd, 0x70, 0x91, 0xe3, 0x77, 0xb5, - 0x98, 0x7f, 0xc6, 0x98, 0xff, 0x62, 0xc7, 0x5f, 0x12, 0x3f, 0xbe, 0x9a, - 0x6f, 0xac, 0xfc, 0x6e, 0xc2, 0x13, 0x08, 0xf7, 0xa7, 0x90, 0x3e, 0xde, - 0xd1, 0x36, 0xf1, 0x70, 0x54, 0xfe, 0x4a, 0xbe, 0xc5, 0xfc, 0xac, 0xa4, - 0xf9, 0xdd, 0x18, 0x3f, 0xbf, 0x6c, 0x8b, 0xf9, 0x25, 0x8e, 0xb7, 0x29, - 0x76, 0xbc, 0x04, 0xbc, 0x1e, 0x45, 0xef, 0x47, 0x69, 0x43, 0xa5, 0xd8, - 0xf1, 0x58, 0xfe, 0xd3, 0x82, 0xa4, 0xd7, 0xf5, 0xf2, 0x68, 0xc7, 0xe2, - 0xa7, 0xb0, 0x7a, 0xb5, 0x68, 0x3d, 0xa1, 0xf8, 0x7b, 0x49, 0xc9, 0xd3, - 0x0c, 0x8c, 0xbe, 0x2f, 0x1c, 0xff, 0xf7, 0xb4, 0xfe, 0x4a, 0xe5, 0x0d, - 0x4b, 0x85, 0x3c, 0xa0, 0xfc, 0x7f, 0x85, 0xe2, 0xff, 0xa5, 0x31, 0x86, - 0x86, 0x87, 0xcb, 0xb7, 0x92, 0x7d, 0xed, 0x71, 0x31, 0xe3, 0xaa, 0xf5, - 0xa1, 0x0a, 0xca, 0x0d, 0xd0, 0x92, 0x3b, 0x29, 0x7f, 0xcf, 0x9d, 0x3f, - 0x7f, 0x7e, 0x09, 0xf9, 0xc7, 0x5d, 0xdf, 0xd9, 0x01, 0xbd, 0xfa, 0x75, - 0xfd, 0x63, 0x95, 0x91, 0xbd, 0xc0, 0xbf, 0xa2, 0x13, 0x87, 0x78, 0x6d, - 0x9c, 0x5f, 0x97, 0x59, 0xfd, 0xe1, 0xe4, 0x4b, 0x95, 0xfc, 0x46, 0xda, - 0x71, 0xa8, 0xf6, 0x82, 0x03, 0xad, 0xf2, 0xee, 0x7e, 0xe4, 0xf4, 0x6e, - 0x47, 0xa5, 0x25, 0x36, 0xb6, 0x89, 0x2e, 0xf3, 0xc8, 0x23, 0x4e, 0xe1, - 0x9a, 0xd7, 0xd6, 0x81, 0x46, 0x07, 0xd5, 0x8f, 0x5e, 0x96, 0xf5, 0x17, - 0xe7, 0x57, 0x11, 0x71, 0x82, 0x28, 0x0b, 0x06, 0x0f, 0x43, 0x2a, 0xaf, - 0x30, 0x91, 0x8f, 0x03, 0xe0, 0x24, 0xb2, 0x3b, 0x80, 0xb7, 0x76, 0xec, - 0x6b, 0x4c, 0x7e, 0xbe, 0x1b, 0x6c, 0xb3, 0x50, 0xa7, 0x7f, 0xeb, 0xea, - 0x57, 0x7e, 0xdf, 0xa2, 0xfc, 0xb2, 0x0b, 0x9c, 0x24, 0xcf, 0x8e, 0x8d, - 0xac, 0x46, 0xcf, 0x21, 0xa2, 0x9f, 0xcf, 0xad, 0x1d, 0x26, 0x9a, 0x95, - 0xc5, 0x75, 0xfc, 0x83, 0x80, 0xe1, 0x93, 0x64, 0x6a, 0x45, 0x2b, 0x86, - 0x7f, 0x96, 0xc1, 0xd1, 0x3a, 0xbd, 0x8f, 0xed, 0xf2, 0x92, 0xb8, 0xfb, - 0x01, 0xf8, 0x0e, 0xbb, 0x0f, 0x6c, 0x1c, 0x7b, 0xdf, 0x07, 0x0d, 0x76, - 0x5f, 0xd9, 0x33, 0xc8, 0xe8, 0x87, 0x01, 0x0c, 0x3c, 0xe0, 0x50, 0x9f, - 0x5c, 0x02, 0xaa, 0x7f, 0x0f, 0x4b, 0xd7, 0xc7, 0xca, 0x1b, 0x2a, 0xe2, - 0xa2, 0x93, 0x68, 0x79, 0x5e, 0x8c, 0xeb, 0xa6, 0xfd, 0x6e, 0xca, 0x1f, - 0xae, 0xb3, 0x5a, 0x4a, 0x8f, 0x17, 0x6e, 0x2a, 0xfd, 0xef, 0x68, 0x2f, - 0x95, 0x84, 0x6a, 0xbc, 0x33, 0x82, 0xbe, 0xdc, 0x2e, 0x2a, 0xc4, 0x26, - 0x76, 0x7e, 0x0a, 0x6e, 0x64, 0xf8, 0x25, 0x4d, 0xef, 0xa3, 0xf2, 0xbf, - 0x3b, 0x42, 0x9f, 0x64, 0xf6, 0xc3, 0x8c, 0xff, 0x8b, 0x7c, 0x30, 0x0a, - 0x73, 0xfa, 0x06, 0xd0, 0x5c, 0x8f, 0xba, 0x87, 0x41, 0xd2, 0x33, 0x7a, - 0xcd, 0x53, 0x15, 0x65, 0x80, 0xdf, 0xdf, 0x9e, 0x11, 0x87, 0x61, 0x84, - 0xe1, 0x30, 0xe0, 0xbf, 0x12, 0x78, 0x92, 0x13, 0x3e, 0xbf, 0xfe, 0x04, - 0xe4, 0xcb, 0x3b, 0xd4, 0xcb, 0xf5, 0xf9, 0x69, 0xc4, 0x1f, 0xc8, 0xdc, - 0xa1, 0xf2, 0x9d, 0x65, 0xac, 0xe9, 0xe7, 0xab, 0x12, 0xea, 0x63, 0x37, - 0x94, 0xa2, 0xeb, 0x27, 0xa1, 0x7c, 0x13, 0xf0, 0x5a, 0x63, 0xcf, 0xcf, - 0x72, 0x75, 0x7e, 0x62, 0xf6, 0xe3, 0xca, 0xba, 0xbb, 0xae, 0xfa, 0x41, - 0x29, 0x7f, 0x81, 0x5d, 0xbf, 0x9b, 0x07, 0xc4, 0x13, 0x9e, 0xbf, 0xc4, - 0xf9, 0x3a, 0x4d, 0xf9, 0xc9, 0xe6, 0xfe, 0x9b, 0xf9, 0xca, 0x98, 0xd6, - 0x73, 0xd9, 0x59, 0xa1, 0x3f, 0x92, 0xeb, 0x67, 0x71, 0xe7, 0x61, 0x91, - 0x3f, 0xc7, 0xe8, 0xbf, 0xc1, 0x7a, 0x60, 0xab, 0xf9, 0xcb, 0xf5, 0x12, - 0xfd, 0x2a, 0xa0, 0xdd, 0x10, 0x01, 0xff, 0xd5, 0x71, 0xdf, 0x27, 0xf5, - 0xb5, 0x7f, 0xcd, 0x2d, 0xee, 0xfb, 0x7e, 0x67, 0x91, 0xfd, 0xb0, 0xcd, - 0xfc, 0x65, 0x1f, 0xbc, 0x81, 0xeb, 0x83, 0x46, 0xff, 0x28, 0x89, 0xaf, - 0xfb, 0x77, 0x3f, 0x39, 0x4f, 0xff, 0xee, 0x32, 0xf5, 0x37, 0x9f, 0xd7, - 0x71, 0xd3, 0xe7, 0xfa, 0xe9, 0x7a, 0x5c, 0x2b, 0x7e, 0xe0, 0x72, 0xc3, - 0x9e, 0x3a, 0x05, 0xfc, 0x7a, 0xe1, 0xe9, 0x89, 0x09, 0x41, 0x6f, 0x67, - 0x39, 0x2e, 0x3d, 0x3e, 0x21, 0xae, 0x7d, 0xde, 0x3f, 0xb3, 0x76, 0xb3, - 0xd0, 0xf7, 0x9c, 0x47, 0x58, 0xbf, 0x06, 0x7c, 0xb3, 0xa0, 0x57, 0x6a, - 0xe6, 0x74, 0xf4, 0x8c, 0x33, 0xfc, 0x23, 0x7a, 0x9e, 0xba, 0x3d, 0xa2, - 0xc0, 0x97, 0x7a, 0x6c, 0xc2, 0xb4, 0x21, 0xc3, 0x23, 0x25, 0x5a, 0x03, - 0x8a, 0xf6, 0x97, 0x43, 0x75, 0xc4, 0xcf, 0x13, 0xb7, 0xaf, 0x7c, 0x6e, - 0xf7, 0xf9, 0x2e, 0xf7, 0xcb, 0x4d, 0x17, 0x84, 0xf7, 0x9d, 0x98, 0x4d, - 0xb0, 0x8c, 0xc8, 0xef, 0xbb, 0x9e, 0xc7, 0xa8, 0xeb, 0x61, 0xf2, 0xbf, - 0x17, 0x00, 0xf5, 0x67, 0x95, 0xaa, 0x8d, 0x6a, 0x39, 0x6f, 0xd9, 0xeb, - 0x21, 0xce, 0x0e, 0xbe, 0x7f, 0x12, 0x8f, 0x51, 0x97, 0xe9, 0x92, 0x29, - 0x08, 0xbc, 0xd7, 0x01, 0x26, 0xfc, 0xd3, 0x45, 0xc4, 0x76, 0xdb, 0x60, - 0x59, 0xea, 0x7d, 0x03, 0x27, 0x41, 0xdf, 0x55, 0x60, 0x1e, 0x7c, 0xef, - 0x5e, 0x5e, 0xff, 0xee, 0x07, 0x20, 0x7f, 0xd5, 0x01, 0x04, 0xb6, 0xbf, - 0x0e, 0xcb, 0xac, 0x1e, 0x0a, 0xfb, 0x01, 0xf9, 0xfe, 0x7d, 0x64, 0xbc, - 0xdd, 0x3b, 0x1f, 0xc2, 0xae, 0x3b, 0x8c, 0xec, 0x37, 0x93, 0x43, 0xb9, - 0x9d, 0xd7, 0x93, 0xfd, 0x8d, 0x85, 0x61, 0xd9, 0xe5, 0xf6, 0xf5, 0xd1, - 0x63, 0xa0, 0xd2, 0xf3, 0xb0, 0x2f, 0xc6, 0x0e, 0xdc, 0xbd, 0xc7, 0xef, - 0xa8, 0x14, 0x3e, 0xf3, 0x32, 0xaa, 0x14, 0xa7, 0x68, 0xbf, 0x34, 0x77, - 0x80, 0x5c, 0x37, 0xef, 0xaf, 0xb2, 0x00, 0x9c, 0xb4, 0x7e, 0xbe, 0x91, - 0xf3, 0xd8, 0x10, 0x78, 0xca, 0xf2, 0x7c, 0x35, 0x98, 0xea, 0xe7, 0xb9, - 0x7d, 0x31, 0xf4, 0x88, 0x1f, 0xea, 0xe2, 0xfc, 0xe2, 0xe4, 0x1d, 0x67, - 0x2c, 0x7e, 0x3e, 0xf3, 0x17, 0x84, 0x1f, 0xbe, 0x3a, 0xb1, 0xdf, 0xc1, - 0x65, 0xae, 0x1f, 0x5d, 0xf4, 0xf9, 0x37, 0xfa, 0x23, 0x2d, 0xb6, 0xbf, - 0x92, 0xb9, 0xde, 0x91, 0x7e, 0x59, 0x3c, 0xde, 0x63, 0xf0, 0x03, 0x60, - 0x37, 0xd8, 0xa4, 0xbc, 0xe9, 0x67, 0x01, 0xf2, 0x81, 0xb0, 0x5c, 0xd4, - 0x79, 0x0b, 0x9a, 0xce, 0xdf, 0xa7, 0x4c, 0xf9, 0xe4, 0x07, 0x9d, 0x4f, - 0x53, 0x8a, 0xce, 0x09, 0xfa, 0xb8, 0xb2, 0xdc, 0xb9, 0xae, 0xfa, 0xfc, - 0x5a, 0xc9, 0xdf, 0xed, 0xc6, 0x57, 0x35, 0x7e, 0x33, 0x66, 0xfe, 0xbe, - 0xc1, 0xd2, 0x05, 0x92, 0xf8, 0x95, 0x9a, 0xdf, 0xa5, 0xe5, 0x57, 0xf7, - 0x5c, 0x2a, 0x7e, 0x65, 0xf4, 0xcf, 0x5e, 0x34, 0xbf, 0x82, 0x3a, 0xbf, - 0xea, 0x7e, 0xaa, 0x97, 0xe2, 0x45, 0x83, 0xea, 0x09, 0xf9, 0x1e, 0x15, - 0x4f, 0x61, 0xe7, 0x6f, 0x79, 0x8d, 0xe1, 0x49, 0x93, 0xe7, 0xd9, 0xb9, - 0x9b, 0x16, 0xfc, 0x0a, 0x7c, 0xbd, 0x1c, 0xf2, 0xab, 0x1c, 0x95, 0x97, - 0x41, 0xe6, 0xea, 0xda, 0x52, 0xff, 0x50, 0x37, 0xa8, 0x23, 0x27, 0x43, - 0xf8, 0x95, 0xb7, 0xc0, 0xfc, 0x51, 0xb7, 0x5a, 0xd8, 0xae, 0xbd, 0x73, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Thu Apr 20 11:52:12 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 57B6ED4771F; Thu, 20 Apr 2017 11:52:12 +0000 (UTC) (envelope-from skra@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 mx1.freebsd.org (Postfix) with ESMTPS id 0F51B1A2A; Thu, 20 Apr 2017 11:52:11 +0000 (UTC) (envelope-from skra@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3KBqB3D063932; Thu, 20 Apr 2017 11:52:11 GMT (envelope-from skra@FreeBSD.org) Received: (from skra@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3KBqB0T063931; Thu, 20 Apr 2017 11:52:11 GMT (envelope-from skra@FreeBSD.org) Message-Id: <201704201152.v3KBqB0T063931@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: skra set sender to skra@FreeBSD.org using -f From: Svatopluk Kraus Date: Thu, 20 Apr 2017 11:52:11 +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: r317188 - stable/11/sys/arm/arm X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Apr 2017 11:52:12 -0000 Author: skra Date: Thu Apr 20 11:52:10 2017 New Revision: 317188 URL: https://svnweb.freebsd.org/changeset/base/317188 Log: MFC r308569,r308570: r308569: Always call PHYS_TO_VM_PAGE() in is_managed(). Fast road for addresses under first_page cannot be taken as this variable is connected only to vm_page_array segment. There could be more segments in system like the ones for various fictitious page ranges. These can be situated under vm_page_array segment and so, they could be skipped before this fix. However, as far as I know, there is no report associated with it. r308570: The return type of is_managed() was changed from boolean_t to bool type in r308569. Now, propagate this change further for consistency sake. Modified: stable/11/sys/arm/arm/pmap-v6.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/arm/arm/pmap-v6.c ============================================================================== --- stable/11/sys/arm/arm/pmap-v6.c Thu Apr 20 11:32:18 2017 (r317187) +++ stable/11/sys/arm/arm/pmap-v6.c Thu Apr 20 11:52:10 2017 (r317188) @@ -2746,31 +2746,25 @@ SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_ /* * Is given page managed? */ -static __inline boolean_t +static __inline bool is_managed(vm_paddr_t pa) { - vm_offset_t pgnum; vm_page_t m; - pgnum = atop(pa); - if (pgnum >= first_page) { - m = PHYS_TO_VM_PAGE(pa); - if (m == NULL) - return (FALSE); - if ((m->oflags & VPO_UNMANAGED) == 0) - return (TRUE); - } - return (FALSE); + m = PHYS_TO_VM_PAGE(pa); + if (m == NULL) + return (false); + return ((m->oflags & VPO_UNMANAGED) == 0); } -static __inline boolean_t +static __inline bool pte1_is_managed(pt1_entry_t pte1) { return (is_managed(pte1_pa(pte1))); } -static __inline boolean_t +static __inline bool pte2_is_managed(pt2_entry_t pte2) { @@ -6148,7 +6142,7 @@ pmap_mincore(pmap_t pmap, vm_offset_t ad pt1_entry_t *pte1p, pte1; pt2_entry_t *pte2p, pte2; vm_paddr_t pa; - boolean_t managed; + bool managed; int val; PMAP_LOCK(pmap); @@ -6175,7 +6169,7 @@ retry: if (pte2 & PTE2_A) val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER; } else { - managed = FALSE; + managed = false; val = 0; } if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) != From owner-svn-src-stable@freebsd.org Thu Apr 20 12:48:03 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1C220D4848E; Thu, 20 Apr 2017 12:48:03 +0000 (UTC) (envelope-from andrew@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 mx1.freebsd.org (Postfix) with ESMTPS id C7ACAE4B; Thu, 20 Apr 2017 12:48:02 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3KCm145087365; Thu, 20 Apr 2017 12:48:01 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3KCm1cn087364; Thu, 20 Apr 2017 12:48:01 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201704201248.v3KCm1cn087364@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Thu, 20 Apr 2017 12:48:01 +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: r317189 - stable/11/libexec/rtld-elf/aarch64 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Apr 2017 12:48:03 -0000 Author: andrew Date: Thu Apr 20 12:48:01 2017 New Revision: 317189 URL: https://svnweb.freebsd.org/changeset/base/317189 Log: MFC r312764: Pull the R_AARCH64_TLSDESC code out into a common function and use them in both the plt and non-plt case. This fixes an issue where libraries built with LLD can fail with "Unhandled relocation 1031" Modified: stable/11/libexec/rtld-elf/aarch64/reloc.c Directory Properties: stable/11/ (props changed) Modified: stable/11/libexec/rtld-elf/aarch64/reloc.c ============================================================================== --- stable/11/libexec/rtld-elf/aarch64/reloc.c Thu Apr 20 11:52:10 2017 (r317188) +++ stable/11/libexec/rtld-elf/aarch64/reloc.c Thu Apr 20 12:48:01 2017 (r317189) @@ -184,6 +184,18 @@ rtld_tlsdesc_handle(struct tls_data *tls return (tlsdesc->index); } +static void +reloc_tlsdesc(Obj_Entry *obj, const Elf_Rela *rela, Elf_Addr *where) +{ + if (ELF_R_SYM(rela->r_info) == 0) { + where[0] = (Elf_Addr)_rtld_tlsdesc; + where[1] = obj->tlsoffset + rela->r_addend; + } else { + where[0] = (Elf_Addr)_rtld_tlsdesc_dynamic; + where[1] = (Elf_Addr)reloc_tlsdesc_alloc(obj, rela); + } +} + /* * Process the PLT relocations. */ @@ -204,14 +216,7 @@ reloc_plt(Obj_Entry *obj) *where += (Elf_Addr)obj->relocbase; break; case R_AARCH64_TLSDESC: - if (ELF_R_SYM(rela->r_info) == 0) { - where[0] = (Elf_Addr)_rtld_tlsdesc; - where[1] = obj->tlsoffset + rela->r_addend; - } else { - where[0] = (Elf_Addr)_rtld_tlsdesc_dynamic; - where[1] = (Elf_Addr)reloc_tlsdesc_alloc(obj, - rela); - } + reloc_tlsdesc(obj, rela, where); break; default: _rtld_error("Unknown relocation type %u in PLT", @@ -361,6 +366,9 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry return (-1); } break; + case R_AARCH64_TLSDESC: + reloc_tlsdesc(obj, rela, where); + break; case R_AARCH64_TLS_TPREL64: def = find_symdef(symnum, obj, &defobj, flags, cache, lockstate); From owner-svn-src-stable@freebsd.org Fri Apr 21 01:51:50 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7C62BD476B8; Fri, 21 Apr 2017 01:51:50 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id 4DDF9ACA; Fri, 21 Apr 2017 01:51:50 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3L1pnFa015790; Fri, 21 Apr 2017 01:51:49 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3L1pn8r015775; Fri, 21 Apr 2017 01:51:49 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201704210151.v3L1pn8r015775@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Fri, 21 Apr 2017 01:51:49 +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: r317241 - in stable: 10/sys/contrib/ipfilter/netinet 11/sys/contrib/ipfilter/netinet X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 01:51:50 -0000 Author: cy Date: Fri Apr 21 01:51:49 2017 New Revision: 317241 URL: https://svnweb.freebsd.org/changeset/base/317241 Log: MFC r316809: Fix a use after free panic in ipfilter's fragment processing. Memory is malloc'd, then a search for a match in the fragment table is made and if the fragment matches, the wrong fragment table is freed, causing a use after free panic. This commit fixes this. A symptom of the problem is a kernel page fault in bcopy() called by ipf_frag_lookup() at line 715 in ip_frag.c. Another symptom is a kernel page fault in ipf_frag_delete() when called by ipf_frag_expire() via ipf_slowtimer(). Modified: stable/11/sys/contrib/ipfilter/netinet/ip_frag.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/10/sys/contrib/ipfilter/netinet/ip_frag.c Directory Properties: stable/10/ (props changed) Modified: stable/11/sys/contrib/ipfilter/netinet/ip_frag.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/ip_frag.c Fri Apr 21 01:50:41 2017 (r317240) +++ stable/11/sys/contrib/ipfilter/netinet/ip_frag.c Fri Apr 21 01:51:49 2017 (r317241) @@ -474,7 +474,7 @@ ipfr_frag_new(softc, softf, fin, pass, t IPFR_CMPSZ)) { RWLOCK_EXIT(lock); FBUMPD(ifs_exists); - KFREE(fra); + KFREE(fran); return NULL; } From owner-svn-src-stable@freebsd.org Fri Apr 21 01:51:50 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C2235D476BC; Fri, 21 Apr 2017 01:51:50 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id 911B9ACB; Fri, 21 Apr 2017 01:51:50 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3L1pnjN016228; Fri, 21 Apr 2017 01:51:49 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3L1pn3F016215; Fri, 21 Apr 2017 01:51:49 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201704210151.v3L1pn3F016215@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Fri, 21 Apr 2017 01:51: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: r317241 - in stable: 10/sys/contrib/ipfilter/netinet 11/sys/contrib/ipfilter/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 01:51:50 -0000 Author: cy Date: Fri Apr 21 01:51:49 2017 New Revision: 317241 URL: https://svnweb.freebsd.org/changeset/base/317241 Log: MFC r316809: Fix a use after free panic in ipfilter's fragment processing. Memory is malloc'd, then a search for a match in the fragment table is made and if the fragment matches, the wrong fragment table is freed, causing a use after free panic. This commit fixes this. A symptom of the problem is a kernel page fault in bcopy() called by ipf_frag_lookup() at line 715 in ip_frag.c. Another symptom is a kernel page fault in ipf_frag_delete() when called by ipf_frag_expire() via ipf_slowtimer(). Modified: stable/10/sys/contrib/ipfilter/netinet/ip_frag.c Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/11/sys/contrib/ipfilter/netinet/ip_frag.c Directory Properties: stable/11/ (props changed) Modified: stable/10/sys/contrib/ipfilter/netinet/ip_frag.c ============================================================================== --- stable/10/sys/contrib/ipfilter/netinet/ip_frag.c Fri Apr 21 01:50:41 2017 (r317240) +++ stable/10/sys/contrib/ipfilter/netinet/ip_frag.c Fri Apr 21 01:51:49 2017 (r317241) @@ -474,7 +474,7 @@ ipfr_frag_new(softc, softf, fin, pass, t IPFR_CMPSZ)) { RWLOCK_EXIT(lock); FBUMPD(ifs_exists); - KFREE(fra); + KFREE(fran); return NULL; } From owner-svn-src-stable@freebsd.org Fri Apr 21 02:02:53 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BED39D479D4; Fri, 21 Apr 2017 02:02:53 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id 8D936180; Fri, 21 Apr 2017 02:02:53 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3L22qgo022078; Fri, 21 Apr 2017 02:02:52 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3L22qvY022077; Fri, 21 Apr 2017 02:02:52 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201704210202.v3L22qvY022077@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Fri, 21 Apr 2017 02:02:52 +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: r317242 - in stable: 10/sys/contrib/ipfilter/netinet 11/sys/contrib/ipfilter/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 02:02:53 -0000 Author: cy Date: Fri Apr 21 02:02:52 2017 New Revision: 317242 URL: https://svnweb.freebsd.org/changeset/base/317242 Log: MFC r316811, r317139: Add missing free()'s after calls to randomize(). PR: NetBSD PR/50559 Obtained from: Netbsd radix_ipf.c r1.6 Modified: stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/11/sys/contrib/ipfilter/netinet/radix_ipf.c Directory Properties: stable/11/ (props changed) Modified: stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c ============================================================================== --- stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Fri Apr 21 01:51:49 2017 (r317241) +++ stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Fri Apr 21 02:02:52 2017 (r317242) @@ -36,7 +36,7 @@ static void buildnodes __P((addrfamily_t static ipf_rdx_node_t *ipf_rx_find_addr __P((ipf_rdx_node_t *, u_32_t *)); static ipf_rdx_node_t *ipf_rx_lookup __P((ipf_rdx_head_t *, addrfamily_t *, addrfamily_t *)); -static ipf_rdx_node_t *ipf_rx_match __P((ipf_rdx_head_t *, addrfamily_t *)); +/* $NetBSD: radix_ipf.c,v 1.6 2015/12/15 12:30:34 christos Exp $ */ /* * Foreword. @@ -1507,6 +1507,8 @@ random_add(rnh) add_addr(rnh, i, order[i]); checktree(rnh); } + + free(order); } @@ -1524,5 +1526,7 @@ random_delete(rnh) delete_addr(rnh, i); checktree(rnh); } + + free(order); } #endif /* RDX_DEBUG */ From owner-svn-src-stable@freebsd.org Fri Apr 21 02:02:53 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8477AD479CE; Fri, 21 Apr 2017 02:02:53 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id 5400917F; Fri, 21 Apr 2017 02:02:53 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3L22qI8022072; Fri, 21 Apr 2017 02:02:52 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3L22q7U022071; Fri, 21 Apr 2017 02:02:52 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201704210202.v3L22q7U022071@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Fri, 21 Apr 2017 02:02: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: r317242 - in stable: 10/sys/contrib/ipfilter/netinet 11/sys/contrib/ipfilter/netinet X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 02:02:53 -0000 Author: cy Date: Fri Apr 21 02:02:52 2017 New Revision: 317242 URL: https://svnweb.freebsd.org/changeset/base/317242 Log: MFC r316811, r317139: Add missing free()'s after calls to randomize(). PR: NetBSD PR/50559 Obtained from: Netbsd radix_ipf.c r1.6 Modified: stable/11/sys/contrib/ipfilter/netinet/radix_ipf.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Directory Properties: stable/10/ (props changed) Modified: stable/11/sys/contrib/ipfilter/netinet/radix_ipf.c ============================================================================== --- stable/11/sys/contrib/ipfilter/netinet/radix_ipf.c Fri Apr 21 01:51:49 2017 (r317241) +++ stable/11/sys/contrib/ipfilter/netinet/radix_ipf.c Fri Apr 21 02:02:52 2017 (r317242) @@ -1509,6 +1509,8 @@ random_add(rnh) add_addr(rnh, i, order[i]); checktree(rnh); } + + free(order); } @@ -1526,5 +1528,7 @@ random_delete(rnh) delete_addr(rnh, i); checktree(rnh); } + + free(order); } #endif /* RDX_DEBUG */ From owner-svn-src-stable@freebsd.org Fri Apr 21 02:11:45 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A95A4D47E45; Fri, 21 Apr 2017 02:11:45 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id 77F868B9; Fri, 21 Apr 2017 02:11:45 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3L2Bi6t026275; Fri, 21 Apr 2017 02:11:44 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3L2BiF0026274; Fri, 21 Apr 2017 02:11:44 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201704210211.v3L2BiF0026274@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Fri, 21 Apr 2017 02:11:44 +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: r317243 - stable/10/sys/contrib/ipfilter/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 02:11:45 -0000 Author: cy Date: Fri Apr 21 02:11:44 2017 New Revision: 317243 URL: https://svnweb.freebsd.org/changeset/base/317243 Log: MFC r317139 for real. Restore prototype accidently removed by r316811. Also remove $NetBSD$ accidentally added. Reported by: hps, lwhsu Pointy hat to: cy Modified: stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c ============================================================================== --- stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Fri Apr 21 02:02:52 2017 (r317242) +++ stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Fri Apr 21 02:11:44 2017 (r317243) @@ -36,7 +36,7 @@ static void buildnodes __P((addrfamily_t static ipf_rdx_node_t *ipf_rx_find_addr __P((ipf_rdx_node_t *, u_32_t *)); static ipf_rdx_node_t *ipf_rx_lookup __P((ipf_rdx_head_t *, addrfamily_t *, addrfamily_t *)); -/* $NetBSD: radix_ipf.c,v 1.6 2015/12/15 12:30:34 christos Exp $ */ +static ipf_rdx_node_t *ipf_rx_match __P((ipf_rdx_head_t *, addrfamily_t *)); /* * Foreword. From owner-svn-src-stable@freebsd.org Fri Apr 21 10:11:10 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4306AD48106; Fri, 21 Apr 2017 10:11:10 +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 mx1.freebsd.org (Postfix) with ESMTPS id 121D99FD; Fri, 21 Apr 2017 10:11:09 +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 v3LAB9qZ026114; Fri, 21 Apr 2017 10:11:09 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LAB9af026113; Fri, 21 Apr 2017 10:11:09 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704211011.v3LAB9af026113@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Fri, 21 Apr 2017 10:11: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: r317248 - stable/11/sys/x86/iommu X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 10:11:10 -0000 Author: kib Date: Fri Apr 21 10:11:08 2017 New Revision: 317248 URL: https://svnweb.freebsd.org/changeset/base/317248 Log: MFC r316851: Correct calculation of the entry->free_down in the invariants-checking code. Modified: stable/11/sys/x86/iommu/intel_gas.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/iommu/intel_gas.c ============================================================================== --- stable/11/sys/x86/iommu/intel_gas.c Fri Apr 21 07:43:44 2017 (r317247) +++ stable/11/sys/x86/iommu/intel_gas.c Fri Apr 21 10:11:08 2017 (r317248) @@ -198,7 +198,7 @@ dmar_gas_check_free(struct dmar_domain * l->free_down)); } else { v = MAX(entry->free_after, l->free_down); - v = MAX(entry->free_down, r->free_down); + v = MAX(v, r->free_down); MPASS(entry->free_down == v); } } From owner-svn-src-stable@freebsd.org Fri Apr 21 10:13:09 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F3BDFD482D1; Fri, 21 Apr 2017 10:13: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 mx1.freebsd.org (Postfix) with ESMTPS id C329BD90; Fri, 21 Apr 2017 10:13: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 v3LAD7QS026237; Fri, 21 Apr 2017 10:13:07 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LAD7fF026236; Fri, 21 Apr 2017 10:13:07 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704211013.v3LAD7fF026236@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Fri, 21 Apr 2017 10:13: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: r317249 - stable/11/sbin/fsck_ffs X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 10:13:09 -0000 Author: kib Date: Fri Apr 21 10:13:07 2017 New Revision: 317249 URL: https://svnweb.freebsd.org/changeset/base/317249 Log: MFC r316852: In fsck_ffs pass1, prevent the inosused variable from wrapping. PR: 218592 Modified: stable/11/sbin/fsck_ffs/pass1.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sbin/fsck_ffs/pass1.c ============================================================================== --- stable/11/sbin/fsck_ffs/pass1.c Fri Apr 21 10:11:08 2017 (r317248) +++ stable/11/sbin/fsck_ffs/pass1.c Fri Apr 21 10:13:07 2017 (r317249) @@ -133,9 +133,14 @@ pass1(void) */ if ((preen || inoopt) && usedsoftdep && !rebuildcg) { cp = &cg_inosused(cgp)[(inosused - 1) / CHAR_BIT]; - for ( ; inosused > 0; inosused -= CHAR_BIT, cp--) { - if (*cp == 0) + for ( ; inosused != 0; cp--) { + if (*cp == 0) { + if (inosused > CHAR_BIT) + inosused -= CHAR_BIT; + else + inosused = 0; continue; + } for (i = 1 << (CHAR_BIT - 1); i > 0; i >>= 1) { if (*cp & i) break; @@ -143,8 +148,6 @@ pass1(void) } break; } - if (inosused < 0) - inosused = 0; } /* * Allocate inoinfo structures for the allocated inodes. From owner-svn-src-stable@freebsd.org Fri Apr 21 10:16:36 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2D252D4842E; Fri, 21 Apr 2017 10:16:36 +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 mx1.freebsd.org (Postfix) with ESMTPS id F12ECFAA; Fri, 21 Apr 2017 10:16:35 +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 v3LAGZ45026434; Fri, 21 Apr 2017 10:16:35 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LAGZMx026433; Fri, 21 Apr 2017 10:16:35 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201704211016.v3LAGZMx026433@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Fri, 21 Apr 2017 10:16:35 +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: r317250 - stable/10/sbin/fsck_ffs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 10:16:36 -0000 Author: kib Date: Fri Apr 21 10:16:34 2017 New Revision: 317250 URL: https://svnweb.freebsd.org/changeset/base/317250 Log: MFC r316852: In fsck_ffs pass1, prevent the inosused variable from wrapping. PR: 218592 Modified: stable/10/sbin/fsck_ffs/pass1.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sbin/fsck_ffs/pass1.c ============================================================================== --- stable/10/sbin/fsck_ffs/pass1.c Fri Apr 21 10:13:07 2017 (r317249) +++ stable/10/sbin/fsck_ffs/pass1.c Fri Apr 21 10:16:34 2017 (r317250) @@ -133,9 +133,14 @@ pass1(void) */ if ((preen || inoopt) && usedsoftdep && !rebuildcg) { cp = &cg_inosused(cgp)[(inosused - 1) / CHAR_BIT]; - for ( ; inosused > 0; inosused -= CHAR_BIT, cp--) { - if (*cp == 0) + for ( ; inosused != 0; cp--) { + if (*cp == 0) { + if (inosused > CHAR_BIT) + inosused -= CHAR_BIT; + else + inosused = 0; continue; + } for (i = 1 << (CHAR_BIT - 1); i > 0; i >>= 1) { if (*cp & i) break; @@ -143,8 +148,6 @@ pass1(void) } break; } - if (inosused < 0) - inosused = 0; } /* * Allocate inoinfo structures for the allocated inodes. From owner-svn-src-stable@freebsd.org Fri Apr 21 16:45:44 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D2538D484D3; Fri, 21 Apr 2017 16:45:44 +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 mx1.freebsd.org (Postfix) with ESMTPS id 8AB0A1B79; Fri, 21 Apr 2017 16:45:44 +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 v3LGjhGZ090607; Fri, 21 Apr 2017 16:45:43 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LGjhEt090606; Fri, 21 Apr 2017 16:45:43 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704211645.v3LGjhEt090606@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Fri, 21 Apr 2017 16:45:43 +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: r317258 - stable/11/sys/kern X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 16:45:44 -0000 Author: ae Date: Fri Apr 21 16:45:43 2017 New Revision: 317258 URL: https://svnweb.freebsd.org/changeset/base/317258 Log: MFC r316770: Clear h/w csum flags on mbuf handled by UDP. When checksums of received IP and UDP header already checked, UDP uses sbappendaddr_locked() to pass received data to the socket. sbappendaddr_locked() uses given mbuf as is, and if NIC supports checksum offloading, mbuf contains csum_data and csum_flags that were calculated for already stripped headers. Some NICs support only limited checksums offloading and do not use CSUM_PSEUDO_HDR flag, and csum_data contains some value that UDP/TCP should use for pseudo header checksum calculation. When L2TP is used for tunneling with mpd5, ng_ksocket receives mbuf with filled csum_flags and csum_data, that were calculated for outer headers. When L2TP header is stripped, a packet that was tunneled goes to the IP layer and due to presence of csum_flags (without CSUM_PSEUDO_HDR) and csum_data, the UDP/TCP checksum check fails for this packet. Reported by: Irina Liakh Tested by: Irina Liakh MFC r316822,316823: Rework r316770 to make it protocol independent and general, like we do for streaming sockets. And do more cleanup in the sbappendaddr_locked_internal() to prevent leak information from existing mbuf to the one, that will be possible created later by netgraph. Suggested by: glebius Tested by: Irina Liakh Modified: stable/11/sys/kern/uipc_sockbuf.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/kern/uipc_sockbuf.c ============================================================================== --- stable/11/sys/kern/uipc_sockbuf.c Fri Apr 21 15:59:58 2017 (r317257) +++ stable/11/sys/kern/uipc_sockbuf.c Fri Apr 21 16:45:43 2017 (r317258) @@ -794,8 +794,20 @@ sbappendaddr_locked_internal(struct sock return (0); m->m_len = asa->sa_len; bcopy(asa, mtod(m, caddr_t), asa->sa_len); - if (m0) + if (m0) { m_clrprotoflags(m0); + m_tag_delete_chain(m0, NULL); + /* + * Clear some persistent info from pkthdr. + * We don't use m_demote(), because some netgraph consumers + * expect M_PKTHDR presence. + */ + m0->m_pkthdr.rcvif = NULL; + m0->m_pkthdr.flowid = 0; + m0->m_pkthdr.csum_flags = 0; + m0->m_pkthdr.fibnum = 0; + m0->m_pkthdr.rsstype = 0; + } if (ctrl_last) ctrl_last->m_next = m0; /* concatenate data to control */ else From owner-svn-src-stable@freebsd.org Fri Apr 21 16:47:10 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B0559D4857F; Fri, 21 Apr 2017 16:47:10 +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 mx1.freebsd.org (Postfix) with ESMTPS id 8B8A21CC7; Fri, 21 Apr 2017 16:47:10 +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 v3LGl9I8090724; Fri, 21 Apr 2017 16:47:09 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LGl9wA090721; Fri, 21 Apr 2017 16:47:09 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201704211647.v3LGl9wA090721@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 21 Apr 2017 16:47: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: r317259 - in stable/11: . release/scripts share/mk X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 16:47:10 -0000 Author: gjb Date: Fri Apr 21 16:47:09 2017 New Revision: 317259 URL: https://svnweb.freebsd.org/changeset/base/317259 Log: MFC r310181 (matthew) (originally r309314): Allow a user-overridable setting 'PKG_CMD' to control the command used to create a repo during 'make packages'. Sponsored by: The FreeBSD Foundation Modified: stable/11/Makefile.inc1 stable/11/release/scripts/make-pkg-package.sh stable/11/share/mk/bsd.own.mk Directory Properties: stable/11/ (props changed) Modified: stable/11/Makefile.inc1 ============================================================================== --- stable/11/Makefile.inc1 Fri Apr 21 16:45:43 2017 (r317258) +++ stable/11/Makefile.inc1 Fri Apr 21 16:47:09 2017 (r317259) @@ -1355,7 +1355,8 @@ packages: .PHONY package-pkg: .PHONY rm -rf /tmp/ports.${TARGET} || : env ${WMAKEENV:Q} SRCDIR=${.CURDIR} PORTSDIR=${PORTSDIR} REVISION=${_REVISION} \ - PKG_VERSION=${PKG_VERSION} REPODIR=${REPODIR} WSTAGEDIR=${WSTAGEDIR} \ + PKG_CMD=${PKG_CMD} PKG_VERSION=${PKG_VERSION} REPODIR=${REPODIR} \ + WSTAGEDIR=${WSTAGEDIR} \ sh ${.CURDIR}/release/scripts/make-pkg-package.sh real-packages: stage-packages create-packages sign-packages .PHONY @@ -1393,11 +1394,11 @@ create-world-packages: _pkgbootstrap .PH /^name/ { printf("===> Creating %s-", $$2); next } \ /^version/ { print $$2; next } \ ' ${WSTAGEDIR}/$${pkgname}.ucl ; \ - pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ create -M ${WSTAGEDIR}/$${pkgname}.ucl \ -p ${WSTAGEDIR}/$${pkgname}.plist \ -r ${WSTAGEDIR} \ - -o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} ; \ + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} ; \ done create-kernel-packages: _pkgbootstrap .PHONY @@ -1421,11 +1422,11 @@ create-kernel-packages: _pkgbootstrap .P /name/ { printf("===> Creating %s-", $$2); next } \ /version/ {print $$2; next } ' \ ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \ - pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ create -M ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl \ -p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \ -r ${KSTAGEDIR}/${DISTDIR} \ - -o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} .endfor .endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" @@ -1450,25 +1451,25 @@ create-kernel-packages: _pkgbootstrap .P /name/ { printf("===> Creating %s-", $$2); next } \ /version/ {print $$2; next } ' \ ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \ - pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ create -M ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl \ -p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \ -r ${KSTAGEDIR}/kernel.${_kernel} \ - -o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} .endfor .endif .endfor .endif sign-packages: _pkgbootstrap .PHONY - @[ -L "${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest" ] && \ - unlink ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest ; \ - pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh repo \ - -o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ - ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ + @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest" ] && \ + unlink ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest ; \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh repo \ + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ + ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ ${PKGSIGNKEY} ; \ - ln -s ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ - ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest + ln -s ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ + ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest # # Modified: stable/11/release/scripts/make-pkg-package.sh ============================================================================== --- stable/11/release/scripts/make-pkg-package.sh Fri Apr 21 16:45:43 2017 (r317258) +++ stable/11/release/scripts/make-pkg-package.sh Fri Apr 21 16:47:09 2017 (r317259) @@ -8,6 +8,7 @@ eval $(make -C ${SRCDIR} TARGET=${TARGET export WRKDIRPREFIX=/tmp/ports.${TARGET} export WSTAGEDIR=${WSTAGEDIR} export REPODIR=${REPODIR} +export PKG_CMD=${PKG_CMD} export PKG_VERSION=${PKG_VERSION} export WRKDIR=$(make -C ${PORTSDIR}/ports-mgmt/pkg -V WRKDIR) @@ -15,11 +16,11 @@ make -C ${PORTSDIR}/ports-mgmt/pkg TARGE CONFIGURE_ARGS="--host=$(uname -m)-portbld-freebsd${REVISION}" \ stage create-manifest -pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh \ +${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh \ create -v -m ${WRKDIR}/.metadir/ \ -r ${WRKDIR}/stage \ -p ${WRKDIR}/.PLIST.mktmp \ - -o ${REPODIR}/$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} -mkdir -p ${REPODIR}/$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}/Latest/ -cd ${REPODIR}/$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}/Latest/ && \ + -o ${REPODIR}/$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} +mkdir -p ${REPODIR}/$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}/Latest/ +cd ${REPODIR}/$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}/Latest/ && \ ln -s ../pkg-*.txz Modified: stable/11/share/mk/bsd.own.mk ============================================================================== --- stable/11/share/mk/bsd.own.mk Fri Apr 21 16:45:43 2017 (r317258) +++ stable/11/share/mk/bsd.own.mk Fri Apr 21 16:47:09 2017 (r317259) @@ -116,6 +116,9 @@ # NLSMODE National Language Support files mode. [${NOBINMODE}] # # INCLUDEDIR Base path for standard C include files [/usr/include] +# +# PKG_CMD Program for creating and manipulating packages. +# [pkg] .if !target(____) ____: @@ -249,6 +252,8 @@ XZ_CMD?= xz -T ${XZ_THREADS} XZ_CMD?= xz .endif +PKG_CMD?= pkg + # Pointer to the top directory into which tests are installed. Should not be # overriden by Makefiles, but the user may choose to set this in src.conf(5). TESTSBASE?= /usr/tests From owner-svn-src-stable@freebsd.org Fri Apr 21 16:47:58 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C252DD485EF; Fri, 21 Apr 2017 16:47:58 +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 mx1.freebsd.org (Postfix) with ESMTPS id 945871DF7; Fri, 21 Apr 2017 16:47:58 +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 v3LGlvXM090812; Fri, 21 Apr 2017 16:47:57 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LGlvQv090811; Fri, 21 Apr 2017 16:47:57 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201704211647.v3LGlvQv090811@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 21 Apr 2017 16:47: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: r317260 - stable/11 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 16:47:58 -0000 Author: gjb Date: Fri Apr 21 16:47:57 2017 New Revision: 317260 URL: https://svnweb.freebsd.org/changeset/base/317260 Log: MFC r317100: Use relative symlink for 'latest' to allow repo to work after being moved. PR: 217197 Sponsored by: The FreeBSD Foundation Modified: stable/11/Makefile.inc1 Directory Properties: stable/11/ (props changed) Modified: stable/11/Makefile.inc1 ============================================================================== --- stable/11/Makefile.inc1 Fri Apr 21 16:47:09 2017 (r317259) +++ stable/11/Makefile.inc1 Fri Apr 21 16:47:57 2017 (r317260) @@ -1468,8 +1468,8 @@ sign-packages: _pkgbootstrap .PHONY -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ ${PKGSIGNKEY} ; \ - ln -s ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ - ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest + cd ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI); \ + ln -s ${PKG_VERSION} latest # # From owner-svn-src-stable@freebsd.org Fri Apr 21 17:03:49 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 85A63D48E1F; Fri, 21 Apr 2017 17:03:49 +0000 (UTC) (envelope-from dim@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 mx1.freebsd.org (Postfix) with ESMTPS id 5F299A96; Fri, 21 Apr 2017 17:03:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3LH3mA5098691; Fri, 21 Apr 2017 17:03:48 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LH3mVL098689; Fri, 21 Apr 2017 17:03:48 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201704211703.v3LH3mVL098689@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Fri, 21 Apr 2017 17:03:48 +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: r317261 - stable/11/contrib/llvm/lib/Target/X86 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 17:03:49 -0000 Author: dim Date: Fri Apr 21 17:03:48 2017 New Revision: 317261 URL: https://svnweb.freebsd.org/changeset/base/317261 Log: MFC r316989: Pull in r300404 from upstream llvm trunk (by me): Use correct registers for "A" inline asm constraint Summary: In PR32594, inline assembly using the 'A' constraint on x86_64 causes llvm to crash with a "Cannot select" stack trace. This is because `X86TargetLowering::getRegForInlineAsmConstraint` hardcodes that 'A' means the EAX and EDX registers. However, on x86_64 it means the RAX and RDX registers, and on 16-bit x86 (ia16?) it means the old AX and DX registers. Add new register classes in `X86RegisterInfo.td` to support these cases, and amend the logic in `getRegForInlineAsmConstraint` to cope with different subtargets. Also add a test case, derived from PR32594. Reviewers: craig.topper, qcolombet, RKSimon, ab Reviewed By: ab Subscribers: ab, emaste, royger, llvm-commits Differential Revision: https://reviews.llvm.org/D31902 This should fix crashes when using the 'A' constraint on amd64, for example as it is being used in Xen. Reported by: royger MFC r317079: Pull in r300429 from upstream llvm trunk (by Benjamin Kramer): [X86] Remove special handling for 16 bit for A asm constraints. Our 16 bit support is assembler-only + the terrible hack that is .code16gcc. Simply using 32 bit registers does the right thing for the latter. Fixes PR32681. This fixes some cases of assembling 16 bit code (i.e. SeaBIOS) that uses the 'A' inline asm constraint, after r316989. Modified: stable/11/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp stable/11/contrib/llvm/lib/Target/X86/X86RegisterInfo.td Directory Properties: stable/11/ (props changed) Modified: stable/11/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp ============================================================================== --- stable/11/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Fri Apr 21 16:47:57 2017 (r317260) +++ stable/11/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Fri Apr 21 17:03:48 2017 (r317261) @@ -34717,10 +34717,17 @@ X86TargetLowering::getRegForInlineAsmCon return Res; } - // 'A' means EAX + EDX. + // 'A' means [ER]AX + [ER]DX. if (Constraint == "A") { - Res.first = X86::EAX; - Res.second = &X86::GR32_ADRegClass; + if (Subtarget.is64Bit()) { + Res.first = X86::RAX; + Res.second = &X86::GR64_ADRegClass; + } else { + assert((Subtarget.is32Bit() || Subtarget.is16Bit()) && + "Expecting 64, 32 or 16 bit subtarget"); + Res.first = X86::EAX; + Res.second = &X86::GR32_ADRegClass; + } return Res; } return Res; Modified: stable/11/contrib/llvm/lib/Target/X86/X86RegisterInfo.td ============================================================================== --- stable/11/contrib/llvm/lib/Target/X86/X86RegisterInfo.td Fri Apr 21 16:47:57 2017 (r317260) +++ stable/11/contrib/llvm/lib/Target/X86/X86RegisterInfo.td Fri Apr 21 17:03:48 2017 (r317261) @@ -437,8 +437,9 @@ def LOW32_ADDR_ACCESS : RegisterClass<"X def LOW32_ADDR_ACCESS_RBP : RegisterClass<"X86", [i32], 32, (add LOW32_ADDR_ACCESS, RBP)>; -// A class to support the 'A' assembler constraint: EAX then EDX. +// A class to support the 'A' assembler constraint: [ER]AX then [ER]DX. def GR32_AD : RegisterClass<"X86", [i32], 32, (add EAX, EDX)>; +def GR64_AD : RegisterClass<"X86", [i64], 64, (add RAX, RDX)>; // Scalar SSE2 floating point registers. def FR32 : RegisterClass<"X86", [f32], 32, (sequence "XMM%u", 0, 15)>; From owner-svn-src-stable@freebsd.org Fri Apr 21 17:09:39 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 26234D48EE0; Fri, 21 Apr 2017 17:09:39 +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 mx1.freebsd.org (Postfix) with ESMTPS id C56B5C51; Fri, 21 Apr 2017 17:09:38 +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 v3LH9btF098943; Fri, 21 Apr 2017 17:09:37 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LH9bTI098942; Fri, 21 Apr 2017 17:09:37 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201704211709.v3LH9bTI098942@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Fri, 21 Apr 2017 17:09: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: r317262 - stable/11/sys/netpfil/ipfw X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 17:09:39 -0000 Author: ae Date: Fri Apr 21 17:09:37 2017 New Revision: 317262 URL: https://svnweb.freebsd.org/changeset/base/317262 Log: MFC r316824: The rule field in the ipfw_dyn_rule structure is used as storage to pass rule number and rule set to userland. In r272840 the kernel internal rule representation was changed and the rulenum field of struct ip_fw_rule got the type uint32_t, but userlevel representation still have the type uint16_t. To not overflow the size of pointer on the systems with 32-bit pointer size use separate variable to copy rulenum and set. Reported by: PVS-Studio Modified: stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c ============================================================================== --- stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c Fri Apr 21 17:03:48 2017 (r317261) +++ stable/11/sys/netpfil/ipfw/ip_fw_dynamic.c Fri Apr 21 17:09:37 2017 (r317262) @@ -1710,15 +1710,17 @@ ipfw_dyn_get_count(void) static void export_dyn_rule(ipfw_dyn_rule *src, ipfw_dyn_rule *dst) { + uint16_t rulenum; + rulenum = (uint16_t)src->rule->rulenum; memcpy(dst, src, sizeof(*src)); - memcpy(&(dst->rule), &(src->rule->rulenum), sizeof(src->rule->rulenum)); + memcpy(&dst->rule, &rulenum, sizeof(rulenum)); /* * store set number into high word of * dst->rule pointer. */ - memcpy((char *)&dst->rule + sizeof(src->rule->rulenum), - &(src->rule->set), sizeof(src->rule->set)); + memcpy((char *)&dst->rule + sizeof(rulenum), &src->rule->set, + sizeof(src->rule->set)); /* * store a non-null value in "next". * The userland code will interpret a @@ -1726,8 +1728,8 @@ export_dyn_rule(ipfw_dyn_rule *src, ipfw * for the last dynamic rule. */ memcpy(&dst->next, &dst, sizeof(dst)); - dst->expire = - TIME_LEQ(dst->expire, time_uptime) ? 0 : dst->expire - time_uptime; + dst->expire = TIME_LEQ(dst->expire, time_uptime) ? 0: + dst->expire - time_uptime; } /* From owner-svn-src-stable@freebsd.org Fri Apr 21 19:41:35 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0385DD49DF5; Fri, 21 Apr 2017 19:41:35 +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 mx1.freebsd.org (Postfix) with ESMTPS id AE3ABE70; Fri, 21 Apr 2017 19:41:34 +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 v3LJfXCQ064877; Fri, 21 Apr 2017 19:41:33 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LJfX4W064875; Fri, 21 Apr 2017 19:41:33 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201704211941.v3LJfX4W064875@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 21 Apr 2017 19:41:33 +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: r317266 - in stable: 10/release/doc/share/xml 11/release/doc/share/xml X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 19:41:35 -0000 Author: gjb Date: Fri Apr 21 19:41:33 2017 New Revision: 317266 URL: https://svnweb.freebsd.org/changeset/base/317266 Log: Document EN-17:01 through EN-17:05, SA-16:39 through SA-17:03 Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/share/xml/errata.xml stable/10/release/doc/share/xml/security.xml Changes in other areas also in this revision: Modified: stable/11/release/doc/share/xml/errata.xml stable/11/release/doc/share/xml/security.xml Modified: stable/10/release/doc/share/xml/errata.xml ============================================================================== --- stable/10/release/doc/share/xml/errata.xml Fri Apr 21 19:27:33 2017 (r317265) +++ stable/10/release/doc/share/xml/errata.xml Fri Apr 21 19:41:33 2017 (r317266) @@ -127,6 +127,13 @@ Update timezone database information + + + FreeBSD-EN-17:05.xen + 23 February 2017 + Xen migration enhancements + Modified: stable/10/release/doc/share/xml/security.xml ============================================================================== --- stable/10/release/doc/share/xml/security.xml Fri Apr 21 19:27:33 2017 (r317265) +++ stable/10/release/doc/share/xml/security.xml Fri Apr 21 19:41:33 2017 (r317266) @@ -170,6 +170,35 @@ Possible escape from &man.bhyve.8; virtual machine + + + FreeBSD-SA-16:39.ntp + 22 December 2016 + Multiple vulnerabilities + + + + FreeBSD-SA-17:01.openssh + 10 January 2017 + Multiple vulnerabilities + + + + FreeBSD-SA-17:02.openssl + 23 February 2017 + Fix OpenSSL RC4_MD5 cipher + vulnerability + + + + FreeBSD-SA-17:03.ntp + 12 April 2017 + Multiple vulnerabilities + From owner-svn-src-stable@freebsd.org Fri Apr 21 19:41:35 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 20B30D49DF9; Fri, 21 Apr 2017 19:41:35 +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 mx1.freebsd.org (Postfix) with ESMTPS id F1EBFE71; Fri, 21 Apr 2017 19:41:34 +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 v3LJfYoc064884; Fri, 21 Apr 2017 19:41:34 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LJfYn7064882; Fri, 21 Apr 2017 19:41:34 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201704211941.v3LJfYn7064882@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 21 Apr 2017 19:41:34 +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: r317266 - in stable: 10/release/doc/share/xml 11/release/doc/share/xml X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 19:41:35 -0000 Author: gjb Date: Fri Apr 21 19:41:33 2017 New Revision: 317266 URL: https://svnweb.freebsd.org/changeset/base/317266 Log: Document EN-17:01 through EN-17:05, SA-16:39 through SA-17:03 Sponsored by: The FreeBSD Foundation Modified: stable/11/release/doc/share/xml/errata.xml stable/11/release/doc/share/xml/security.xml Changes in other areas also in this revision: Modified: stable/10/release/doc/share/xml/errata.xml stable/10/release/doc/share/xml/security.xml Modified: stable/11/release/doc/share/xml/errata.xml ============================================================================== --- stable/11/release/doc/share/xml/errata.xml Fri Apr 21 19:27:33 2017 (r317265) +++ stable/11/release/doc/share/xml/errata.xml Fri Apr 21 19:41:33 2017 (r317266) @@ -48,6 +48,45 @@ Fix incorrectly defined unicode characters + + + FreeBSD-EN-17:01.pcie + 23 February 2017 + Fix system hang when booting when PCI-express + HotPlug is enabled + + + + FreeBSD-EN-17:02.yp + 23 February 2017 + Fix NIS master updates are not pushed to an NIS + slave + + + + FreeBSD-EN-17:03.hyperv + 23 February 2017 + Fix compatibility with Hyper-V/storage after + KB3172614 or KB3179574 + + + + FreeBSD-EN-17:04.mandoc + 23 February 2017 + Make &man.makewhatis.1; output + reproducible + + + + FreeBSD-EN-17:05.xen + 23 February 2017 + Xen migration enhancements + Modified: stable/11/release/doc/share/xml/security.xml ============================================================================== --- stable/11/release/doc/share/xml/security.xml Fri Apr 21 19:27:33 2017 (r317265) +++ stable/11/release/doc/share/xml/security.xml Fri Apr 21 19:41:33 2017 (r317266) @@ -55,6 +55,34 @@ Possible escape from &man.bhyve.8; virtual machine + + + FreeBSD-SA-16:39.ntp + 22 December 2016 + Multiple vulnerabilities + + + + FreeBSD-SA-17:01.openssh + 10 January 2017 + Multiple vulnerabilities + + + + FreeBSD-SA-17:02.openssl + 23 February 2017 + Multiple vulnerabilities + + + + FreeBSD-SA-17:03.ntp + 12 April 2017 + Multiple vulnerabilities + From owner-svn-src-stable@freebsd.org Fri Apr 21 20:03:09 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5CA6AD495F9; Fri, 21 Apr 2017 20:03:09 +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 mx1.freebsd.org (Postfix) with ESMTPS id 1438B275; Fri, 21 Apr 2017 20:03:09 +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 v3LK38VH074854; Fri, 21 Apr 2017 20:03:08 GMT (envelope-from pfg@FreeBSD.org) Received: (from pfg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3LK38RA074853; Fri, 21 Apr 2017 20:03:08 GMT (envelope-from pfg@FreeBSD.org) Message-Id: <201704212003.v3LK38RA074853@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pfg set sender to pfg@FreeBSD.org using -f From: "Pedro F. Giffuni" Date: Fri, 21 Apr 2017 20:03: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: r317268 - stable/11/usr.bin/mkimg X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2017 20:03:09 -0000 Author: pfg Date: Fri Apr 21 20:03:08 2017 New Revision: 317268 URL: https://svnweb.freebsd.org/changeset/base/317268 Log: MFC r302664: mkimg(1): minor cleanups with argument order in calloc(3). Generally the first argument in calloc is supposed to stand for a count and the second for a size. Try to make that consistent. While here, attempt to make some use of the overflow detection capability in calloc(3). Requested by: manu Modified: stable/11/usr.bin/mkimg/vmdk.c Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.bin/mkimg/vmdk.c ============================================================================== --- stable/11/usr.bin/mkimg/vmdk.c Fri Apr 21 19:53:52 2017 (r317267) +++ stable/11/usr.bin/mkimg/vmdk.c Fri Apr 21 20:03:08 2017 (r317268) @@ -149,7 +149,7 @@ vmdk_write(int fd) gdsz = (ngts * sizeof(uint32_t) + VMDK_SECTOR_SIZE - 1) & ~(VMDK_SECTOR_SIZE - 1); - gd = calloc(gdsz, 1); + gd = calloc(1, gdsz); if (gd == NULL) { free(desc); return (ENOMEM); @@ -161,7 +161,7 @@ vmdk_write(int fd) sec += VMDK_NGTES * sizeof(uint32_t) / VMDK_SECTOR_SIZE; } - rgd = calloc(gdsz, 1); + rgd = calloc(1, gdsz); if (rgd == NULL) { free(gd); free(desc); @@ -183,14 +183,14 @@ vmdk_write(int fd) le64enc(&hdr.overhead, sec); be32enc(&hdr.nl_test, VMDK_NL_TEST); - gtsz = ngts * VMDK_NGTES * sizeof(uint32_t); - gt = calloc(gtsz, 1); + gt = calloc(ngts, VMDK_NGTES * sizeof(uint32_t)); if (gt == NULL) { free(rgd); free(gd); free(desc); return (ENOMEM); } + gtsz = ngts * VMDK_NGTES * sizeof(uint32_t); cursec = sec; blkcnt = (grainsz * VMDK_SECTOR_SIZE) / secsz; @@ -225,7 +225,7 @@ vmdk_write(int fd) cur = VMDK_SECTOR_SIZE + desc_len + (gdsz + gtsz) * 2; lim = sec * VMDK_SECTOR_SIZE; if (cur < lim) { - buf = calloc(VMDK_SECTOR_SIZE, 1); + buf = calloc(1, VMDK_SECTOR_SIZE); if (buf == NULL) error = ENOMEM; while (!error && cur < lim) { From owner-svn-src-stable@freebsd.org Sat Apr 22 01:28:34 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C1950D46A06; Sat, 22 Apr 2017 01:28:34 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from mail.baldwin.cx (bigwig.baldwin.cx [96.47.65.170]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9F49DE0B; Sat, 22 Apr 2017 01:28:34 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (c-73-231-226-104.hsd1.ca.comcast.net [73.231.226.104]) by mail.baldwin.cx (Postfix) with ESMTPSA id 7151210A82D; Fri, 21 Apr 2017 21:28:32 -0400 (EDT) From: John Baldwin To: Eric Badger Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: Re: svn commit: r315949 - in stable: 10/sys/kern 10/sys/sys 10/tests/sys/kern 11/sys/kern 11/sys/sys 11/tests/sys/kern Date: Fri, 21 Apr 2017 15:11 -0700 Message-ID: <6768216.Fy5yUeFf9F@ralph.baldwin.cx> User-Agent: KMail/4.14.10 (FreeBSD/11.0-STABLE; KDE/4.14.10; amd64; ; ) In-Reply-To: <201703251333.v2PDXOmS004369@repo.freebsd.org> References: <201703251333.v2PDXOmS004369@repo.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (mail.baldwin.cx); Fri, 21 Apr 2017 21:28:32 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.99.2 at mail.baldwin.cx X-Virus-Status: Clean X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Apr 2017 01:28:34 -0000 On Saturday, March 25, 2017 01:33:24 PM Eric Badger wrote: > Author: badger > Date: Sat Mar 25 13:33:23 2017 > New Revision: 315949 > URL: https://svnweb.freebsd.org/changeset/base/315949 > > Log: > MFC r313992, r314075, r314118, r315484: > > r315484: > ptrace_test: eliminate assumption about thread scheduling > > A couple of the ptrace tests make assumptions about which thread in a > multithreaded process will run after a halt. This makes the tests less > portable across branches, and susceptible to future breakage. Instead, > twiddle thread scheduling and priorities to match the tests' > expectation. > > r314118: > Actually fix buildworlds other than i386/amd64/sparc64 after r313992 > > Disable offending test for platforms without a userspace visible > breakpoint(). > > r314075: > Fix world build for archs where __builtin_debugtrap() does not work. > > The offending code was introduced in r313992. > > r313992: > Defer ptracestop() signals that cannot be delivered immediately > > When a thread is stopped in ptracestop(), the ptrace(2) user may request > a signal be delivered upon resumption of the thread. Heretofore, those signals > were discarded unless ptracestop()'s caller was issignal(). Fix this by > modifying ptracestop() to queue up signals requested by the ptrace user that > will be delivered when possible. Take special care when the signal is SIGKILL > (usually generated from a PT_KILL request); no new stop events should be > triggered after a PT_KILL. > > Add a number of tests for the new functionality. Several tests were authored > by jhb. > > PR: 212607 > Sponsored by: Dell EMC So this MFC happens to break the KBI of 'struct thread' because 'struct sigqueue' is embedded in 'struct thread' (rather than a pointer). This apparently results in panics if you use an nvidia-driver package built on 11.0-release on 11.0-stable, and that's the type of KBI we try to preserve. (We tend to only add new fields to the end of 'struct thread' and 'struct proc' in stable for example.) This one is a bit ugly to deal with though. I wonder if for the stable branches only if we could move the sq_ptrace out of the sigqueue struct and add it as a new field to the end of 'struct thread' explicitly? It would probably be pretty hacky, but it would be good to fix this before 11.1 so that the KBI wouldn't be broken for a user going from 11.0 to 11.1. -- John Baldwin From owner-svn-src-stable@freebsd.org Sat Apr 22 05:41:03 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D70AED4AEF0; Sat, 22 Apr 2017 05:41:03 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (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 52C2A779; Sat, 22 Apr 2017 05:41:03 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id v3M5ewfI034526 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sat, 22 Apr 2017 08:40:58 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua v3M5ewfI034526 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id v3M5ewjh034525; Sat, 22 Apr 2017 08:40:58 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 22 Apr 2017 08:40:58 +0300 From: Konstantin Belousov To: John Baldwin Cc: Eric Badger , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: Re: svn commit: r315949 - in stable: 10/sys/kern 10/sys/sys 10/tests/sys/kern 11/sys/kern 11/sys/sys 11/tests/sys/kern Message-ID: <20170422054058.GM1788@kib.kiev.ua> References: <201703251333.v2PDXOmS004369@repo.freebsd.org> <6768216.Fy5yUeFf9F@ralph.baldwin.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6768216.Fy5yUeFf9F@ralph.baldwin.cx> User-Agent: Mutt/1.8.0 (2017-02-23) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Apr 2017 05:41:03 -0000 On Fri, Apr 21, 2017 at 03:11:00PM -0700, John Baldwin wrote: > So this MFC happens to break the KBI of 'struct thread' because > 'struct sigqueue' is embedded in 'struct thread' (rather than > a pointer). This apparently results in panics if you use an > nvidia-driver package built on 11.0-release on 11.0-stable, and > that's the type of KBI we try to preserve. (We tend to only add new > fields to the end of 'struct thread' and 'struct proc' in stable for > example.) This one is a bit ugly to deal with though. I wonder if > for the stable branches only if we could move the sq_ptrace out of > the sigqueue struct and add it as a new field to the end of 'struct > thread' explicitly? It would probably be pretty hacky, but it would be > good to fix this before 11.1 so that the KBI wouldn't be broken for a > user going from 11.0 to 11.1. It might be easier to repurpose existing td_sigqueue as padding with corrected size, and place real sigqueue at the end of the structure. add From owner-svn-src-stable@freebsd.org Sat Apr 22 18:55:27 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 501FBD4BAE9; Sat, 22 Apr 2017 18:55:27 +0000 (UTC) (envelope-from karels@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 mx1.freebsd.org (Postfix) with ESMTPS id 1533EE45; Sat, 22 Apr 2017 18:55:27 +0000 (UTC) (envelope-from karels@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3MItQdS035539; Sat, 22 Apr 2017 18:55:26 GMT (envelope-from karels@FreeBSD.org) Received: (from karels@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3MItQOD035538; Sat, 22 Apr 2017 18:55:26 GMT (envelope-from karels@FreeBSD.org) Message-Id: <201704221855.v3MItQOD035538@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: karels set sender to karels@FreeBSD.org using -f From: Mike Karels Date: Sat, 22 Apr 2017 18:55:26 +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: r317286 - stable/11/sys/netinet X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Apr 2017 18:55:27 -0000 Author: karels Date: Sat Apr 22 18:55:25 2017 New Revision: 317286 URL: https://svnweb.freebsd.org/changeset/base/317286 Log: MFC r316065: Enable route and LLE (ndp) caching in TCP/IPv6 tcp_output.c was using a route on the stack for IPv6, which does not allow route caching or LLE/ndp caching. Switch to using the route (v6 flavor) in the in_pcb, which was already present, which caches both L3 and L2 lookups. Reviewed by: gnn hiren Modified: stable/11/sys/netinet/tcp_output.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/tcp_output.c ============================================================================== --- stable/11/sys/netinet/tcp_output.c Sat Apr 22 18:43:15 2017 (r317285) +++ stable/11/sys/netinet/tcp_output.c Sat Apr 22 18:55:25 2017 (r317286) @@ -1365,9 +1365,6 @@ send: */ #ifdef INET6 if (isipv6) { - struct route_in6 ro; - - bzero(&ro, sizeof(ro)); /* * we separately set hoplimit for every segment, since the * user might want to change the value via setsockopt. @@ -1399,13 +1396,13 @@ send: #endif /* TODO: IPv6 IP6TOS_ECT bit on */ - error = ip6_output(m, tp->t_inpcb->in6p_outputopts, &ro, + error = ip6_output(m, tp->t_inpcb->in6p_outputopts, + &tp->t_inpcb->inp_route6, ((so->so_options & SO_DONTROUTE) ? IP_ROUTETOIF : 0), NULL, NULL, tp->t_inpcb); - if (error == EMSGSIZE && ro.ro_rt != NULL) - mtu = ro.ro_rt->rt_mtu; - RO_RTFREE(&ro); + if (error == EMSGSIZE && tp->t_inpcb->inp_route6.ro_rt != NULL) + mtu = tp->t_inpcb->inp_route6.ro_rt->rt_mtu; } #endif /* INET6 */ #if defined(INET) && defined(INET6) From owner-svn-src-stable@freebsd.org Sat Apr 22 21:50:01 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4918BD4BDDB; Sat, 22 Apr 2017 21:50:01 +0000 (UTC) (envelope-from rgrimes@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 mx1.freebsd.org (Postfix) with ESMTPS id 0CE46809; Sat, 22 Apr 2017 21:50:00 +0000 (UTC) (envelope-from rgrimes@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3MLo0rP005569; Sat, 22 Apr 2017 21:50:00 GMT (envelope-from rgrimes@FreeBSD.org) Received: (from rgrimes@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3MLo02f005568; Sat, 22 Apr 2017 21:50:00 GMT (envelope-from rgrimes@FreeBSD.org) Message-Id: <201704222150.v3MLo02f005568@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rgrimes set sender to rgrimes@FreeBSD.org using -f From: "Rodney W. Grimes" Date: Sat, 22 Apr 2017 21:50: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: r317301 - stable/11/share/man/man7 X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Apr 2017 21:50:01 -0000 Author: rgrimes Date: Sat Apr 22 21:49:59 2017 New Revision: 317301 URL: https://svnweb.freebsd.org/changeset/base/317301 Log: MFC r314691: Document 3 more src/ directories Approved by: grehan (mentor) Modified: stable/11/share/man/man7/hier.7 Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man7/hier.7 ============================================================================== --- stable/11/share/man/man7/hier.7 Sat Apr 22 21:40:31 2017 (r317300) +++ stable/11/share/man/man7/hier.7 Sat Apr 22 21:49:59 2017 (r317301) @@ -702,6 +702,9 @@ source code for files in files required to produce a .Fx release +.It Pa rescue/ +source code for files in +.Pa /rescue .It Pa sbin/ source code for files in .Pa /sbin @@ -713,6 +716,11 @@ source for files in .Pa /usr/share .It Pa sys/ kernel source code +.It Pa targets/ +support for experimental DIRDEPS_BUILD +.It Pa tests/ +source code for files in +.Pa /usr/tests .It Pa tools/ tools used for maintenance and testing of .Fx From owner-svn-src-stable@freebsd.org Sat Apr 22 21:57:27 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BC50BD4BFD6; Sat, 22 Apr 2017 21:57:27 +0000 (UTC) (envelope-from rgrimes@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 mx1.freebsd.org (Postfix) with ESMTPS id 87E46C0D; Sat, 22 Apr 2017 21:57:27 +0000 (UTC) (envelope-from rgrimes@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3MLvQr0009392; Sat, 22 Apr 2017 21:57:26 GMT (envelope-from rgrimes@FreeBSD.org) Received: (from rgrimes@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3MLvQxm009391; Sat, 22 Apr 2017 21:57:26 GMT (envelope-from rgrimes@FreeBSD.org) Message-Id: <201704222157.v3MLvQxm009391@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rgrimes set sender to rgrimes@FreeBSD.org using -f From: "Rodney W. Grimes" Date: Sat, 22 Apr 2017 21:57:26 +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: r317302 - stable/10/share/man/man7 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Apr 2017 21:57:27 -0000 Author: rgrimes Date: Sat Apr 22 21:57:26 2017 New Revision: 317302 URL: https://svnweb.freebsd.org/changeset/base/317302 Log: MFC: r314691 Document 3 more src/ directories Approved by: grehan (mentor) Modified: stable/10/share/man/man7/hier.7 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man7/hier.7 ============================================================================== --- stable/10/share/man/man7/hier.7 Sat Apr 22 21:49:59 2017 (r317301) +++ stable/10/share/man/man7/hier.7 Sat Apr 22 21:57:26 2017 (r317302) @@ -714,6 +714,9 @@ source code for files in files required to produce a .Fx release +.It Pa rescue/ +source code for files in +.Pa /rescue .It Pa sbin/ source code for files in .Pa /sbin @@ -725,6 +728,11 @@ source for files in .Pa /usr/share .It Pa sys/ kernel source code +.It Pa targets/ +support for experimental DIRDEPS_BUILD +.It Pa tests/ +source code for files in +.Pa /usr/tests .It Pa tools/ tools used for maintenance and testing of .Fx From owner-svn-src-stable@freebsd.org Sat Apr 22 22:05:25 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0C095D4B1CC; Sat, 22 Apr 2017 22:05:25 +0000 (UTC) (envelope-from rgrimes@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 mx1.freebsd.org (Postfix) with ESMTPS id CF4CB6C; Sat, 22 Apr 2017 22:05:24 +0000 (UTC) (envelope-from rgrimes@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3MM5NiM013277; Sat, 22 Apr 2017 22:05:23 GMT (envelope-from rgrimes@FreeBSD.org) Received: (from rgrimes@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3MM5NgG013276; Sat, 22 Apr 2017 22:05:23 GMT (envelope-from rgrimes@FreeBSD.org) Message-Id: <201704222205.v3MM5NgG013276@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rgrimes set sender to rgrimes@FreeBSD.org using -f From: "Rodney W. Grimes" Date: Sat, 22 Apr 2017 22:05: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: r317303 - in stable: 10/share/examples/bhyve 11/share/examples/bhyve X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Apr 2017 22:05:25 -0000 Author: rgrimes Date: Sat Apr 22 22:05:23 2017 New Revision: 317303 URL: https://svnweb.freebsd.org/changeset/base/317303 Log: MFC: r314694 Make vmrun.sh passthrough -u and -w to bhybe PR: 214273 Submitted by: Martin Birgmeier Approved by: grehan (mentor) Modified: stable/10/share/examples/bhyve/vmrun.sh Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/11/share/examples/bhyve/vmrun.sh Directory Properties: stable/11/ (props changed) Modified: stable/10/share/examples/bhyve/vmrun.sh ============================================================================== --- stable/10/share/examples/bhyve/vmrun.sh Sat Apr 22 21:57:26 2017 (r317302) +++ stable/10/share/examples/bhyve/vmrun.sh Sat Apr 22 22:05:23 2017 (r317303) @@ -65,6 +65,8 @@ usage() { echo " -m: memory size (default is ${DEFAULT_MEMSIZE})" echo " -p: pass-through a host PCI device at bus/slot/func (e.g. 10/0/0)" echo " -t: tap device for virtio-net (default is $DEFAULT_TAPDEV)" + echo " -u: RTC keeps UTC time" + echo " -w: ignore unimplemented MSRs" echo "" [ -n "$msg" ] && errmsg "$msg" exit 1 @@ -93,7 +95,7 @@ loader_opt="" bhyverun_opt="-H -A -P" pass_total=0 -while getopts ac:C:d:e:g:hH:iI:l:m:p:t: c ; do +while getopts ac:C:d:e:g:hH:iI:l:m:p:t:uw c ; do case $c in a) bhyverun_opt="${bhyverun_opt} -a" @@ -140,6 +142,12 @@ while getopts ac:C:d:e:g:hH:iI:l:m:p:t: eval "tap_dev${tap_total}=\"${OPTARG}\"" tap_total=$(($tap_total + 1)) ;; + u) + bhyverun_opt="${bhyverun_opt} -u" + ;; + w) + bhyverun_opt="${bhyverun_opt} -w" + ;; *) usage ;; From owner-svn-src-stable@freebsd.org Sat Apr 22 22:05:25 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 45B9BD4B1D1; Sat, 22 Apr 2017 22:05:25 +0000 (UTC) (envelope-from rgrimes@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 mx1.freebsd.org (Postfix) with ESMTPS id 1462A6E; Sat, 22 Apr 2017 22:05:25 +0000 (UTC) (envelope-from rgrimes@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3MM5OVa013283; Sat, 22 Apr 2017 22:05:24 GMT (envelope-from rgrimes@FreeBSD.org) Received: (from rgrimes@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3MM5Ou6013282; Sat, 22 Apr 2017 22:05:24 GMT (envelope-from rgrimes@FreeBSD.org) Message-Id: <201704222205.v3MM5Ou6013282@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rgrimes set sender to rgrimes@FreeBSD.org using -f From: "Rodney W. Grimes" Date: Sat, 22 Apr 2017 22:05:24 +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: r317303 - in stable: 10/share/examples/bhyve 11/share/examples/bhyve X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Apr 2017 22:05:25 -0000 Author: rgrimes Date: Sat Apr 22 22:05:23 2017 New Revision: 317303 URL: https://svnweb.freebsd.org/changeset/base/317303 Log: MFC: r314694 Make vmrun.sh passthrough -u and -w to bhybe PR: 214273 Submitted by: Martin Birgmeier Approved by: grehan (mentor) Modified: stable/11/share/examples/bhyve/vmrun.sh Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/10/share/examples/bhyve/vmrun.sh Directory Properties: stable/10/ (props changed) Modified: stable/11/share/examples/bhyve/vmrun.sh ============================================================================== --- stable/11/share/examples/bhyve/vmrun.sh Sat Apr 22 21:57:26 2017 (r317302) +++ stable/11/share/examples/bhyve/vmrun.sh Sat Apr 22 22:05:23 2017 (r317303) @@ -65,6 +65,8 @@ usage() { echo " -m: memory size (default is ${DEFAULT_MEMSIZE})" echo " -p: pass-through a host PCI device at bus/slot/func (e.g. 10/0/0)" echo " -t: tap device for virtio-net (default is $DEFAULT_TAPDEV)" + echo " -u: RTC keeps UTC time" + echo " -w: ignore unimplemented MSRs" echo "" [ -n "$msg" ] && errmsg "$msg" exit 1 @@ -93,7 +95,7 @@ loader_opt="" bhyverun_opt="-H -A -P" pass_total=0 -while getopts ac:C:d:e:g:hH:iI:l:m:p:t: c ; do +while getopts ac:C:d:e:g:hH:iI:l:m:p:t:uw c ; do case $c in a) bhyverun_opt="${bhyverun_opt} -a" @@ -140,6 +142,12 @@ while getopts ac:C:d:e:g:hH:iI:l:m:p:t: eval "tap_dev${tap_total}=\"${OPTARG}\"" tap_total=$(($tap_total + 1)) ;; + u) + bhyverun_opt="${bhyverun_opt} -u" + ;; + w) + bhyverun_opt="${bhyverun_opt} -w" + ;; *) usage ;;