From owner-svn-src-stable-10@FreeBSD.ORG Sun Oct 20 15:24:45 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D3123A3C; Sun, 20 Oct 2013 15:24:45 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BC6242E2C; Sun, 20 Oct 2013 15:24:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9KFOj7P088479; Sun, 20 Oct 2013 15:24:45 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9KFOjaL088475; Sun, 20 Oct 2013 15:24:45 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201310201524.r9KFOjaL088475@svn.freebsd.org> From: Navdeep Parhar Date: Sun, 20 Oct 2013 15:24:45 +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: r256791 - in stable/10/sys: conf dev/cxgbe dev/cxgbe/common dev/cxgbe/firmware dev/cxgbe/tom modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Oct 2013 15:24:45 -0000 Author: np Date: Sun Oct 20 15:24:44 2013 New Revision: 256791 URL: http://svnweb.freebsd.org/changeset/base/256791 Log: MFC r256459. cxgbe(4): Update T4 and T5 firmwares to 1.9.12.0 Approved by: re (glebius) Added: stable/10/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu - copied unchanged from r256459, head/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.9.12.0.bin.uu - copied unchanged from r256459, head/sys/dev/cxgbe/firmware/t5fw-1.9.12.0.bin.uu Deleted: stable/10/sys/dev/cxgbe/firmware/t4fw-1.8.11.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.8.22.0.bin.uu Modified: stable/10/sys/conf/files stable/10/sys/dev/cxgbe/common/common.h stable/10/sys/dev/cxgbe/firmware/t4fw_cfg.txt stable/10/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/firmware/t4fw_interface.h stable/10/sys/dev/cxgbe/firmware/t5fw_cfg.txt stable/10/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/t4_main.c stable/10/sys/dev/cxgbe/tom/t4_cpl_io.c stable/10/sys/modules/cxgbe/t4_firmware/Makefile stable/10/sys/modules/cxgbe/t5_firmware/Makefile Directory Properties: stable/10/sys/ (props changed) stable/10/sys/conf/ (props changed) Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Sun Oct 20 15:13:32 2013 (r256790) +++ stable/10/sys/conf/files Sun Oct 20 15:24:44 2013 (r256791) @@ -1199,7 +1199,7 @@ t4fw.fwo optional cxgbe \ no-implicit-rule \ clean "t4fw.fwo" t4fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t4fw-1.8.11.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t4fw.fw" @@ -1223,7 +1223,7 @@ t5fw.fwo optional cxgbe \ no-implicit-rule \ clean "t5fw.fwo" t5fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t5fw-1.8.22.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t5fw-1.9.12.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t5fw.fw" Modified: stable/10/sys/dev/cxgbe/common/common.h ============================================================================== --- stable/10/sys/dev/cxgbe/common/common.h Sun Oct 20 15:13:32 2013 (r256790) +++ stable/10/sys/dev/cxgbe/common/common.h Sun Oct 20 15:24:44 2013 (r256791) @@ -246,7 +246,7 @@ struct pci_params { * Firmware device log. */ struct devlog_params { - u32 memtype; /* which memory (EDC0, EDC1, MC) */ + u32 memtype; /* which memory (FW_MEMTYPE_* ) */ u32 start; /* start of log in firmware memory */ u32 size; /* size of log */ }; Copied: stable/10/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu (from r256459, head/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu Sun Oct 20 15:24:44 2013 (r256791, copy of r256459, head/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu) @@ -0,0 +1,8705 @@ +/*- + * Copyright (c) 2013 Chelsio Communications, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +begin-base64 644 t4fw +AAADxgEJDAAAAQkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAA6sDugPBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IEZyaSBPY3QgMTEgMjM6 +MDY6MDEgUERUIDIwMTMgb24gY2xlb3BhdHJhLmFzaWNkZXNpZ25lcnMuY29tOi9ob21lL2Zpcm13 +YXJlL2N2cy9mdy1yZWxlYXNlKSwgVmVyc2lvbiBUNHh4IDAxLjA5LjBjLjAwAAAAAAAAAJW7pA1g +AMgA4QB78AAQAADhADC4eP///x/84UCAAAAB4QB7cAAAEAAf//vg4QGUcCAAAADhAZwE4QB5AAAC +AEDhAHmAAAYAQAACAAoABgAK4QB5BAAKAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA +AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//kYAAAAAA +H/+RhAAAAAAf/5GIAAAAAB//kYwf/8AAAAAAAAAAAADAABL/zRP/zZMgEv/NE//NhCAEMwGTIBH/ +zBL/zJIQEf/MEv/MkhAR/8wB9DER/8siCv+SEADkMQAFMQECABL/yALnMQIWABH/x4EQAQFfwCEC +EQHJERH/xBL/xJIQEf/EEv/EkhBgAA8R/78S/8OSEBH/vxL/wpIQgRAR/8HAIJIREv/AkhLAIJIT +Ev+/khCCEALyUGUv9xH/vccvkhAR/7ySEBL/vBP/vJMgwDKTIRP/u5MigiIS/7oT/7qTICMiIRT/ +uQQzAck4E/+4gzADgxQIMxEU/7akM5MhE/+qkyJgAAjCMJMhE/+nkyIS/7GQIJAhkCKQI5AkkCWQ +JpAnkCiQKZAqkCuQLJAtkC6QLyAmECAmEYIiEv+kwDAtNzAtNzQtNzgtNzwjPQFyM+0AAgAS/6HA +MC83AC83EC83IC83MCM9AXIz7QACABL/l8AwKDcwKDc0KDc4KDc8Iz0BcjPtAwIAEv+UIwoAJzcA +JzcQJzcgJzcwIz0BcjPtAwIAEv+OFf+PFv+PwDDXIAVmAWAAEgQ2BQACANMP0w8FMwxuOxQHRxQH +BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF +IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9 +AXIz7QMCAAACABL/ay0nAMARAUkxAEgxAQIAwAAU/2cE0jEV/2aUUBT/ZgTTMRX/ZpRQFP9lBNQx +Ff9llFAU/2UE1TEV/2SUUBD/ZAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 +AAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAYBQAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE +AAAAAAAAAoEAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAKABHydxPyd9MPA+YxAQIAFvJ1F/J2d2sG +kGC0Zndj+FQOkFWVFw8UAGP/+QAAAGwQBBjycx3ybisgBxzybiohCPoCAAdxuwEA7tw5DdwCgAAL +qgKcMOPyaBmwBIAACKoCHPJmIzCA+kAIFeANBQCdZexmAiG43QAA+sCGFaR3HQDpfP8t3gKAAOt7 +AgzPAoAA62YBJMvhAACZYwIEiZNnKGYGBiCLGPJXJSEJ9MFmFaQzHQDlZgorkASAAOgABQMowQAA +bTkCBQJh0Q8AAABsEAQc8kcmIAcb8kYf8kz+QQQVoNYRAA3LOZswhyD75IYFoAklAPpgRhWgGAUA +6DYDK74CgAD45gAMcWYBAPhgJhWgDAUA5SBXKzQCgAD3xgAOsCsFAP+mAA7wCjUA6PI2EoIBgACc +NZw3mzMZ8jUKdQKVMZk2JSEJnTQvIAecOZQ7+KYACTH/AQDiNgov/AKAAA/uAgjuAu42CC0QBIAA +0Q8nIQgqIQmcNZQ3BncCCKoCmjYIdwLnNgQskASAANEPAAAAAAAAAGwQCCggBScgBykxBfgghhXg +GUUA+QAMxWF3AQCKIhbyFxjyF/FVDA3gDZUADHsRprsssp79gAxD4AqlACuynesWBSWMOYAAjIj3 +gAxwkgCdAC1irmTROCtireSxNGZz/QAA7oYIJYm5gAAoIBSkiAgIRygkFPUAC73QDwUAGfIBLiIW +LCEpiBUa8gCuzJqA6iIeLmfCgAD9AGYVoA0lAP0ARhXgC2UA7fHvHVYCgAALqgKLFJqB6QAVBEBB +AACJFQgAiig8EP0gxhXgTAUA/SDmFaAMRQDsuzYEyIEAAG25BQgAhgkCYe7x4RWgh4AAiBXuAAUN +zwKAAKmI6IwgJaQ1AAALyQxtmQIIAmEoISnqISgkQAUAAAgITyglKflACEQiAJ0A/+OyBeAMFQD6 +IKgV4B7lAOoiHixtQoAA/CAmFeAJBQD4IAYV4A0FAOkWAiXZgQAAWHYoDH4R98AARzANlQD906YV +58UBAPmABilSAJ0AwCDRDwDqJAAJ2ASAAOxEAAroBIAAWHf50qDRDwDAsArPNO+GCC32jgAA2iD8 +QGgdoBvFAFh7BWP/ygAAAOokAArYBIAAWHlY0qDRDwD/+ewNoAsFAAAAK3wY6iQACWAEgABYevlj +/5zAoFmO2BjxqIyI+Z/zQJAKpQBj/6wqIQn8QrAVr/0FAA2NAQ2ODC4kFO20Ay5hAoAA77QALVYC +gAD9RgANMAkVAAmqApqx+NWmFe/5YgAvJSn/+9QNoAgFAIon60QACmgEgAD7RAAVoAwFAFhyPtKg +0Q8AAABsEAYoIAUrIhDkIAcqUASAAPgDAh3gHsUA+94ADPAZRQD5AAxdYUQBAIwiH/GA6hYALgse +AAAMSREPmQgtkp4PAgD3oAvjUgCdACeSnQwGPmRxbospKiIKC6oM90AJC6IAnQAqIE4sIEyxrfuA +CyQgCxUALSROKjABKSIY80ALRpIAnQArIAcsIST8YCQV4AhVAPlABAQwqxEA4IgRDVKCgAAKiAIa +8WYI3QIoIQcrIQkKzAL7pgAOuogBAOrxYhxDAoAACLsCKCEinXCNIJtznHT7BgAMMAplAOh2Ai7u +AoAACt0CnXEsIhCcdSsgOBjxVvwAIh3gTBUA/OEmFeC7GQALzTkc8VGeePsNAA5wCAUAmHcNzAKc +du3xRhTYBQAAKyYYG/E8mHuZeu0AFQPIwQAACQCK63YOIchBAADudg8j8QEAAAkghg4CYwkAhg4C +YQxMEa/M6sadIwCpgACOKS0gOKbuninzoAVXkgCdAAUPR/ngBFFSAJ0AwCDRDwDqJAALWASAAFh6 +OcHs7/EnFXaRgADqJAAJ2ASAAOwSACroBIAAWHde0qDRDwAAAADqJAAK2ASAAFh4xNKg0Q8AAAAr +TBjqJAAJYASAAFh6Z2P/wYgiwJQJiAL4QEYVr/7eAAAAAAAAAPxDqBWkiQEAAIEEAL0aDcwC/EOm +Fa/6HgCKJ40QwMDqrCAu2ASAAFhxuNKg0Q/aIFh3CGP/UQAAbBAMLSAFJiIQLyAHKyE15RYDKcAE +gAD7AIgVpzUBAPJ/wBXgDBUAA8M5+0EADXAVhQDrggIsYASAAPdeAAqx/wEA9wAwFaAVRQD1oB/V +Y7sBAIkiKBYA8z1cDeAOhQCYEPLAHgcSAJ0AnxKfGpsWFvDnkxXqFgQvrwKAAOZVCAIwDQAA5hYJ +InAFAACIGi4WCCsSCfUABmISAJ0AKlKe+0AJq+IAnQAvUp1k87sY8NiIiPcACViSAJ0AGfDUKZKu +DAM+6vDSFIn5gAAqoq0W8NDqFgska/0AAOsSCyUJaYAA7WYIJZuZgACIKYcqCHcM8uAJY+IAnQAp +GgDzIjIN4Pr1ACsgFpwR+2AJrSIAnQAY8MiGFI3DKiA4/eDmFeAJBQD54SYV4EcFAPfhBhWgqhkA +Cnk5F/C/KyIXm/orIhub+43ECng5/MAPEuIAnQCYF54dhhWcEZkc5xIMKwgeAABgAX4Y8KuIiGqB +JooZKVKeepNDK1KdmxuNG+nwpRQz/QAA79QABoHZgACWmGX/HGAC1Z4d/CAmFaAKBQBZjcwY8JyI +iIwR7hINJA8HAAD//2gNoA8FAADAkPghZhXv/u4AG/CTwKoKijT7YQYVr/7+AAAAAAAAAP/7OA2g +DwUAAJ4dnx78ICYVoAoFAFmNuBjwiIwRiIiPHo4d+R/12JIAnQBgAlHAkJkbihsd8IHAuguLNOvW +CC12jgAAYAI4AJ4dnx6cEeokAAnYBIAAWHmIjBGPHu4SDSV1+YAAYAHvAJ4dnx76QPAVoAwFAFh5 +X4wRjx7uEg0tdcYAAGACxgCIEY4X9iDIFa+MBQAsJDuMFAZ2AgbuAqy5DNoMmoTpJhssWASAAO0i +EClQBIAAWHgJjh2MEfqzphWhBwUAc3sIKyAWKAr/eLleiikpIDijquomCST5poAALyIQLSE1+4CI +FeAIFQD4IKYVoAY1AJYTDbs2+iCGFeAdhQD/fgAO//a2AIonnx6LEOqsICpgBIAAWHT9jx6aESsi +G/1AiBXv/YYAAAAAAADqIAcp4ASAAFh5GYwR/iGoFa/+QgDaIFh2P4wR/iGoFa/+QgAALSIQihYr +IDsW8EAKmQIJiQLmmAINifYAABrwPfhEhBXjaQEAh8DrIAcrMgKAAAaZAiYhB/rgBAOwuxEA6vAt +HdqCgAALdwIrISIKdwIqIQmX8IcgnfX54MYVqmYBAOn2BCszAoAABqoCFvAj6vYDK74CgADn5wIH +yMEAAOf2ASZAgQAA5rsCAlP5AADr9gIiFDUAAG2pBQgAhgkCYSggFKSICAhHKCQU9QAGrdIAnQCK +GPqzphWhCQUA8yHyDeD89QArIBb9YAkVIgCdAC0iF7Hd7SYXIYCpgACPKS4gOKP/nynzwAe/kgCd +AIYVZWDSwCDRDwAAAAAoIE5kjD0OmwKbIusSAClQBIAA7RIDKmAEgABYdi/SoNEPAOsSAylQBIAA +WHeW0qDRDwDaIPxAaB2gG8UAWHk6Y//HAIsS2iDrvBgpYASAAFh5NWP/tAAAAAAA6iQADlgEgAD8 +IIgVr44FAO4kOyxwBIAAWHeG+iEGFaAPBQAvJhv+R2Yd7/yCAIsbKiEJ/EKwFa/9BQANjQENjgwu +JBTkzBANVgKAAAyqAv1gZh3gDgUA/2AGHaAGFQAGqgKasRnvyvc1phWv+8oAAIon60QACmgEgAD7 +RAAVoAwFAFhwc9Kg0Q8AANogWHXDY/8EAAAAAADqIAcp4ASAAFh4lWP+04sS2iDrvBIpYASAAFh5 +BmP+92wQCCggBe3vtBnQBIAA899iBeAeRQD/AAq1IAylACsgTinSCNMP6hYDJdv9AAArJE73IAiY +kAcVAC8yrmTyMCoyreakAAURkYAAsJjo1gglCIGAACkgFLOZCQlHKSQU9SARLdIAnQApIHMrIh37 +IAQA3//1AOB6GgTABQAA/1cAD/SIAQAoJHP7QAQFcAgVAAqKOQ+7AesmHS0HPgAAiiJ8pwQrIE7K +tH2nCC0gTCwgTn3DGcxsLiAU7yICL1gcAABk8fzAINEPAAAAAAAAiCfHkwmpAekmAiRQwQAAWGeI +4++KFQE5gAAooADTD9MPA4gKKIIQ7KAHLVgEgAD6QGgdoA1FAAuAAGWv3Ikn0w9kn6EqmRTKp4qZ +ZK+XKKAAA4gKKIIQ7KAHLVgEgAD6QGgdoA01AAuAAGWv4GP/dQAA//9UDaAKBQDAoFmMkx3vYonY +LAoK+T/3AJAeRQAmCgApIBSzmfhChh3v+/oAAAAA6iQACtgEgABYdv7SoNEPAAAqIAUrIAcPAgD/ +QA8VIbsBAAUFR/igDylSAJ0AjhPu4gYveASAAJ4UC74C9WAKchIAnQAMuhEDqggoop73AA580gCd +ACqine4WASUK8YAA+kAIFeAMFQBYII8b70AvIQke7zYoISItIAcc70gpIST/BgAMMN0RAO4SBC7q +goAADZkCDJkCmaCMICimAv9AZhXgDSUA7qYFLmYCgAANzAL9QCYVoAkFAOsAFQVQYQAAsZnqgx4M +j+gAAI8RDP8R8+AAR/AOpQAu9p30v/KBEgCdACoiB+tEAApoBIAA+0QAFaAMBQBYb8xj/jIAAAAA +AP/3OA2gCgUADJs069YILW6uAABj/tkAAC8hCfhCsBWgCwUA+sAGHe/6BQAKmgEqZAPqmgwMQQKA +AOokFC/+AoAACP8CB/8Cn2H2daYV7/aqAIonwLD7RAAVoAwVAFh3OR3vEJ2gjCAb7w/rpgIuZgKA +AAfMAv1AJhWgG8UA7CQACVAEgABYeEfAINEPAACJ2PcgBKiSAJ0ADOoRo6ooop73AAV80gCdACqi +nWSgprCYmNjuFgEtdVYAAIki6xYAJIUZgACfEvi/6yFSAJ0AiifAsPtEABWgDBUAWHOZHu7wnqCN +IBvu8ewSAi7uAoAAB90CnaGMxpyj+0BGFe/0ygDrVAAJUASAAFh2fmP9H48Tj/P+IIYV7/iOAAAA +AAAAAP/40A2gCgUAAJ8SmxH6IAYV4AoFAFmL/B3uzIsQidiPEo4R+T/6iJAMpQD//YwNoAoFAMCg +DJg0+aEGFa/9WgAAAACLEO8WAilQBIAA67wYKWAEgABYeAv+IEgV7/0iAGwQBCggFO+LHmoYBIAA +iif6YGgd4AwFAOqsICnoBIAAWG9h0qDRDwCLInO+fhTurolIapF6G+6r0w8ssq5kwFgqsq1koFSw +ne1GCCUC4YAAKSAU6SQULNrcAAAvIQn4QrAVoA0FAP1ABh3v/AUADJwBLKQD7JwMDEECgADsJBQv +/gKAAPnmAA+wDhUADv8Cn6H/daYVr/3mAMCgwOoOnjTuRggtfWYAAI8iyfXAINEPwKBZi72JSPk/ ++9CSAJ0AY//lANog/EBoHaAbxQBYd9XAINEPbBAIiS/vITQpsASAAPZg6BXnhQEA7iAHKlgEgAD7 +H8AVoAQVAPqNAA0wHUUA/uEAC/HuAQDpfR8MFIAAACggTw8CAO8gTSRABQAACAhHKCRP+eASu6IA +nQAvIAWbEZoQ/eAQ3WIAnQCJIsej+UANgOIAnQAsIhmLMv1gEv0iAJ0AjTiPERjuYunuZBaRQYAA +6RYCLycCgADoRAgH+A0AAPXADKISAJ0AKUKe/yAZK+IAnQApQp3tlAAEkWGAAIspiioMBT4Lqgz1 +QAmr4gCdACwaAPWB8g3g+PUAKyAW+WAX1SIAnQAa7lwpISQrIQcKmQIqIQkLC0oMuxALqgIrIAcc +7kgLK0Do7lUd2oKAAAy7AiwhIpvQiyCZ1JrTCMwCnNL9YAAVsAxVAAy7ApvRG+5Mii+a1SkgOPvc +lAWgDAUA/aDmFaBIJQD3oQYV4JkZAPlNAA3wCiUACYo5iWSZ2YhlmNr8wMgVoAkFAOzWCyOH4YAA +6e49HMKCgAAJiAKY3Ixol9+c3owSiWkp1hCIaijWEewAFQbJIQAACQCKjGf84AqjogCdABnuJQq4 +AgmIApjWwPX+k6YV4Q4FAPXB8g3g+vUAKyAW+2ASBSIAnQAuIhmMKS0gTysgOOXMCAdwBQAA7iYZ +Juv9AAAtJE+cKfNgDgeSAJ0AjRBl0b7AINEPnxOeFJ4VnRbqJAAK2ASAAFh3EI0WjhTvEgMldaGA +AI4QZe/XiifbMOwSASVQwQAAWHJwwCDRDxrt94qo90AOyJIAnQArQp7/YA+z4gCdAClCnR3t8OSR +6mVj/QAAnNjtlAAM8tYAAGAAegAoIDnxH/gOEgCdAP/75A2gCRUAwaN6+RIpIDr+IKYVoAv1APsg +ECViAJ0A6iQACtgEgABYdYTSoNEPAAAAAAAA8AAYDaAa1QDAoYw3KyEJjTiOMuuvEQ3dAoAAD7sC +5LsCCVAEgABYdWbAINEPAAAA//9YDaAahQAAACvsGOokAAlgBIAAWHcXY/8oAAq5ApnWwIX4k6YV +oQwFAHXLDSsgFioK//tgDUUiAJ0AixBksTaLaoxnimmrewfMDJxn92DSDeANBQCxqoxlm2qLZppp +rNqre3e7AbGqm2aaZYgpLSA4pYiYKfOgCT+SAJ0AiScqmRTKpouZyrKfExnttyiwAJ4UnhUJiAoo +ghAssAf6QGgdoA01AAuAAI4UjxOLIsej+1/zYOIAnQAoITSHZ/xB6BXgCRUAmRD44QALsBxFAPz+ +AA5/88IA2iBYc5pj/juKJ+qsMCtYBIAAWGAf0qDRDwAAAAAAAAD/83gNoAkFAJ8TnhSeFZ0W+kDw +FaAMBQBYdniNFo4U7xIDLWd+AAAr7BLqJAAJYASAAFh20mP+E+ogByrgBIAAWHZZY/21nxOeFP4g +phWgCgUAWYqrGu16iqiOFI8T+V/weJIAnQD/+IgNoAkFAMCQHO10wLoLqzT7gQYV7/hCAJ8Tiiee +FO4WBSnYBIAA7BIBJVDBAABYceLuEgQtMASAAP4gaBXv+pIAnxOeFO4WBSlQBIAAWHNljhT+IGgV +7/siAADBU/pAaB2gCwUA/AACHaANNQBYbN8rIAWOFfV/3Z1iAJ0AY/1jnxOeFJ4V6iAHKuAEgABY +diyOFP4gaBXv+RYAAGwQDJUTJiAFLyAHhy/qMgQpwASAAPxGhBXnNQEA8n/AFeAOFQAD4zn9QQAN +cBtFAOerHwxgBIAA+sAehWH/AQCJIpgQ8zrMDeAOhQAmgAGYEPLAHKcSAJ0AnxKfGhntN5MXFu01 +6hYGIlgNAADrFgkvrwKAAOZVCAJwBQAAiBqeGI0Z9QAFWhIAnQArUp79YAgT4gCdAC9SnWTzkIiY +9wAH2JIAnQAW7SQmYq4MAz7q7SITCHmAACqireoWCyRr/QAA6xILJQgBgADtlgglmnGAAIcphioH +ZgzywAfb4gCdACgaAPMCMg3g+vUAKyAWnBH7YAgdIgCdABbtJCogOPvaRAXgDQUAnff3gIgV4KoZ +AAprOYYWxIAKjTn2wA9y4gCdAJ0UjRfrFgUuh14AAGABjoiYaoEgjRkrUp59szwvUp2fG4YbsIrv +ZAADAdGAAJqYZf9GYALUnhz8ICYVoAoFAFmKJhns9YiYjBHuEgwkDx8AAP//aA2gDwUAwLD6IWYV +7/8KAMDaDY00/SEGFe//DgAA//wEDaAPBQAAnhyfHfwgJhWgCgUAWYoUGezkjBGImI8djhz5H/dY +kgCdAGACWcBglhuKG8C6C4s065YILXgOAABgAkOeHJ8dnBHqJAAJ2ASAAFh15YwRjx3uEgwld4GA +AGAB+54cnx36QPAVoAwFAFh1vIwRjx3uEgwtd1YAAGAC05wR/iGGFa+IBQDoJDsmOEEAAOcDHgew +gQAABgJhhhaW+I3Hh8SIxq1tBncMl8R22wouFgzsFgEkQAUAAIwWixGGFI4VmLadtwbuAu0iDylQ +BIAAWHRdGey0jhyMEfqzphWhBwUAc3sIKyAWKAr/eLlciykqIDiju+smCSV5qoAAhi8vITT9gIgV +4AoVAPog5hWgCDUAmBMP3Tb8IMYV4B9FAPe+AA+/9wYAAJ4ciiefHYsQ6qwgKmAEgABYcVDvEg0t +YASAAP4hiBWv/NoA6iAHKeAEgABYdW2MEY4c+dkkBe/+QgAA2iBYcpKMEY4c+dkaBe/+NgAmIDsX +7JXtuwIHyIEAAPmCABWjqwEA57cCCwjGAACTH43AE+yOA90BIyAHAyNACjMQA90CE+yCJiEkA90C +IyEH6yEJLVICgAD6xgALOjMBAOohIimbAoAAA7sCgy+d8I0glvSX9pP1m/ODH+vsdh7uAoAADe0C +nfELqgLq9gIiDD0AALBKbakFCACGCQJhKCAUpIgICEcoJBT1AAZd0gCdACoSCPqzphWhCQUA8yHy +DeD89QArIBb9YAilIgCdAMg/jiktIDij7p4p86AHr5IAnQCPF2Xw0sAg0Q8AJiBOZGxpDpsCmyLr +EgApUASAAO0SAypgBIAAWHKJ0qDRDwDqJAAK2ASAAFhz8NKg0Q8A2iD8QGgdoBvFAFh1lGP/xwCL +Etog67wYKWAEgABYdY9j/7TbwPwgyBWvjgUALiQ7CCCGCQJj7PYIKVAEgADtIg8r8ASAAFhz3/oh +BhWgDwUA/kdmHe/8qgCLGyohCfxCsBWv/QUADY0BDY4MLiQU5MwQDVYCgAAMqgL9YGYd4A4FAP9g +Bh2gBhUABqoCmrEZ7CP3NaYVr/vyAACKJ+tEAApoBIAA+0QAFaAMBQBYbMzSoNEP2iBYch1j/wYA +AAAA6iAHKeAEgABYdO9j/uGLEtog67wSKWAEgABYdWBj/vdsEAYoIAUlIAckCgP3AAVkUVUBACgg +ImSAoQIqAlhrAPlABMDQBhUAKSAh4+wEGAQKgADzIAQv0gCdAOxZEQKlaQAAo5kqkp5uo3Qrkp1k +sGopICH6QAgVoPzlAAyZAfcmAAywDQUA+EQmHeAIBQD4IAYVoA6VAPggJhWgDwUA+CBGFaAMBQBY +cEwMXRGj3fWzphWgAgUA0Q8X6+mKeGqhJgxZEaOZLpKebuMtK5Kd5LApZWP9AACceGW/lMAg0Q// +/igNoAsFAMCgWYkNinhroc7//4wNoAsFAMCwwNoNrTT84QYV7/9SAAAAAGwQCiwgBfhA8BXgCxUA ++GBoHaelAQDoFgAlU/kAAOq6OQoYBIAA6hYELCAEgAD9gcAEUZkBAMGz+4AaXWIAnQCMImXC1xvr +wrQ+7hYDLMcCgACriOgWBizABIAA7BIGJCXxAACNEyzCno8W/YAG6+IAnQAv8p3vFgUnlWGAACUh +G4pChiqYGAWlNvVPAA3xBwUAe3MB1aCHKQdmDPTABaPiAJ0AKhoA9UIyDeD89QArIBaYGP1gBb0i +AJ0AikL6oAp6ogCdAIwUG+u5h0OYGJkZ63cBBggZgABgAK0a656KqOgWCCUMv4AAixaMEyuyno8W +fLNAL/KdG+uX5PA5ZTP9AACWuO8WBS/7rgAAYAIVAAAAAPghJhXgCgUAWYi9GuuNiqiJGegSCCUO +/wAA//9MDaAPBQDA8Bzrh8C6C6s0+4EGFe//BgAAAAAA//yYDaAPBQCZGeokAArYBIAAWHSNiRno +EggleemAAGABrgCZGfpA8BWgDAUAWHRliRnoEggtedYAAGAChAAFrQydQowp7nQAClgEgADvEgUp +UASAAOXMCAroBIAA7CYJKeAEgABYcE2IGIkZjxb786YVoQ4FAHXrCCsgFiYK/3a5LcCh+iCGFa/6 +IgCKJ4sQ6qwgKeAEgABYcBHAsiukAuqiAi0gBIAAY/+SAAAAAADqIAcq4ASAAFh0LYkZ+CEIFa// +BgCPKRjrZ4kVpf+fKYxDi0CNFOfEAATIgQAA/A4ABTfrAQDuFgEuiA4AACcgBwcHQQh3Cidyoe6t +EA1TwoAA7aoCAkBBAADqdwEB0/0AAOfHAgGMPQAAbakFCACGCQJhi0DAgJgSGetSGutRLyEahhUe +604kIQcY60v8ICgVodcxAP+gAEa6RAEA7dCAKicCgADszA8mcEEAAPiGAAo0zB0A5GYAJmAFAAAM +PAwU6x8NXQyIIJ9ml2eeY51lDKQ5CYkC6WYELEYCgADkZgIh0AUAAAioAphhJiAU42YIDSAEgADm +JBQlqdKAAIgW9ROmFaEHBQD04fIN4Pn1ACsgFvlgBI1iAJ0AiBLSgNEPihRkoJLAINEPK5wY6iQA +CWAEgABYdFdj/+WKJ/wg5hWn20EA6qwgKAQKgAD1oAQ50gCdAIwVwLHszCAp6ASAAFhrrZoS+oAI +Fe/8PgCLFexNEQlQBIAA/WAARfAMFQBYab/0gGAVr/3eAGWstfmf5ZDSAJ0ALyAg8f/lP5IAnQBj +/4EAAAAA6iAHKuAEgABYc8OIEtKA0Q+KJ9ww6xIAJVCBAABYb5rAsvtARh3gAgUA0Q8AAAAA6zQA +DjgEgAD8YGgd4AwFAFhri9tA7DQACugEgADqFgIr8ASAAO8SBSlQBIAAWG+5+oAIFe/7fgAAACuc +EuokAAlgBIAAWHQdY/79AGwQBBTq6CRAgAhEEfqAaB2gCxUAWYZhGOrRZKBC+EYADDAJJQCZoeim +ACEByYAAaCEcbyQZ7iIWZUghAAADQIgJCIoDIIgJBIoDAIgJAIraQPoAQh3gDBUAWYm1wCDRD8ck +0Q8P6DCfog7uMJ6jDcAwnaQMsTD9QKYVoAsFAJum+0DmFe//LgBsEBIjFhiIMCIWFPoiiBWnZQEA ++t/AFeAMFQALyzkpoAeKp/ohBhXniAEA+CImFaGZAQDpFgUlUIEAACoWGvTALGkSAJ0ALRIUjdJl +09US6peCKBPqlfZALNCQDKUAJjKuZGW9KTKtZJW5GuqQsCiYqOiUAASsyYAALRIamBEpEhj7oKQV +r84FAA7dAS0WGe2tCATIgQAA7dxALKgEgAD9ICyK4gCdACsSGCkSEZUc+2BoFe/yBQDrFg4kyD0A +AAKfAZ8apf/vFg0vqASAAP3gK1LiAJ0AlBAX6o0mEhju6nQSeEEAAJ8f/iBmFaSJHQAoFhMuEhSI +FSgWECZhDOYWFyKwEQAA5hYGLEcCgACjiCbhBygWFugSGSL4IQAA/iDmFepmAQDu4BYrNwKAAOdm +AgRBAQAAmBT2IWYVoP/1AP/ADVRiAJ0A9CAGFaALJgAAAAAA6iIMB/AFAADv5AAEyAUAAPMjwA3g +7gEAKhIaKxIZKMAAKqEFBYgLq6vrvEAsaASAAPsAEVrgaQEA+gAiHeAKBQAGujgNqwvtqgoF6CEA +ACcSGyYwAAdmCxfqXfoAIh3gCAUADrg4p4cncJDmiwsNcASAAOaICgXYYQAA5HQIBEBBAACK4A0A +iQKqNpqACwCLiODszAEhmAUAAPMf+xOiAJ0AAosMCowMnODzoAgVoAcVAPOgKBXgBgUAC3Y4qWmj +o5PRejsBsSLi1gAsngKAAPKAEKfSAJ0AJhIYEuo9LRISHuo8LBIaAtIB7t0BB/AFAAAC7gID3QIi +EhsjEhMswQX+QIYVoUQdAKQzkxkuEhQkEhedUIdnLRIZghsEdAytzJRnJBIVjR0W6iaSQI7g4hIR +IZgFAADmRgImYQEAAOJGAy92AoAA7j4CAhBBAADuRgEpoASAAP2ADaviAJ0AKhITAikC6BIMKaAE +gABtqQUIAIYJAmGGHmVh5ygSGIiHZIHuKhIWKRIUI6adKZAWKgr/+yAIdSIAnQArEhAsEhaNH/Vg +BhISAJ0ALMKeKRIW/YAT4+IAnQApkp3pFhUkiKmAACoSGCISF4lQiqf4IUgVoAQlAPgiRhXgDwUA ++kEACTeZQQDiFhckkXmAACoSGhPp5isSGSqhBaOTIzAAF+niq6sFMwvtNAAF2QEAAPpgELLgyQEA ++gAiHeAKBQAMujgNqwvtqgoF6CEAACsSFeecCA1wBIAA64gIC5gEgADoFhskWGEAAPkCgBWv+OIA +AIoW/CDoFe/35gAAAAAAAAD7DwAOv/dWABLpvIIo9kAOOJIAnQAmEhaHHyZinikSFvbADnPiAJ0A +KZKdG+mz5JHCYVP9AACauOkWFSz5PgAAYAAwACsSGCoSFCuxDVgqQywSFCzAFi0K//2f9uxiAJ0A +KhIUixhYKlNlrs1gAZQAwCDRD4sVLBIU67wYLlAEgABYcuzAINEPIhIbjBPygAIBMAcFAOwAFQEQ +QQAAsXfigx4Lj+gAAPSAIBWv9zYAAI0c7ckMCXAEgAD+ImgV5KkdAPFBIA3gDAUADQCG7gwABmAF +AAB6yfEuEhWNFAr6DP8gAEcwDAUA5K4qZ3BBAAANIIbuLAAGYAUAAHrJ8YYeZG4XiR4okQCxiPkg +BB2v+DYAKRIYKhIXDwIAKZEMCpkM6RYCLItuAAAqEhQqoAT1QAwBEgCdACcSGCISFehyASm3AoAA +piKHcuaBpWlYBIAA8wAOGFAFBQApEhSKECiQFIQZqoj0gABCd4gBAOiUFCIgBQAA9QANllIAnQAn +EhYmEhQkdp0mYBYnCv93YRArEhiMEiuxDSoSFAy7DFgp7yoSFI0QiqfAwOqsIC7YBIAAWGoB0qDR +DxfpXI0X+iDIFa/4LgAAAAD6bwAOv/eqAP/2HA2gCQUAwKBZhncS6UaCKPhf8XiSAJ0A//koDaAJ +BQDAkBjpQcBqBiY09wEGFa/44gCLFSwSFOu8Ei5QBIAAWHKIwCDRDwAAANsw6hIaJGg9AAD8gGgd +pN0dAFj6RPojBhWgDhUA/iEGFa/pWgDAoFmGXRLpLIIo+F/S4JAMpQD/6ZwNoAkFACwSFPuAaB2g +G8UAWHJzwCDRDwAAwJAY6SIMJjT3AQYVr+kOAAAA+y8ACr/pvgD77wAKv+paAAAALBIYjxwuwBUt +wBQrwBEswQmu3e4SFylQBIAAWPoZY/51KBIUiRAPAgAmgBQvEhgJZggmhBQv8gDx//V6kgCdACsS +FeoSFCnvAoAA/WAARfAMBQBYZ870YGAVr/pGAAAAKhIU6yQAC+AEgABb9qwoEhiIgQyrEesrCA0o +BIAA8R/yKFIAnQDqEhQr4ASAAFv2e/VAAEL/+MoAjBH4IogV7/8FAA+PAQ+GDCaUFC2RCf8isBWg +CwUAK8QAL8QD5O4QDu4CgAD/pgAOsAkVAAndAp3BGujk+VWmFe/4SgAAbBAIiCIvIAeVFPQgZhWg +/fUA8ResDeH/AQAoIBZ9gSeLFP4gxhXnuwEA+3/AFeAJFQDrmzkJUASAAFgpgi8SBvNOYA3g/fUA +LDAPFejHG+jOFujM5VCALgtuAACHE7B3JVw3/iCmFeRVHQDldQgPzwKAAOaZCAKoDQAA9eAG4hAM +pQAokp71ABSz4gCdACWSneRUAAKJ6YAAKrII90AKGJIAnQAuYq5k4P0pYq3kkPlle/0AAO+2CCSH +4YAAKCAW0w99gQ6ZEOsxBilQBIAAWClHiRCMEyogFCsgBKyq9WAI8RIAnQAKCkcqJBT1QAyGUgCd +AC0wD4kU8bDcDeeZAQD5IA3JUgCdAOlUAAHAQQAAbXkFCACGCQJhwKCaEgx0EaRUKCAE9QAJ2RIA +nQCJMeQWASpYBIAA5TICLI0CAADzIA3gUAQFAKR5ihXiEgItVwKAAKaqKaad0Q+KuPdADviSAJ0A +iRUMmRGmmS6SnvXAD6viAJ0ALpKdnhCIEOWEAAQPgYAAsKn5YQYV7/wWAOwSAylQBIAA7RIEKdgE +gABYbrXSoNEPAMCQDK407rYILPhmAADaIPxAaB2gG8UAWHHBY//KJzAO9uAAg//6UgAAACv8GOok +AAlgBIAAWHG5Y/+swKBZhZgb6GiKuC0K//lf9YCQDKUAY/+5AAAAAAD6QoYdr/vCAAAALCEHHeh2 ++9D2BerMAQDuMA4uZwKAAA3MAiy2KIogGOh4/UAAFTAMNQAMqgIqtinoBAUB+EEAAPkgCcFSAJ0A +bekOBAJjD0CGBAJlDwCGBAJhwND8IEYV7/sKAI4w88AK6pIAnQCPFeISAi//AoAApv8n9p3RDysh +CfxCsBWv/QUADa0BDa8M/kKGHeAOBQDtlAMuYQKAAO6UAC3eAoAA/WYADbAIFQAIuwKbkfjVphWv ++OoAiif8oGgdoAsVAO0SAyVQgQAAWGjd+iBGFa/5HgAA2iDrRAAK4ASAAFv11osRiTEMrBHsuwgN +IASAAPE/8mBSAJ0A6iQACuAEgABb9aWkpKR5ihXiEgItVwKAAKaqKaad0Q//9bQNoAUFAAAAK/wS +6iQACWAEgABYcWNj/lQAAAAAAP4gxhXgCgUAWYU/G+gPirj+IMgV4P31APlf8EiQDKUA//S0DaAF +BQDA4P4gBhWv+DoADKg0+WEGFa/0YgCKJyWhFftEABWvyQUACakBqVkpnEBt6RMEAmMPgIYEAmkP +YIYEAmd5+xjTD40T0w/7oGgd4AwFAFhopPogRhWv9Z4A9e8AD///jgDaIPqAaB3gDAUAWGa3s3uM +FeISAi5nAoAApswrxp3RD2wQBCMgACQK7XQxBiIhA7wi0Q+GIIUjhCH2cAAEOzYhAPhgAEGzZgEA +pjMOMxHyrwAJfUQBAOM8GiETyQAABCQsBDMooyLRD2wQCIoiJyAHiTCVFPhC0BWhdwEA8VsMDeiZ +AQD4ICYV4Pv1AHuBICsSBAsLR/t/wBXgCRUA65s5CVAEgABYKHXzT2AN4Pv1ABrnxIioFufB9wAM +YJIAnQAtYq5k0awlYq1kUaiwiJio6VQAAox5gAAV57IlUIAlXDf4IAYV5FUdAOVFCAvPAoAA5pkI +AqgNAAD04AhaEgCdACiSnvUAEsPiAJ0AJZKdZFFvKiAW+0MmDeDs1QArMBD9YBIkIgCdACsxC7y7 +2iBYKD0oIBQsIASkiPWACtESAJ0ACAhHKCQU9QAMblIAnQCKFB7ntY0RKCEHHOeSGeew/6HgFeqI +AQD/AAAUNP8dAOmIAgf4BQAAD08MmFCLIA/sOfygZhXnqgEA7FYCLd4CgADrSwICyEEAAOtWASHA +QQAA+UAH6VIAnQDoQQ1iU/0AAG2pBQgAhgkCYcCAmBPpIAQiW/0AAAy7Eatb9SAHgRIAnQCIMeUy +AiXYQQAA6xYCLAmyAADzAAqwUAMFAKNMiBMMfRGm3ezWnSwQBIAA0Q8AAAAAAAAA9wANOJIAnQAM +eRGmmS6SnvXADZPiAJ0AJZKdZFGpsIycqGVe5GAAUeokAAnYBIAA7RIEKmAEgABYbZvSoNEPAMCg +WYSNGudciKj5H/NQkPv1AP/5yA2gBQUAANog/EBoHaAbxQBYcKNj/7zAUMDaDYg0+UEGFa/5SgAr +fBjqJAAJYASAAFhwm2P/nAAAAAAA+EKGHa/60gAAAACKJ/0gaB2gCxUA6qwgKmgEgABYZ/L6IGYV +r/wOAIsw82AIupIAnQDiEgMr5wKAAKbMJMad0Q+PEC4hCfhCsBXv+gUACooBCowMLCQU5JkQD3YC +gAAJ7gL74GYdoAsFAPvgBh3gDRUADe4CnvH81aYV7/j2AADqJAAK4ASAAFv01YsSKDIB6hYFLWcC +gADsuwgNGASAAPEf9ZBSAJ0A6iQACuAEgABb9KOIE6Ojo0wMfRGm3ezWnSwQBIAA0Q//9qwNoAUF +AI40izeNNf5wAAe7ziEA/4AARnPuAQCuzA7MEf1vAA293QEA7MwaJdvJAAANvSwNzCj9YABFv/ZC +AAArfBLqJAAJYASAAFhwU2P+fMCgWYQyGucCiKj5H/J4kPv1AP/5hA2gBQUAAMBQwPoPjzT/QQYV +7/lGALBLDLsR61sICVAEgAD7YgAV4AwFAFhlvbNM4hIDK+8CgACm3SzWndEPAABsEAbaIFgoMRjn +DSQwFvnODgXipgUABqYohTepaQRECulECwlQBIAA6EQIAqghAABYKCaIQCswFh/nAvULXg2gBxUA +HucAL/KgLuKBqv8J/xGv7p4QHeb8GOb9Geb17W0IDX8CgACo/4zxLtJ9ALEE6cwBC8AKgAAI7gIo +0n8Z5tgu1n0MiAIImDgI7gKe8i3Sf8jTihBYAueIMupCASkBCoAAAHkaCYgClaCaUZRQlUGYMtEP +AAAAbBAI2iBYKAPUoBfm4xvm5PnNxgXipgUABkQoFebW6UkICVcCgACrqoqgKZJ/pUWnRAqZAfgg +BhXgYwUA4QAFATO5AADwAKANoAcVAAM8CgXMC+jCDClQBIAA60QAC2gEgADuPKAmYIEAAAuAAAEB +hwM3YOEBBwn3VAAA0Q8AAABsEAQW5sgV5qjTD6YiBTUCJSaAJCKAZ0ALbQgFKCKAZ4ACY//z0Q8A +bBAEKCAFJSAHijX1/6IdoAMlAP0BQBHRVQEAwCDRDwAAiCkZ5reaK/sAB+QiAJ0ACVkJKZ0CKpEI +KZEE+yAEw6IAnQCKIvNABHASAJ0A2iBYZWqLItMPDwIAA7oBZK+6iicEuwHrJgIlUMEAAFhehOPm +hhUBOYAAKKAA0w/TDwOICiiCEOygBy1YBIAA+kBoHaANRQALgABlr9yJJ9MPZJ94KpkUyqeKmWSv +biigAAOICiiCEOygBy1YBIAA+kBoHaANNQALgABlr+Bj/0wAAP//VA2gCgUA2iBYZVcrICLquwwJ +UASAAFhmqNpQ+gAiHeAMBQBYZz6LIgO6AfN/+uZiAJ0ALCAH5L0BCVAEgAD8QEYV4bwBAOu8Hylg +BIAAWG+cwCDRDwDrICIpUASAAFhmliogBcHjfqEMaKgpiyLzYAQFf/xmAC8gOsCPePnq+kBoHaAL +BQD8AAIdoA0lAFhlwmP/1wAA+kBoHaALBQD8AAIdoA0lAFhlP2P/vwAAbBAKiCsd5l8uICGLN/xg +yBWg/+UAD+4BLiQhDcwBDLsM64kIeMgEgADAINEPAwCGCQJhmxUoIAUlIAfHTfghBhXgAyUA/RwA +QdFVAQCKKSsmCw8CAPtAB/xiAJ0AG+ZIC1sJK70CLLEIK7EE/WAEw6IAnQAsIgLzgARoEgCdANog +WGT+iyLTD9MPA7oBZK+YiicEuwHrJgIlUMEAAFheGNug4+YZFQEZgAAosAADiAooghAssAf6QGgd +oA1FAAuAAOukAA1/LgAAiSdkn1oqmRQrkgnKqGS/TyiwANMPA4gKKIIQLLAH+kBoHaANNQALgADr +pAANfx4AAGP/KwAAAP//SA2gCwUA2iBYZOsrICLquwwJUASAAFhmPNpQ+gAiHeAMBQBYZtKLIgO6 +AfN/+uZiAJ0ALCAH5L0BCVAEgAD8QEYV4bwBAOu8HylgBIAAWG8wwCDRDwDrICIpUASAAFhmKiog +BcHjfqEMaKgpiyLzYAQFf/xmAC8gOsCPePnq+kBoHaALBQD8AAIdoA0lAFhlVmP/1wAA+kBoHaAL +BQD8AAIdoA0lAFhk02P/vwAAbBAEHOX1izQpMBb9YAQFtZkdAPUgB8iSAJ0A6uXwFIhJgADH3uTl +zBSksQAALKFsaZUcfLMJtM7/YAijogCdAC8gBrD/Dw9H7yQGJ4LRgADAINEPACyhbNMP7LMMdkAR +AAD5YAfTogCdACkgBrCZCQlH6SQGLP7WAACJJ4siKpkUDbsBmyKLmWSgtCiwAASICiiCENog/WDw +FaANNQALgADAINEPAIsiiicPAgANuwHrJgIlUMEAAFhdpcmtKKAABIgKKIIQ7KAHLVgEgAD6QGgd +oA1FAAuAAGWv4IknZJ9uKpkUZKBgiplkr2MooAAEiAooghDsoActWASAAPpAaB2gDTUAC4AAZa/g +Y/9BAADqJAAJ2ASAAOxEAAroBIAAWGXlwCDRDwDqJAAJ2ASAAOxEAAroBIAAW/9FwCDRDwD//RwN +oAsFAP/+dA2gCgUAiDcioskJiBH4QABBP/uSAIg3IqLJCYgR+EAAQT/7+gBsEATRDwAAAGwQCBXl +mRTldhflmZIS+CBIFaAKBQD6IGYVoAlFAJkUGuWTCIIJ4IEECReCgAD2QABD8AgVAOoiCAxACoAA ++CAmFa/59QD5FwAMcAYFAPggBhWgAIoAmxOMFLFm4iwMI7gxAADlXAImY/0AAOwWBCYFMYAALVHC ++sAEANALFQDguxoOo0wAAC5xfmTvygIqAlhmzo8R+sAEANAIFQDgiBoNGASAAOgWAyeAaYAAiaKK +EAqZAZkyijcqrDBYXUfKoSigANMP0w8EiAooghDsoActWASAAPpgaB2gDUUAC4AAZa/ciTfTD2Sf +bSqZFMuniplkr2MooAAEiAooghDsoActWASAAPpgaB2gDTUAC4AAZa/gY/9BixP6IEgVoAkVAAub +OVhnvdEP//8UDaAKBQBsEAYd5VALKxGtsyoyfxnlThflOIigwED44ABE8AYVAOm5CAQBqYAALDJ4 +LzJ7+YAFnGIAnQBl8SAsNnwrMnkrNnvdQA3kFgECAJSgDeQWwMn8QAX8IgCdAC8ye8HA7eU7F4Ox +gAAiMnwqIQSOIPPh/g2mugEAJDZ89G9mFaAAHgAuNnztrwEFw/0AAAj/Au8lBCWMYQAAIjJ8sMzv +MnshAQGAAMnIY/+/AADaIFhmOGWgzCohBP9BIAwWmgEAyJnRDwDaIFhngdEPANogWGe10Q8AAAAA +AAD6QGgdoAsFAFhngdEPLiz46tJgLwEKgAD8wAEF3/z1AAy7AwuqASrWYFmHnyQ2fCQ2e/pv6BWv +/NIAAAAV5NsvUGlk8HJZfc5YZekocrXIgVl9nilQaWSfJ1hl4WSvIRXlBg8CAA8CACxSdLDM7FZ0 +LniGAABZfVP6roYVr/wWAAAAHOT+/m+IFaAKVQD8b0gV4AtFAO0WACFr5QAAWYUL+m/oFa/7AgAu +MnviNnwvec4AACI2e9EPH+TyL/KucfaD9q0mHa/+AgAAAABsEAQU5O0Z5Ofo5NEZXsKAAKS0I0J/ +qYjouAgBgkGAAIoweKkCKkJ7HOTgKzEEKkZ/DLoB6jUEKdAEgABYZevOrikxBP8hAAwW2QEAyNfR +D9owWGc10Q/aMFhnadEPAAAAAAAA+kBoHaALBQBYZzXRDyNGf9EPAABsEATwYOAN7/n1AIgiCTkD +CYgBmCKKJyqsMFhcnOPknRUBGYAAKKAAA4gKKIIQ7KAHLVgEgAD6QGgdoA1FAAuAAGWv4Ikny5Iq +mRTKpYqZya0ooAADiAooghDsoActWASAAPpAaB2gDTUAC4AAZa/g0Q8AAP//XA2gCgUA0Q8AAGwQ +BPJdABXgGMUA+EAHnCczAQAU5HP0YAYSEgCdAAw5EQSZCCiSnvcAB07SAJ0AKZKdZJDYHOSIG+Sj +AioJDKoKq6pYZe/6QAQA0AkVAP0gAQTf+/UA4qQABIBxgACKogubAwuqAZoiiifTD9MPKqwwWFxm +4+RoFQE5gAAooADTD9MPA4gKKIIQ7KAHLVgEgAD6QGgdoA1FAAuAAGWv3IknZJBnKpkUyqmKmcmt +KKAAA4gKKIIQ7KAHLVgEgAD6QGgdoA01AAuAAGWv4NEPAAAAAAAA//9MDaAKBQAV5EKKWGqhNww5 +EaSZK5Kebr0+KZKd5JA6ZVv9AACbWGWfNWAAC9owWX02Za8q0Q/RD9EPAAAAAP/8aA2gCQUAwKBZ +gWGKWGuhvf//SA2gCQUAwJDAygysNPyhBhWv/w4AAAAAbBAEGOQnAgNHDDMRqDMrMoQZ5DAosAAq +sgEJiAoKIYwCCj4oghADAj78QGgdoA0lAAuAACI2hAwCANEPbBAEFOQYAgNHDDMRBDMIJDKEKkIB +JkAAKEAI+phoHaCpJQACBT4DAj55gSMY5BsIaAooghDqVAAKWASAAPxAaB2gDSUAC4AAIjaEDAIA +0Q/rJAAKUASAAFhlrvNAaB2v/zYAAAAAAABsEAQZ5BzTDymSRip60AqZKBTkMf8gABSwChUACpkC +KUa3+JboFaAFBQAF5DEBAgAjQrdmMAttCAUqQrdmoAJj//Mb5Cgitopj//wAbBAEWYCDEuPqE+QH +KSKC0w8JGo4DqAqIgAuAAGP/7ABsEAQqIgcqrBBYZqvRDwAAbBAEiCcijBDaIFhmimihAdEP2iBY +ZoQS5BULqBHoIggFAdmAAAzqMCsihSuyACKs/+y7CAlQBIAAWYZdHOQNKsJ/+kAEANALFQAAuxoL +qgIqxn9ZhozRDwAAAAD6AOIdoAsVAFhmYSwifywmg9EPAGwQBCYiBw8CAOZsECnQBIAAWGbE7DQA +CmgEgADuVAANWASAAO8iACtQBIAAWGYI0Q8AAABsEAQZ49CWIvRAZhWhhDEAF+PPqYgogIAHNwKX +IAhYDJgh0Q8S4+sD6DAE7jAFsTCTIJQhlSIS4+cT47OEIAQzApMgEuPlwDAoN0AoN0QoN0goN0wj +PQFyM+0DAgAS49/AMJMgxy8T494DIwMS496EIAQ0AZQgEuPchCAENAGUIBLj24QgBDQBlCAS49mE +IAQ0AZQgxy/AMQMjAxLj1oQgBDQBlCBj//wS49SDIAMTFA8zEZMgEuPRwDAjJgBX/9kQ49CRAJIB +kwKUAxHjzoIQAeowohEB8DHAQATkFgACABHjyoIQIxoAAyICkhAR48fAIZIQBOQxhAODAoIBgQAA +0jABIwAAAAAQ48KRAJIBkwKUAxHjwIIQAeowohEB8THAQATkFgACABHjuIIQIyoAAyICkhAR47jA +IZIQBOQxhAODAoIBgQAA0zABMwAAAAAQ47ORAJIBkwKUAxHjsYIQAeowohEB8jHAQATkFgACABHj +poIQI0oAAyICkhAR46nAIZIQBOQxhAODAoIBgQAA1DABQwAAAABsEAQkIBSjRCQkFNEPAAAAAFyU +AV2UAl6UA1+UAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAABckAFdkAJekANfkABTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAnJQAHZABnZQCnpQDn5QECJQFCZQGCpQHC5QAQwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAJyQAZ2QAp6QBx2QA5+QBHiQBXmQBnqQB3uQAFMAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADclAAdkAHdlALelAPflAQElAUFlAYGlAcHlAgIlAkJ +lAoKlAsLlABDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3JAB3ZAC3pALHZAD35AEtJAFtZAGtpAH +t5AIuJAJuZAKupALu5AAUwAAAB//+/gA0jEQ//4KAAAAAAAf//xAANMxEP/+CgAAAAAAH//8iADU +MRD//goAAAAAAAD0MAoAAAAAAPQwCgAAAAAA9DAKAAAAAGwQCIgiJyAHKSIUmRPxEvwN4XcBABri +LGSRARbiLSqggAx4EeaICAVQ3QAA+RPIFeSqHQCqSuviJRVQCQAA+yAJ86AMpQAogp3oFgQkCdmA +AI2496AKOJIAnQAuYq7xz3AN4AkFACpireSg7mb7/QAA77YIJQeJgAArIBSkuwsLRyskFPVgCV5S +AJ0AizmJFPhiABWnxQEA+YAKgVa7HQD8geAA0AUFALBKbakFCACGCQJhiRMa4geJkOgSBCJj/QAA +6pkCDO4CgAANzQL9ACYV4AoFAG25B+mGBiRBAQAAiBTrMgEuTwKAAKmImBXpMgItjDIAAJoQ82AN +OFIAnQCLEOtLCAvnAoAA5swIBdv9AADrxp0qkASAANEPAAUMR2jCGIon+oBoHeAMBQDqrCAqaASA +AFhiQtKg0Q/AINEP6iQACdgEgADsRAAK6ASAAFhnx9Kg0Q8AAMCgDN407rYILXi+AACPImX/1Nog +/EBoHaAbxQBYatFj/8QAAAAAAP/7FA2gCAUAiCJlj7IrfBjqJAAJYASAAFhqyGP/ocCgWX6nG+HK +jbj5v/V4kAylAGP/si0hCf5CsBWv/wUAD78BD7gMKCQU76QDL3ECgADppAAu7gKAAP+mAA6wDBUA +DN0CnaH81aYVr/qSAI4nnhGF6fnCghWvyQUA7OEVJ2iBAAAJ2QGZEunJCApXAoAA6ogMAqhBAACV +6QiIMujlFCTJAQAA+KAIYuIAnQBoq0ClrCzM8P0gBNOiAJ0A7xIEIgyBAACwTm3pBQUAhg8CYSzS +AQ8CAAysCOjZBCZjwQAA+YAG7GIAnQDs1gEuKASAAGWOP2AAoQAA6xIFLOAEgADsFgYpUASAAFvu +64kWiBWLMeoWAC1vAoAArYjxf/MIUgCdANog7JQADFgEgABb7rqOEO6uCAqQBIAA7k4IC/8CgADm +/wgHc/0AAC72ndEPAAAABZkM/CCIFaT5HQBt+QUFIIYMAmOMEg9FDI8ULMxA6f8IAow9AACwWG2J +BQxAhg8CZYUSLNkECagMqFUlXDDl1gEubP4AAIkSwKDq1QQkyQEAAPmgJhXgBQUA+aAGFe/2DgCO +EQxVDPXBJhXv+74AhRIlXED1oCYV7/yaAAAAbBAEHeFhGuFhDwIALdKMLKLHKqFwo93qOgwO7kKA +AP2AAEZwCwUAK8QEK8QFWPGf+kBoHaALBQBb/GTRDwAAAGwQBPRCCBWkI0EA8loACT9TgQAEIgqE +JoIhBUQoCkQRpCLRD2wQBCkiEiYgB9NQ+D4ABHAFNQD1AAfokWYBAPXCgAWhieEA9QAH6JIAnQD0 +wAXqEgCdAAxpEaSZKpKe90AIKdIAnQAqkp3xToAN5zMBAC4hBx/hNv3CbgWq7gEA6OE2H3cCgAAP +7gKeoB7hM/pACBXgOQUAmaf5QKYVoB+FAJ+j/0BGFaAOBQCepuy7Ag3uAoAAm6QF3QKdoS0iEg2N +Qe6mCC7vAoAALaYJ6+EkG2cCgAAEzAglxp0qIhILqgIqJhLqIhApWASAAFi/TGgyGIon+gAiHeAM +BQD7RAAVoA0VAFhhatKg0Q/AINEPF+ELi3hqsVcMaRGkmSySnm7DXiqSneSgWmXj/QAA/OEGFa/8 +4gAAAC0aAA2ZAvhCRhXv+/YAAAAuKgAOngL+QkYVr/v2AI8iy/ZoMkXAINEPAAAAAAAAAP/7+A2g +CgUAwKBZfc+LeGuxnf/7sA2gCgUAwKDAigi4NPjhBhWv+3YAACtsGOokAAlgBIAAWGnjaTK5jCcr +yRSKyfmEABXvzQUA7ZkBBdhBAADrxRQlU8EAAOrGCSTJAQAAeasqLsEVGODlquqayZiggiD/wcYF +4AgVAO+mAikWAoAACCIC80AmFaACBQDRDxjg25iggiD/wbQF4AgVAO+mAikWAoAACCIC80AmFaAC +BQDRD2wQGJIQjiAV4NKJI4shiiIqFiIrFiT4JGYV4AQVAPQg5hWgCAUA+CCmFaAMRQD8IUYVoA01 +AJ0Z9CDGFeAPJQCfGPXBiAXgD6UA/iIGFeANtQD8IiYV4AzFAPwiRhWgCIUA+CHGFaAElQD0IeYV +oAl1APghphXgC1UA+iFmFeAKZQD6IYYVoAvVAPoiZhXgCuUAKhYU9cFgBaAJ9QD4IqYV4AhFAJgU +hhYrEiSJFSdhfiwSIiJhfweZKC9QgKkp+JyIFaOZAQADmQrukgAvUASAACZiPi0SI6juC2AAjhcs +EiQtEiIH7igvUIGuLvicqBWj7gEAA+4KjuAqFhbqEiMtWASAAKjuC2AAjhgsEhYtEiQH7igvUIKu +LvicyBWj7gEAA+4KjuAqFhfqEiItWASAAAjuCAtgAI4ZLBIXLRIWB+4oL1CDri74nOgVo+4BAAPu +Co7gKhYY6hIkLVgEgACo7gtgAI4aLBIYLRIXB+4oL1CEri74nQgVo+4BAAPuCo7gKhYZ6hIWLVgE +gACo7gtgAI4bLBIZLRIYB+4oL1CFri74nSgVo+4BAAPuCo7gKhYa6hIXLVgEgAAI7ggLYACOHCwS +Gi0SGQfuKC9Qhq4u+J1IFaPuAQAD7gqO4CoWG+oSGC1YBIAAqO4LYACOHSwSGy0SGgfuKC9Qh64u ++J1oFaPuAQAD7gqO4CoWHOoSGS1YBIAAqO4LYACOHiwSHC0SGwfuKC9QiA4uCPidiBWj7gEAA+4K +LuIAKhYd6hIaLVgEgAAI7ggLYACOHywSHS0SHAfuKC9Qia4u+J2oFaPuAQAD7gqO4CoWHuoSGy1Y +BIAACO4IC2AALhIQLBIeLRIdB+4oL1CKri74ncgVo+4BAAPuCi7iACoWH+oSHC1YBIAACO4IC2AA +LhIRLBIfLRIeB+4oL1CLri74negVo+4BAAPuCo7gKhYg6hIdLVgEgACo7gtgAC4SEiwSIC0SHwfu +KC9QjK4u+J4IFaPuAQAD7gqO4CoWIeoSHi1YBIAAqO4LYAAsEiEuEhMtEiAvUI0H7igoQvGuLvog +ZhWj7gEAA+4KjuDqEh8tWASAAJsRqO4LYACMES4SFC0SIS9QjgfuKChC8q4u+iBGFaPuAQAD7gqO +4OoSIC1YBIAAKxYjqO4LYAAuEhUsEiONEwfuKC9Qj64u+J5oFaPuAQAD7gqO4OoSIS04BIAAJxYi +6O4IC9gEgAALYACOESoWJCkSEi0SFY8VKxITLBIU6BIRJ/hBAADvFgUl2EEAAOsWEyZgQQAA7BYU +JEBBAADoFhEm6EEAAO0WFSTIQQAAKRYSjR+JHIgbjB6LHe8SECRAQQAA6BYLJmBBAADsFg4l2EEA +AOsWDSf4QQAA7xYQJMhBAADpFgwm6EEAAJ0fiRaNGY8a6xIHIqhBAADsEggm6EEAAO0WCSf4QQAA +7xYKIiEBAADvEgQmYEEAAOwWCCXYQQAA6xYHJMghAADpFgYn+/0AAO8WBC/iJgAAiRCPE4sSjpCI +k4ySjZGriKfMqt2v7p6QnZGckpiT0Q8AbBAEKSIV+KAABPA4dQDpjAwBIEEAAPMgAEU/iwUA66QQ +JVBFAAD5AAXTYgCdACsKAFl52SwiFSsiFO3NEQlABIAA/EJGFe6APQD9awANsAk1APpCZhXgCiUA +baoMjoQODo7uhgQkQBEAAA8CANMP0w9tmiHpggQkQEEAAIqBi4KMgwkJjgoKjgsLjgwMjpmAmoGb +gpyD60QACVAEgABb/raKIIgiiSGPIwgIjgkJjg8PjgoKjpognyMpJgHoJgIpQASAABnfhAIAhgMC +YfgAChXgCbUAbZoCCACK0Q8AAAAAAAAA/YEAFaALBQBZear4QGgdoAlFANMPbZoh6YIEJEBBAACK +gYuCjIMJCY4KCo4LC44MDI6ZgJqBm4Kcg+okAApYBIAAW/6U2kD/+/wNoDyFAABsEAYpIhX4QogV +oEYFANMP+IAARXWZAQAJZgx0qwGxiComFQYqDOgmFCVRQQAA9oAHs6IAnQDrNAALYASAAFl5ffhA +aB2gCUUA0w/TD22aIemCBCRAQQAAioGLgoyDCQmOCgqOCwuODAyOmYCagZuCnIMlLBDqJAAK2ASA +AFv+cQZHDPbgBY7SAJ0A5jQICtAEgAD24GgdoAMFAOQWACpABIAA+MhoHaAJRQAKAmcIQIYKAmUI +IIYKAmMIAIbqDAAJQASAAG2aIemCBCRAQQAAioGLgoyDCQmOCgqOCwuODAyOmYCagZuCnIPqJAAK +2ASAAFv+VOpUAAGYBQAA5mzAIiEBAADvbZpqQASAAIsQCjwRC8sI7HwMCtAEgABZeUXRDwAAAAAA +AOs0AApgBIAAWXlA0Q8AAAD2YABGMAMFAPwgBhWv/yYAbBAEGN8YGd8WGt8UE98XkyOYIpkh+kAG +FaALBQArJhUrJhTRDwAAAGwQBt4g5OIQKmAEgADnQgcr0ASAAPu+CgXgGDUA40IWKZAEgADncg4i +++kAAHj7JxjfBQj4CoiAmhOcEu4WASwAIoAAAJMQKrKV7FQACVgEgABZev9kpjfygsYV4AIFANEP +AAAAACviEgubUu4WASX/QYAAGt7u4xYAKVgEgADqorcq4ASAAFl68mSlyhre59sg6qK5KuAEgABZ +eu1kp0wa3uPbIOqiuyrgBIAAWXro90/ADeN2xQAa3t3bIOqivSrgBIAAWXriZKdXGt7Y2yDqor8q +4ASAAFl63SMqgONzCAgECoAA+0BJMBIAnQArMNnBWPVgL0hiAJ0AabchJTTZixD6gsYV4AIFANEP +kxAqso3sVAAJWASAAFl6zWSnn4sQ+oLGFeACBQDRDwCTECqym+xUAAlYBIAAWXrFZa8X+iBoHaAL +tQBYu1X6ACId4AMFAOqzOAUBiYAA6hICK1gEgABZeUjDsOzeuB0oBIAA/KBoHeAKVQBZfpTIWRze +s40RDFw2LNYXZTS1jRD8gsYV4AIFANEPLkByZO66kxAqsrHsVAAJWASAAFl6qWWup/ogaB2gG2UA +WLs5+gAiHeACBQDqsjgFAKmAAOoSAitYBIAAWXksLH0DKsUoZSRhjRD8gsYV4AIFANEPAACTECqy +o+xUAAlYBIAAWXqVZKLPGt6L2yDTD+qijyrgBIAAWXqQZa5C+iBoHaALVQBYuyD6ACId4AIFAOqy +OAUqqYAA6hICK1gEgABZeRIsQHPxgCn+0gCdAGSlN4oT+gCiHeAM1QBYuv3SoNEPkxAqsqnsVAAJ +WASAAFl6emWusvogaB2gGyUAWLsKZKPFK0By+2BA2BIAnQDqEgIrWASAAFl4/SxCF4sQK0YWCsw2 +/ILmFaACBQDRDwAAAJMQKrKn7FQACVgEgABZemZkokMa3lzbIOqioSrgBIAAWXphZa5Q+iBoHaAL +5QBYuvJko2PqEgIrWASAAFl45yt9Aiq1FIsQ+oLGFeACBQDRD5MQKrKZ7FQACVgEgABZelJkokoa +3kfbIOqipSrgBIAAWXpNZKPXGt5D2yDTD+qikyrgBIAAWXpIZa3q+iBoHaALdQBYuthkov0rQHJk +t4ca3jiLEuqi3ytgBIAAWXo+ZabpK0BzwMgMuwIrRHOLEPqCxhXgAgUA0Q8AAJMQKrKv7FQACVgE +gABZejNkog8a3inbINMP6qKRKuAEgABZei5lrYL6IGgdoAtlAFi6vmSilStAcmS3DhreHosS6qLf +K2AEgABZeiRkpx4rQHMsCv0MuwErRHOLEPqCxhXgAgUA0Q8AkxAqspfsVAAJWASAAFl6GWSh1xre +D9sg0w/qoosq4ASAAFl6FGSjKhreCdsg6qKrKuAEgABZeg9krD8a3gXbIOqisyrgBIAAWXoKZaws +wKX9vBAFoDsFAFl95Rrd/YsS6qLNK2AEgABZegJlpNiLESuyEguZUsiZaJIH+SARadIAnQCNEYwQ +K9YS/ILGFaACBQDRD5MQKrKH7FQACVgEgABZefRkoYsa3erbIOqiiSrgBIAAWXnvZayI+iBoHaAL +JQBYuoBkoZsa3eGLEuqi3ytgBIAAWXnnZaxnihP6AEId4AzVAFi6YdKg0Q8AAAAAAAAA+iBoHaAL +9QBYunFkoWLqEgIrWASAAFl4Z+sSACPgCwAAKsUV+oLGFeACBQDRDwAA+iBoHaAbFQBYumVkoTIt +QHJk1ZkpQHPxP+AvkgCdAPE/3+/SAJ0A6hICK1gEgABZeFUtQhgc3cf7oQAOsDsFAPyDBhXgClUA +WX2gixD6gsYV4AIFANEPAPogaB2gC6UAWLpPZKDaLkBy0w9k5PrqEgIrWASAAFl4Qy9BNvvgEIKi +AJ0AihP6AUId4AzVAFi6LtKg0Q8AAAD6IGgdoBtVAFi6P2SgmuoSASpYBIAA7BICK2gEgABYucaL +EPqCxhXgAgUA0Q8AAAD6IGgdoAuVAFi6M2SgaihAcmSEnhrdlIsS6qLfK2AEgABZeZllorgrQHON +EPyCxhXgDBUADLsC+o5mHeACBQDRDwAAAAAAAAD6IGgdoAsVAFi6IcqiGt2DixLqot8rYASAAFl5 +iWWq74oT+gAiHeAM1QBYugPSoNEPwKX9uwoFoDsFAFl9YMAg0Q8AAAAAAADqEgIrWASAAFl4CP1A +aB3gOwUA/br4BaAKVQBZfVbqEgIrWASAAFl4AfVAGDqSAJ0Axy/RDwAAAPogaB2gC4UAWLoB+gAi +HeACBQDqsjgFAUmAACxAcg8CAGTD1xrda+sSAitgBIAAWXlkZaK1LUBzwOgO3QItRHNlL22PEP6C +xhXgAgUA0Q8A6hIBKlgEgABYufdlr5orMNlj+gYAAAAA+iBoHaAbBQBYuedkrzooQHLTD2SDSeoS +AitYBIAAWXfbKUIZixArRhYKmTb4gyYV4AIFANEPAAD6IGgdoAs1AFi52WSvAhrdO4sS0w/qosUr +YASAAFl5QOPdRR0IhgAAixErshILyVHImWiSB/k/+QHSAJ0AjhGMEAO9AS3mEvyCxhWgAgUA0Q9l +LryPEP6CxhXgAgUA0Q/qEgIrWASAAFl3uipFNoIQ8oLGFaACBQDRDwAAAAAAAPbgAEGwCwUA+mBo +HaCMBQBZd0zqEgIp2ASAAFi6DyMqgKNzKzDZwMQMuwL6f2Ydp7sBAPp7Jh3v5CoAAAAjKoCjcygw +2fogSBWgCSUACYgC6DTZK1gEgABZd57DsPp7Bh2n2gEA/booBaAKVQBZfOtj+MqKEllrMP1AaB3g +OwUA/boeBaAKVQBZfOQqEgJZayrcoPogSBWj+9UAq3tZeQBkoaTAov26DAWgOwUAWXzbxy/RDxrc +8osS6qLHK2AEgABZePdlrhGLESuyEgvJUWiRCmiSB/k/8AHSAJ0AHtz5A70BDt0CjhGMEC3mEvyC +xhWgAgUA0Q8AihP6ASId4AzVAFi5ZdKg0Q8AAAAAAAAA+iBoHaALRQBYuXVkrXKNEf251AWgClUA +/aJIFeA7BQBZfLoa3NKLEuqixStgBIAAWXjX49ziHQVuAACLESuyEgvpUciZaJIH+T/r6dIAnQCO +EYwQA70BLeYS/ILGFaACBQDRDxrcwosS6qLPK2AEgABZeMdlrVGLESuyEguZUmiRCmiSB/k/6gHS +AJ0AEtzM+CAoFaKOBQCufgKyAiKGEi3g2fwgCBWgDxUAD90CLeTZ/ILGFaACBQDRD4oT+gECHeAM +1QBYuTDSoNEPIyqAo3MrMNnAwQy7AgsLR/p7Jh3v3UYAGtyiixLqoscrYASAAFl4p2Ws0YsRK7IS +C+lRaJEKaJIH+T/mAdIAnQAe3K2MEQO9AQ7dAv2CRhXgClUA/blUBaA7BQBZfHiLEPqCxhXgAgUA +0Q8AIyqAo3MrMNnAyAy7AgsLR/p7Jh3v25YA9uAAQrALBQD6oGgdoIwFAFl2tMFg6hICKtgEgABY +uXYrMNkGuwL6f2Ydp7sBAPp7Jh3v2r4AihP6AOId4AzVAFi4/dKg0Q8AihP6AgId4AzFAFi4+dKg +0Q+KE/oBQh3gDMUAWLj10qDRDwCKE/oBIh3gDMUAWLjw0qDRD4oT+gECHeAMxQBYuOzSoNEPihP6 +AkId4AzFAFi46NKg0Q+KE/oCIh3gDMUAWLjj0qDRDwCKE/oAwh3gDMUAWLjf0qDRD4oT+gDiHeAM +xQBYuNvSoNEPAIoT+gDCHeAM1QBYuNbSoNEPAAAAAGwQBCQiECsgB9MP8IQwDeG7AQAsMBAtMBHu +MBIuZgKAAA3MAu0wEy5mAoAADswCCMwRDcwCaMAfKSIS7dxWFMAogAANnQEtJhIuQAUvCpV/4U3A +INEPAAAoMBQpMBXqMBYsRgKAAAmIAukwFyxGAoAACogCCIgRCYgC/RdAAFCOBQApIhJ4lyfApf24 +hgWgOwUAWXwQwCDRDwAAAAAAAAD6gGgdoAtlAFjVgsAg0Q8AjScv2RSK2f2kABWvyAUA6MwBB/kB +AADv1RQlUwEAAOrWCSZhAQAAfKsGKdEVqpqa2R3cLtmg/AAIHeAMRQBtygIJAmEY3AyYoI8g/eAA +F7AIRQAI/wKfoS0wFC8wFRjcJOkwFi7uAoAAD90C7zAXLu4CgAAJ3QLopgIu7gKAAA/dAu2mBCHg +IQAA7AYABUhhAAAJAIooIhKPIg6IAugmEi/3xgAA2iDrvBgpYASAAFhk42P+4wAAAGwQBiQiEC9A +cvXgBriQm1UAHNwKLSIALjIGLzEL+GPwFaAKVQD4IAYVoDsFAFl7zxrcBCQiGCwxC4gsiUqFR/0A +AEQwCwUA+EGGFaANBQDlUg4kkEqAAC1GFAqeAv6BRhWgAB4AK0IU61oIAdiBAABZdfwuQhQtMQvT +D67dLUYUKlAELFAFGNvv61AGLVYCgAAMqgLpUActVgKAAAuqAuzb6h0uAoAACVUCCFUB9KBgFe/4 +xQD4oAQCsDsFAP6gaB2gClUAWXupKSITKDELK0IUqYjoJhMi+MEAAH+xPsAg0Q8AACpABXuh8xzb +2PxACBXgCiUA/oAIFaA7BQBZe5v6gGgdoAwlAPxMph2gCxUAWNUOwCDRDwAAAAAAAB7bzI1KDt0B +7UYKKVAEgABYzpn6QGgdoAsFAPwAAh2gDSUAWAHBwCDRDwBsEAYc28KNIC4yBfRA6BWnVQEA/r/A +FeAIFQAPjzn0goIVoApVAPQgBhWgOwUAWXt9iSLk264UhWmAAPigBQlSAJ0AiCeMiPsCpBWvzwUA +6YILJHCBAAAP7gGuquuJFCVRAQAA/SAIxCCtBQCtya27K4UU+UAIy+IAnQD7IAk0IgCdAJmI2cDk +AAUOQASAAPgAqB2gCqUACAJhCAJhCAJhCAJhCAJhCAJhCAJhCAJhCAJhGNtwbaoFAwCGCQJhmMCP +IP+3JgWgAqUA7sYCL/4CgAAC/wL/gCYV4AIFANEPAMAg0Q8mIAcX21oGBkHqMgUrRwKAAKeIKYKe +K6wfC0sU+yAFY+IAnQAogp3uhAAEBVmAACmsH/QACB2kSR0AbUkCCAJhiDQd206d4IkgHNtP6uYD +J1hBAADs5gIszgKAAOlJAgHggQAA6eYBKVAEgAALgAAMbhGn7uTmnSKUdQAAiif6AUId4AwFAPtE +ABWgDaUAWFuT0qDRD8Ag0Q8AAAD9IGgdoAsFAPsBZhXv++YADK0M/c8ADvDvBQCv3f0BBhXv+5IA +L+xA/wEGFe/7ZgD//VwNoAgFAAAAK2wY6iQACWAEgABYZB1j/m8AbBAEhycf20YqeRQpcRX44QgV +oK0FAP1AAEV/zgUA6pN0c9iBAACMew67AeuZCAwwBIAA6MFldMkBAAAqdRStinqTaHmhepp47wAF +CzgEgAAHAmEHAmEHAmEHAmEHAmEHAmEHAmEHAmEHAmEHAmEX2w6XYIUgk2WUZPO2ZAWgB6UA4mYC +Kq4CgAAHVQLlZgErEASAANEPwCDRDwAA94BoHaAIBQD44WYVr/6CAAiaDPtvAA0w7AUArKr64QYV +r/4uACy8QPzhBhWv/gIAbBAEx48IWAMIOAIISAOoaOgiCAuBCoAAAiIYojLRDwBsEAQEOAMIWAOo +aOgiCAuBCoAAAiIYojLRDwAAbBAEBDgDCFgBCEgDqGjoIggLgQqAAAIiGKIy0Q8AAABsEAQFSAMI +OAEIWAOoaOgiCAuBCoAAAiIYojLRDwAAAGwQBCMiECsgBygwBfwRYh3gmSUA+QWeDeG7AQAsIGT9 +hD4N4I4FACkiEnifFnCfG3+WSx7a8w6eAf5CRhWgAgUA0Q8AwCDRDwAAAAD9tdwFoApVAPxgCBXg +OwUAWXqsLzAFKAqVePHb+mBoHaAJJQD4TKYd4AsVAFjUHcAg0Q+NJy/ZFIrZ/aQAFa/IBQDozAEH ++QEAAO/VFCVTAQAA6tYJJmEBAAB8qwYp0RWqmprZHdrK2aD8AAgd4AxFAG3KAgkCYRjap5igjCAZ +2sT8AIId7//1AO+mBC5mAoAADcwCnKEoIhKPIpmiDogC6CYSL/qmAADaIOu8GClgBIAAWGOKwCDR +DwAAAGwQBBPavwMiAtEPAGwQBicgBygiAhnah/RCCBXhdwEA5YKVa9cCgAAJqggoop73ABRa0gCd +ACSinejaixIUAYAAJiISLCIJ+kFIFeBmQQAIZgomYoDsuwwDMMEAAPdgENuiAJ0AKyAWKAr/eLEN ++kDwFaAMBQBYYwpkolIe2qItIQca2qEf2m/7tOQF6t0BAOghGi7vAoAAD90CnUD8QAgV4EwFAJxD +m0L7pgANMAdVAOpGBC7OAoAAB5kCmUH+QkgV4DsFAJtFmEb+CAAGcv9RAOb/EQ5mgoAAD8wCDswC +nEcqIhWMKaaqpswsJgn6QqYVr+kFAPiADfxiAJ0ALzIE/bUEBaAIFQD54CAV4A4FAOmOOAvQBIAA +WXo7Ftpt+IQAFe+NBQD2AAgdoE4FAAkCYQkCYQkCYS1EIf6EBh2gCQUAKUQnKUQmKUQlKUQkL1IS +/odmHei/HQD6h0Yd6LsdAPqHJh3oux0AK0Q4KiIW+ofmHaiqHQD6h8YdqKodAPqHph2oqh0AKkQ8 +jTQY2lTq2mASYKEAAPWgB4gQ+/UALTwYDQCIDACKK0QwKkQx+IZGHa//9QAvRDMvUhKOX400/bSo +BaAFBQD4QsgVoApVAPggBhWgOwUAWXoL/GCIFajVHQAtRCIlRCP8huYdqMwdAPyGxh2ozB0A/Iam +HajMHQAsRDTmAAUCWQEAAAsCYSogBwoKQRvaBwyqEauqJ6adKyAWKQr/ebEK+kDwFaA8BQBYYoaO +NGjgKYon+gCCHeAMBQD7RAAVoA1FAFhaVSsiEiz6fwy7AfpCRhXgAgUA0Q8AAB7aLS0iEg7dAvxC +RhXv/yYAAAAAAAAAAOokAAtYBIAAWGKnZK3aYAArjl8a2hyx7p5fCuoC+oZmHaiKHQD4hkYdqIgd +APiGJh2oiB0A+IYGHa/8MgDAINEP2iDsJAAD2GEAAFhi1sAg0Q8A2iDrfBIpYASAAFhi0cAg0Q8A +AAAAbBAEKiIUKSIT/bOiBac1AQDqmQwBlB0AAGSQeCsgBwsLQQy6EayqLaKebtJuKqKdFNnnH9nL +7dnNFQMRgAAuIQcODkrklAIPdwKAAA/uAh/Z+p6g/kAIFaAYBQCYo52ilKUd2cn/xgAP8AQlAO+m +BC92AoAABO4CnqHtABUFUGEAAAoAigy4EayIJIadLyIUqf8vJhRpMg/AINEPiSLKkGgyL8Ag0Q8A +iif6ACId4AwFAPtEABWgDRUAWFoB0qDRDwArvBjqJAAJYASAAFhim2kyz4wnLckUisn7hAAV784F +AO67AQboQQAA7cUUJVPBAADqxgkl2QEAAHurKi/BFRnZnar6msmZoIgg87OYBaAJFQDipgIsRgKA +AAmIAvlAJhWgAgUA0Q8Z2ZOZoIgg87OGBaAJFQDipgIsRgKAAAmIAvlAJhWgAgUA0Q9sEAQsIGQo +Co75gAXkIgCdACkgBR3ZuOrZuBSFcYAAKyISDbsBKyYSjTkuIhMrMQv9QAYA4AMFACoiEfvAAEdw +n6UA7iYTJQbpgAAuoAX/wAQUYJi1APnPRg2gmWUA+c5GDeCLtQB7yWqMrH3PA9Iw0Q+Iq9sw/AAC +HaANJQALgAArIhQqIhMZ2Z0Lqgzs2ZwVWQMAAHuTE3rDEPJCJhXgAgUA0Q8AAAAAAAAA+kBoHaAL +BQD8AAIdoA0lAFv/ffJCJhXgAgUA0Q/AINEPAAAAAAAAAP1ACBXgOwUA/bMUBaAKVQBZeTzyQiYV +4AIFANEPAAAA/bMKBaAKJQD+QAgVoDsFAFl5NCoiEC2gBS4KlX7RtcDy/kymHeALFQBY0qbAINEP +2iBYzDZj/1RsEAgrIGQoCo54sQ0pIAUd2XTk2XQcgFYAAMAg0Q8AACwiEikiEQ3MAuwmEiY07oAA +jSyONiUwIP5hRBXv+MUA/cjmDeWlAQAqIhAvoAUoCpV48cXAkvhMph3gCxUAWNKLwCDRDwAAAOSS +hGHQgQAAiZeJnvkmABXgC2UAwCBtuQUKAIYJAmHRDwAADw9OL/zb+eAEB7COtQD/YBOcICclAK/Z +9YYADDA2FQD4QYYV4CxVAPhCRhWgLRUA/UJGDeAPBQB8oQp2oQf3QCAFYgCdAC8wMCgwMRTZROkw +Mi/+AoAACP8C6DAzL/4CgAAJ/wII/xEI/wL14Bu2KI+5AP0QABQ1TwEACEQCGNj1KYKTKIKjpJQJ +RBGkhCRMgC5ABfRCJhWgmaUA+cAZbGIAnQApCpv5wBkUYJhlAPnAGNQgibUA+WAYlWIAnQArCpn7 +wBk9YgCdAP1ABlRgBUUA/UAGFCIAnQApMEEuMEAvMDwrMD3oMD4vdgKAAOnuAg/+AoAAC/8CKTA/ +6zBCL/4CgAAI/wLoMEMvdgKAAOvuAg/+AoAA6f8CD3YCgAAI7gIP6AzrIhAkBKuAACiyE5gVf4EI +CPkMZpACL7YTL7IUDwIADwIAfvEID+gMZoACLrYUiUwFmQKZTHyhUPdACyQiAJ0A/UARRGIAnQD3 +QBTkYgCdACoQENMPZK4RikcpPCD7QcgVoAs1AG26BQkghgoCY8Ag0Q8AKzAjwOEL6zkrREErFBD9 +X/mFIgCdAC8wIX/3qC4wQSswQCwwPC8wPe0wPi3eAoAA7rsCDmYCgAAPzAIuMD/vMEIuZgKAAA3M +Au0wQy3eAoAA77sCDmYCgADuzAIN3gKAAA27Agy4DOoiECQEi4AALaITfNEIDc4MZuACLKYTLKIU +e8EIDL8MZvACK6YUKjA4KzA5iUzsMDotVgKAAAuqAuswOy1WAoAADKoC6NjHHVYCgAALqgLlmQIF +UAUAAComFplM+IFmFa/8WgAAACkiGImXKzELiZ6/uwtLS+W9eWTIwQAAY/0PAAAAAAAA+ABiHaOc +4QD5H+wuYgCdACgwJCkwJeYwJixGAoAACYgC6TAnLEYCgAAGiAIIiBHpiAIHsBEAAPjNAA+/9VoA +ACkwIfEgDA4SAJ0AKjAkKzAl7DAmLVYCgAALqgLrMCctVgKAAAyqAgiqEQuqAmWhVyswTCwwTe0w +Ti3eAoAADLsC7DBPLd4CgAANuwLqIhAt3gKAAAy7AmS8oCyiGfuf5NPiAJ0AK0YSLjBIKDBJ6TBK +L3YCgAAI7gLoMEsvdgKAAAnuAu/Yhx92AoAACO4CLkYUKDA2LTA0KjA1/mbwFaAJBQDpRhUu7gKA +AArdAulGEy7uAoAACN0C70YLLu4CgAAO3QL8gaYV7/eiACgwOCkwOeowOixGAoAACYgC6TA7LEYC +gAAKiAIIiBEJiALv2G0UQAUAACgmFv6BZhXv9s4AAAAAAAAAAPyACBXgClUA/bDMBaA7BQBZeBDA +INEPAP/yVA2v5KUA7NhhH2gEgAD+gAgVoAolAPQgBhXgOwUAWXgGY/uxAAAqMDgrMDnsMDotVgKA +AAuqAuswOy1WAoAADKoCCKoRC6oC6dhRFVAFAAAqJhb4gWYV7/T+ACQiGP5CJhXv9NIAKiIQY/ts +AABsEAYqIgcmIAcPAgAoqRQGBkEPAgDjogkkD/mAAPVByBXnhQEA+QAYOVIAnQD9sHoFoDsFAO2i +AilwBIAA/kAIFeAKVQBZd+H9sHAFoApVAPxgEBXgOwUAWXfcJDAhwKX0wAACMDsFAOzYMRpoBIAA +WXfW6dfhG1AEgAD0wA0SEgCdAAxrEQm7CCiyng8CAA8CAPcAFlJSAJ0AK7KdZLKd9IANYJIAnQD0 +gAshEgCdAPSACuKQDgUALSEHJiAHGNgd/EEEFardAQD2IAAHsGYRAOpmEA/8AoAA78wCDu8CgAAG +3QIf2BMIzAIW18oP3QKdsIcg92BGFaA/BQCfs5y0mLb84AATsAhFAOh3AgXogQAA92AmFeAHBQDn +tgUp4ASAAOe2By9GAoAADCCGDQJjDACG/ACoHeAMRQDA0g2IAui2CSXZAQAAKhYABYCGCwJpBWCG +CwJnBUCGCwJlLhIAH9emDO4RD+4I7OadIdChAABZdvmaEfWv4AXvywUA9IAGsp+WZQD0gAe4kgCd +AP5BiBXvk3UAIyQFI1KK5iQFJ/zAgAArIhIuMiQLikT7WgANMAwFAP9AAQUwDRUA+0AIFa+7gQBY +V6n2QkYV78sFAI8gjieXLChSdOflFCdogQAAC90B6PsMBukBAACd6f3BBhXgDAUA+mIoFaANFQBY +V5suMhKw7v5iRhWgAgUA0Q/+oFAVr/qSAP/4BA2gAwUAABfXdIx4lhD3gAngkgCdAAyrEam7L7Ke +9+AKQlIAnQArsp1ksT+wzZ14Zb5SYADt/hBCHa/5kgD9r3IFoApVAPwgKBXgOwUAWXdYiirsEgEp +WASAAFl2yPv4Ah3v/EoAAI03jDbqIgopcASAAFgnEY4R7NerHSAEgAD8gAgV4DsFAP6BSBXgClUA +WXdIjkwjUormRAUnfTqAAItAiEeXTPyuiBWvyQUA54UUJHiBAAAJ/wHsuwwH+QEAAJ+I/wEmFeAN +FQD6YigVoAwFAFhXXyoyEvtf4BWvywUA+mJGFa/6PgAAK0ISLjIkC4pE+1oADTAMBQD/QAEFMA0V +APtACBWvu4EAWFdR9oJGFe/+OgArIEAIuxD6YAYV7/POAIwiZMBP/GAIFeAKVQD9rvwFoDsFAFl3 +HsAg0Q8AAAAAAAD/9OQNoAsFAMCgWXP/jHgZ1yKKEPmf9cCSAJ0A//soDaALBQDAsMDaDc00/OEG +Fe/67gCPMNog/67YBaf/wQDvJEApYASAAO42ACNYYQAAWGANY/+NAAAAbBAGiScmIAcomRQGBkHn +kgkkC3GAAAUIR/kADOlSAJ0AKiBBE9cH+gCCHeAEBQDxWVwN4AwFAPTACmoSAJ0ADGoRo6otop77 +oBAr4gCdACmineqUAASNeYAALSBBnBDrFgEuji4AABTW/R3XQykhBy8gBxXXQvhBBBWqmQEA/iAA +B3D/EQDq/xAMzwKAAO+ZAg90AoAADogCBYgCDZkCmaCOIJiklab1QEYVoD8FAP9AZhXgBAUAlKX1 +QOYVoA9FAOXXLx92AoAAD+4C7qYBJUiBAAAHIIYJAmMHAIYJAmH9gAAUsA0lAA2ZApmpDGgRA4MI +Kzad/EGIFe+fdQAvJAXysUgV755lAO4kBSb8rIAAKyISLjIkC4pE+1oADTAMBQD/QAEFMA0VAPtA +CBWvu4EAWFbgJCYSiyCOJyQmDPyuiBWvzwUA5OUUJ2iBAAAP3QHsuwwG6QEAAC3mCf3BBhXgDAUA ++mIoFaANFQBYVtEiMhKwIvJiRhWgAgUA0Q8A//pIDaAHBQAV1q2NWPegBjiSAJ0ADGoRo6ooop77 +AAbT4gCdACqineSg0Wbz/QAAnlj5QGgd7/pyAC8gQAj/EP7gBhXv+XYAip4koAQsoAUY1sfroAYq +JgKAAAxEAuqgByomAoAAC0QCCEQRCkQCCEQBK0xn+o4ADfCMlQD7YIAV7/jaAIlw2iD5rcQFp5nB +AOkkQClgBIAA6HYAI1hhAABYX4LAINEP7UQAAmEhAADrTGcpcASAAP7gaB3kux0AWXZPixH8IAgV +r/h6AAAAAP/3+A2gCQUAnBD6ICYV4AoFAFlzU41YixGMEPm/+TCSAJ0A//zsDaAKBQDAoMDqDt40 +/qEGFa/8sgAAAGwQBIknJCAHKJkUBARB55IJJArRgAAT1mf2gGgdp4UBAPkAC7lSAJ0A9IAKOhIA +nQAMSRGjmSqSnvdADPpSAJ0AKZKdZJFiKiAHKCEHH9ZgG9an+UAABDDKEQDqzBAMRwKAAAyIAguI +ApiQjCD/IEYV4D4FAP8gZhWgDUUA7tacHmYCgAANzAKckSsgQfxBBBWgBAUA/yDGFaH6AQDklgUv +/AKAAO/MAgTQgQAA7swCDYkeAADAsJSX/SCGFaAFJQAHIIYKAmMHAIYKAmEIvxEF/wIV1oifmQxu +EaPuLead+EGIFa+cdQAsJAXysUgV75plAOokBSR8rIAAKyISLjIkC4pE+1oADTAMBQD/QAEFMA0V +APtACBWvu4EAWFZCJCYSiyCOJ5Qs/K6IFa/PBQDk5RQnaIEAAA/dAey7DAbpAQAAnen9wQYV4AwF +APpiKBWgDRUAWFY0IjISsCLyYkYVoAIFANEPAAAAAAD/+pgNoAcFABXWD4pYaqFnDGkRo5kokp5u +hG4pkp3kkGplW/0AAJtYZZ6vYAAPAAAsIEAIzBD84AYVr/oOAI5w2iD9rK4F5+7BAO4kQClgBIAA +7XYAIlhhAABYXvbAINEPAAAAAAAAAPoRIh3v+34A//mQDaAJBQDAoFlyz4pYa6GN//6IDaAJBQDA +kMD6D680/qEGFe/+TgAAAABsEASKKo6vGNZA6CYLIUiBAADp5gAleOEAAO8mCClYBIAA/kEmFaAM +BQD5QeYV75iFAPhAph2gDSUAWF8HwCDRDwAAAGwQBBvWMSoxDCuyfxzWDvhiEBXgFGUA+0PWDeAF +BQB8oRbqJAAK2ASAAOw0AApoBIAAWMr4wCDRD2iRSGiSKGiUCsBA//9oDaAFBQAAfKHRe6vO2jBY +yyXVoP//EA2gBAUAAAAAAAAA/UDmDaAUZQB7owJgAAHAQNowWMs5//6EDaAFBQDaMFjLSeWkAAUB +EYAA/awcBaAKVQD8YCgV4DsFAFl1pv/95A2gBAUAAAAA//24DaAExQBsEAQpMBPxJnAN4PWFAGiR +BMAg0Q8AhCeEThzV/+0wESJIDwAA/T+GHeAKVQDuMBIiQBMAAP8bph2gOwUAWXWR/GIwFaP61QDq +SggB2GEAAFjLSqU7/GJQFaTa5QCqSljLR+okAApYBIAAWMtPwCDRD4QnDwIADwIAJEIOHNXoLTAR +LUQC/mJQFaAKVQD+gGYdoDsFAFl1e/xiMBWhyoUA6koIAdhhAABYyzSlO/xiUBWiqoUAqkpYyzHA +INEPAABsEAT0WwId6LMdAPRAAELwSgUAI1R/K1R++q9GHaBENQD0r6YdoAh1APivhh2gCQUAKVR7 +0Q8AAGwQBI84/auQBaAKVQD8YhAV4DsFAP/gaB2h//EAWXVbKTAQ/SGAANACNQBokj3AINEPANow +WMvc/18gDeAIdQCLp4u+LLKODJlW+QLgHejcuQB9IA/7YEAl4AwFAFjLqMAg0Q8AWMsSwCDRDxLV +sIM2IiJ/CTMRoyKCKoIoLiIS//GCHeCDBQDvJGQnYJyAAIon+gCCHeAMBQD7RAAVoA1FAFhVoSsi +Eiz6f9MPDLsBKyYSjCcuyRSKyf2EABXvzwUA790BB3EBAADuxRQlUwEAAOrGCSbpAQAAfasGKMEV +qoqayRzVXNmg/AAIHaALRQBtugIJAmEf1Y4b1TiboPhACBWgCQUAKaUIKaQS/QAAFDAJRQAJiAKY +oS4iEo0in6ID7gLuJhIu+DYAACsgB/pAaB2huwEA67wYKWAEgABYXhnAINEPAABsEASILiMsOHOJ +BcAg0Q8AAIsuiLPsRAAK6ASAAOu84ClQBIAAC4AAjCLtIAUufu4AAGTf1Y4uc+nWY//NAAAAbBAW +KyAHIxYa5RYXKkgEgAD4ISYV4AoVAJofFdVkJhIa/CLoFeG7AQArFhaHZfjAiBWj/vUA+qyEFafd +AQD2weQVoHf5APgKAAGwyFkA/CNmFaxIHQD6jwANMLZ5APoiZhXvqgEA6hYUJFRKgAAGC0n6IcYV +4AAmAAAAAJ4eLhIaLRYVL+E9KOAdKBQALxYSLuIfLhYQ9aA7IRIAnQCJIvsgQKCSAJ0A8OVgDeAM +BQDsFhEjgEmAANpAWM1b9AACHeAGBQAuEhvacPwAYh3gDCUA7tw5CdgEgABYzUn3QABDMA/1AHbw +VfQhBhWkhh0A4xYHJEAFAAD4IwYVoAE+AAAAKRISZJdDKhIaiqV9pp/8IggVoAsVAOsWESpQBIAA +6xISKOgEgABYzXBmp3H8AGIdoAUFAArFOmRXW8NglBjyIOYV5NYdAC0WGC8SFh7UtxPUt+kSGC+g +BIAA9eAIchANpQAM9hGjZihinvkAQUPiAJ0AJmKd22DmtAAFvIGAAI/omxX34Dy4kgCdACgyrtMP +6hIJJDrRgAArMq3kt1Fny/0AAOnmCCW6oYAAKSAU0w+qmQkJRykkFPUgO75SAJ0AKxIbLhIU8WDA +DeANNQD/oD5gogCdAGRQyI8XDwIADwIAyPFkUGPrZAAJUASAAPwAYh2gHYUAWM1w7hIOLXgEgADm +Eggir1mAACgSE/upGgXgDAUAnPKc85z0nPXrawIPVAKAAOv2ACxAgoAACogC7NTfGs7CgAD5BgAM +cApVAPngJhWgG8UAWXRuLRIV+aA46VIAnQDAIO4SGCp/AoAAo/8u9p3RDwAAAAAAAI/o9+A5oJIA +nQDpEhgqNwKAAKNmKGKe+QA5++IAnQArYp3mtAAFueGAALD4mOj6wGgd7/tmACoSEWSgeusSBSlQ +BIAA/ABiHaAdhQBYzUAY1L0W1LsrEACOGBnUvPbZiBWh+x0A6O4CD/sCgAAJ/wLmtgsF/KSAACwS +EO0SEiNb/wAAKLI/K7F9nqCfoZ2inKObpPlAphWgAHYAAAAsEhAtEhIrYQWIY56gn6GbopijnaSc +pSasGC0SE4weAt0Q7RYKLmQCgADsFgsrpv4AABrUQfghCBWgDwUA/iDGFeAPJQCfHQqIAigWDOtk +AAlQBIAA/ABiHaAdhQBYzRSNHC8SGokWKxIaj/XxNWAN4/71ABzUj4u0/0BGFaCPmQD9QAYV4G+J +AP1AJhWg36EA8NAAEzDPkQDu1Ice6UKAAO6mAyxBAoAA/QYADHm7AQDrpgQuYMKAAAxmAghmApal +jB3pnAElMGEAAOkWBiZj/QAA7BYNLnu2AADrZAAJUASAAPwAYh2gHYUAWMzxFtRyiRqPG/ohiBXg +DQUAnRGdEp0TnRSdpP1AphXv/vUAnqKeo5ugLhIa6f8CCsbCgADo/wIA4DEAAOb/AgDYIQAA7RwQ +JTBhAADvpgEg0BEAAFjLwcDB6so5DSgEgADZoOoWHiKgOYAAJBYf/gAiHaANBQAJ7TjlFiAm6zmA +ABPUVIgbjBoa1FMrEhuEGBXUTPF4ABSwDhUA6+s5CieCgAD0hgAKdg8FAAuvOf0mAAywDTUA+SYA +DDAMJQAL3DksFh0J+QIpFhn55gAPsAUFAP4jhhXgAyIAD1ZQ/hgABfDPyQD8IYgV4I+xAP1ABhXg +73kA7O4RDEQCgADrzBAN2oKAAOy7AgszwoAA+MYACzDPgQD9iAAWMY9pAOzuAgxFAoAACO4CHNQm +nKEoEAAG7gL7xgAPcG+5APTIABM7vwEA98YADzAGJQDm7gIN3QKAAO6mBCxCAoAAC4gCmKUb1B6b +ohjUHvlAZhWv+aYAAAAAAAAAAJmhlKCeop6jnqSepZ2mnaedqJ2pLxId5VwBJTChAAD+oBGcYgCd +AOtkAAlQBIAA/ACCHaAthQBYzIXkUFFqzsKAAPSgCmCSAJ0AKxIcx+/7JgAM8A0FAOOZAgv9LgAA +jRMsEhqOEo8Ri8wswhCZoZup9UAGFaAIBQCYopimn6OepJ2nnKWMFP1BBhWv/iYALRIbLBIZG9P1 +DJkC65kCBoQZgADw4kAN7/71AJmhlKCeop6jnqT/QKYVoA0FAJ2mnaedqP1BJhXv/TYALxIaIhYh +K/IWJvE4IvE6LPIV6PE5KzQCgAAGIgIm8Tst8hvu8hosRAKAAAhmAijyFy/yGZ+inqOdpJymm6eY +qJalmaGUoJKp8iQoFa/79gAAAAAAAAAA8OJADe/79QCZoZSgm6Kbo5uk+0CmFeAIBQCYppinmKj5 +QSYVr/s6ACwSGo0SL8E7JsE5KME4LsE668IYKzQCgADm/wIMRAKAAAjuAibCFIjMLMIQm6SYp5ao +maGdopSgnKOfpZ6pjBT9QMYVr/oaACsSG+wSGSWDUYAAG9Ozx+/9JgAMsA0FAOuZAgOA8YAAmaGU +oJ6inqOepJ6lnaadp52o/UEmFe/5MgAuEhoiFiEt4hIs4hMr4hiI7YbuL+IUgu8u4hGeop2jnKSb +pZimlqefqZmhlKCSqPIkKBWv+FYAKxIcx9/7JgAM8AwFAOOZAgOA8YAAmaGUoJ2inaOdpJ2lnKac +p5yo/UEmFa/3mgCZoZSgjhP+ICgV4AgFAJiimKOYpJimmKeYqJ+l/0EmFa/3CgAqEhoZ04WKpRPT +GSUSIOQSHyVMMIAA49MVE4O5gAAc03+LGAy7Avs/RhXv57YAhR/A0vetAAr/6EYAwKX9pvIFoBvF +AO5OEQpoBIAAWXL8Y/iHAAD6IogVoA4FAJ4RnhKeE54UWMrEJBYf5RYgJWIxgAD6IogVoAsFAFjK +tyQWH/QkBhXv8MIALxIQZfi1Y/haGtM4iBgKiAL5P0YVr+XqAMCgWTE4yKcb018rsIBksFoqEhRY +yrDpEh4tXx4AAPoiiBWgCxUAWMqk+CPIFe/vQgAAAP/gpA2gNgUA6xISKlAEgADsEhAo6ASAAFjL +bWP4dwAAKxIajBntEhcpUASAAFhYwtKg0Q8AAAAA+6aOBaFLFQBZXZksGgAMrAL7poQFoUsVAFld +mWP/hQDAsA34NOjmCC3FpgAA2iD8QGgdoBvFAFhUoGP/qisSFtog67wYKWAEgABYVJtj/5fAoFlv +nx7SwY/o+f/C+JANpQBj/8eMHy0hCf5CsBWv/wUAD58BD5gM6CQUL3ECgAD/YGYd4AgFAOi0AC7u +AoAADt0CDN0CnbH8daYVr+FaAIonjRnAwOqsIC7YBIAAWFMI0qDrEhgqZwKAAKPMK8ad0Q8AAAAA +AAD/32wNoAYFAP/g3A2gBUUAwKBZb30e0p+P6Pn/xhCQDaUA/+N4DaAGBQAAAAAAAAD/4xANoAsF +AA34NPnBBhWv4xYAAGwQBBTS5IIgJEJ/E9MCBCIMAyIC0Q8AAGwQDBjTABnS/iiAfSqSeymSg/1I +ABUwhAUA6pkIBHw4gAD1IABCMAAuAAAAJCqApJQY0qnoAAUIyASAAAkCYQkCYQkCYQkCYRnStCpB +Kx/SfBvS7XmhahjSyI4gmxD+IEYV4AlFAOgWBi92AoAACekCmREvQAcPD0EA/xEPrwII/wKfFAjq +MBzS4QPuAvggphWgDwUAnxcrIDX+IWYVoA0lAJ0ZDLsC6xYIIZxtAADqRAAI2ASAAPwAgh2gDSUA +WE8V0Q8AACssNvonQBWgDGUAWWyNY//XAAAAAABsEAYoIAUtIAfBlA8CAPkADrVh3QEAKSICZZGT +LjABFtJQ/8FABtAMpQAvIE5l8lfu0kseyASAAPWgCdISAJ0ADNoRpqooop6dEPcAEZTSAJ0AKqKd +56QABQ0BgACL6JkR92ANMJIAnQAtYq5k0VgqYq3koVRl+/0AAO/mCCUKuYAAKyAUpLsLC0crJBT1 +YAy90A0FABjSNx/Sp44g/eXGFeALRQDo7gIPVgKAAAuqAhvSoi72NOr2LSvoBIAA6w8eDdAEgAAN +AmcLQIYNAmULIIYNAmMLAIbtDAAD2QEAAArghh3SlgsCbwrAhgsCbQqghgsCawqAhgsCaSohCS8g +By4wASgxASshJP4gAAcw/xEA6v8QD3QCgAAP7gIOuwIf0oguISINuwIrdiAP7gKNICp2I/jkhhWg +moUAqnoY0hYudiL9oAAWsA4lAA7dAi12IYszK3YlCACJCgCKDJoRpqr9U6YVp4UBAPkAB5lSAJ0A +wCDRD4vonRH3YAjQkgCdAAyaEaaqL6Ke9+AJhNIAnQAqop1koSewv5/o56QADXXuAAD8IAYV4AFG +AAAAAADqJAAJ2ASAAOxEAAroBIAAWFfP0qDRDwDAoAy4NOjmCC11jgAA2iD8QGgdoBvFAFha22P/ +ygAAAOokAArYBIAAWFku0qDRDwAAixDaIOu8GClgBIAAWFrRY/+kwKBZbrAe0dOL6IkR+X/ycJAM +pQBj/7IAAAAAAAD4QrAVr/4FAA6+AQ6/DC8kFC8hCe2kACxBAoAA7qQDL/4CgAD55gAPsA4VAA7/ +Ap+h/tWmFa/44gCKJ+tEAApoBIAA+0QAFaAMBQBYUhfSoNEPAAAAAAAA//dEDaAKBQDAuAubAvpA +RhXv/H4AAAAA/CAGFeAKBQBZbose0a6L6I0QiRH5f/aQkAylAP/7kA2gCgUAAADAoAy/NP/BBhXv ++1YAAGwQCCkgBSYgB+c0AAnABIAA+gKCHaADNQD7IA89IWYBAAUJR+XRnBSUUQAAjCLkZAAGBBGA +AMAg0Q8AAC0iHWXR2Ygni4j9AqQVr80FAOmCCyR4gQAADf0BrcztFgImYQEAAPsgDixiAJ0A7okU +Kk8CgACZE6uaqe4uhRT7gBDjogCdAMl0yULZsG1JBQcAhgkCYS0SAyryAA2qCP1AE6QiAJ0AmvD5 +YGgdr/4KAAAAAAAAAOxqEQMkoQAABaoILqKe98AKcdIAnQAqop3Pq9og7CQAA1hhAABYWmnAINEP +F9FsiXiYFPcgEAiSAJ0ADEoRpaorop73YBBR0gCdACqinWSiAbCbm3hkr8IZ0YSZoI4g/aOyBeAP +FQDvpgIvdgKAAAPuAp6hjoMt0n/9os4FqO4dAK7dHtFe7aYDJUhBAAD8AAoVoAgFALGI6YMeDA/o +AACephjRyflBBhWgHwUAn6eNIAjdEQPdAp2p6SIHKmcCgAClzCPGnSsgBo0iwOHu3QIF2AUAAOsk +BiTIgQAALJkE+SAoFa/LBQALmwHtJgImYMEAAOyVBCRDQQAA6JYBJdkBAAB7iyUqkQUd0T6oqJiR +nYCMIBvRruuGAi5mAoAAA8wC/QAmFaACBQDRDx3RNp2AjCAb0abrhgIuZgKAAAPMAv0AJhWgAgUA +0Q8AAAAAAOokAArYBIAAWFh00qDRDwD/+tQNoAoFAPiwyBXgGJUA+CAmFaABBgD7IGgd4AoFAPsB +ZhWv+boAKFKEK4AIKYAH+CAGFeCsJQB8sS4Y0YaIgMCgC4AAihCJEQqZDOkWASTu6YAAK1KCf7cJ +LFKCf8/GY/3JAFlpe2P/7y+BCy/8+A8PQ+/8/CTz/QAAD+k4+CAGFe/+5gAA68oMA4G5gAAKTBTt +zAgrwASAAO1NNg3IBIAA0w9t2QUIAIYJAmGJEqp47E4MBMkBAABt6QUIIIYJAmONE4wSCt0Mrcws +zED94AYVr/b+AADAoFltxYl4iBT5P++wkgCdAP/4IA2gCgUAwKDA6g6eNP7hBhWv9+YAiBIojED5 +4AYVr/YmAAAAAGwQCIgniSL8QPAVr8YFAOqBFSpfAoAA6zsIBECBAAAGiAH5QABEMA81AOiMQC3o +BIAA+WAg0qHMAQAu0Aft0MweqASAAAzLEersAyc7+QAA7bsIBIBBgADAINEPKLKemhHu0MIXSBkA +APkAH1viAJ0AKbKdLBYA5pQABJ85gAAp4gj3IB9wkgCdACzSrmTDnSrSreSjmWTD/QAA6OYIJRzx +gAAsIBQrUAesuwsLRyskFPVgHt3QDhUAGdD7HtEpixCKIIg07NCxHd8CgADtuwgNVgKAAPEABPpf +zQUALSAHI1EB/0YADHDdEQDtISQu0oKAAAmqAphhmmAa0MT8wEYVoBiFAPjAZhWgCCUA6gAFA1BB +AABtigIKAmEsIQn6QPAVoAgFAPjAphWgP6UA42YJLmUCgAD/hgAOcaoBAOxmBi1UAoAACtoCDqoC +mmQoIQn6QGgdoAwFAP6gJBWgCTUA6badLF0CgAD/ZgAN8A0FAFhXwcAg0Q+PJ7F+Dq4CKfEV6RYC +J/iBAAAN/QGdFa2Z7VwgJMkBAAB50wSIEgjdDInQ+PgABPCIFQB4mRmeYenQ7RPD/QAA+MAGFeGI +HQD4wEYVoABKAJ5hGdDnmWCI0QhYFJhiHtDmGNDkiTaN8SiCgP/gpBXimR0ADpkBqYiYY+gSBSJw +CQAA7xYDL3cCgACu3aj/50gIB/kBAADv0wl0QAkAAIkTCd0MDIgRDogM5IBIa/cCgADt6QgDQEEA +AJgU+eAPCuIAnQAN/wz5AGgd5K8dAG2pBQ0AhgkCYYkVCn0MpvjqjBAkyQEAAG3ZBQkghgoCYyoi +AAiqERjQva5p/6GEBaAPFQD/IMYV4A1FAA2qApiUGNC5mpWKUyiCfhbQuP+gigXoqh0Aqojolgck +6IEAAP4AChXgCgUAsartgx4ND+gAAP0hRhWgKgUAmpuPNIhTijUG/wH3oVYFp4gBAO6qAQxCQoAA +CP8CBv8Cn5woUAktUAsvUAomUAju0KQe6QKAAOb/EAxDAoAA+wYADDCmMQDt/wINUcKAAAr/Agj/ +Aoo2GNBBn53+YUgV5dYdAO6qAQ7oQoAADaoC+yHGFaRmAQDo/wELMgKAAAb/AohVmJ+GViaWEI5X +LpYRL5YSjVQtlhMqUAH/oKYF4BiFAO5RASgECoAA8UAED9IAnQAqIAcKKkDtISQtUoKAAA+qAiqW +FI8gKJYX/eAAF7AINQAI/wIY0B0slhbvlhUk0YEAAPgACB2gDyUAbfoCCgJhLyEJLCAH++AAF7AY +pQAI/wIvlhr/oMwF4cwBAADMEQzcAg/MAv4gKBXgCgUAKpYZLpYd7JYYJ/gNAACfEY4RLradLVAH +iif1oABGsAwFAOvUAAVQgQAAWFA10qDRDwAAAAAAAADphAAD8omAANMPbXkFDUCGCQJlY/44wKDA +igiYNOjmCC1jVgAA2iD8QGgdoBvFAFhYxcAg0Q8AAPtvAA6/75oAwJD8IAYVr/BmACvMGOokAAlg +BIAAWFi7wCDRD8CgWWyaHs+8iegdz7z5P+AokA81AGP/sAAAAAD4QrAVr/kFAAm5AQm8DCwkFCwh +CQSIEPlAZh3gCQUA6aQALmYCgAAIzAIOzAKcof+1phWv79oAAGwQBikgBSYgB9gw9gBiHeAaRQD7 +IA6NIWYBAAUJR/0jAAFfxQUAiyITz6DkZAAFg8mAAMAg0Q8AAACIJ4uILIEV6YILJHiBAAAF/QGt +zO0WACZhAQAA+yANNGIAnQDuiRQqTwKAAJkRq5qp7i6FFPuADOuiAJ0AyTXJQ9mwbUkFAwCGCQJh +jRGK8A8CAA2qCP1AD7wiAJ0AmvDTsPhgaB2v/hoAAAAAAOxqEQMkoQAAA6oILqKe98AJ8dIAnQAq +op3Pq9og7CQAA1hhAABYWHHAINEPG890ibiYEvcgDAiSAJ0ADEoRo6osop73gAxp0gCdACqinWSh +hLCcnLhkr8IZz4yZoI8g/5/CBaALFQDrpgIv/gKAAAf/Ap+hj4Mu4n/9nt4F6P8dAK/uH89m7qYD +JUhBAAD8AAoV4AgFALGI6YMeDA/oAACfphnP0flBBhXgGAUAmKeOIAjuEQfuAp6pDE0Ro90n1p0s +IAaJJ+0iAiZgBQAA7CQGJMiBAAAsmQQL3QKIke0mAiZgwQAALJUE5ZwBBENBAADolgEmYQEAAHyL +JCqRBR3PSaiomJGdgIsgwMDshgIt3gKAAAe7AvsAJhXgAgUA0Q8dz0CdgIsgwMDshgIt3gKAAAe7 +AvsAJhXgAgUA0Q8A6iQACtgEgABYVoDSoNEPAP/7FA2gCgUA8yBoHeAOBQD/AWYVr/pCAOvKDAGB +uYAACkwU7cwIKcAEgADtTTYNyASAANMPbdkFCACGCQJhiRCqOOxODATJAQAAbekFCCCGCQJjjRGM +EArdDK3MLMxA/eAGFa/4/gAAwKBZa+0bzw+JuIgS+T/zmJIAnQD/+hQNoAoFAMCgwOoOnjT/YQYV +r/naAIgQKIxA+eAGFa/4GgBsEAQVzwgWz3fwiAATsAlFAOTPdRnGAoAACYgCKGYtBTUC52YuKhgE +gADlZjQpMASAAANghgYCZwNAhgYCZQMghgYCYwMAhuYMAAEZAQAA9choHaCKBQCqIgMCbwTAhgMC +bQSghgMCawSAhgMCadEPbBAGIyAHFM7mAwNBDDkRpJkokp79CCBB0AU1ACuSncu2H89kGM9k+kAI +FaAJBQD4IAYV4AwFAPggRhXgDVUA+CAmFaAe5QBYUuAMOhGkqvVTphXgAgUA0Q/aIOs8GClgBIAA +WFfKxyTRDwAAbBAGKCBwwGTlzssUdbSAACQgBwQEQQxJEaWZKpKe4yIALSFsAAAqkp1koFDbMFje +NcDB/AACHeAOFQD5neQFoAkFAPggJhXgDwUA6RYCLVgEgADoFgAp0ASAAFhSwAxMEaXMJsadKiBw +Kwr7C6oB+k4GHaACBQDRD8Ag0Q/aIOtMGClgBIAAWFemxyTRDwAAbBAEJCAHE88tFc6mBARB4zJ/ +Kk8CgAAFmQgokp4PAgDkMwgMETgAACqSnWSgQwM7AvwAAh2gDSUA/gBCHaAfBQBZbSf9nj4FoA4V +AOymACnuAoAADt0CnaGLIJuiDEkR9SAARPAIJQD5M6YVoAIFANEP2iDrTBgpYASAAFhXhMck0Q8A +bBAWLzAQ950MBeAKdQDz4iAN4AYFAPXgQYCSAJ0AaPIDwCDRDysgB/oghhWnlQEA0w/4I4YV4bsB +AOsWHiyUaAAALCAF94BZ1FIAnQAtIHLzoFl/kgCdANogWFSxZafPjiJl58ovEh6JNSsiEPghRhXg +GoUA7xYQJMBdAAD7PgANdIgdAOgWCyRADQAAmB2YHPXgTDoSAJ0ALRIQDN0Rp90s0p63Tv+AXHOi +AJ0AK9Kd+2BaWBIAnQCMKY4qDA8+LxYaDO4Mf+t7KiAiKSAjCpkM+yBcGBIAnQAoIAcaztj9WAAV +4YgBAA2ICSiNAi6BBgnvNg/uDC6FBi0gIg/dCA0NRy0kIvugW0gSAJ0AKKJ/7iILJsv9AAD7AAQA +0AgVAOCZGgxACoAA6e4IBEP9AAAI7gIuJgooEhoM6Qz5IFnjogCdAIkdHs6/LCAHKCEHHc41/kEk +FeDMEQD1kAAWOogBAO3MAgxDAoAACP8CLSEknLCKIIgaHM4y7t0CDVYCgAAKmQKZsSohIp20n7MM +qgIczq2asikiEIoUmbUZzqv8RxAV4A8lAJ+5lrf5YQYVoA4VAJ66/AMABvBOdQAN6jkNyTkKmQKK +G+a2CyHAQQAA6bYGJcjBAABtqQUIAIYJAmEezhaevI0w86A/spIAnQAqEhDpEgwtVwKAAKeqKaad +KCAULxIapIjoJBQngMGAAC0SGowpKyA4rcycKfNgUF+SAJ0ALhIc+cBPOVIAnQDAINEPLCAHLyAF +KzAR/EBIFeHMAQAsFh754C6kULs5APugR+CQH6UA6hYELm8CgACn3S7SniwWECsWGf/ASMviAJ0A +KdKdKRYR6RYdKAQKgAD7IEhYEgCdAPpAaB2gC0UAWWrQHM3i+0BIQFIAnQCMyPeASHCSAJ0ALXKu +96BFzVIAnQApcq0fzdnvAgAGc/0AAPsgSNgSAJ0AmRXu9ggoBAqAAPsgRNgSAJ0ALjAULiQ4LTAV +LSQ5JiQ7jDiLNoo5iTqPPIg7KCUlKSUkKiUjKyUiLCUJLyRMjj0uJE0tMhAsMhEsJhUmJHEmJHL2 +TgYdoAsVACskcyYmHSsmGSsmGCsmFyYmGyYkTyYkTislKS0lKCowESgSBC4hGgoKQyokOv8ALZCi +AJ0ALSA4Kvr8+8AEBTAPJQAP3AHv0B11U7EAAP8AAAWwCBUA+w0ADfn+HQAPuwgOuxELqgwezgcf +zjD7m4wF4AkVAAycOQr4Lgr/LAiYOf8AAERwD0UAD90B7Z05C3gEgADsvzkLSASAAA3pOQn/Ai0g +FAipHOklNCVz8QAACOgcpN3oJTUvdAKAAA7+Ai4mEC4SGe0kFC1EAoAA+eYAD7AsBQDvJg8nKomA +ACohCB/N1CkgB44pniz4YcgVoLkRAPgiRhWhmQEA6BIRLdqCgADvuwIMzAKAAAmqApuAG84HjyCc +g/tGAA1wCTUA6/sCD/4CgAAJ/wKfgRnNepmCjyuWhZqEn4n/AQYVoAkVAPsAxhXgHkUA/iEmFaAL +BQDrFhMu+gKAAPnmAA/wGmUA6hYbJEjBAAApFh2fhyYkFCogBwoKQSqsFOrN7h0BCoAAwJHrMg8s +yAqAAAqZAhrN0CsWFCkWFSmmQBrN5ykSHZoYCiCGCQJjCgCGCQJhKyA4IxYg6mQACxgEgAD6AgAG +8OsBAP+NAAmwDCUA/Y0ADXDrGQDq7gILSASAAP1gBAWwGgUAC6k5KiA572QAC0AEgAD4ZgAJ8IsF +AP1ABAYwSQUA/WIADDCqAQAKnzgrEh0czcr6QAgVoA0FAJ0RCP8CA/8C/CAGFaANBQDyJAgV4AwV +AO/uAgXYgQAA/8AAFzAPRQD/xgAPcA8FAP4gRhWgDgUAWFEzwMHvzbkdWASAAPpACBWkCQUA+CAG +FeANBQD4IEYV4AgFAPggJhWgDhUAWFEoKBIU6RISLVgEgAD6QAgVr/71AJ4Q/ESkFe//9QD8RIQV +qJkBAPs4ABS4iAEA6YgCDuwCgAD9hgAOcB6lAPggRhWgDQUA/CAmFaAMFQBYURTboPpACBWv/fUA +/CAGFeAMBQCcESkhIighCcHs+SAAFL//9QD5BgAMcAwVAPggRhWgDQUAWFEGKhYWKiEoWUaW7c2L +HWAEgAD6QAgVr/71AJ4QLhITLdCMG82G7t0CBmP9AADi6RAO6EKAAO2ZAg5mQoAADJkCC5kCmREo +IhUZzX7//+Id4B7lAPoiyBXmiB0A+QYADHANBQD4IEYVoAwVAFhQ6xjNVYwYLxIV74ZALUgEgAAM +YIYJAmcMQIYJAmWJMPMgE0qSAJ0AG8zZLxIQLCEH7hIbJekhAADq0pEv/wKAAKf/LvadK7KOjyAu +IgAoIA0pIAyuu+4gFS3eQoAAq6oqFhcrIAcrpAcppAwspQcopA0sMgkupBUt0hwuMhH4YggVoAkV +ACmlKSilKC+mHv1BJB2gG0UA+0CmHe/MAQAspSP6IKgV5u4dAP+gAEaw//UA/CMGFaAOBQD9QsYV +4A0VAFjcMCwSFysSGCbEFP2CsBWgLQUAWSydLRIZZNJVLiA6wP//wBKsYgCdACkwVygKQAmIDJge +LQoB/h/iHeAOBQDsIQktWASAAOwWDylQBIAAWNwcJiQUix8sIBWNHlksi8C8iicczL6KrokZDACH +CgJhCgJhCgJhCgJhCgJhCgJhCgJhCgJhLRIZK3at+ECmHeAOFQDuJBcmgVmAAC8gOsCPePEeGcyU +KDBQCYgKKIIQ7DBXIdlBAAD6QGgdoA0lAAuAAAUKR/lAHQlSAJ0AwCDRDwDqJAAJ2ASAAOxEAAro +BIAAWFJf0qDRDwAAAAULR+sWHC2UaAAAKiAFwcT9QA/EIgCdAG6oei0gcn7fdNogWFKsZaB8jiJl +4HcoIBQEiAgoJBQvMgB69lgqIAcKCkEMqxEHuwgssp4KqQL3gCJaUgCdACuynekWHyWiUYAALyBx +5ZQACeAEgAD6QGgdoO6lAO/mOQpoBIAA/sBoHaAPFQBYUmsMWRH3IABE8AhFACiWnSoSHPlAGslS +AJ0AwCDRDwDqJAAJ2ASAAOxEAAroBIAAWFIv0qDRDwD9mbYFoApFAPxACBXgK6UAWWw2/kNEFa/o +7gAAAAAAAOw0AApoBIAA+0QAFeAOBQD6QGgdoA8VAFhSTisSG7S7+iNmFe/13gArEh4azMn/mZIF +4A4VAOqggC2BCoAA/cABB1ANNQD98AYd594BAOrYNH14BIAAGczA+CPIFa/79QAL2wMLqgEbzL0J +iAoZzLgK6gL7FCYV56oBAOqUgCeLyYAAZKF8wYP4ISYVoA8VAP4iZhXgDgUA/iJGFaAdNQD8I2YV +7+sqAP/3rA2gC2UAxJD4IcYV7/bSAACOHekgcSngBIAA6iQACmgEgAD4HUIdoA8VAOmGOQ93AoAA +7rsIC3AEgABYUhuPHbT//iGGFe/fZgAczACMyPeAFvCSAJ0ALRIQDN0Rp90u0p63T//AFyPiAJ0A +K9KdZLLbH8v2sM6e+Pt/s1CSAJ0AYAGpiScomRQunCDkgOZk+MEAAI2ZjPAp+sD5wAQE8AsFAO/I +DAZjIQAA6Ms5BoLhgAApFgaI4H2BTyzQAMGU+YAEFGIAnQDBhXjBeMGWecFzwYh4wW7BmXnBacGK +eMFkiBYs0Acp4QWZF+iZCA5nAoAA7N0IBMkBAADp2zt+4ASAAO3EAA59fgAAybjC3SywAH3BMI6+ +wLDu+AwHcyEAAAjrOWW/5yggTvzAaB2gH2UA+e0ADjAAQgCMF/2vAA4//w4AAAD8TiYdr/UaAGSu +ivAAGA2gCRUAwJAezFYt4tLH/g/dAQ2dAv3aRhXv+b4AAAAAAAD//HANoA0FAOokAAnYBIAA7EQA +CugEgABYUZfSoNEPAAAZy6zAigjINJiY2iD8QGgdoBvFAFhUo2P/zMAg0Q8A/9uoDaAJBQArEh7a *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable-10@FreeBSD.ORG Sun Oct 20 16:45:02 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A3E671BB; Sun, 20 Oct 2013 16:45:02 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 76F5E2229; Sun, 20 Oct 2013 16:45:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9KGj2RE031512; Sun, 20 Oct 2013 16:45:02 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9KGj2ZT031509; Sun, 20 Oct 2013 16:45:02 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201310201645.r9KGj2ZT031509@svn.freebsd.org> From: Navdeep Parhar Date: Sun, 20 Oct 2013 16:45:02 +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: r256794 - stable/10/sys/dev/cxgbe 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Oct 2013 16:45:02 -0000 Author: np Date: Sun Oct 20 16:45:01 2013 New Revision: 256794 URL: http://svnweb.freebsd.org/changeset/base/256794 Log: MFC r256477: cxgbe(4): Store the log2 of the # of doorbells per BAR2 page for both ingress and egress queues, and for both T4 and T5. These values are used by the T4/T5 iWARP driver. Approved by: re (glebius) Modified: stable/10/sys/dev/cxgbe/adapter.h stable/10/sys/dev/cxgbe/t4_sge.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/dev/cxgbe/adapter.h ============================================================================== --- stable/10/sys/dev/cxgbe/adapter.h Sun Oct 20 16:37:03 2013 (r256793) +++ stable/10/sys/dev/cxgbe/adapter.h Sun Oct 20 16:45:01 2013 (r256794) @@ -510,7 +510,8 @@ struct sge { int timer_val[SGE_NTIMERS]; int counter_val[SGE_NCOUNTERS]; int fl_starve_threshold; - int s_qpp; + int eq_s_qpp; + int iq_s_qpp; int nrxq; /* total # of Ethernet rx queues */ int ntxq; /* total # of Ethernet tx tx queues */ Modified: stable/10/sys/dev/cxgbe/t4_sge.c ============================================================================== --- stable/10/sys/dev/cxgbe/t4_sge.c Sun Oct 20 16:37:03 2013 (r256793) +++ stable/10/sys/dev/cxgbe/t4_sge.c Sun Oct 20 16:45:01 2013 (r256794) @@ -569,12 +569,17 @@ t4_read_chip_settings(struct adapter *sc r = t4_read_reg(sc, A_SGE_CONM_CTRL); s->fl_starve_threshold = G_EGRTHRESHOLD(r) * 2 + 1; - if (is_t5(sc)) { - r = t4_read_reg(sc, A_SGE_EGRESS_QUEUES_PER_PAGE_PF); - r >>= S_QUEUESPERPAGEPF0 + - (S_QUEUESPERPAGEPF1 - S_QUEUESPERPAGEPF0) * sc->pf; - s->s_qpp = r & M_QUEUESPERPAGEPF0; - } + /* egress queues: log2 of # of doorbells per BAR2 page */ + r = t4_read_reg(sc, A_SGE_EGRESS_QUEUES_PER_PAGE_PF); + r >>= S_QUEUESPERPAGEPF0 + + (S_QUEUESPERPAGEPF1 - S_QUEUESPERPAGEPF0) * sc->pf; + s->eq_s_qpp = r & M_QUEUESPERPAGEPF0; + + /* ingress queues: log2 of # of doorbells per BAR2 page */ + r = t4_read_reg(sc, A_SGE_INGRESS_QUEUES_PER_PAGE_PF); + r >>= S_QUEUESPERPAGEPF0 + + (S_QUEUESPERPAGEPF1 - S_QUEUESPERPAGEPF0) * sc->pf; + s->iq_s_qpp = r & M_QUEUESPERPAGEPF0; t4_init_tp_params(sc); @@ -2799,7 +2804,7 @@ alloc_eq(struct adapter *sc, struct port if (isset(&eq->doorbells, DOORBELL_UDB) || isset(&eq->doorbells, DOORBELL_UDBWC) || isset(&eq->doorbells, DOORBELL_WCWR)) { - uint32_t s_qpp = sc->sge.s_qpp; + uint32_t s_qpp = sc->sge.eq_s_qpp; uint32_t mask = (1 << s_qpp) - 1; volatile uint8_t *udb; From owner-svn-src-stable-10@FreeBSD.ORG Sun Oct 20 21:21:51 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 323DF931; Sun, 20 Oct 2013 21:21:51 +0000 (UTC) (envelope-from alfred@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1DEA320FB; Sun, 20 Oct 2013 21:21:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9KLLo8l081938; Sun, 20 Oct 2013 21:21:50 GMT (envelope-from alfred@svn.freebsd.org) Received: (from alfred@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9KLLowW081937; Sun, 20 Oct 2013 21:21:50 GMT (envelope-from alfred@svn.freebsd.org) Message-Id: <201310202121.r9KLLowW081937@svn.freebsd.org> From: Alfred Perlstein Date: Sun, 20 Oct 2013 21:21:50 +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: r256810 - stable/10/sys/ofed/drivers/net/mlx4 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Oct 2013 21:21:51 -0000 Author: alfred Date: Sun Oct 20 21:21:50 2013 New Revision: 256810 URL: http://svnweb.freebsd.org/changeset/base/256810 Log: Fix resource free. The order of releasing resources in mlxen was wrong, which caused panic on reload of the module. MFC: 256682 Submitted by: Shahar Klein (shahark at mellanox.com) Approved by: re Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c ============================================================================== --- stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Oct 20 21:21:07 2013 (r256809) +++ stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Sun Oct 20 21:21:50 2013 (r256810) @@ -927,9 +927,6 @@ void mlx4_en_destroy_netdev(struct net_d if (priv->allocated) mlx4_free_hwq_res(mdev->dev, &priv->res, MLX4_EN_PAGE_SIZE); - if (priv->sysctl) - sysctl_ctx_free(&priv->conf_ctx); - mutex_lock(&mdev->state_lock); mlx4_en_stop_port(dev); mutex_unlock(&mdev->state_lock); @@ -946,6 +943,9 @@ void mlx4_en_destroy_netdev(struct net_d mlx4_en_free_resources(priv); + if (priv->sysctl) + sysctl_ctx_free(&priv->conf_ctx); + mtx_destroy(&priv->stats_lock.m); mtx_destroy(&priv->vlan_lock.m); kfree(priv); From owner-svn-src-stable-10@FreeBSD.ORG Mon Oct 21 01:10:38 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id BF196866; Mon, 21 Oct 2013 01:10:38 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9265F2E67; Mon, 21 Oct 2013 01:10:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9L1Acea003957; Mon, 21 Oct 2013 01:10:38 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9L1AcGu003945; Mon, 21 Oct 2013 01:10:38 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201310210110.r9L1AcGu003945@svn.freebsd.org> From: Navdeep Parhar Date: Mon, 21 Oct 2013 01:10: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: r256819 - in stable/10/sys: dev/cxgbe/iw_cxgbe modules/cxgbe modules/cxgbe/iw_cxgbe 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Oct 2013 01:10:38 -0000 Author: np Date: Mon Oct 21 01:10:37 2013 New Revision: 256819 URL: http://svnweb.freebsd.org/changeset/base/256819 Log: MFC r256694, r256713, r256714. r256694: iw_cxgbe: iWARP driver for Chelsio T4/T5 chips. This is a straight port of the iw_cxgb4 found in OFED distributions. r256713: iw_cxgbe should have a dependency on t4nex. r256714: Fix typo in previous commit. Approved by: re (hrs) Added: stable/10/sys/dev/cxgbe/iw_cxgbe/ - copied from r256694, head/sys/dev/cxgbe/iw_cxgbe/ stable/10/sys/modules/cxgbe/iw_cxgbe/ - copied from r256694, head/sys/modules/cxgbe/iw_cxgbe/ Modified: stable/10/sys/dev/cxgbe/iw_cxgbe/device.c stable/10/sys/modules/cxgbe/Makefile Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/dev/cxgbe/iw_cxgbe/device.c ============================================================================== --- head/sys/dev/cxgbe/iw_cxgbe/device.c Thu Oct 17 18:37:25 2013 (r256694) +++ stable/10/sys/dev/cxgbe/iw_cxgbe/device.c Mon Oct 21 01:10:37 2013 (r256819) @@ -363,6 +363,7 @@ static moduledata_t c4iw_mod_data = { }; MODULE_VERSION(iw_cxgbe, 1); +MODULE_DEPEND(iw_cxgbe, t4nex, 1, 1, 1); MODULE_DEPEND(iw_cxgbe, t4_tom, 1, 1, 1); MODULE_DEPEND(iw_cxgbe, ibcore, 1, 1, 1); DECLARE_MODULE(iw_cxgbe, c4iw_mod_data, SI_SUB_EXEC, SI_ORDER_ANY); Modified: stable/10/sys/modules/cxgbe/Makefile ============================================================================== --- stable/10/sys/modules/cxgbe/Makefile Mon Oct 21 00:58:35 2013 (r256818) +++ stable/10/sys/modules/cxgbe/Makefile Mon Oct 21 01:10:37 2013 (r256819) @@ -6,9 +6,16 @@ SUBDIR = if_cxgbe SUBDIR+= t4_firmware SUBDIR+= t5_firmware SUBDIR+= ${_tom} +SUBDIR+= ${_iw_cxgbe} -.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" +.if ${MACHINE_CPUARCH} == "amd64" _tom= tom +_iw_cxgbe= iw_cxgbe .endif +.if ${MACHINE_CPUARCH} == "i386" +_tom= tom +.endif + + .include From owner-svn-src-stable-10@FreeBSD.ORG Mon Oct 21 01:15:06 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8988F9F5; Mon, 21 Oct 2013 01:15:06 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5AEB62EC8; Mon, 21 Oct 2013 01:15:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9L1F6PW007012; Mon, 21 Oct 2013 01:15:06 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9L1F6Ir007011; Mon, 21 Oct 2013 01:15:06 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201310210115.r9L1F6Ir007011@svn.freebsd.org> From: Navdeep Parhar Date: Mon, 21 Oct 2013 01:15: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: r256820 - in stable/10/sys: contrib/rdma modules/rdma modules/rdma/addr modules/rdma/cma modules/rdma/core modules/rdma/iwcm 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Oct 2013 01:15:06 -0000 Author: np Date: Mon Oct 21 01:15:05 2013 New Revision: 256820 URL: http://svnweb.freebsd.org/changeset/base/256820 Log: MFC r256467: Delete all of the old RDMA code (except krping, which was switched to use sys/ofed some time back). This has been sitting around as dead code in the tree for a very long time. Approved by: re (hrs) Deleted: stable/10/sys/contrib/rdma/core_priv.h stable/10/sys/contrib/rdma/ib_addr.h stable/10/sys/contrib/rdma/ib_cache.h stable/10/sys/contrib/rdma/ib_cm.h stable/10/sys/contrib/rdma/ib_fmr_pool.h stable/10/sys/contrib/rdma/ib_mad.h stable/10/sys/contrib/rdma/ib_marshall.h stable/10/sys/contrib/rdma/ib_pack.h stable/10/sys/contrib/rdma/ib_sa.h stable/10/sys/contrib/rdma/ib_smi.h stable/10/sys/contrib/rdma/ib_umem.h stable/10/sys/contrib/rdma/ib_user_cm.h stable/10/sys/contrib/rdma/ib_user_mad.h stable/10/sys/contrib/rdma/ib_user_sa.h stable/10/sys/contrib/rdma/ib_user_verbs.h stable/10/sys/contrib/rdma/ib_verbs.h stable/10/sys/contrib/rdma/iw_cm.h stable/10/sys/contrib/rdma/rdma_addr.c stable/10/sys/contrib/rdma/rdma_cache.c stable/10/sys/contrib/rdma/rdma_cm.h stable/10/sys/contrib/rdma/rdma_cm_ib.h stable/10/sys/contrib/rdma/rdma_cma.c stable/10/sys/contrib/rdma/rdma_device.c stable/10/sys/contrib/rdma/rdma_iwcm.c stable/10/sys/contrib/rdma/rdma_user_cm.h stable/10/sys/contrib/rdma/rdma_verbs.c stable/10/sys/contrib/rdma/types.h stable/10/sys/modules/rdma/addr/ stable/10/sys/modules/rdma/cma/ stable/10/sys/modules/rdma/core/ stable/10/sys/modules/rdma/iwcm/ Modified: stable/10/sys/modules/rdma/Makefile Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/modules/rdma/Makefile ============================================================================== --- stable/10/sys/modules/rdma/Makefile Mon Oct 21 01:10:37 2013 (r256819) +++ stable/10/sys/modules/rdma/Makefile Mon Oct 21 01:15:05 2013 (r256820) @@ -1,9 +1,5 @@ # $FreeBSD$ -#SUBDIR= addr -#SUBDIR+= cma -#SUBDIR+= iwcm -#SUBDIR+= core SUBDIR+= krping .include From owner-svn-src-stable-10@FreeBSD.ORG Mon Oct 21 04:00:24 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 62957CB1; Mon, 21 Oct 2013 04:00:24 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 500602742; Mon, 21 Oct 2013 04:00:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9L40OFe095915; Mon, 21 Oct 2013 04:00:24 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9L40Opv095914; Mon, 21 Oct 2013 04:00:24 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201310210400.r9L40Opv095914@svn.freebsd.org> From: "Justin T. Gibbs" Date: Mon, 21 Oct 2013 04:00: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: r256821 - stable/10/sys/conf 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Oct 2013 04:00:24 -0000 Author: gibbs Date: Mon Oct 21 04:00:23 2013 New Revision: 256821 URL: http://svnweb.freebsd.org/changeset/base/256821 Log: MFC 256813: The Xen userland event channel driver isn't complete. Disabled it from the kernel build until it is ready. sys/conf/files: Remove the entry for xen/evtchn/evtchn_dev.c so it is not included in any kernel builds. Noticed by: smh Approved by: re (hrs) ------------------------------------------------------------------------ Modified: stable/10/sys/conf/files Directory Properties: stable/10/sys/ (props changed) stable/10/sys/conf/ (props changed) Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Mon Oct 21 01:15:05 2013 (r256820) +++ stable/10/sys/conf/files Mon Oct 21 04:00:23 2013 (r256821) @@ -3845,7 +3845,6 @@ vm/vm_zeroidle.c standard vm/vnode_pager.c standard xen/gnttab.c optional xen | xenhvm xen/features.c optional xen | xenhvm -xen/evtchn/evtchn_dev.c optional xen | xenhvm xen/xenbus/xenbus_if.m optional xen | xenhvm xen/xenbus/xenbus.c optional xen | xenhvm xen/xenbus/xenbusb_if.m optional xen | xenhvm From owner-svn-src-stable-10@FreeBSD.ORG Mon Oct 21 06:31:57 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F2C3E8A0; Mon, 21 Oct 2013 06:31:56 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DF2902DB9; Mon, 21 Oct 2013 06:31:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9L6VuAn078677; Mon, 21 Oct 2013 06:31:56 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9L6Vuj7078674; Mon, 21 Oct 2013 06:31:56 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201310210631.r9L6Vuj7078674@svn.freebsd.org> From: Navdeep Parhar Date: Mon, 21 Oct 2013 06:31:56 +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: r256829 - stable/10/sys/contrib/rdma/krping 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Oct 2013 06:31:57 -0000 Author: np Date: Mon Oct 21 06:31:56 2013 New Revision: 256829 URL: http://svnweb.freebsd.org/changeset/base/256829 Log: MFC r256470: Update krping to the latest upstream code. Move all the FreeBSD specific parts to krping_dev.c, which leaves the other files as close to their upstream versions as possible. Approved by: re (glebius) Modified: stable/10/sys/contrib/rdma/krping/getopt.c stable/10/sys/contrib/rdma/krping/krping.c stable/10/sys/contrib/rdma/krping/krping.h stable/10/sys/contrib/rdma/krping/krping_dev.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/contrib/rdma/krping/getopt.c ============================================================================== --- stable/10/sys/contrib/rdma/krping/getopt.c Mon Oct 21 06:27:20 2013 (r256828) +++ stable/10/sys/contrib/rdma/krping/getopt.c Mon Oct 21 06:31:56 2013 (r256829) @@ -5,9 +5,10 @@ #include __FBSDID("$FreeBSD$"); -#include -#include -#include +#include +#include +#include + #include "getopt.h" /** @@ -49,29 +50,29 @@ int krping_getopt(const char *caller, ch if (opts->has_arg & OPT_NOPARAM) { return opts->val; } - printf("%s: the %s option requires " + printk(KERN_INFO "%s: the %s option requires " "an argument\n", caller, token); return -EINVAL; } if (opts->has_arg & OPT_INT) { char* v; - *value = strtoul(val, &v, 0); + *value = simple_strtoul(val, &v, 0); if (!*v) { return opts->val; } - printf("%s: invalid numeric value " + printk(KERN_INFO "%s: invalid numeric value " "in %s=%s\n", caller, token, val); return -EDOM; } if (opts->has_arg & OPT_STRING) { return opts->val; } - printf("%s: unexpected argument %s to the " + printk(KERN_INFO "%s: unexpected argument %s to the " "%s option\n", caller, val, token); return -EINVAL; } } - printf("%s: Unrecognized option %s\n", caller, token); + printk(KERN_INFO "%s: Unrecognized option %s\n", caller, token); return -EOPNOTSUPP; } Modified: stable/10/sys/contrib/rdma/krping/krping.c ============================================================================== --- stable/10/sys/contrib/rdma/krping/krping.c Mon Oct 21 06:27:20 2013 (r256828) +++ stable/10/sys/contrib/rdma/krping/krping.c Mon Oct 21 06:31:56 2013 (r256829) @@ -1,6 +1,6 @@ /* * Copyright (c) 2005 Ammasso, Inc. All rights reserved. - * Copyright (c) 2006 Open Grid Computing, Inc. All rights reserved. + * Copyright (c) 2006-2009 Open Grid Computing, Inc. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -34,39 +34,52 @@ #include __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 -#include -#include -#include -#include -#include -#include +#include -#include -#include - -#include +#include #include -#include "getopt.h" #include "krping.h" +#include "getopt.h" -#define PFX "krping: " +extern int krping_debug; +#define DEBUG_LOG(cb, x...) if (krping_debug) krping_printf((cb)->cookie, x) +#define PRINTF(cb, x...) krping_printf((cb)->cookie, x) -static int debug = 0; -#define DEBUG_LOG if (debug) printf +MODULE_AUTHOR("Steve Wise"); +MODULE_DESCRIPTION("RDMA ping client/server"); +MODULE_LICENSE("Dual BSD/GPL"); + +static __inline uint64_t +get_cycles(void) +{ + uint32_t low, high; + __asm __volatile("rdtsc" : "=a" (low), "=d" (high)); + return (low | ((u_int64_t)high << 32)); +} + +typedef uint64_t cycles_t; + +enum mem_type { + DMA = 1, + FASTREG = 2, + MW = 3, + MR = 4 +}; static const struct krping_option krping_opts[] = { {"count", OPT_INT, 'C'}, @@ -77,23 +90,29 @@ static const struct krping_option krping {"validate", OPT_NOPARAM, 'V'}, {"server", OPT_NOPARAM, 's'}, {"client", OPT_NOPARAM, 'c'}, - {"dmamr", OPT_NOPARAM, 'D'}, - {"debug", OPT_NOPARAM, 'd'}, - {"wlat", OPT_NOPARAM, 'l'}, - {"rlat", OPT_NOPARAM, 'L'}, - {"bw", OPT_NOPARAM, 'B'}, - {"tx-depth", OPT_INT, 't'}, - {"poll", OPT_NOPARAM, 'P'}, - {"memlimit", OPT_INT, 'm'}, + {"mem_mode", OPT_STRING, 'm'}, + {"server_inv", OPT_NOPARAM, 'I'}, + {"wlat", OPT_NOPARAM, 'l'}, + {"rlat", OPT_NOPARAM, 'L'}, + {"bw", OPT_NOPARAM, 'B'}, + {"duplex", OPT_NOPARAM, 'd'}, + {"txdepth", OPT_INT, 'T'}, + {"poll", OPT_NOPARAM, 'P'}, + {"local_dma_lkey", OPT_NOPARAM, 'Z'}, + {"read_inv", OPT_NOPARAM, 'R'}, + {"fr", OPT_NOPARAM, 'f'}, {NULL, 0, 0} }; -struct mtx krping_mutex; +#define htonll(x) cpu_to_be64((x)) +#define ntohll(x) cpu_to_be64((x)) + +static struct mutex krping_mutex; /* * List of running krping threads. */ -struct krping_cb_list krping_cbs; +static LIST_HEAD(krping_cbs); /* * krping "ping/pong" loop: @@ -109,24 +128,118 @@ struct krping_cb_list krping_cbs; */ /* + * These states are used to signal events between the completion handler + * and the main client or server thread. + * + * Once CONNECTED, they cycle through RDMA_READ_ADV, RDMA_WRITE_ADV, + * and RDMA_WRITE_COMPLETE for each ping. + */ +enum test_state { + IDLE = 1, + CONNECT_REQUEST, + ADDR_RESOLVED, + ROUTE_RESOLVED, + CONNECTED, + RDMA_READ_ADV, + RDMA_READ_COMPLETE, + RDMA_WRITE_ADV, + RDMA_WRITE_COMPLETE, + ERROR +}; + +struct krping_rdma_info { + uint64_t buf; + uint32_t rkey; + uint32_t size; +}; + +/* * Default max buffer size for IO... */ #define RPING_BUFSIZE 128*1024 -#define RPING_SQ_DEPTH 32 +#define RPING_SQ_DEPTH 64 -static void krping_wait(struct krping_cb *cb, int state) -{ - int rc; - mtx_lock(&cb->lock); - while (cb->state < state) { - rc = msleep(cb, &cb->lock, PCATCH, "krping", 0); - if (rc && rc != ERESTART) { - cb->state = ERROR; - break; - } - } - mtx_unlock(&cb->lock); -} +/* + * Control block struct. + */ +struct krping_cb { + void *cookie; + int server; /* 0 iff client */ + struct ib_cq *cq; + struct ib_pd *pd; + struct ib_qp *qp; + + enum mem_type mem; + struct ib_mr *dma_mr; + + struct ib_fast_reg_page_list *page_list; + int page_list_len; + struct ib_send_wr fastreg_wr; + struct ib_send_wr invalidate_wr; + struct ib_mr *fastreg_mr; + int server_invalidate; + int read_inv; + u8 key; + + struct ib_mw *mw; + struct ib_mw_bind bind_attr; + + struct ib_recv_wr rq_wr; /* recv work request record */ + struct ib_sge recv_sgl; /* recv single SGE */ + struct krping_rdma_info recv_buf;/* malloc'd buffer */ + u64 recv_dma_addr; + DECLARE_PCI_UNMAP_ADDR(recv_mapping) + struct ib_mr *recv_mr; + + struct ib_send_wr sq_wr; /* send work requrest record */ + struct ib_sge send_sgl; + struct krping_rdma_info send_buf;/* single send buf */ + u64 send_dma_addr; + DECLARE_PCI_UNMAP_ADDR(send_mapping) + struct ib_mr *send_mr; + + struct ib_send_wr rdma_sq_wr; /* rdma work request record */ + struct ib_sge rdma_sgl; /* rdma single SGE */ + char *rdma_buf; /* used as rdma sink */ + u64 rdma_dma_addr; + DECLARE_PCI_UNMAP_ADDR(rdma_mapping) + struct ib_mr *rdma_mr; + + uint32_t remote_rkey; /* remote guys RKEY */ + uint64_t remote_addr; /* remote guys TO */ + uint32_t remote_len; /* remote guys LEN */ + + char *start_buf; /* rdma read src */ + u64 start_dma_addr; + DECLARE_PCI_UNMAP_ADDR(start_mapping) + struct ib_mr *start_mr; + + enum test_state state; /* used for cond/signalling */ + wait_queue_head_t sem; + struct krping_stats stats; + + uint16_t port; /* dst port in NBO */ + struct in_addr addr; /* dst addr in NBO */ + char *addr_str; /* dst addr string */ + int verbose; /* verbose logging */ + int count; /* ping count */ + int size; /* ping data size */ + int validate; /* validate ping data */ + int wlat; /* run wlat test */ + int rlat; /* run rlat test */ + int bw; /* run bw test */ + int duplex; /* run bw full duplex test */ + int poll; /* poll or block for rlat test */ + int txdepth; /* SQ depth */ + int local_dma_lkey; /* use 0 for lkey */ + int frtest; /* fastreg test */ + + /* CM stuff */ + struct rdma_cm_id *cm_id; /* connection on client side,*/ + /* listener on server side. */ + struct rdma_cm_id *child_cm_id; /* connection on server side */ + struct list_head list; +}; static int krping_cma_event_handler(struct rdma_cm_id *cma_id, struct rdma_cm_event *event) @@ -134,39 +247,37 @@ static int krping_cma_event_handler(stru int ret; struct krping_cb *cb = cma_id->context; - DEBUG_LOG(PFX "cma_event type %d cma_id %p (%s)\n", event->event, cma_id, - (cma_id == cb->cm_id) ? "parent" : "child"); + DEBUG_LOG(cb, "cma_event type %d cma_id %p (%s)\n", event->event, + cma_id, (cma_id == cb->cm_id) ? "parent" : "child"); - mtx_lock(&cb->lock); switch (event->event) { case RDMA_CM_EVENT_ADDR_RESOLVED: cb->state = ADDR_RESOLVED; ret = rdma_resolve_route(cma_id, 2000); if (ret) { - log(LOG_ERR, "rdma_resolve_route error %d\n", - ret); - wakeup(cb); + PRINTF(cb, "rdma_resolve_route error %d\n", ret); + wake_up_interruptible(&cb->sem); } break; case RDMA_CM_EVENT_ROUTE_RESOLVED: cb->state = ROUTE_RESOLVED; - wakeup(cb); + wake_up_interruptible(&cb->sem); break; case RDMA_CM_EVENT_CONNECT_REQUEST: cb->state = CONNECT_REQUEST; cb->child_cm_id = cma_id; - DEBUG_LOG(PFX "child cma %p\n", cb->child_cm_id); - wakeup(cb); + DEBUG_LOG(cb, "child cma %p\n", cb->child_cm_id); + wake_up_interruptible(&cb->sem); break; case RDMA_CM_EVENT_ESTABLISHED: - DEBUG_LOG(PFX "ESTABLISHED\n"); + DEBUG_LOG(cb, "ESTABLISHED\n"); if (!cb->server) { cb->state = CONNECTED; - wakeup(cb); } + wake_up_interruptible(&cb->sem); break; case RDMA_CM_EVENT_ADDR_ERROR: @@ -174,40 +285,34 @@ static int krping_cma_event_handler(stru case RDMA_CM_EVENT_CONNECT_ERROR: case RDMA_CM_EVENT_UNREACHABLE: case RDMA_CM_EVENT_REJECTED: - log(LOG_ERR, "cma event %d, error %d\n", event->event, + PRINTF(cb, "cma event %d, error %d\n", event->event, event->status); cb->state = ERROR; - wakeup(cb); + wake_up_interruptible(&cb->sem); break; case RDMA_CM_EVENT_DISCONNECTED: - DEBUG_LOG(PFX "DISCONNECT EVENT...\n"); + PRINTF(cb, "DISCONNECT EVENT...\n"); cb->state = ERROR; - wakeup(cb); + wake_up_interruptible(&cb->sem); break; case RDMA_CM_EVENT_DEVICE_REMOVAL: - DEBUG_LOG(PFX "cma detected device removal!!!!\n"); - cb->state = ERROR; - wakeup(cb); - mtx_unlock(&cb->lock); - krping_wait(cb, CLEANUP); - tsleep(cb, 0, "krping", 5000); - return 0; + PRINTF(cb, "cma detected device removal!!!!\n"); + break; default: - log(LOG_ERR, "oof bad type!\n"); - wakeup(cb); + PRINTF(cb, "oof bad type!\n"); + wake_up_interruptible(&cb->sem); break; } - mtx_unlock(&cb->lock); return 0; } static int server_recv(struct krping_cb *cb, struct ib_wc *wc) { if (wc->byte_len != sizeof(cb->recv_buf)) { - log(LOG_ERR, "Received bogus data, size %d\n", + PRINTF(cb, "Received bogus data, size %d\n", wc->byte_len); return -1; } @@ -215,7 +320,7 @@ static int server_recv(struct krping_cb cb->remote_rkey = ntohl(cb->recv_buf.rkey); cb->remote_addr = ntohll(cb->recv_buf.buf); cb->remote_len = ntohl(cb->recv_buf.size); - DEBUG_LOG(PFX "Received rkey %x addr %llx len %d from peer\n", + DEBUG_LOG(cb, "Received rkey %x addr %llx len %d from peer\n", cb->remote_rkey, (unsigned long long)cb->remote_addr, cb->remote_len); @@ -230,7 +335,7 @@ static int server_recv(struct krping_cb static int client_recv(struct krping_cb *cb, struct ib_wc *wc) { if (wc->byte_len != sizeof(cb->recv_buf)) { - log(LOG_ERR, "Received bogus data, size %d\n", + PRINTF(cb, "Received bogus data, size %d\n", wc->byte_len); return -1; } @@ -250,11 +355,13 @@ static void krping_cq_event_handler(stru struct ib_recv_wr *bad_wr; int ret; - mtx_lock(&cb->lock); - KASSERT(cb->cq == cq, ("bad condition")); + BUG_ON(cb->cq != cq); if (cb->state == ERROR) { - log(LOG_ERR, "cq completion in ERROR state\n"); - mtx_unlock(&cb->lock); + PRINTF(cb, "cq completion in ERROR state\n"); + return; + } + if (cb->frtest) { + PRINTF(cb, "cq completion event in frtest!\n"); return; } if (!cb->wlat && !cb->rlat && !cb->bw) @@ -262,76 +369,77 @@ static void krping_cq_event_handler(stru while ((ret = ib_poll_cq(cb->cq, 1, &wc)) == 1) { if (wc.status) { if (wc.status == IB_WC_WR_FLUSH_ERR) { - DEBUG_LOG("cq flushed\n"); + DEBUG_LOG(cb, "cq flushed\n"); continue; } else { - log(LOG_CRIT, "cq completion failed status %d\n", - wc.status); + PRINTF(cb, "cq completion failed with " + "wr_id %Lx status %d opcode %d vender_err %x\n", + wc.wr_id, wc.status, wc.opcode, wc.vendor_err); goto error; } } switch (wc.opcode) { case IB_WC_SEND: - DEBUG_LOG(PFX "send completion\n"); + DEBUG_LOG(cb, "send completion\n"); cb->stats.send_bytes += cb->send_sgl.length; cb->stats.send_msgs++; break; case IB_WC_RDMA_WRITE: - DEBUG_LOG(PFX "rdma write completion\n"); + DEBUG_LOG(cb, "rdma write completion\n"); cb->stats.write_bytes += cb->rdma_sq_wr.sg_list->length; cb->stats.write_msgs++; cb->state = RDMA_WRITE_COMPLETE; - wakeup(cb); + wake_up_interruptible(&cb->sem); break; case IB_WC_RDMA_READ: - DEBUG_LOG(PFX "rdma read completion\n"); + DEBUG_LOG(cb, "rdma read completion\n"); cb->stats.read_bytes += cb->rdma_sq_wr.sg_list->length; cb->stats.read_msgs++; cb->state = RDMA_READ_COMPLETE; - wakeup(cb); + wake_up_interruptible(&cb->sem); break; case IB_WC_RECV: - DEBUG_LOG(PFX "recv completion\n"); + DEBUG_LOG(cb, "recv completion\n"); cb->stats.recv_bytes += sizeof(cb->recv_buf); cb->stats.recv_msgs++; if (cb->wlat || cb->rlat || cb->bw) ret = server_recv(cb, &wc); else ret = cb->server ? server_recv(cb, &wc) : - client_recv(cb, &wc); + client_recv(cb, &wc); if (ret) { - log(LOG_ERR, "recv wc error: %d\n", ret); + PRINTF(cb, "recv wc error: %d\n", ret); goto error; } ret = ib_post_recv(cb->qp, &cb->rq_wr, &bad_wr); if (ret) { - log(LOG_ERR, "post recv error: %d\n", + PRINTF(cb, "post recv error: %d\n", ret); goto error; } - wakeup(cb); + wake_up_interruptible(&cb->sem); break; default: - log(LOG_ERR, "unknown!!!!! completion\n"); + PRINTF(cb, + "%s:%d Unexpected opcode %d, Shutting down\n", + __func__, __LINE__, wc.opcode); goto error; } } if (ret) { - log(LOG_ERR, "poll error %d\n", ret); + PRINTF(cb, "poll error %d\n", ret); goto error; } - mtx_unlock(&cb->lock); return; error: cb->state = ERROR; - wakeup(cb); - mtx_unlock(&cb->lock); + wake_up_interruptible(&cb->sem); } static int krping_accept(struct krping_cb *cb) @@ -339,7 +447,7 @@ static int krping_accept(struct krping_c struct rdma_conn_param conn_param; int ret; - DEBUG_LOG(PFX "accepting client connection request\n"); + DEBUG_LOG(cb, "accepting client connection request\n"); memset(&conn_param, 0, sizeof conn_param); conn_param.responder_resources = 1; @@ -347,14 +455,15 @@ static int krping_accept(struct krping_c ret = rdma_accept(cb->child_cm_id, &conn_param); if (ret) { - log(LOG_ERR, "rdma_accept error: %d\n", ret); + PRINTF(cb, "rdma_accept error: %d\n", ret); return ret; } if (!cb->wlat && !cb->rlat && !cb->bw) { - krping_wait(cb, CONNECTED); + wait_event_interruptible(cb->sem, cb->state >= CONNECTED); if (cb->state == ERROR) { - log(LOG_ERR, "wait for CONNECTED state %d\n", cb->state); + PRINTF(cb, "wait for CONNECTED state %d\n", + cb->state); return -1; } } @@ -363,19 +472,22 @@ static int krping_accept(struct krping_c static void krping_setup_wr(struct krping_cb *cb) { - /* XXX X86 only here... not mapping for dma! */ - cb->recv_sgl.addr = vtophys(&cb->recv_buf); + cb->recv_sgl.addr = cb->recv_dma_addr; cb->recv_sgl.length = sizeof cb->recv_buf; - if (cb->use_dmamr) + if (cb->local_dma_lkey) + cb->recv_sgl.lkey = cb->qp->device->local_dma_lkey; + else if (cb->mem == DMA) cb->recv_sgl.lkey = cb->dma_mr->lkey; else cb->recv_sgl.lkey = cb->recv_mr->lkey; cb->rq_wr.sg_list = &cb->recv_sgl; cb->rq_wr.num_sge = 1; - cb->send_sgl.addr = vtophys(&cb->send_buf); + cb->send_sgl.addr = cb->send_dma_addr; cb->send_sgl.length = sizeof cb->send_buf; - if (cb->use_dmamr) + if (cb->local_dma_lkey) + cb->send_sgl.lkey = cb->qp->device->local_dma_lkey; + else if (cb->mem == DMA) cb->send_sgl.lkey = cb->dma_mr->lkey; else cb->send_sgl.lkey = cb->send_mr->lkey; @@ -385,18 +497,39 @@ static void krping_setup_wr(struct krpin cb->sq_wr.sg_list = &cb->send_sgl; cb->sq_wr.num_sge = 1; - cb->rdma_addr = vtophys(cb->rdma_buf); - cb->rdma_sgl.addr = cb->rdma_addr; - if (cb->use_dmamr) - cb->rdma_sgl.lkey = cb->dma_mr->lkey; - else - cb->rdma_sgl.lkey = cb->rdma_mr->lkey; - cb->rdma_sq_wr.send_flags = IB_SEND_SIGNALED; - cb->rdma_sq_wr.sg_list = &cb->rdma_sgl; - cb->rdma_sq_wr.num_sge = 1; + if (cb->server || cb->wlat || cb->rlat || cb->bw) { + cb->rdma_sgl.addr = cb->rdma_dma_addr; + if (cb->mem == MR) + cb->rdma_sgl.lkey = cb->rdma_mr->lkey; + cb->rdma_sq_wr.send_flags = IB_SEND_SIGNALED; + cb->rdma_sq_wr.sg_list = &cb->rdma_sgl; + cb->rdma_sq_wr.num_sge = 1; + } + + switch(cb->mem) { + case FASTREG: + + /* + * A chain of 2 WRs, INVALDATE_MR + FAST_REG_MR. + * both unsignaled. The client uses them to reregister + * the rdma buffers with a new key each iteration. + */ + cb->fastreg_wr.opcode = IB_WR_FAST_REG_MR; + cb->fastreg_wr.wr.fast_reg.page_shift = PAGE_SHIFT; + cb->fastreg_wr.wr.fast_reg.length = cb->size; + cb->fastreg_wr.wr.fast_reg.page_list = cb->page_list; + cb->fastreg_wr.wr.fast_reg.page_list_len = cb->page_list_len; - if (!cb->server || cb->wlat || cb->rlat || cb->bw) { - cb->start_addr = vtophys(cb->start_buf); + cb->invalidate_wr.next = &cb->fastreg_wr; + cb->invalidate_wr.opcode = IB_WR_LOCAL_INV; + break; + case MW: + cb->bind_attr.wr_id = 0xabbaabba; + cb->bind_attr.send_flags = 0; /* unsignaled */ + cb->bind_attr.length = cb->size; + break; + default: + break; } } @@ -406,134 +539,207 @@ static int krping_setup_buffers(struct k struct ib_phys_buf buf; u64 iovbase; - DEBUG_LOG(PFX "krping_setup_buffers called on cb %p\n", cb); + DEBUG_LOG(cb, "krping_setup_buffers called on cb %p\n", cb); + + cb->recv_dma_addr = dma_map_single(cb->pd->device->dma_device, + &cb->recv_buf, + sizeof(cb->recv_buf), DMA_BIDIRECTIONAL); + pci_unmap_addr_set(cb, recv_mapping, cb->recv_dma_addr); + cb->send_dma_addr = dma_map_single(cb->pd->device->dma_device, + &cb->send_buf, sizeof(cb->send_buf), + DMA_BIDIRECTIONAL); + pci_unmap_addr_set(cb, send_mapping, cb->send_dma_addr); - if (cb->use_dmamr) { + if (cb->mem == DMA) { cb->dma_mr = ib_get_dma_mr(cb->pd, IB_ACCESS_LOCAL_WRITE| IB_ACCESS_REMOTE_READ| IB_ACCESS_REMOTE_WRITE); if (IS_ERR(cb->dma_mr)) { - log(LOG_ERR, "reg_dmamr failed\n"); - return PTR_ERR(cb->dma_mr); + DEBUG_LOG(cb, "reg_dmamr failed\n"); + ret = PTR_ERR(cb->dma_mr); + goto bail; } } else { + if (!cb->local_dma_lkey) { + buf.addr = cb->recv_dma_addr; + buf.size = sizeof cb->recv_buf; + DEBUG_LOG(cb, "recv buf dma_addr %llx size %d\n", buf.addr, + (int)buf.size); + iovbase = cb->recv_dma_addr; + cb->recv_mr = ib_reg_phys_mr(cb->pd, &buf, 1, + IB_ACCESS_LOCAL_WRITE, + &iovbase); + + if (IS_ERR(cb->recv_mr)) { + DEBUG_LOG(cb, "recv_buf reg_mr failed\n"); + ret = PTR_ERR(cb->recv_mr); + goto bail; + } - buf.addr = vtophys(&cb->recv_buf); - buf.size = sizeof cb->recv_buf; - iovbase = vtophys(&cb->recv_buf); - cb->recv_mr = ib_reg_phys_mr(cb->pd, &buf, 1, - IB_ACCESS_LOCAL_WRITE, - &iovbase); - - if (IS_ERR(cb->recv_mr)) { - log(LOG_ERR, "recv_buf reg_mr failed\n"); - return PTR_ERR(cb->recv_mr); - } - - buf.addr = vtophys(&cb->send_buf); - buf.size = sizeof cb->send_buf; - iovbase = vtophys(&cb->send_buf); - cb->send_mr = ib_reg_phys_mr(cb->pd, &buf, 1, - 0, &iovbase); - - if (IS_ERR(cb->send_mr)) { - log(LOG_ERR, "send_buf reg_mr failed\n"); - ib_dereg_mr(cb->recv_mr); - return PTR_ERR(cb->send_mr); + buf.addr = cb->send_dma_addr; + buf.size = sizeof cb->send_buf; + DEBUG_LOG(cb, "send buf dma_addr %llx size %d\n", buf.addr, + (int)buf.size); + iovbase = cb->send_dma_addr; + cb->send_mr = ib_reg_phys_mr(cb->pd, &buf, 1, + 0, &iovbase); + + if (IS_ERR(cb->send_mr)) { + DEBUG_LOG(cb, "send_buf reg_mr failed\n"); + ret = PTR_ERR(cb->send_mr); + goto bail; + } } } - /* RNIC adapters have a limit upto which it can register physical memory - * If DMA-MR memory mode is set then normally driver registers maximum - * supported memory. After that if contigmalloc allocates memory beyond the - * specified RNIC limit then Krping may not work. - */ - if (cb->use_dmamr && cb->memlimit) - cb->rdma_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK, 0, cb->memlimit, - PAGE_SIZE, 0); - else - cb->rdma_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK, 0, -1UL, - PAGE_SIZE, 0); - + cb->rdma_buf = kmalloc(cb->size, GFP_KERNEL); if (!cb->rdma_buf) { - log(LOG_ERR, "rdma_buf malloc failed\n"); - ret = ENOMEM; - goto err1; - } - if (!cb->use_dmamr) { - - buf.addr = vtophys(cb->rdma_buf); - buf.size = cb->size; - iovbase = vtophys(cb->rdma_buf); - cb->rdma_mr = ib_reg_phys_mr(cb->pd, &buf, 1, + DEBUG_LOG(cb, "rdma_buf malloc failed\n"); + ret = -ENOMEM; + goto bail; + } + + cb->rdma_dma_addr = dma_map_single(cb->pd->device->dma_device, + cb->rdma_buf, cb->size, + DMA_BIDIRECTIONAL); + pci_unmap_addr_set(cb, rdma_mapping, cb->rdma_dma_addr); + if (cb->mem != DMA) { + switch (cb->mem) { + case FASTREG: + cb->page_list_len = (((cb->size - 1) & PAGE_MASK) + + PAGE_SIZE) >> PAGE_SHIFT; + cb->page_list = ib_alloc_fast_reg_page_list( + cb->pd->device, + cb->page_list_len); + if (IS_ERR(cb->page_list)) { + DEBUG_LOG(cb, "recv_buf reg_mr failed\n"); + ret = PTR_ERR(cb->page_list); + goto bail; + } + cb->fastreg_mr = ib_alloc_fast_reg_mr(cb->pd, + cb->page_list->max_page_list_len); + if (IS_ERR(cb->fastreg_mr)) { + DEBUG_LOG(cb, "recv_buf reg_mr failed\n"); + ret = PTR_ERR(cb->fastreg_mr); + goto bail; + } + DEBUG_LOG(cb, "fastreg rkey 0x%x page_list %p" + " page_list_len %u\n", cb->fastreg_mr->rkey, + cb->page_list, cb->page_list_len); + break; + case MW: + cb->mw = ib_alloc_mw(cb->pd); + if (IS_ERR(cb->mw)) { + DEBUG_LOG(cb, "recv_buf alloc_mw failed\n"); + ret = PTR_ERR(cb->mw); + goto bail; + } + DEBUG_LOG(cb, "mw rkey 0x%x\n", cb->mw->rkey); + /*FALLTHROUGH*/ + case MR: + buf.addr = cb->rdma_dma_addr; + buf.size = cb->size; + iovbase = cb->rdma_dma_addr; + cb->rdma_mr = ib_reg_phys_mr(cb->pd, &buf, 1, IB_ACCESS_REMOTE_READ| IB_ACCESS_REMOTE_WRITE, &iovbase); - - if (IS_ERR(cb->rdma_mr)) { - log(LOG_ERR, "rdma_buf reg_mr failed\n"); - ret = PTR_ERR(cb->rdma_mr); - goto err2; + if (IS_ERR(cb->rdma_mr)) { + DEBUG_LOG(cb, "rdma_buf reg_mr failed\n"); + ret = PTR_ERR(cb->rdma_mr); + goto bail; + } + DEBUG_LOG(cb, "rdma buf dma_addr %llx size %d mr rkey 0x%x\n", + buf.addr, (int)buf.size, cb->rdma_mr->rkey); + break; + default: + ret = -EINVAL; + goto bail; + break; } } if (!cb->server || cb->wlat || cb->rlat || cb->bw) { - if (cb->use_dmamr && cb->memlimit) - cb->start_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK, - 0, cb->memlimit, PAGE_SIZE, 0); - else - cb->start_buf = contigmalloc(cb->size, M_DEVBUF, M_WAITOK, - 0, -1UL, PAGE_SIZE, 0); + + cb->start_buf = kmalloc(cb->size, GFP_KERNEL); if (!cb->start_buf) { - log(LOG_ERR, "start_buf malloc failed\n"); - ret = ENOMEM; - goto err2; + DEBUG_LOG(cb, "start_buf malloc failed\n"); + ret = -ENOMEM; + goto bail; } - if (!cb->use_dmamr) { + + cb->start_dma_addr = dma_map_single(cb->pd->device->dma_device, + cb->start_buf, cb->size, + DMA_BIDIRECTIONAL); + pci_unmap_addr_set(cb, start_mapping, cb->start_dma_addr); + + if (cb->mem == MR || cb->mem == MW) { unsigned flags = IB_ACCESS_REMOTE_READ; - if (cb->wlat || cb->rlat || cb->bw) + if (cb->wlat || cb->rlat || cb->bw) flags |= IB_ACCESS_REMOTE_WRITE; - buf.addr = vtophys(cb->start_buf); + + buf.addr = cb->start_dma_addr; buf.size = cb->size; - iovbase = vtophys(cb->start_buf); + DEBUG_LOG(cb, "start buf dma_addr %llx size %d\n", + buf.addr, (int)buf.size); + iovbase = cb->start_dma_addr; cb->start_mr = ib_reg_phys_mr(cb->pd, &buf, 1, flags, &iovbase); if (IS_ERR(cb->start_mr)) { - log(LOG_ERR, "start_buf reg_mr failed\n"); + DEBUG_LOG(cb, "start_buf reg_mr failed\n"); ret = PTR_ERR(cb->start_mr); - goto err3; + goto bail; } } } krping_setup_wr(cb); - DEBUG_LOG(PFX "allocated & registered buffers...\n"); + DEBUG_LOG(cb, "allocated & registered buffers...\n"); return 0; -err3: - contigfree(cb->start_buf, cb->size, M_DEVBUF); - - if (!cb->use_dmamr) +bail: + if (cb->fastreg_mr && !IS_ERR(cb->fastreg_mr)) + ib_dereg_mr(cb->fastreg_mr); + if (cb->mw && !IS_ERR(cb->mw)) + ib_dealloc_mw(cb->mw); + if (cb->rdma_mr && !IS_ERR(cb->rdma_mr)) ib_dereg_mr(cb->rdma_mr); -err2: - contigfree(cb->rdma_buf, cb->size, M_DEVBUF); -err1: - if (cb->use_dmamr) + if (cb->page_list && !IS_ERR(cb->page_list)) + ib_free_fast_reg_page_list(cb->page_list); + if (cb->dma_mr && !IS_ERR(cb->dma_mr)) ib_dereg_mr(cb->dma_mr); - else { + if (cb->recv_mr && !IS_ERR(cb->recv_mr)) ib_dereg_mr(cb->recv_mr); + if (cb->send_mr && !IS_ERR(cb->send_mr)) ib_dereg_mr(cb->send_mr); - } + if (cb->rdma_buf) + kfree(cb->rdma_buf); + if (cb->start_buf) + kfree(cb->start_buf); return ret; } static void krping_free_buffers(struct krping_cb *cb) { - DEBUG_LOG(PFX "krping_free_buffers called on cb %p\n", cb); + DEBUG_LOG(cb, "krping_free_buffers called on cb %p\n", cb); -#if 0 + if (cb->dma_mr) + ib_dereg_mr(cb->dma_mr); + if (cb->send_mr) + ib_dereg_mr(cb->send_mr); + if (cb->recv_mr) + ib_dereg_mr(cb->recv_mr); + if (cb->rdma_mr) + ib_dereg_mr(cb->rdma_mr); + if (cb->start_mr) + ib_dereg_mr(cb->start_mr); + if (cb->fastreg_mr) + ib_dereg_mr(cb->fastreg_mr); + if (cb->mw) + ib_dealloc_mw(cb->mw); + dma_unmap_single(cb->pd->device->dma_device, pci_unmap_addr(cb, recv_mapping), sizeof(cb->recv_buf), DMA_BIDIRECTIONAL); @@ -543,24 +749,12 @@ static void krping_free_buffers(struct k dma_unmap_single(cb->pd->device->dma_device, pci_unmap_addr(cb, rdma_mapping), cb->size, DMA_BIDIRECTIONAL); -#endif - contigfree(cb->rdma_buf, cb->size, M_DEVBUF); - if (!cb->server || cb->wlat || cb->rlat || cb->bw) { -#if 0 + kfree(cb->rdma_buf); + if (cb->start_buf) { dma_unmap_single(cb->pd->device->dma_device, pci_unmap_addr(cb, start_mapping), cb->size, DMA_BIDIRECTIONAL); -#endif - contigfree(cb->start_buf, cb->size, M_DEVBUF); - } - if (cb->use_dmamr) - ib_dereg_mr(cb->dma_mr); - else { - ib_dereg_mr(cb->send_mr); - ib_dereg_mr(cb->recv_mr); - ib_dereg_mr(cb->rdma_mr); - if (!cb->server) - ib_dereg_mr(cb->start_mr); + kfree(cb->start_buf); } } @@ -577,6 +771,7 @@ static int krping_create_qp(struct krpin init_attr.qp_type = IB_QPT_RC; init_attr.send_cq = cb->cq; init_attr.recv_cq = cb->cq; + init_attr.sq_sig_type = IB_SIGNAL_REQ_WR; if (cb->server) { ret = rdma_create_qp(cb->child_cm_id, cb->pd, &init_attr); @@ -603,36 +798,36 @@ static int krping_setup_qp(struct krping int ret; cb->pd = ib_alloc_pd(cm_id->device); if (IS_ERR(cb->pd)) { - log(LOG_ERR, "ib_alloc_pd failed\n"); + PRINTF(cb, "ib_alloc_pd failed\n"); return PTR_ERR(cb->pd); } - DEBUG_LOG(PFX "created pd %p\n", cb->pd); + DEBUG_LOG(cb, "created pd %p\n", cb->pd); - strlcpy(cb->name, cb->pd->device->name, sizeof(cb->name)); + strlcpy(cb->stats.name, cb->pd->device->name, sizeof(cb->stats.name)); cb->cq = ib_create_cq(cm_id->device, krping_cq_event_handler, NULL, cb, cb->txdepth * 2, 0); if (IS_ERR(cb->cq)) { - log(LOG_ERR, "ib_create_cq failed\n"); + PRINTF(cb, "ib_create_cq failed\n"); ret = PTR_ERR(cb->cq); goto err1; } - DEBUG_LOG(PFX "created cq %p\n", cb->cq); + DEBUG_LOG(cb, "created cq %p\n", cb->cq); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable-10@FreeBSD.ORG Mon Oct 21 19:11:16 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 11C3F49A; Mon, 21 Oct 2013 19:11:16 +0000 (UTC) (envelope-from andreast@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E364C2E49; Mon, 21 Oct 2013 19:11:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9LJBFli093142; Mon, 21 Oct 2013 19:11:15 GMT (envelope-from andreast@svn.freebsd.org) Received: (from andreast@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9LJBF1I093130; Mon, 21 Oct 2013 19:11:15 GMT (envelope-from andreast@svn.freebsd.org) Message-Id: <201310211911.r9LJBF1I093130@svn.freebsd.org> From: Andreas Tobler Date: Mon, 21 Oct 2013 19:11:15 +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: r256857 - stable/10/sys/powerpc/powermac 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Oct 2013 19:11:16 -0000 Author: andreast Date: Mon Oct 21 19:11:15 2013 New Revision: 256857 URL: http://svnweb.freebsd.org/changeset/base/256857 Log: MFC: 256555 Move the resource allocation from the ata_*_probe section to the ata_*_attach section. This prevents a boot crash on nearly all iMacs and PowerMacs/Books. The allocation in the probe section was working before because ata_probe was returning 0 which did not invoke a second DEVICE_PROBE. Now it returns a BUS_PROBE_DEFAULT which can invoke a second DEVICE_PROBE which results in a "failed to reserve resource" exit. PR: powerpc/182978 Approved by: re(gjb) Modified: stable/10/sys/powerpc/powermac/ata_kauai.c stable/10/sys/powerpc/powermac/ata_macio.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/powerpc/powermac/ata_kauai.c ============================================================================== --- stable/10/sys/powerpc/powermac/ata_kauai.c Mon Oct 21 18:47:29 2013 (r256856) +++ stable/10/sys/powerpc/powermac/ata_kauai.c Mon Oct 21 19:11:15 2013 (r256857) @@ -194,12 +194,11 @@ static const u_int udma_timing_shasta[] static int ata_kauai_probe(device_t dev) { - struct ata_channel *ch; struct ata_kauai_softc *sc; u_int32_t devid; phandle_t node; const char *compatstring = NULL; - int i, found, rid; + int i, found; found = 0; devid = pci_get_devid(dev); @@ -216,7 +215,6 @@ ata_kauai_probe(device_t dev) node = ofw_bus_get_node(dev); sc = device_get_softc(dev); bzero(sc, sizeof(struct ata_kauai_softc)); - ch = &sc->sc_ch.sc_ch; compatstring = ofw_bus_get_compat(dev); if (compatstring != NULL && strcmp(compatstring,"shasta-ata") == 0) @@ -227,32 +225,6 @@ ata_kauai_probe(device_t dev) (compatstring == NULL || strcmp(compatstring, "K2-UATA") != 0)) bus_set_resource(dev, SYS_RES_IRQ, 0, 39, 1); - rid = PCIR_BARS; - sc->sc_memr = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, - RF_ACTIVE); - if (sc->sc_memr == NULL) { - device_printf(dev, "could not allocate memory\n"); - return (ENXIO); - } - - /* - * Set up the resource vectors - */ - for (i = ATA_DATA; i <= ATA_COMMAND; i++) { - ch->r_io[i].res = sc->sc_memr; - ch->r_io[i].offset = i*ATA_KAUAI_REGGAP + ATA_KAUAI_REGOFFSET; - } - ch->r_io[ATA_CONTROL].res = sc->sc_memr; - ch->r_io[ATA_CONTROL].offset = ATA_KAUAI_ALTOFFSET; - ata_default_registers(dev); - - ch->unit = 0; - ch->flags |= ATA_USE_16BIT; - - /* XXX: ATAPI DMA is unreliable. We should find out why. */ - ch->flags |= ATA_NO_ATAPI_DMA; - ata_generic_hw(dev); - return (ata_probe(dev)); } @@ -272,12 +244,42 @@ static int ata_kauai_attach(device_t dev) { struct ata_kauai_softc *sc = device_get_softc(dev); + struct ata_channel *ch; + int i, rid; #if USE_DBDMA_IRQ int dbdma_irq_rid = 1; struct resource *dbdma_irq; void *cookie; #endif + ch = &sc->sc_ch.sc_ch; + + rid = PCIR_BARS; + sc->sc_memr = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->sc_memr == NULL) { + device_printf(dev, "could not allocate memory\n"); + return (ENXIO); + } + + /* + * Set up the resource vectors + */ + for (i = ATA_DATA; i <= ATA_COMMAND; i++) { + ch->r_io[i].res = sc->sc_memr; + ch->r_io[i].offset = i*ATA_KAUAI_REGGAP + ATA_KAUAI_REGOFFSET; + } + ch->r_io[ATA_CONTROL].res = sc->sc_memr; + ch->r_io[ATA_CONTROL].offset = ATA_KAUAI_ALTOFFSET; + ata_default_registers(dev); + + ch->unit = 0; + ch->flags |= ATA_USE_16BIT; + + /* XXX: ATAPI DMA is unreliable. We should find out why. */ + ch->flags |= ATA_NO_ATAPI_DMA; + ata_generic_hw(dev); + pci_enable_busmaster(dev); /* Init DMA engine */ Modified: stable/10/sys/powerpc/powermac/ata_macio.c ============================================================================== --- stable/10/sys/powerpc/powermac/ata_macio.c Mon Oct 21 18:47:29 2013 (r256856) +++ stable/10/sys/powerpc/powermac/ata_macio.c Mon Oct 21 19:11:15 2013 (r256857) @@ -152,8 +152,6 @@ ata_macio_probe(device_t dev) const char *type = ofw_bus_get_type(dev); const char *name = ofw_bus_get_name(dev); struct ata_macio_softc *sc; - struct ata_channel *ch; - int rid, i; if (strcmp(type, "ata") != 0 && strcmp(type, "ide") != 0) @@ -161,7 +159,6 @@ ata_macio_probe(device_t dev) sc = device_get_softc(dev); bzero(sc, sizeof(struct ata_macio_softc)); - ch = &sc->sc_ch.sc_ch; if (strcmp(name,"ata-4") == 0) { device_set_desc(dev,"Apple MacIO Ultra ATA Controller"); @@ -173,7 +170,23 @@ ata_macio_probe(device_t dev) sc->max_mode = ATA_WDMA2; } + return (ata_probe(dev)); +} + +static int +ata_macio_attach(device_t dev) +{ + struct ata_macio_softc *sc = device_get_softc(dev); + uint32_t timingreg; + struct ata_channel *ch; + int rid, i; + + /* + * Allocate resources + */ + rid = 0; + ch = &sc->sc_ch.sc_ch; sc->sc_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); if (sc->sc_mem == NULL) { @@ -196,15 +209,6 @@ ata_macio_probe(device_t dev) ch->flags |= ATA_USE_16BIT | ATA_NO_ATAPI_DMA; ata_generic_hw(dev); - return (ata_probe(dev)); -} - -static int -ata_macio_attach(device_t dev) -{ - struct ata_macio_softc *sc = device_get_softc(dev); - uint32_t timingreg; - #if USE_DBDMA_IRQ int dbdma_irq_rid = 1; struct resource *dbdma_irq; From owner-svn-src-stable-10@FreeBSD.ORG Tue Oct 22 00:58:54 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1E645D0D; Tue, 22 Oct 2013 00:58:54 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 085042307; Tue, 22 Oct 2013 00:58:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9M0wrMD080693; Tue, 22 Oct 2013 00:58:53 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9M0wppf080682; Tue, 22 Oct 2013 00:58:51 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201310220058.r9M0wppf080682@svn.freebsd.org> From: Neel Natu Date: Tue, 22 Oct 2013 00:58:51 +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: r256869 - in stable/10: lib/libvmmapi sys/amd64/amd64 sys/amd64/include sys/amd64/vmm sys/amd64/vmm/intel usr.sbin/bhyve usr.sbin/bhyvectl 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Oct 2013 00:58:54 -0000 Author: neel Date: Tue Oct 22 00:58:51 2013 New Revision: 256869 URL: http://svnweb.freebsd.org/changeset/base/256869 Log: MFC r256645. Add a new capability, VM_CAP_ENABLE_INVPCID, that can be enabled to expose 'invpcid' instruction to the guest. Currently bhyve will try to enable this capability unconditionally if it is available. Consolidate code in bhyve to set the capabilities so it is no longer duplicated in BSP and AP bringup. Add a sysctl 'vm.pmap.invpcid_works' to display whether the 'invpcid' instruction is available. Approved by: re (hrs) Modified: stable/10/lib/libvmmapi/vmmapi.c stable/10/sys/amd64/amd64/pmap.c stable/10/sys/amd64/include/vmm.h (contents, props changed) stable/10/sys/amd64/vmm/intel/vmx.c stable/10/sys/amd64/vmm/intel/vmx.h stable/10/sys/amd64/vmm/intel/vmx_controls.h stable/10/sys/amd64/vmm/x86.c stable/10/usr.sbin/bhyve/bhyverun.c stable/10/usr.sbin/bhyve/bhyverun.h stable/10/usr.sbin/bhyve/spinup_ap.c stable/10/usr.sbin/bhyvectl/bhyvectl.c Directory Properties: stable/10/lib/libvmmapi/ (props changed) stable/10/sys/ (props changed) stable/10/sys/amd64/vmm/ (props changed) stable/10/usr.sbin/bhyve/ (props changed) stable/10/usr.sbin/bhyvectl/ (props changed) Modified: stable/10/lib/libvmmapi/vmmapi.c ============================================================================== --- stable/10/lib/libvmmapi/vmmapi.c Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/lib/libvmmapi/vmmapi.c Tue Oct 22 00:58:51 2013 (r256869) @@ -415,6 +415,7 @@ static struct { { "mtrap_exit", VM_CAP_MTRAP_EXIT }, { "pause_exit", VM_CAP_PAUSE_EXIT }, { "unrestricted_guest", VM_CAP_UNRESTRICTED_GUEST }, + { "enable_invpcid", VM_CAP_ENABLE_INVPCID }, { 0 } }; Modified: stable/10/sys/amd64/amd64/pmap.c ============================================================================== --- stable/10/sys/amd64/amd64/pmap.c Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/sys/amd64/amd64/pmap.c Tue Oct 22 00:58:51 2013 (r256869) @@ -371,6 +371,8 @@ int pmap_pcid_enabled = 1; SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN, &pmap_pcid_enabled, 0, "Is TLB Context ID enabled ?"); int invpcid_works = 0; +SYSCTL_INT(_vm_pmap, OID_AUTO, invpcid_works, CTLFLAG_RD, &invpcid_works, 0, + "Is the invpcid instruction available ?"); static int pmap_pcid_save_cnt_proc(SYSCTL_HANDLER_ARGS) Modified: stable/10/sys/amd64/include/vmm.h ============================================================================== --- stable/10/sys/amd64/include/vmm.h Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/sys/amd64/include/vmm.h Tue Oct 22 00:58:51 2013 (r256869) @@ -223,6 +223,7 @@ enum vm_cap_type { VM_CAP_MTRAP_EXIT, VM_CAP_PAUSE_EXIT, VM_CAP_UNRESTRICTED_GUEST, + VM_CAP_ENABLE_INVPCID, VM_CAP_MAX }; Modified: stable/10/sys/amd64/vmm/intel/vmx.c ============================================================================== --- stable/10/sys/amd64/vmm/intel/vmx.c Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/sys/amd64/vmm/intel/vmx.c Tue Oct 22 00:58:51 2013 (r256869) @@ -164,6 +164,7 @@ static int cap_halt_exit; static int cap_pause_exit; static int cap_unrestricted_guest; static int cap_monitor_trap; +static int cap_invpcid; static struct unrhdr *vpid_unr; static u_int vpid_alloc_failed; @@ -660,6 +661,11 @@ vmx_init(void) PROCBASED2_UNRESTRICTED_GUEST, 0, &tmp) == 0); + cap_invpcid = (vmx_set_ctlreg(MSR_VMX_PROCBASED_CTLS2, + MSR_VMX_PROCBASED_CTLS2, PROCBASED2_ENABLE_INVPCID, 0, + &tmp) == 0); + + /* Initialize EPT */ error = ept_init(); if (error) { @@ -828,6 +834,7 @@ vmx_vminit(struct vm *vm, pmap_t pmap) vmx->cap[i].set = 0; vmx->cap[i].proc_ctls = procbased_ctls; + vmx->cap[i].proc_ctls2 = procbased_ctls2; vmx->state[i].lastcpu = -1; vmx->state[i].vpid = vpid[i]; @@ -1932,6 +1939,10 @@ vmx_getcap(void *arg, int vcpu, int type if (cap_unrestricted_guest) ret = 0; break; + case VM_CAP_ENABLE_INVPCID: + if (cap_invpcid) + ret = 0; + break; default: break; } @@ -1988,11 +1999,21 @@ vmx_setcap(void *arg, int vcpu, int type case VM_CAP_UNRESTRICTED_GUEST: if (cap_unrestricted_guest) { retval = 0; - baseval = procbased_ctls2; + pptr = &vmx->cap[vcpu].proc_ctls2; + baseval = *pptr; flag = PROCBASED2_UNRESTRICTED_GUEST; reg = VMCS_SEC_PROC_BASED_CTLS; } break; + case VM_CAP_ENABLE_INVPCID: + if (cap_invpcid) { + retval = 0; + pptr = &vmx->cap[vcpu].proc_ctls2; + baseval = *pptr; + flag = PROCBASED2_ENABLE_INVPCID; + reg = VMCS_SEC_PROC_BASED_CTLS; + } + break; default: break; } Modified: stable/10/sys/amd64/vmm/intel/vmx.h ============================================================================== --- stable/10/sys/amd64/vmm/intel/vmx.h Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/sys/amd64/vmm/intel/vmx.h Tue Oct 22 00:58:51 2013 (r256869) @@ -84,6 +84,7 @@ struct vmxctx { struct vmxcap { int set; uint32_t proc_ctls; + uint32_t proc_ctls2; }; struct vmxstate { Modified: stable/10/sys/amd64/vmm/intel/vmx_controls.h ============================================================================== --- stable/10/sys/amd64/vmm/intel/vmx_controls.h Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/sys/amd64/vmm/intel/vmx_controls.h Tue Oct 22 00:58:51 2013 (r256869) @@ -68,6 +68,7 @@ #define PROCBASED2_WBINVD_EXITING (1 << 6) #define PROCBASED2_UNRESTRICTED_GUEST (1 << 7) #define PROCBASED2_PAUSE_LOOP_EXITING (1 << 10) +#define PROCBASED2_ENABLE_INVPCID (1 << 12) /* VM Exit Controls */ #define VM_EXIT_SAVE_DEBUG_CONTROLS (1 << 2) Modified: stable/10/sys/amd64/vmm/x86.c ============================================================================== --- stable/10/sys/amd64/vmm/x86.c Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/sys/amd64/vmm/x86.c Tue Oct 22 00:58:51 2013 (r256869) @@ -53,7 +53,7 @@ int x86_emulate_cpuid(struct vm *vm, int vcpu_id, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { - int error; + int error, enable_invpcid; unsigned int func, regs[4]; enum x2apic_state x2apic_state; @@ -202,8 +202,22 @@ x86_emulate_cpuid(struct vm *vm, int vcp regs[0] |= 0x04008000; break; - case CPUID_0000_0006: case CPUID_0000_0007: + regs[0] = 0; + regs[1] = 0; + regs[2] = 0; + regs[3] = 0; + + /* leaf 0 */ + if (*ecx == 0) { + error = vm_get_capability(vm, vcpu_id, + VM_CAP_ENABLE_INVPCID, &enable_invpcid); + if (error == 0 && enable_invpcid) + regs[1] |= CPUID_STDEXT_INVPCID; + } + break; + + case CPUID_0000_0006: case CPUID_0000_000A: case CPUID_0000_000D: /* Modified: stable/10/usr.sbin/bhyve/bhyverun.c ============================================================================== --- stable/10/usr.sbin/bhyve/bhyverun.c Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/usr.sbin/bhyve/bhyverun.c Tue Oct 22 00:58:51 2013 (r256869) @@ -493,10 +493,54 @@ num_vcpus_allowed(struct vmctx *ctx) return (1); } +void +fbsdrun_set_capabilities(struct vmctx *ctx, int cpu) +{ + int err, tmp; + + if (fbsdrun_vmexit_on_hlt()) { + err = vm_get_capability(ctx, cpu, VM_CAP_HALT_EXIT, &tmp); + if (err < 0) { + fprintf(stderr, "VM exit on HLT not supported\n"); + exit(1); + } + vm_set_capability(ctx, cpu, VM_CAP_HALT_EXIT, 1); + if (cpu == BSP) + handler[VM_EXITCODE_HLT] = vmexit_hlt; + } + + if (fbsdrun_vmexit_on_pause()) { + /* + * pause exit support required for this mode + */ + err = vm_get_capability(ctx, cpu, VM_CAP_PAUSE_EXIT, &tmp); + if (err < 0) { + fprintf(stderr, + "SMP mux requested, no pause support\n"); + exit(1); + } + vm_set_capability(ctx, cpu, VM_CAP_PAUSE_EXIT, 1); + if (cpu == BSP) + handler[VM_EXITCODE_PAUSE] = vmexit_pause; + } + + if (fbsdrun_disable_x2apic()) + err = vm_set_x2apic_state(ctx, cpu, X2APIC_DISABLED); + else + err = vm_set_x2apic_state(ctx, cpu, X2APIC_ENABLED); + + if (err) { + fprintf(stderr, "Unable to set x2apic state (%d)\n", err); + exit(1); + } + + vm_set_capability(ctx, cpu, VM_CAP_ENABLE_INVPCID, 1); +} + int main(int argc, char *argv[]) { - int c, error, gdb_port, tmp, err, ioapic, bvmcons; + int c, error, gdb_port, err, ioapic, bvmcons; int max_vcpus; struct vmctx *ctx; uint64_t rip; @@ -586,39 +630,7 @@ main(int argc, char *argv[]) exit(1); } - if (fbsdrun_vmexit_on_hlt()) { - err = vm_get_capability(ctx, BSP, VM_CAP_HALT_EXIT, &tmp); - if (err < 0) { - fprintf(stderr, "VM exit on HLT not supported\n"); - exit(1); - } - vm_set_capability(ctx, BSP, VM_CAP_HALT_EXIT, 1); - handler[VM_EXITCODE_HLT] = vmexit_hlt; - } - - if (fbsdrun_vmexit_on_pause()) { - /* - * pause exit support required for this mode - */ - err = vm_get_capability(ctx, BSP, VM_CAP_PAUSE_EXIT, &tmp); - if (err < 0) { - fprintf(stderr, - "SMP mux requested, no pause support\n"); - exit(1); - } - vm_set_capability(ctx, BSP, VM_CAP_PAUSE_EXIT, 1); - handler[VM_EXITCODE_PAUSE] = vmexit_pause; - } - - if (fbsdrun_disable_x2apic()) - err = vm_set_x2apic_state(ctx, BSP, X2APIC_DISABLED); - else - err = vm_set_x2apic_state(ctx, BSP, X2APIC_ENABLED); - - if (err) { - fprintf(stderr, "Unable to set x2apic state (%d)\n", err); - exit(1); - } + fbsdrun_set_capabilities(ctx, BSP); err = vm_setup_memory(ctx, memsize, VM_MMAP_ALL); if (err) { Modified: stable/10/usr.sbin/bhyve/bhyverun.h ============================================================================== --- stable/10/usr.sbin/bhyve/bhyverun.h Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/usr.sbin/bhyve/bhyverun.h Tue Oct 22 00:58:51 2013 (r256869) @@ -41,6 +41,7 @@ extern char *vmname; void *paddr_guest2host(struct vmctx *ctx, uintptr_t addr, size_t len); +void fbsdrun_set_capabilities(struct vmctx *ctx, int cpu); void fbsdrun_addcpu(struct vmctx *ctx, int cpu, uint64_t rip); int fbsdrun_muxed(void); int fbsdrun_vmexit_on_hlt(void); Modified: stable/10/usr.sbin/bhyve/spinup_ap.c ============================================================================== --- stable/10/usr.sbin/bhyve/spinup_ap.c Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/usr.sbin/bhyve/spinup_ap.c Tue Oct 22 00:58:51 2013 (r256869) @@ -85,22 +85,7 @@ spinup_ap(struct vmctx *ctx, int vcpu, i error = vcpu_reset(ctx, newcpu); assert(error == 0); - /* Set up capabilities */ - if (fbsdrun_vmexit_on_hlt()) { - error = vm_set_capability(ctx, newcpu, VM_CAP_HALT_EXIT, 1); - assert(error == 0); - } - - if (fbsdrun_vmexit_on_pause()) { - error = vm_set_capability(ctx, newcpu, VM_CAP_PAUSE_EXIT, 1); - assert(error == 0); - } - - if (fbsdrun_disable_x2apic()) - error = vm_set_x2apic_state(ctx, newcpu, X2APIC_DISABLED); - else - error = vm_set_x2apic_state(ctx, newcpu, X2APIC_ENABLED); - assert(error == 0); + fbsdrun_set_capabilities(ctx, newcpu); /* * Enable the 'unrestricted guest' mode for 'newcpu'. Modified: stable/10/usr.sbin/bhyvectl/bhyvectl.c ============================================================================== --- stable/10/usr.sbin/bhyvectl/bhyvectl.c Tue Oct 22 00:50:53 2013 (r256868) +++ stable/10/usr.sbin/bhyvectl/bhyvectl.c Tue Oct 22 00:58:51 2013 (r256869) @@ -1495,6 +1495,7 @@ main(int argc, char *argv[]) vm_capability_type2name(captype), val ? "set" : "not set", vcpu); } else if (errno == ENOENT) { + error = 0; printf("Capability \"%s\" is not available\n", vm_capability_type2name(captype)); } else { From owner-svn-src-stable-10@FreeBSD.ORG Tue Oct 22 06:02:41 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 4C797464; Tue, 22 Oct 2013 06:02:41 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 293242063; Tue, 22 Oct 2013 06:02:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9M62f2n056351; Tue, 22 Oct 2013 06:02:41 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9M62fcj056350; Tue, 22 Oct 2013 06:02:41 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201310220602.r9M62fcj056350@svn.freebsd.org> From: Hiroki Sato Date: Tue, 22 Oct 2013 06:02:41 +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: r256874 - stable/10/etc/rc.d 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Oct 2013 06:02:41 -0000 Author: hrs Date: Tue Oct 22 06:02:40 2013 New Revision: 256874 URL: http://svnweb.freebsd.org/changeset/base/256874 Log: MFC 256716,256835: - Fix jail_parallel_start="YES". - Fix ip[46].addr when interface parameter is not defined. - Fix a bug which prevented jails from starting when $jail_conf was used and no jail name was specified. - Display error messages when start/stop fails. Approved by: re (glebius) Modified: stable/10/etc/rc.d/jail Directory Properties: stable/10/etc/rc.d/ (props changed) Modified: stable/10/etc/rc.d/jail ============================================================================== --- stable/10/etc/rc.d/jail Tue Oct 22 05:22:46 2013 (r256873) +++ stable/10/etc/rc.d/jail Tue Oct 22 06:02:40 2013 (r256874) @@ -132,7 +132,9 @@ parse_options() # _confwarn=1 if [ -r "$jail_conf" -o -r "$_jconf" ]; then - warn "$_conf is created and used for jail $_j." + if ! checkyesno jail_parallel_start; then + warn "$_conf is created and used for jail $_j." + fi fi /usr/bin/install -m 0644 -o root -g wheel /dev/null $_conf || return 1 @@ -367,10 +369,10 @@ jail_handle_ips_option() # Append address to list of addresses for the jail command. case $_type in inet) - echo " ip4.addr += \"${_iface}|${_addr}${_mask}\";" + echo " ip4.addr += \"${_iface:+${_iface}|}${_addr}${_mask}\";" ;; inet6) - echo " ip6.addr += \"${_iface}|${_addr}${_mask}\";" + echo " ip6.addr += \"${_iface:+${_iface}|}${_addr}${_mask}\";" need_dad_wait=1 ;; esac @@ -418,7 +420,7 @@ jail_status() jail_start() { - local _j _jid _jn + local _j _jid _jn _jl if [ $# = 0 ]; then return @@ -426,47 +428,82 @@ jail_start() echo -n 'Starting jails:' case $1 in _ALL) - echo -n ' ' command=$jail_program rc_flags=$jail_flags command_args="-f $jail_conf -c" - $jail_jls -nq | while read IN; do - _jn=$(echo $IN | tr " " "\n" | grep name=) - _jid=$(echo $IN | tr " " "\n" | grep jid=) - if $command $rc_flags $command_args ${_jn#name=}; then + _tmp=`mktemp -t jail` || exit 3 + if $command $rc_flags $command_args >> $_tmp 2>&1; then + $jail_jls -nq | while read IN; do + _jn=$(echo $IN | tr " " "\n" | grep ^name=) + _jid=$(echo $IN | tr " " "\n" | grep ^jid=) echo -n " ${_jn#name=}" echo "${_jid#jid=}" \ > /var/run/jail_${_jn#name=}.id - fi - done + done + else + tail -1 $_tmp + fi + rm -f $_tmp echo '.' return ;; esac - _tmp=`mktemp -t jail` || exit 3 - for _j in $@; do - _j=$(echo $_j | tr /. _) - parse_options $_j || continue - - eval rc_flags=\${jail_${_j}_flags:-$jail_flags} - eval command=\${jail_${_j}_program:-$jail_program} - if checkyesno jail_parallel_start; then - command_args="-i -f $_conf -c $_j &" - else + if checkyesno jail_parallel_start; then + # + # Start jails in parallel and then check jail id when + # jail_parallel_start is YES. + # + _jl= + for _j in $@; do + _j=$(echo $_j | tr /. _) + parse_options $_j || continue + + _jl="$_jl $_j" + eval rc_flags=\${jail_${_j}_flags:-$jail_flags} + eval command=\${jail_${_j}_program:-$jail_program} command_args="-i -f $_conf -c $_j" - fi - if $command $rc_flags $command_args \ - >> $_tmp 2>&1 /dev/null 2>&1 /var/run/jail_${_j}.id - else - rm -f /var/run/jail_${_j}.id - echo " cannot start jail \"${_hostname:-${_j}}\": " - cat $_tmp - fi - rm -f $_tmp - done + if _jid=$($jail_jls -n -j $_j | tr " " "\n" | \ + grep ^jid=); then + echo "${_jid#jid=}" > /var/run/jail_${_j}.id + else + rm -f /var/run/jail_${_j}.id + echo " cannot start jail " \ + "\"${_hostname:-${_j}}\": " + fi + done + else + # + # Start jails one-by-one when jail_parallel_start is NO. + # + for _j in $@; do + _j=$(echo $_j | tr /. _) + parse_options $_j || continue + + eval rc_flags=\${jail_${_j}_flags:-$jail_flags} + eval command=\${jail_${_j}_program:-$jail_program} + command_args="-i -f $_conf -c $_j" + _tmp=`mktemp -t jail` || exit 3 + if $command $rc_flags $command_args \ + >> $_tmp 2>&1 /var/run/jail_${_j}.id + else + rm -f /var/run/jail_${_j}.id + echo " cannot start jail " \ + "\"${_hostname:-${_j}}\": " + cat $_tmp + fi + rm -f $_tmp + done + fi echo '.' } @@ -480,17 +517,21 @@ jail_stop() echo -n 'Stopping jails:' case $1 in _ALL) - echo -n ' ' command=$jail_program rc_flags=$jail_flags command_args="-f $jail_conf -r" $jail_jls -nq | while read IN; do - _jn=$(echo $IN | tr " " "\n" | grep name=) + _jn=$(echo $IN | tr " " "\n" | grep ^name=) echo -n " ${_jn#name=}" - $command $rc_flags $command_args ${_jn#name=} - if ! $jail_jls -j ${_jn#name=} > /dev/null 2>&1; then + _tmp=`mktemp -t jail` || exit 3 + $command $rc_flags $command_args ${_jn#name=} \ + >> $_tmp 2>&1 + if $jail_jls -j ${_jn#name=} > /dev/null 2>&1; then + tail -1 $_tmp + else rm -f /var/run/jail_${_jn#name=}.id fi + rm -f $_tmp done echo '.' return @@ -504,10 +545,14 @@ jail_stop() fi eval command=\${jail_${_j}_program:-$jail_program} echo -n " ${_hostname:-${_j}}" - $command -q -f $_conf -r $_j - if ! $jail_jls -j $_j > /dev/null 2>&1; then + _tmp=`mktemp -t jail` || exit 3 + $command -q -f $_conf -r $_j >> $_tmp 2>&1 + if $jail_jls -j $_j > /dev/null 2>&1; then + tail -1 $_tmp + else rm -f /var/run/jail_${_j}.id fi + rm -f $_tmp done echo '.' } From owner-svn-src-stable-10@FreeBSD.ORG Tue Oct 22 16:09:45 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A57C0F25; Tue, 22 Oct 2013 16:09:45 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 91AA62500; Tue, 22 Oct 2013 16:09:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9MG9j9p096204; Tue, 22 Oct 2013 16:09:45 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9MG9iUu096182; Tue, 22 Oct 2013 16:09:44 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201310221609.r9MG9iUu096182@svn.freebsd.org> From: Colin Percival Date: Tue, 22 Oct 2013 16:09: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: r256916 - in stable/10: etc etc/defaults share/man/man5 share/man/man8 sys/sys 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Oct 2013 16:09:45 -0000 Author: cperciva Date: Tue Oct 22 16:09:44 2013 New Revision: 256916 URL: http://svnweb.freebsd.org/changeset/base/256916 Log: MFC r256775,r256776: Add support for "first boot" rc.d scripts. Document this new functionality in rc.conf(5) and rc(8). Bump __FreeBSD_version so that ports can make use of this. Approved by: re (gjb) Modified: stable/10/etc/defaults/rc.conf stable/10/etc/rc stable/10/share/man/man5/rc.conf.5 stable/10/share/man/man8/rc.8 stable/10/sys/sys/param.h Directory Properties: stable/10/etc/ (props changed) stable/10/share/man/man5/ (props changed) stable/10/share/man/man8/ (props changed) stable/10/sys/ (props changed) Modified: stable/10/etc/defaults/rc.conf ============================================================================== --- stable/10/etc/defaults/rc.conf Tue Oct 22 15:53:29 2013 (r256915) +++ stable/10/etc/defaults/rc.conf Tue Oct 22 16:09:44 2013 (r256916) @@ -619,6 +619,9 @@ quotacheck_flags="-a" # Check all file s accounting_enable="NO" # Turn on process accounting (or NO). ibcs2_enable="NO" # Ibcs2 (SCO) emulation loaded at startup (or NO). ibcs2_loaders="coff" # List of additional Ibcs2 loaders (or NO). +firstboot_sentinel="/firstboot" # Scripts with "firstboot" keyword are run if + # this file exists. Should be on a R/W filesystem so + # the file can be deleted after the boot completes. # Emulation/compatibility services provided by /etc/rc.d/abi sysvipc_enable="NO" # Load System V IPC primitives at startup (or NO). Modified: stable/10/etc/rc ============================================================================== --- stable/10/etc/rc Tue Oct 22 15:53:29 2013 (r256915) +++ stable/10/etc/rc Tue Oct 22 16:09:44 2013 (r256916) @@ -82,10 +82,15 @@ if [ `/sbin/sysctl -n security.jail.jail fi fi +# If the firstboot sentinel doesn't exist, we want to skip firstboot scripts. +if ! [ -e ${firstboot_sentinel} ]; then + skip_firstboot="-s firstboot" +fi + # Do a first pass to get everything up to $early_late_divider so that # we can do a second pass that includes $local_startup directories # -files=`rcorder ${skip} /etc/rc.d/* 2>/dev/null` +files=`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* 2>/dev/null` _rc_elem_done=' ' for _rc_elem in ${files}; do @@ -107,7 +112,13 @@ case ${local_startup} in *) find_local_scripts_new ;; esac -files=`rcorder ${skip} /etc/rc.d/* ${local_rc} 2>/dev/null` +# The firstboot sentinel might be on a newly mounted filesystem; look for it +# again and unset skip_firstboot if we find it. +if [ -e ${firstboot_sentinel} ]; then + skip_firstboot="" +fi + +files=`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} 2>/dev/null` for _rc_elem in ${files}; do case "$_rc_elem_done" in *" $_rc_elem "*) continue ;; @@ -116,6 +127,15 @@ for _rc_elem in ${files}; do run_rc_script ${_rc_elem} ${_boot} done +# Remove the firstboot sentinel, and reboot if it was requested. +if [ -e ${firstboot_sentinel} ]; then + rm ${firstboot_sentinel} + if [ -e ${firstboot_sentinel}-reboot ]; then + rm ${firstboot_sentinel}-reboot + kill -INT 1 + fi +fi + echo '' date exit 0 Modified: stable/10/share/man/man5/rc.conf.5 ============================================================================== --- stable/10/share/man/man5/rc.conf.5 Tue Oct 22 15:53:29 2013 (r256915) +++ stable/10/share/man/man5/rc.conf.5 Tue Oct 22 16:09:44 2013 (r256916) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 12, 2013 +.Dd October 19, 2013 .Dt RC.CONF 5 .Os .Sh NAME @@ -3675,6 +3675,23 @@ and if is set to .Dq Li YES , this specifies a list of additional iBCS2 loaders to enable. +.It Va firstboot_sentinel +.Pq Vt str +This variable specifies the full path to a +.Dq first boot +sentinel file. +If a file exists with this path, +.Pa rc.d +scripts with the +.Dq firstboot +keyword will be run on startup and the sentinel file will be deleted +after the boot process completes. +The sentinel file must be located on a writable file system which is +mounted no later than +.Va early_late_divider +to function properly. +The default is +.Pa /firstboot . .It Va linux_enable .Pq Vt bool Set to Modified: stable/10/share/man/man8/rc.8 ============================================================================== --- stable/10/share/man/man8/rc.8 Tue Oct 22 15:53:29 2013 (r256915) +++ stable/10/share/man/man8/rc.8 Tue Oct 22 16:09:44 2013 (r256916) @@ -35,7 +35,7 @@ .\" @(#)rc.8 8.2 (Berkeley) 12/11/93 .\" $FreeBSD$ .\" -.Dd September 23, 2013 +.Dd October 19, 2013 .Dt RC 8 .Os .Sh NAME @@ -129,6 +129,13 @@ and add (only allow vnet-enabled jails) to the list of KEYWORDS to skip in .Xr rcorder 8 . .It +If the file +.Va ${firstboot_sentinel} +does not exist, add +.Dq Li firstboot +to the list of KEYWORDS to skip in +.Xr rcorder 8 . +.It Invoke .Xr rcorder 8 to order the files in @@ -156,6 +163,11 @@ Stop processing when the script that is .Va $early_late_divider has been run. .It +Check again to see if the file +.Va ${firstboot_sentinel} +exists (in case it is located on a newly mounted file system) +and adjust the list of KEYWORDs to skip appropriately. +.It Re-run .Xr rcorder 8 , this time including the scripts in the @@ -164,6 +176,13 @@ directories. Ignore everything up to the .Va $early_late_divider , then start executing the scripts as described above. +.It +If the file +.Va ${firstboot_sentinel} +exists, delete it. +If the file +.Va ${firstboot_sentinel}-reboot +also exists (because it was created by a script), then delete it and reboot. .El .Ss Operation of Nm rc.shutdown .Bl -enum Modified: stable/10/sys/sys/param.h ============================================================================== --- stable/10/sys/sys/param.h Tue Oct 22 15:53:29 2013 (r256915) +++ stable/10/sys/sys/param.h Tue Oct 22 16:09:44 2013 (r256916) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1000500 /* Master, propagated to newvers */ +#define __FreeBSD_version 1000501 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-svn-src-stable-10@FreeBSD.ORG Tue Oct 22 21:53:33 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 19EB259E; Tue, 22 Oct 2013 21:53:33 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 061A32B41; Tue, 22 Oct 2013 21:53:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9MLrWwg066697; Tue, 22 Oct 2013 21:53:32 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9MLrW0i066696; Tue, 22 Oct 2013 21:53:32 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201310222153.r9MLrW0i066696@svn.freebsd.org> From: Colin Percival Date: Tue, 22 Oct 2013 21:53:32 +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: r256944 - stable/10 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Oct 2013 21:53:33 -0000 Author: cperciva Date: Tue Oct 22 21:53:32 2013 New Revision: 256944 URL: http://svnweb.freebsd.org/changeset/base/256944 Log: MFC r256921: Thou shalt not leak build host state into the system being compiled. Approved by: re (gjb) Modified: stable/10/Makefile.inc1 (contents, props changed) Modified: stable/10/Makefile.inc1 ============================================================================== --- stable/10/Makefile.inc1 Tue Oct 22 21:51:07 2013 (r256943) +++ stable/10/Makefile.inc1 Tue Oct 22 21:53:32 2013 (r256944) @@ -128,8 +128,11 @@ OSRELDATE= 0 .endif .if !defined(VERSION) -VERSION!= uname -srp -VERSION+= ${OSRELDATE} +REVISION!= make -C ${.CURDIR}/release -V REVISION +BRANCH!= make -C ${.CURDIR}/release -V BRANCH +SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ + ${.CURDIR}/sys/sys/param.h +VERSION= FreeBSD ${REVISION}-${BRANCH} ${TARGET_ARCH} ${SRCRELDATE} .endif KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 From owner-svn-src-stable-10@FreeBSD.ORG Tue Oct 22 23:16:37 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CDF8CDE; Tue, 22 Oct 2013 23:16:37 +0000 (UTC) (envelope-from h.skuhra@gmail.com) Received: from mail-ea0-x230.google.com (mail-ea0-x230.google.com [IPv6:2a00:1450:4013:c01::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C23362FCE; Tue, 22 Oct 2013 23:16:36 +0000 (UTC) Received: by mail-ea0-f176.google.com with SMTP id q16so10658ead.7 for ; Tue, 22 Oct 2013 16:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:message-id:from:to:cc:subject:in-reply-to:references :user-agent:mime-version:content-type; bh=CNDlB8TAdXlKEuQ5fFcQBJBIIrJohee5DWhPfZQTSYM=; b=goFaMBl+1AOM61AhA/2kWnDKj+OewrdbLtg0i5dPTPcDWuSbB3mthtaSw9uJfjc8vM UmxTqODtfYVL0FpWmMPreh1RUchxLoFdFxxwnoOo0CQSSIoGv6mC8zNq3Ruew+fHpU70 kKIFQuDji9ohfHY+9eDq8FiAplsw37Jcm+Ol1aO9idi3NXouqhkIEx0QWJFvZ+jjpLaL WrkQo46/K+AnM5GxBhWxQJIGIAx2FoJfCdQBiu4jVhNEmR2ewnsxYtlVUlsmj1UaVghx D+ZOLKegqGFdnKM26Xwc20YJoSGjAgRf0NpuwA3IJl6wcxj0Oz1MY6YvkgCpqxP/DZwv BDkQ== X-Received: by 10.14.211.136 with SMTP id w8mr2818767eeo.80.1382483794587; Tue, 22 Oct 2013 16:16:34 -0700 (PDT) Received: from oslo.ath.cx ([2001:470:6f:44d:6146:eeae:ce98:ec5d]) by mx.google.com with ESMTPSA id s3sm62448114eeo.3.2013.10.22.16.16.32 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Oct 2013 16:16:33 -0700 (PDT) Date: Wed, 23 Oct 2013 01:15:58 +0200 Message-ID: <87fvrsx5g1.wl%h.skuhra@gmail.com> From: "Herbert J. Skuhra" To: Colin Percival Subject: Re: svn commit: r256944 - stable/10 In-Reply-To: <201310222153.r9MLrW0i066696@svn.freebsd.org> References: <201310222153.r9MLrW0i066696@svn.freebsd.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL/10.8 EasyPG/1.0.0 Emacs/24.3.50 (i686-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-10@freebsd.org X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Oct 2013 23:16:37 -0000 On Tue, 22 Oct 2013 21:53:32 +0000 (UTC) Colin Percival wrote: > Author: cperciva > Date: Tue Oct 22 21:53:32 2013 > New Revision: 256944 > URL: http://svnweb.freebsd.org/changeset/base/256944 > > Log: > MFC r256921: > Thou shalt not leak build host state into the system being compiled. > > Approved by: re (gjb) > > Modified: > stable/10/Makefile.inc1 (contents, props changed) > > Modified: stable/10/Makefile.inc1 > ============================================================================== > --- stable/10/Makefile.inc1 Tue Oct 22 21:51:07 2013 (r256943) > +++ stable/10/Makefile.inc1 Tue Oct 22 21:53:32 2013 (r256944) > @@ -128,8 +128,11 @@ OSRELDATE= 0 > .endif > > .if !defined(VERSION) > -VERSION!= uname -srp > -VERSION+= ${OSRELDATE} > +REVISION!= make -C ${.CURDIR}/release -V REVISION > +BRANCH!= make -C ${.CURDIR}/release -V BRANCH > +SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ > + ${.CURDIR}/sys/sys/param.h > +VERSION= FreeBSD ${REVISION}-${BRANCH} ${TARGET_ARCH} ${SRCRELDATE} > .endif > > KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 # pwd /usr/src # make check-old >>> Checking for old files make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 131: warning: "make -C /usr/obj/usr/src/release -V REVISION" returned non-zero status make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/usr/src/release -V BRANCH" returned non-zero status awk: can't open file /usr/obj/usr/src/sys/sys/param.h source line number 1 make[2]: "/usr/src/Makefile.inc1" line 134: warning: "awk '/^#define[[:space:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" returned non-zero status >>> Checking for old libraries make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 131: warning: "make -C /usr/obj/usr/src/release -V REVISION" returned non-zero status make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/usr/src/release -V BRANCH" returned non-zero status awk: can't open file /usr/obj/usr/src/sys/sys/param.h source line number 1 make[2]: "/usr/src/Makefile.inc1" line 134: warning: "awk '/^#define[[:space:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" returned non-zero status >>> Checking for old directories make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 131: warning: "make -C /usr/obj/usr/src/release -V REVISION" returned non-zero status make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/usr/src/release -V BRANCH" returned non-zero status awk: can't open file /usr/obj/usr/src/sys/sys/param.h source line number 1 make[2]: "/usr/src/Makefile.inc1" line 134: warning: "awk '/^#define[[:space:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" returned non-zero status -- Herbert From owner-svn-src-stable-10@FreeBSD.ORG Tue Oct 22 23:37:55 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6125343C; Tue, 22 Oct 2013 23:37:55 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4D17720E3; Tue, 22 Oct 2013 23:37:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9MNbtt7003763; Tue, 22 Oct 2013 23:37:55 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9MNbtra003762; Tue, 22 Oct 2013 23:37:55 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201310222337.r9MNbtra003762@svn.freebsd.org> From: Glen Barber Date: Tue, 22 Oct 2013 23:37:55 +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: r256947 - stable/10 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Oct 2013 23:37:55 -0000 Author: gjb Date: Tue Oct 22 23:37:54 2013 New Revision: 256947 URL: http://svnweb.freebsd.org/changeset/base/256947 Log: Revert r256944, which does not quite get the src/ directory correct. Discussed with: cperciva Approved by: re (implicit) Pointyhat: gjb Modified: stable/10/Makefile.inc1 (contents, props changed) Modified: stable/10/Makefile.inc1 ============================================================================== --- stable/10/Makefile.inc1 Tue Oct 22 22:17:48 2013 (r256946) +++ stable/10/Makefile.inc1 Tue Oct 22 23:37:54 2013 (r256947) @@ -128,11 +128,8 @@ OSRELDATE= 0 .endif .if !defined(VERSION) -REVISION!= make -C ${.CURDIR}/release -V REVISION -BRANCH!= make -C ${.CURDIR}/release -V BRANCH -SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ - ${.CURDIR}/sys/sys/param.h -VERSION= FreeBSD ${REVISION}-${BRANCH} ${TARGET_ARCH} ${SRCRELDATE} +VERSION!= uname -srp +VERSION+= ${OSRELDATE} .endif KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 From owner-svn-src-stable-10@FreeBSD.ORG Tue Oct 22 23:38:48 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3CA4A568; Tue, 22 Oct 2013 23:38:48 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [208.86.227.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 99B7820E9; Tue, 22 Oct 2013 23:38:47 +0000 (UTC) Received: from glenbarber.us (coral.nyi.net [96.47.64.130]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id A5D52DAA2; Tue, 22 Oct 2013 23:38:39 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us A5D52DAA2 Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Tue, 22 Oct 2013 19:38:38 -0400 From: Glen Barber To: "Herbert J. Skuhra" Subject: Re: svn commit: r256944 - stable/10 Message-ID: <20131022233838.GM1833@glenbarber.us> References: <201310222153.r9MLrW0i066696@svn.freebsd.org> <87fvrsx5g1.wl%h.skuhra@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="8m/hfNLtAhX2NvnO" Content-Disposition: inline In-Reply-To: <87fvrsx5g1.wl%h.skuhra@gmail.com> X-Operating-System: FreeBSD 11.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-10@freebsd.org, Colin Percival X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Oct 2013 23:38:48 -0000 --8m/hfNLtAhX2NvnO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Oct 23, 2013 at 01:15:58AM +0200, Herbert J. Skuhra wrote: > > Log: > > MFC r256921: > > Thou shalt not leak build host state into the system being compiled. > > =20 > > Approved by: re (gjb) > >=20 > > Modified: > > stable/10/Makefile.inc1 (contents, props changed) > >=20 Reverted with r256947. Sorry for the breakage. Glen --8m/hfNLtAhX2NvnO Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQIcBAEBCAAGBQJSZwx9AAoJELls3eqvi17QuB4P/ibGz23HFkVTbY+udoGicGTc dMHEkqmMYdX8ypRpKsllpk8HDVXgXcNhOMNC8GtDUd1XvqrorAqMPNNwz3zqoBRq eX6V8aGpLwYAX8APW+dmbtmTt4etpc+ciMfB5vesiwkKRSzXj5P9jt4Y7b1IrajH 2jMfzWFH8obom6QEZSFfRA/kC6oIiT35DHfC9yvjYDRRAUpMLwBbZQQ1Zs4piW0O +Mr9Gx3/+q4SrTCLO1TVHygRzXfSu42a7VwbooDzMsNUH7MJ7wuso0+G/zhIuk1Y dT7sv4X0lVhDrjnu40Zsa+cXwz7m7f7zcNmeLr24h96/UhYTCxCaAS2/IFkkNG1G aUuVp9SQ9P8DCoTQ9/drptWErimBzoN9QYujEDGnjjxPtUtb88sRSj9mZ9cMBA+C odHkE4yUNv8uX6twNlpIavg/m8h6/byWLEV9RFdHh5DlkX7dYwzZpwShrWC9Zepg HOHJQFZUJ16T5kire5CcrjAinFuj6l+XuG1HHT1CTHV8YWaIEFjC9TwfFRwV3tmV ejqzS3l56xH+1W8XGvjqSlCik7cKnQCKTmEjNIcv+1/2FqYKpRNcei8YZ+DDe4i6 WOpqqkXD9cBW+exC6GOIwNylSRj74ZnMgb+eddwM/HGWgx0WhRZnSkNZ0RLp4euN /QLf3qfxkioPT1X58HcO =kZF0 -----END PGP SIGNATURE----- --8m/hfNLtAhX2NvnO-- From owner-svn-src-stable-10@FreeBSD.ORG Wed Oct 23 16:55:21 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 961A9CE3; Wed, 23 Oct 2013 16:55:21 +0000 (UTC) (envelope-from jmg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 806C62D77; Wed, 23 Oct 2013 16:55:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9NGtLP0057394; Wed, 23 Oct 2013 16:55:21 GMT (envelope-from jmg@svn.freebsd.org) Received: (from jmg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9NGtKvq057361; Wed, 23 Oct 2013 16:55:20 GMT (envelope-from jmg@svn.freebsd.org) Message-Id: <201310231655.r9NGtKvq057361@svn.freebsd.org> From: John-Mark Gurney Date: Wed, 23 Oct 2013 16:55:20 +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: r256982 - in stable/10: etc/defaults etc/rc.d etc/sendmail share/man/man8 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Oct 2013 16:55:21 -0000 Author: jmg Date: Wed Oct 23 16:55:20 2013 New Revision: 256982 URL: http://svnweb.freebsd.org/changeset/base/256982 Log: MFC r256773: Enable the automatic creation of a certificate (if one does not exists) and enable the usage by sendmail if sendmail is enabled. Reviewed by: gshapiro Approved by: re (gjb) Modified: stable/10/etc/defaults/rc.conf stable/10/etc/rc.d/sendmail stable/10/etc/sendmail/freebsd.mc stable/10/share/man/man8/rc.sendmail.8 Directory Properties: stable/10/etc/ (props changed) stable/10/etc/rc.d/ (props changed) stable/10/share/man/man8/ (props changed) Modified: stable/10/etc/defaults/rc.conf ============================================================================== --- stable/10/etc/defaults/rc.conf Wed Oct 23 16:14:48 2013 (r256981) +++ stable/10/etc/defaults/rc.conf Wed Oct 23 16:55:20 2013 (r256982) @@ -573,6 +573,8 @@ sendmail_enable="NO" # Run the sendmail sendmail_pidfile="/var/run/sendmail.pid" # sendmail pid file sendmail_procname="/usr/sbin/sendmail" # sendmail process name sendmail_flags="-L sm-mta -bd -q30m" # Flags to sendmail (as a server) +sendmail_cert_create="YES" # Create a server certificate if none (YES/NO) +#sendmail_cert_cn="CN" # CN of the generate certificate sendmail_submit_enable="YES" # Start a localhost-only MTA for mail submission sendmail_submit_flags="-L sm-mta -bd -q30m -ODaemonPortOptions=Addr=localhost" # Flags for localhost-only MTA Modified: stable/10/etc/rc.d/sendmail ============================================================================== --- stable/10/etc/rc.d/sendmail Wed Oct 23 16:14:48 2013 (r256981) +++ stable/10/etc/rc.d/sendmail Wed Oct 23 16:55:20 2013 (r256982) @@ -24,6 +24,8 @@ command=${sendmail_program:-/usr/sbin/${ pidfile=${sendmail_pidfile:-/var/run/${name}.pid} procname=${sendmail_procname:-/usr/sbin/${name}} +CERTDIR=/etc/mail/certs + case ${sendmail_enable} in [Nn][Oo][Nn][Ee]) sendmail_enable="NO" @@ -44,6 +46,118 @@ if checkyesno sendmail_submit_enable; th sendmail_outbound_enable="NO" fi +sendmail_cert_create() +{ + cnname="${sendmail_cert_cn:-`hostname`}" + cnname="${cnname:-amnesiac}" + + # based upon: + # http://www.sendmail.org/~ca/email/other/cagreg.html + CAdir=`mktemp -d` && + certpass=`(date; ps ax ; hostname) | md5 -q` + + # make certificate authority + ( cd "$CAdir" && + chmod 700 "$CAdir" && + mkdir certs crl newcerts && + echo "01" > serial && + :> index.txt && + + cat <<-OPENSSL_CNF > openssl.cnf && + RANDFILE = $CAdir/.rnd + [ ca ] + default_ca = CA_default + [ CA_default ] + dir = . + certs = \$dir/certs # Where the issued certs are kept + crl_dir = \$dir/crl # Where the issued crl are kept + database = \$dir/index.txt # database index file. + new_certs_dir = \$dir/newcerts # default place for new certs. + certificate = \$dir/cacert.pem # The CA certificate + serial = \$dir/serial # The current serial number + crlnumber = \$dir/crlnumber # the current crl number + crl = \$dir/crl.pem # The current CRL + private_key = \$dir/cakey.pem + x509_extensions = usr_cert # The extentions to add to the cert + name_opt = ca_default # Subject Name options + cert_opt = ca_default # Certificate field options + default_days = 365 # how long to certify for + default_crl_days= 30 # how long before next CRL + default_md = default # use public key default MD + preserve = no # keep passed DN ordering + policy = policy_anything + [ policy_anything ] + countryName = optional + stateOrProvinceName = optional + localityName = optional + organizationName = optional + organizationalUnitName = optional + commonName = supplied + emailAddress = optional + [ req ] + default_bits = 2048 + default_keyfile = privkey.pem + distinguished_name = req_distinguished_name + attributes = req_attributes + x509_extensions = v3_ca # The extentions to add to the self signed cert + string_mask = utf8only + prompt = no + [ req_distinguished_name ] + countryName = XX + stateOrProvinceName = Some-state + localityName = Some-city + 0.organizationName = Some-org + CN = $cnname + [ req_attributes ] + challengePassword = foobar + unstructuredName = An optional company name + [ usr_cert ] + basicConstraints=CA:FALSE + nsComment = "OpenSSL Generated Certificate" + subjectKeyIdentifier=hash + authorityKeyIdentifier=keyid,issuer + [ v3_req ] + basicConstraints = CA:FALSE + keyUsage = nonRepudiation, digitalSignature, keyEncipherment + [ v3_ca ] + subjectKeyIdentifier=hash + authorityKeyIdentifier=keyid:always,issuer + basicConstraints = CA:true + OPENSSL_CNF + + # though we use a password, the key is discarded and never used + openssl req -batch -passout pass:"$certpass" -new -x509 \ + -keyout cakey.pem -out cacert.pem -days 3650 \ + -config openssl.cnf -newkey rsa:2048 >/dev/null 2>&1 && + + # make new certificate + openssl req -batch -nodes -new -x509 -keyout newkey.pem \ + -out newreq.pem -days 365 -config openssl.cnf \ + -newkey rsa:2048 >/dev/null 2>&1 && + + # sign certificate + openssl x509 -x509toreq -in newreq.pem -signkey newkey.pem \ + -out tmp.pem >/dev/null 2>&1 && + openssl ca -notext -config openssl.cnf \ + -out newcert.pem -keyfile cakey.pem -cert cacert.pem \ + -key "$certpass" -batch -infiles tmp.pem >/dev/null 2>&1 && + + mkdir -p "$CERTDIR" && + chmod 0755 "$CERTDIR" && + chmod 644 newcert.pem cacert.pem && + chmod 600 newkey.pem && + cp -p newcert.pem "$CERTDIR"/host.cert && + cp -p cacert.pem "$CERTDIR"/cacert.pem && + cp -p newkey.pem "$CERTDIR"/host.key && + ln -s cacert.pem "$CERTDIR"/`openssl x509 -hash -noout \ + -in cacert.pem`.0) + + retVal="$?" + rm -rf "$CAdir" + + return "$retVal" +} + sendmail_precmd() { # Die if there's pre-8.10 custom configuration file. This check is @@ -71,6 +185,17 @@ sendmail_precmd() /usr/bin/newaliases fi fi + + if checkyesno sendmail_cert_create && [ ! \( \ + -f "$CERTDIR/host.cert" -o -f "$CERTDIR/host.key" -o \ + -f "$CERTDIR/cacert.pem" \) ]; then + if ! openssl version >/dev/null 2>&1; then + warn "OpenSSL not available, but sendmail_cert_create is YES." + else + info Creating certificate for sendmail. + sendmail_cert_create + fi + fi } run_rc_command "$1" Modified: stable/10/etc/sendmail/freebsd.mc ============================================================================== --- stable/10/etc/sendmail/freebsd.mc Wed Oct 23 16:14:48 2013 (r256981) +++ stable/10/etc/sendmail/freebsd.mc Wed Oct 23 16:55:20 2013 (r256982) @@ -42,6 +42,11 @@ divert(-1) # /usr/share/sendmail/cf/README or # /usr/src/contrib/sendmail/cf/README # +# +# NOTE: If you enable RunAsUser, make sure that you adjust the permissions +# and owner of the SSL certificates and keys in /etc/mail/certs to be usable +# by that user. +# divert(0) VERSIONID(`$FreeBSD$') @@ -54,6 +59,16 @@ FEATURE(local_lmtp) FEATURE(mailertable, `hash -o /etc/mail/mailertable') FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') +dnl Enable STARTTLS for receiving email. +define(`CERT_DIR', `/etc/mail/certs')dnl +define(`confSERVER_CERT', `CERT_DIR/host.cert')dnl +define(`confSERVER_KEY', `CERT_DIR/host.key')dnl +define(`confCLIENT_CERT', `CERT_DIR/host.cert')dnl +define(`confCLIENT_KEY', `CERT_DIR/host.key')dnl +define(`confCACERT', `CERT_DIR/cacert.pem')dnl +define(`confCACERT_PATH', `CERT_DIR')dnl +define(`confDH_PARAMETERS', `CERT_DIR/dh.param')dnl + dnl Uncomment to allow relaying based on your MX records. dnl NOTE: This can allow sites to use your server as a backup MX without dnl your permission. Modified: stable/10/share/man/man8/rc.sendmail.8 ============================================================================== --- stable/10/share/man/man8/rc.sendmail.8 Wed Oct 23 16:14:48 2013 (r256981) +++ stable/10/share/man/man8/rc.sendmail.8 Wed Oct 23 16:55:20 2013 (r256982) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 30, 2002 +.Dd October 19, 2013 .Dt RC.SENDMAIL 8 .Os .Sh NAME @@ -119,6 +119,42 @@ The .Dq Li NONE option is deprecated and should not be used. It will be removed in a future release. +.It Va sendmail_cert_create +.Pq Vt str +If +.Va sendmail_enable +is set to +.Dq Li YES , +create a signed certificate +.Pa /etc/mail/certs/host.cert +representing +.Pa /etc/mail/certs/host.key +by the CA certificate in +.Pa /etc/mail/certs/cacert.pem . +This will enable connecting hosts to negotiate STARTTLS allowing incoming +email to be encrypted in transit. +.Xr sendmail 8 +needs to be configured to use these generated files. +The default configuration in +.Pa /etc/mail/freebsd.mc +has the required options in it. +.It Va sendmail_cert_cn +.Pq Vt str +If +.Va sendmail_enable +is set to +.Dq Li YES +and +.Va sendmail_cert_create +is set to +.Dq Li YES , +this is the Common Name (CN) of the certificate that will be created. +If +.Va sendmail_cert_cn +is not set, the system's hostname will be used. +If there is no hostname set, +.Dq Li amnesiac +will be used. .It Va sendmail_flags .Pq Vt str If From owner-svn-src-stable-10@FreeBSD.ORG Wed Oct 23 17:59:18 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id BB074377; Wed, 23 Oct 2013 17:59:18 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 98D042178; Wed, 23 Oct 2013 17:59:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9NHxIGO079905; Wed, 23 Oct 2013 17:59:18 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9NHxH40079900; Wed, 23 Oct 2013 17:59:17 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201310231759.r9NHxH40079900@svn.freebsd.org> From: Brooks Davis Date: Wed, 23 Oct 2013 17:59:17 +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: r256996 - stable/10/contrib/mtree 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Oct 2013 17:59:18 -0000 Author: brooks Date: Wed Oct 23 17:59:17 2013 New Revision: 256996 URL: http://svnweb.freebsd.org/changeset/base/256996 Log: MFC r256687: Upgrade to the latest version of mtree from NetBSD. This revision re-removes the printing of size for non-regular files, supports type-less root (.) entries as seen in a couple ports, and corrects a bug in -N that caused expanded Subversion $FreeBSD$ strings in comments to be processed as /etc/group entries. Includes one trivial portability fix (including in three files) that has been committed upstream. Approved by: re (glebius) Modified: stable/10/contrib/mtree/compare.c stable/10/contrib/mtree/create.c stable/10/contrib/mtree/getid.c stable/10/contrib/mtree/spec.c Directory Properties: stable/10/contrib/mtree/ (props changed) Modified: stable/10/contrib/mtree/compare.c ============================================================================== --- stable/10/contrib/mtree/compare.c Wed Oct 23 17:55:35 2013 (r256995) +++ stable/10/contrib/mtree/compare.c Wed Oct 23 17:59:17 2013 (r256996) @@ -1,4 +1,4 @@ -/* $NetBSD: compare.c,v 1.55 2012/10/05 00:59:35 christos Exp $ */ +/* $NetBSD: compare.c,v 1.56 2013/09/09 23:27:43 christos Exp $ */ /*- * Copyright (c) 1989, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)compare.c 8.1 (Berkeley) 6/6/93"; #else -__RCSID("$NetBSD: compare.c,v 1.55 2012/10/05 00:59:35 christos Exp $"); +__RCSID("$NetBSD: compare.c,v 1.56 2013/09/09 23:27:43 christos Exp $"); #endif #endif /* not lint */ @@ -47,6 +47,7 @@ __RCSID("$NetBSD: compare.c,v 1.55 2012/ #include #include +#include #include #include #include @@ -192,9 +193,9 @@ typeerr: LABEL; (s->type == F_BLOCK || s->type == F_CHAR) && s->st_rdev != p->fts_statp->st_rdev) { LABEL; - printf("%sdevice (%#llx, %#llx", - tab, (long long)s->st_rdev, - (long long)p->fts_statp->st_rdev); + printf("%sdevice (%#jx, %#jx", + tab, (uintmax_t)s->st_rdev, + (uintmax_t)p->fts_statp->st_rdev); if (uflag) { if ((unlink(p->fts_accpath) == -1) || (mknod(p->fts_accpath, @@ -283,9 +284,9 @@ typeerr: LABEL; } if (s->flags & F_SIZE && s->st_size != p->fts_statp->st_size) { LABEL; - printf("%ssize (%lld, %lld)\n", - tab, (long long)s->st_size, - (long long)p->fts_statp->st_size); + printf("%ssize (%ju, %ju)\n", + tab, (uintmax_t)s->st_size, + (uintmax_t)p->fts_statp->st_size); tab = "\t"; } /* Modified: stable/10/contrib/mtree/create.c ============================================================================== --- stable/10/contrib/mtree/create.c Wed Oct 23 17:55:35 2013 (r256995) +++ stable/10/contrib/mtree/create.c Wed Oct 23 17:59:17 2013 (r256996) @@ -1,4 +1,4 @@ -/* $NetBSD: create.c,v 1.69 2013/02/03 19:15:17 christos Exp $ */ +/* $NetBSD: create.c,v 1.71 2013/10/16 17:24:20 christos Exp $ */ /*- * Copyright (c) 1989, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)create.c 8.1 (Berkeley) 6/6/93"; #else -__RCSID("$NetBSD: create.c,v 1.69 2013/02/03 19:15:17 christos Exp $"); +__RCSID("$NetBSD: create.c,v 1.71 2013/10/16 17:24:20 christos Exp $"); #endif #endif /* not lint */ @@ -53,6 +53,7 @@ __RCSID("$NetBSD: create.c,v 1.69 2013/0 #include #include #include +#include #include #include #include @@ -216,22 +217,22 @@ statf(int indent, FTSENT *p) p->fts_statp->st_mode & MBITS); if (keys & F_DEV && (S_ISBLK(p->fts_statp->st_mode) || S_ISCHR(p->fts_statp->st_mode))) - output(indent, &offset, "device=%#llx", - (long long)p->fts_statp->st_rdev); + output(indent, &offset, "device=%#jx", + (uintmax_t)p->fts_statp->st_rdev); if (keys & F_NLINK && p->fts_statp->st_nlink != 1) output(indent, &offset, "nlink=%u", p->fts_statp->st_nlink); if (keys & F_SIZE && - (flavor != F_NETBSD6 || S_ISREG(p->fts_statp->st_mode))) - output(indent, &offset, "size=%lld", - (long long)p->fts_statp->st_size); + (flavor == F_FREEBSD9 || S_ISREG(p->fts_statp->st_mode))) + output(indent, &offset, "size=%ju", + (uintmax_t)p->fts_statp->st_size); if (keys & F_TIME) #if defined(BSD4_4) && !defined(HAVE_NBTOOL_CONFIG_H) - output(indent, &offset, "time=%ld.%09ld", - (long)p->fts_statp->st_mtimespec.tv_sec, + output(indent, &offset, "time=%jd.%09ld", + (intmax_t)p->fts_statp->st_mtimespec.tv_sec, p->fts_statp->st_mtimespec.tv_nsec); #else - output(indent, &offset, "time=%ld.%09ld", - (long)p->fts_statp->st_mtime, (long)0); + output(indent, &offset, "time=%jd.%09ld", + (intmax_t)p->fts_statp->st_mtime, (long)0); #endif if (keys & F_CKSUM && S_ISREG(p->fts_statp->st_mode)) { if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0 || Modified: stable/10/contrib/mtree/getid.c ============================================================================== --- stable/10/contrib/mtree/getid.c Wed Oct 23 17:55:35 2013 (r256995) +++ stable/10/contrib/mtree/getid.c Wed Oct 23 17:59:17 2013 (r256996) @@ -1,4 +1,4 @@ -/* $NetBSD: getid.c,v 1.7 2008/04/28 20:24:17 martin Exp $ */ +/* $NetBSD: getid.c,v 1.8 2013/10/16 17:27:42 christos Exp $ */ /* from: NetBSD: getpwent.c,v 1.48 2000/10/03 03:22:26 enami Exp */ /* from: NetBSD: getgrent.c,v 1.41 2002/01/12 23:51:30 lukem Exp */ @@ -65,7 +65,7 @@ #endif #include -__RCSID("$NetBSD: getid.c,v 1.7 2008/04/28 20:24:17 martin Exp $"); +__RCSID("$NetBSD: getid.c,v 1.8 2013/10/16 17:27:42 christos Exp $"); #include @@ -230,6 +230,9 @@ grscan(int search, gid_t gid, const char ; continue; } + /* skip comments */ + if (pwline[0] == '#') + continue; if (grmatchline(search, gid, name)) return 1; } @@ -371,6 +374,9 @@ pwscan(int search, uid_t uid, const char ; continue; } + /* skip comments */ + if (pwline[0] == '#') + continue; if (pwmatchline(search, uid, name)) return 1; } Modified: stable/10/contrib/mtree/spec.c ============================================================================== --- stable/10/contrib/mtree/spec.c Wed Oct 23 17:55:35 2013 (r256995) +++ stable/10/contrib/mtree/spec.c Wed Oct 23 17:59:17 2013 (r256996) @@ -1,4 +1,4 @@ -/* $NetBSD: spec.c,v 1.85 2012/12/20 16:43:16 christos Exp $ */ +/* $NetBSD: spec.c,v 1.87 2013/10/16 17:26:14 christos Exp $ */ /*- * Copyright (c) 1989, 1993 @@ -67,7 +67,7 @@ #if 0 static char sccsid[] = "@(#)spec.c 8.2 (Berkeley) 4/28/95"; #else -__RCSID("$NetBSD: spec.c,v 1.85 2012/12/20 16:43:16 christos Exp $"); +__RCSID("$NetBSD: spec.c,v 1.87 2013/10/16 17:26:14 christos Exp $"); #endif #endif /* not lint */ @@ -80,6 +80,7 @@ __RCSID("$NetBSD: spec.c,v 1.85 2012/12/ #include #include #include +#include #include #include #include @@ -217,6 +218,12 @@ noparent: mtree_err("no parent node"); /* * empty tree */ + /* + * Allow a bare "." root node by forcing it to + * type=dir for compatibility with FreeBSD. + */ + if (strcmp(centry->name, ".") == 0 && centry->type == 0) + centry->type = F_DIR; if (strcmp(centry->name, ".") != 0 || centry->type != F_DIR) mtree_err( @@ -350,16 +357,18 @@ dump_nodes(const char *dir, NODE *root, appendfield(pathlast, "mode=%#o", cur->st_mode); if (MATCHFLAG(F_DEV) && (cur->type == F_BLOCK || cur->type == F_CHAR)) - appendfield(pathlast, "device=%#llx", (long long)cur->st_rdev); + appendfield(pathlast, "device=%#jx", + (uintmax_t)cur->st_rdev); if (MATCHFLAG(F_NLINK)) appendfield(pathlast, "nlink=%d", cur->st_nlink); if (MATCHFLAG(F_SLINK)) appendfield(pathlast, "link=%s", vispath(cur->slink)); if (MATCHFLAG(F_SIZE)) - appendfield(pathlast, "size=%lld", (long long)cur->st_size); + appendfield(pathlast, "size=%ju", + (uintmax_t)cur->st_size); if (MATCHFLAG(F_TIME)) - appendfield(pathlast, "time=%lld.%09ld", - (long long)cur->st_mtimespec.tv_sec, + appendfield(pathlast, "time=%jd.%09ld", + (intmax_t)cur->st_mtimespec.tv_sec, cur->st_mtimespec.tv_nsec); if (MATCHFLAG(F_CKSUM)) appendfield(pathlast, "cksum=%lu", cur->cksum); From owner-svn-src-stable-10@FreeBSD.ORG Wed Oct 23 18:07:09 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id BB5C2A77; Wed, 23 Oct 2013 18:07:09 +0000 (UTC) (envelope-from bdrewery@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 990F4222B; Wed, 23 Oct 2013 18:07:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9NI79eY083886; Wed, 23 Oct 2013 18:07:09 GMT (envelope-from bdrewery@svn.freebsd.org) Received: (from bdrewery@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9NI78EU083874; Wed, 23 Oct 2013 18:07:08 GMT (envelope-from bdrewery@svn.freebsd.org) Message-Id: <201310231807.r9NI78EU083874@svn.freebsd.org> From: Bryan Drewery Date: Wed, 23 Oct 2013 18:07:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r256998 - in stable/10: . lib/libyaml share/mk tools usr.sbin/pkg 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Oct 2013 18:07:09 -0000 Author: bdrewery (ports committer) Date: Wed Oct 23 18:07:07 2013 New Revision: 256998 URL: http://svnweb.freebsd.org/changeset/base/256998 Log: MFC r256450: Rename libbsdyml to libyaml, make private, and bump SHLIB_MAJOR to 1.0 Approved by: bapt Approved by: re (glebius) Deleted: stable/10/lib/libyaml/libbsdyml.3 Modified: stable/10/ObsoleteFiles.inc (contents, props changed) stable/10/UPDATING (contents, props changed) stable/10/lib/libyaml/Makefile stable/10/share/mk/bsd.libnames.mk stable/10/tools/make_libdeps.sh stable/10/usr.sbin/pkg/Makefile stable/10/usr.sbin/pkg/config.c Directory Properties: stable/10/lib/libyaml/ (props changed) stable/10/share/mk/ (props changed) stable/10/tools/ (props changed) stable/10/usr.sbin/pkg/ (props changed) Modified: stable/10/ObsoleteFiles.inc ============================================================================== --- stable/10/ObsoleteFiles.inc Wed Oct 23 17:59:46 2013 (r256997) +++ stable/10/ObsoleteFiles.inc Wed Oct 23 18:07:07 2013 (r256998) @@ -38,6 +38,17 @@ # xargs -n1 | sort | uniq -d; # done +# 20131014: libbsdyml becomes private +OLD_FILES+=usr/lib/libbsdyml.a +OLD_FILES+=usr/lib/libbsdyml.so +OLD_LIBS+=usr/lib/libbsdyml.so.0 +OLD_FILES+=usr/lib/libbsdyml_p.a +OLD_FILES+=usr/lib32/libbsdyml.a +OLD_FILES+=usr/lib32/libbsdyml.so +OLD_LIBS+=usr/lib32/libbsdyml.so.0 +OLD_FILES+=usr/lib32/libbsdyml_p.a +OLD_FILES+=usr/share/man/man3/libbsdyml.3.gz +OLD_FILES+=usr/include/bsdyml.h # 20131013: Removal of the ATF tools OLD_FILES+=etc/atf/FreeBSD.conf OLD_FILES+=etc/atf/atf-run.hooks Modified: stable/10/UPDATING ============================================================================== --- stable/10/UPDATING Wed Oct 23 17:59:46 2013 (r256997) +++ stable/10/UPDATING Wed Oct 23 18:07:07 2013 (r256998) @@ -16,6 +16,15 @@ from older versions of FreeBSD, try WITH stable/10, and then rebuild without this option. The bootstrap process from older version of current is a bit fragile. +20131014: + libbsdyml has been renamed to libyaml and moved to /usr/lib/private. + This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg + 1.1.4_8 and verify bsdyml not linked in, before running "make + delete-old-libs": + # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean + or + # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml + 20131010: The rc.d/jail script has been updated to support jail(8) configuration file. The "jail__*" rc.conf(5) variables Modified: stable/10/lib/libyaml/Makefile ============================================================================== --- stable/10/lib/libyaml/Makefile Wed Oct 23 17:59:46 2013 (r256997) +++ stable/10/lib/libyaml/Makefile Wed Oct 23 18:07:07 2013 (r256998) @@ -2,15 +2,13 @@ LIBYAML= ${.CURDIR}/../../contrib/libyaml -LIB= bsdyml -SHLIB_MAJOR= 0 -INCS= bsdyml.h +LIB= yaml +PRIVATELIB= true +SHLIB_MAJOR= 1 SRCS= api.c dumper.c emitter.c loader.c \ parser.c reader.c scanner.c writer.c -MAN= libbsdyml.3 .PATH: ${LIBYAML}/src ${LIBYAML}/include -CLEANFILES= bsdyml.h WARNS?= 1 CFLAGS+= -I${LIBYAML}/include \ @@ -18,7 +16,4 @@ CFLAGS+= -I${LIBYAML}/include \ -I${.CURDIR} \ -DHAVE_CONFIG_H -bsdyml.h: yaml.h - cp -f ${.ALLSRC} ${.TARGET} - .include Modified: stable/10/share/mk/bsd.libnames.mk ============================================================================== --- stable/10/share/mk/bsd.libnames.mk Wed Oct 23 17:59:46 2013 (r256997) +++ stable/10/share/mk/bsd.libnames.mk Wed Oct 23 18:07:07 2013 (r256998) @@ -21,7 +21,6 @@ LIBAVL?= ${DESTDIR}${LIBDIR}/libavl.a LIBBEGEMOT?= ${DESTDIR}${LIBDIR}/libbegemot.a LIBBLUETOOTH?= ${DESTDIR}${LIBDIR}/libbluetooth.a LIBBSDXML?= ${DESTDIR}${LIBDIR}/libbsdxml.a -LIBBSDYML?= ${DESTDIR}${LIBDIR}/libbsdyml.a LIBBSM?= ${DESTDIR}${LIBDIR}/libbsm.a LIBBSNMP?= ${DESTDIR}${LIBDIR}/libbsnmp.a LIBBZ2?= ${DESTDIR}${LIBDIR}/libbz2.a @@ -166,6 +165,7 @@ LIBWIND?= ${DESTDIR}${LIBDIR}/libwind.a LIBWRAP?= ${DESTDIR}${LIBDIR}/libwrap.a LIBXPG4?= ${DESTDIR}${LIBDIR}/libxpg4.a LIBY?= ${DESTDIR}${LIBDIR}/liby.a +LIBYAML?= ${DESTDIR}${LIBPRIVATEDIR}/libyaml.a LIBYPCLNT?= ${DESTDIR}${LIBDIR}/libypclnt.a LIBZ?= ${DESTDIR}${LIBDIR}/libz.a LIBZFS?= ${DESTDIR}${LIBDIR}/libzfs.a Modified: stable/10/tools/make_libdeps.sh ============================================================================== --- stable/10/tools/make_libdeps.sh Wed Oct 23 17:59:46 2013 (r256997) +++ stable/10/tools/make_libdeps.sh Wed Oct 23 18:07:07 2013 (r256998) @@ -48,7 +48,6 @@ sed -E -e's; ;! ;g' -e's;$;!;' -e's;-lbsdxml!;lib/libexpat;g' - -e's;-lbsdyml!;lib/libyaml;g' -e's;-lpthread!;lib/libthr;g' -e's;-lm!;lib/msun;g' -e's;-l(ncurses|termcap)!;lib/ncurses/ncurses;g' Modified: stable/10/usr.sbin/pkg/Makefile ============================================================================== --- stable/10/usr.sbin/pkg/Makefile Wed Oct 23 17:59:46 2013 (r256997) +++ stable/10/usr.sbin/pkg/Makefile Wed Oct 23 18:07:07 2013 (r256998) @@ -4,7 +4,10 @@ PROG= pkg SRCS= pkg.c dns_utils.c config.c NO_MAN= yes -DPADD= ${LIBARCHIVE} ${LIBELF} ${LIBFETCH} ${LIBBSDYML} ${LIBSBUF} -LDADD= -larchive -lelf -lfetch -lbsdyml -lsbuf +CFLAGS+=-I${.CURDIR}/../../contrib/libyaml/include +.PATH: ${.CURDIR}/../../contrib/libyaml/include +DPADD= ${LIBARCHIVE} ${LIBELF} ${LIBFETCH} ${LIBYAML} ${LIBSBUF} +LDADD= -larchive -lelf -lfetch -lyaml -lsbuf +USEPRIVATELIB= yaml .include Modified: stable/10/usr.sbin/pkg/config.c ============================================================================== --- stable/10/usr.sbin/pkg/config.c Wed Oct 23 17:59:46 2013 (r256997) +++ stable/10/usr.sbin/pkg/config.c Wed Oct 23 18:07:07 2013 (r256998) @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include #include From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 05:01:49 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id BC90E402; Thu, 24 Oct 2013 05:01:49 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A90AD28F0; Thu, 24 Oct 2013 05:01:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9O51nPn011293; Thu, 24 Oct 2013 05:01:49 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9O51nu7011292; Thu, 24 Oct 2013 05:01:49 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201310240501.r9O51nu7011292@svn.freebsd.org> From: Xin LI Date: Thu, 24 Oct 2013 05:01: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: r257039 - stable/10/lib/libc/iconv 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 05:01:49 -0000 Author: delphij Date: Thu Oct 24 05:01:49 2013 New Revision: 257039 URL: http://svnweb.freebsd.org/changeset/base/257039 Log: MFC r256833: Drop cm_lock before calling mapper_close, which in turn could call _citrus_mapper_close again and result in a deadlock otherwise. This is similar to NetBSD PR/24023 (fixed in their r1.5 of this file). PR: bin/182994 Submitted by: Fabian Keil Approved by: re (hrs) Modified: stable/10/lib/libc/iconv/citrus_mapper.c Directory Properties: stable/10/lib/libc/ (props changed) Modified: stable/10/lib/libc/iconv/citrus_mapper.c ============================================================================== --- stable/10/lib/libc/iconv/citrus_mapper.c Thu Oct 24 03:36:39 2013 (r257038) +++ stable/10/lib/libc/iconv/citrus_mapper.c Thu Oct 24 05:01:49 2013 (r257039) @@ -381,7 +381,9 @@ _citrus_mapper_close(struct _citrus_mapp _CITRUS_HASH_REMOVE(cm, cm_entry); free(cm->cm_key); } + UNLOCK(&cm_lock); mapper_close(cm); + return; quit: UNLOCK(&cm_lock); } From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 07:38:33 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6D2A6B63; Thu, 24 Oct 2013 07:38:33 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4B5BA2111; Thu, 24 Oct 2013 07:38:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9O7cXoI062594; Thu, 24 Oct 2013 07:38:33 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9O7cWvE062592; Thu, 24 Oct 2013 07:38:32 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201310240738.r9O7cWvE062592@svn.freebsd.org> From: Hans Petter Selasky Date: Thu, 24 Oct 2013 07:38:32 +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: r257043 - stable/10/sys/dev/usb/controller 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 07:38:33 -0000 Author: hselasky Date: Thu Oct 24 07:38:32 2013 New Revision: 257043 URL: http://svnweb.freebsd.org/changeset/base/257043 Log: MFC r256548: Correct programming of XXX_MAXP register. This register is 16-bit wide and not 8-bit. Fix support for isochronous transfers in USB host mode. Fix a whitespace while at it. PR: usb/181987 Approved by: re (Xin Li) Modified: stable/10/sys/dev/usb/controller/musb_otg.c stable/10/sys/dev/usb/controller/musb_otg.h Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/dev/usb/controller/musb_otg.c ============================================================================== --- stable/10/sys/dev/usb/controller/musb_otg.c Thu Oct 24 06:25:52 2013 (r257042) +++ stable/10/sys/dev/usb/controller/musb_otg.c Thu Oct 24 07:38:32 2013 (r257043) @@ -1661,7 +1661,7 @@ repeat: } /* Max packet size */ - MUSB2_WRITE_1(sc, MUSB2_REG_TXMAXP, td->max_packet); + MUSB2_WRITE_2(sc, MUSB2_REG_TXMAXP, td->reg_max_packet); /* write command */ MUSB2_WRITE_1(sc, MUSB2_REG_TXCSRL, @@ -1726,13 +1726,16 @@ repeat: td->hport); /* RX NAK timeout */ - MUSB2_WRITE_1(sc, MUSB2_REG_RXNAKLIMIT, MAX_NAK_TO); + if (td->transfer_type & MUSB2_MASK_TI_PROTO_ISOC) + MUSB2_WRITE_1(sc, MUSB2_REG_RXNAKLIMIT, 0); + else + MUSB2_WRITE_1(sc, MUSB2_REG_RXNAKLIMIT, MAX_NAK_TO); /* Protocol, speed, device endpoint */ MUSB2_WRITE_1(sc, MUSB2_REG_RXTI, td->transfer_type); /* Max packet size */ - MUSB2_WRITE_1(sc, MUSB2_REG_RXMAXP, td->max_packet); + MUSB2_WRITE_2(sc, MUSB2_REG_RXMAXP, td->reg_max_packet); /* Data Toggle */ csrh = MUSB2_READ_1(sc, MUSB2_REG_RXCSRH); @@ -1938,7 +1941,7 @@ musbotg_host_data_tx(struct musbotg_td * return (0); /* complete */ } - if (csr & MUSB2_MASK_CSRL_TXNAKTO ) { + if (csr & MUSB2_MASK_CSRL_TXNAKTO) { /* * Flush TX FIFO before clearing NAK TO */ @@ -2069,13 +2072,16 @@ musbotg_host_data_tx(struct musbotg_td * td->hport); /* TX NAK timeout */ - MUSB2_WRITE_1(sc, MUSB2_REG_TXNAKLIMIT, MAX_NAK_TO); + if (td->transfer_type & MUSB2_MASK_TI_PROTO_ISOC) + MUSB2_WRITE_1(sc, MUSB2_REG_TXNAKLIMIT, 0); + else + MUSB2_WRITE_1(sc, MUSB2_REG_TXNAKLIMIT, MAX_NAK_TO); /* Protocol, speed, device endpoint */ MUSB2_WRITE_1(sc, MUSB2_REG_TXTI, td->transfer_type); /* Max packet size */ - MUSB2_WRITE_1(sc, MUSB2_REG_TXMAXP, td->max_packet); + MUSB2_WRITE_2(sc, MUSB2_REG_TXMAXP, td->reg_max_packet); if (!td->transaction_started) { csrh = MUSB2_READ_1(sc, MUSB2_REG_TXCSRH); @@ -2406,7 +2412,6 @@ musbotg_setup_standard_chain(struct usb_ if (xfer->flags_int.usb_mode == USB_MODE_HOST) { speed = usbd_get_speed(xfer->xroot->udev); - xfer_type = xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE; switch (speed) { case USB_SPEED_LOW: @@ -2444,7 +2449,6 @@ musbotg_setup_standard_chain(struct usb_ } temp.transfer_type |= ep_no; - td->max_packet = xfer->max_packet_size; td->toggle = xfer->endpoint->toggle_next; } @@ -2469,9 +2473,9 @@ musbotg_setup_standard_chain(struct usb_ x = 0; } - if (x != xfer->nframes) { - tx = 0; + tx = 0; + if (x != xfer->nframes) { if (xfer->endpointno & UE_DIR_IN) tx = 1; @@ -2532,9 +2536,14 @@ musbotg_setup_standard_chain(struct usb_ } else { - /* regular data transfer */ - - temp.short_pkt = (xfer->flags.force_short_xfer) ? 0 : 1; + if (xfer->flags_int.isochronous_xfr) { + /* isochronous data transfer */ + /* don't force short */ + temp.short_pkt = 1; + } else { + /* regular data transfer */ + temp.short_pkt = (xfer->flags.force_short_xfer ? 0 : 1); + } } musbotg_setup_standard_chain_sub(&temp); @@ -3158,7 +3167,12 @@ musbotg_init(struct musbotg_softc *sc) if (dynfifo) { if (frx && (temp <= nrx)) { - if (temp < 8) { + if (temp == 1) { + frx = 12; /* 4K */ + MUSB2_WRITE_1(sc, MUSB2_REG_RXFIFOSZ, + MUSB2_VAL_FIFOSZ_4096 | + MUSB2_MASK_FIFODB); + } else if (temp < 8) { frx = 10; /* 1K */ MUSB2_WRITE_1(sc, MUSB2_REG_RXFIFOSZ, MUSB2_VAL_FIFOSZ_512 | @@ -3175,7 +3189,12 @@ musbotg_init(struct musbotg_softc *sc) offset += (1 << frx); } if (ftx && (temp <= ntx)) { - if (temp < 8) { + if (temp == 1) { + ftx = 12; /* 4K */ + MUSB2_WRITE_1(sc, MUSB2_REG_TXFIFOSZ, + MUSB2_VAL_FIFOSZ_4096 | + MUSB2_MASK_FIFODB); + } else if (temp < 8) { ftx = 10; /* 1K */ MUSB2_WRITE_1(sc, MUSB2_REG_TXFIFOSZ, MUSB2_VAL_FIFOSZ_512 | @@ -4042,7 +4061,7 @@ musbotg_xfer_setup(struct usb_setup_para * reasonable dummies: */ parm->hc_max_packet_size = 0x400; - parm->hc_max_frame_size = 0x400; + parm->hc_max_frame_size = 0xc00; if ((parm->methods == &musbotg_device_isoc_methods) || (parm->methods == &musbotg_device_intr_methods)) @@ -4117,6 +4136,8 @@ musbotg_xfer_setup(struct usb_setup_para /* init TD */ td->max_frame_size = xfer->max_frame_size; + td->reg_max_packet = xfer->max_packet_size | + ((xfer->max_packet_count - 1) << 11); td->ep_no = ep_no; td->obj_next = last_obj; Modified: stable/10/sys/dev/usb/controller/musb_otg.h ============================================================================== --- stable/10/sys/dev/usb/controller/musb_otg.h Thu Oct 24 06:25:52 2013 (r257042) +++ stable/10/sys/dev/usb/controller/musb_otg.h Thu Oct 24 07:38:32 2013 (r257043) @@ -316,9 +316,9 @@ struct musbotg_td { uint32_t offset; uint32_t remainder; uint16_t max_frame_size; /* packet_size * mult */ + uint16_t reg_max_packet; uint8_t ep_no; uint8_t transfer_type; - uint8_t max_packet; uint8_t error:1; uint8_t alt_next:1; uint8_t short_pkt:1; From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 07:43:36 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 28202D76; Thu, 24 Oct 2013 07:43:36 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 152392167; Thu, 24 Oct 2013 07:43:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9O7hZTb065255; Thu, 24 Oct 2013 07:43:35 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9O7hZ7P065252; Thu, 24 Oct 2013 07:43:35 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201310240743.r9O7hZ7P065252@svn.freebsd.org> From: Hans Petter Selasky Date: Thu, 24 Oct 2013 07:43: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: r257044 - in stable/10/sys/dev/usb: . wlan 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 07:43:36 -0000 Author: hselasky Date: Thu Oct 24 07:43:35 2013 New Revision: 257044 URL: http://svnweb.freebsd.org/changeset/base/257044 Log: MFC r256500: Add new USB ID. PR: usb/182936 Approved by: re (Xin LI) Obtainedrom: Modified: stable/10/sys/dev/usb/usbdevs stable/10/sys/dev/usb/wlan/if_run.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/dev/usb/usbdevs ============================================================================== --- stable/10/sys/dev/usb/usbdevs Thu Oct 24 07:38:32 2013 (r257043) +++ stable/10/sys/dev/usb/usbdevs Thu Oct 24 07:43:35 2013 (r257044) @@ -1259,6 +1259,7 @@ product BELKIN F5D8055V2 0x825b F5D8055 product BELKIN F5D9050V3 0x905b F5D9050 ver 3 Wireless Adapter product BELKIN2 F5U002 0x0002 F5U002 Parallel printer product BELKIN F6D4050V1 0x935a F6D4050 v1 +product BELKIN F6D4050V2 0x935b F6D4050 v2 /* Billionton products */ product BILLIONTON USB100 0x0986 USB100N 10/100 FastEthernet Modified: stable/10/sys/dev/usb/wlan/if_run.c ============================================================================== --- stable/10/sys/dev/usb/wlan/if_run.c Thu Oct 24 07:38:32 2013 (r257043) +++ stable/10/sys/dev/usb/wlan/if_run.c Thu Oct 24 07:43:35 2013 (r257044) @@ -147,6 +147,7 @@ static const STRUCT_USB_HOST_ID run_devs RUN_DEV(BELKIN, F5D8055), RUN_DEV(BELKIN, F5D8055V2), RUN_DEV(BELKIN, F6D4050V1), + RUN_DEV(BELKIN, F6D4050V2), RUN_DEV(BELKIN, RT2870_1), RUN_DEV(BELKIN, RT2870_2), RUN_DEV(CISCOLINKSYS, AE1000), From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 07:46:18 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 718DAF2D; Thu, 24 Oct 2013 07:46:18 +0000 (UTC) (envelope-from hps@bitfrost.no) Received: from mta.bitpro.no (mta.bitpro.no [92.42.64.202]) by mx1.freebsd.org (Postfix) with ESMTP id 2C6B82188; Thu, 24 Oct 2013 07:46:18 +0000 (UTC) Received: from mail.lockless.no (mail.lockless.no [46.29.221.38]) by mta.bitpro.no (Postfix) with ESMTP id EE6EA7A531; Thu, 24 Oct 2013 09:46:15 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.lockless.no (Postfix) with ESMTP id 004338F6FD4; Thu, 24 Oct 2013 09:46:42 +0200 (CEST) X-Virus-Scanned: by amavisd-new-2.6.4 (20090625) (Debian) at lockless.no Received: from mail.lockless.no ([127.0.0.1]) by localhost (mail.lockless.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id w14EDUPw+Ksx; Thu, 24 Oct 2013 09:46:42 +0200 (CEST) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) by mail.lockless.no (Postfix) with ESMTPSA id 254508F6FD3; Thu, 24 Oct 2013 09:46:42 +0200 (CEST) Message-ID: <5268D08D.6070701@bitfrost.no> Date: Thu, 24 Oct 2013 09:47:25 +0200 From: Hans Petter Selasky Organization: Bitfrost A/S User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130522 Thunderbird/17.0.6 MIME-Version: 1.0 Subject: Re: svn commit: r257044 - in stable/10/sys/dev/usb: . wlan References: <201310240743.r9O7hZ7P065252@svn.freebsd.org> In-Reply-To: <201310240743.r9O7hZ7P065252@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-10@freebsd.org X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 07:46:18 -0000 On 10/24/13 09:43, Hans Petter Selasky wrote: > Author: hselasky > Date: Thu Oct 24 07:43:35 2013 > New Revision: 257044 > URL: http://svnweb.freebsd.org/changeset/base/257044 > > Log: > MFC r256500: > Add new USB ID. > > PR: usb/182936 > Approved by: re (Xin LI) > Obtainedrom: ^^^ this line was a minor "vi" accident :-) --HPS From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 10:31:03 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 89B93AAD; Thu, 24 Oct 2013 10:31:03 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 774BA20D6; Thu, 24 Oct 2013 10:31:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9OAV3Vp022119; Thu, 24 Oct 2013 10:31:03 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9OAV3oS022118; Thu, 24 Oct 2013 10:31:03 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201310241031.r9OAV3oS022118@svn.freebsd.org> From: Alexander Motin Date: Thu, 24 Oct 2013 10:31:03 +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: r257047 - stable/10/sys/cam 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 10:31:03 -0000 Author: mav Date: Thu Oct 24 10:31:02 2013 New Revision: 257047 URL: http://svnweb.freebsd.org/changeset/base/257047 Log: MFC r256533: Unhide "Serial Number" lines from bootverbose. That information may be useful for system administration to have in hard copy (in logs) if one of several devices suddenly dies. Approved by: re (hrs) Modified: stable/10/sys/cam/cam_xpt.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/cam/cam_xpt.c ============================================================================== --- stable/10/sys/cam/cam_xpt.c Thu Oct 24 10:18:08 2013 (r257046) +++ stable/10/sys/cam/cam_xpt.c Thu Oct 24 10:31:02 2013 (r257047) @@ -1043,7 +1043,7 @@ xpt_announce_periph(struct cam_periph *p (struct sep_identify_data *)&path->device->ident_data); else printf("Unknown protocol device\n"); - if (bootverbose && path->device->serial_num_len > 0) { + if (path->device->serial_num_len > 0) { /* Don't wrap the screen - print only the first 60 chars */ printf("%s%d: Serial Number %.60s\n", periph->periph_name, periph->unit_number, path->device->serial_num); From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 10:33:35 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 74B30E37; Thu, 24 Oct 2013 10:33:35 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 60FBB210E; Thu, 24 Oct 2013 10:33:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9OAXZJK022639; Thu, 24 Oct 2013 10:33:35 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9OAXVgU022614; Thu, 24 Oct 2013 10:33:31 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201310241033.r9OAXVgU022614@svn.freebsd.org> From: Alexander Motin Date: Thu, 24 Oct 2013 10:33:31 +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: r257049 - in stable/10/sys/cam: . ata scsi 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 10:33:35 -0000 Author: mav Date: Thu Oct 24 10:33:31 2013 New Revision: 257049 URL: http://svnweb.freebsd.org/changeset/base/257049 Log: MFC r256552: Unify periph invalidation and destruction reporting. Print message containing device model and serial number on invalidation. Approved by: re (hrs) Modified: stable/10/sys/cam/ata/ata_all.c stable/10/sys/cam/ata/ata_all.h stable/10/sys/cam/ata/ata_da.c stable/10/sys/cam/ata/ata_pmp.c stable/10/sys/cam/cam_periph.c stable/10/sys/cam/cam_periph.h stable/10/sys/cam/cam_xpt.c stable/10/sys/cam/cam_xpt_periph.h stable/10/sys/cam/scsi/scsi_all.c stable/10/sys/cam/scsi/scsi_all.h stable/10/sys/cam/scsi/scsi_cd.c stable/10/sys/cam/scsi/scsi_ch.c stable/10/sys/cam/scsi/scsi_da.c stable/10/sys/cam/scsi/scsi_enc.c stable/10/sys/cam/scsi/scsi_pass.c stable/10/sys/cam/scsi/scsi_pt.c stable/10/sys/cam/scsi/scsi_sa.c stable/10/sys/cam/scsi/scsi_sg.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/cam/ata/ata_all.c ============================================================================== --- stable/10/sys/cam/ata/ata_all.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/ata/ata_all.c Thu Oct 24 10:33:31 2013 (r257049) @@ -297,6 +297,18 @@ ata_print_ident(struct ata_params *ident } void +ata_print_ident_short(struct ata_params *ident_data) +{ + char product[48], revision[16]; + + cam_strvis(product, ident_data->model, sizeof(ident_data->model), + sizeof(product)); + cam_strvis(revision, ident_data->revision, sizeof(ident_data->revision), + sizeof(revision)); + printf("<%s %s>", product, revision); +} + +void semb_print_ident(struct sep_identify_data *ident_data) { char vendor[9], product[17], revision[5], fw[5], in[7], ins[5]; @@ -311,6 +323,18 @@ semb_print_ident(struct sep_identify_dat vendor, product, revision, fw, in, ins); } +void +semb_print_ident_short(struct sep_identify_data *ident_data) +{ + char vendor[9], product[17], revision[5], fw[5]; + + cam_strvis(vendor, ident_data->vendor_id, 8, sizeof(vendor)); + cam_strvis(product, ident_data->product_id, 16, sizeof(product)); + cam_strvis(revision, ident_data->product_rev, 4, sizeof(revision)); + cam_strvis(fw, ident_data->firmware_rev, 4, sizeof(fw)); + printf("<%s %s %s %s>", vendor, product, revision, fw); +} + uint32_t ata_logical_sector_size(struct ata_params *ident_data) { Modified: stable/10/sys/cam/ata/ata_all.h ============================================================================== --- stable/10/sys/cam/ata/ata_all.h Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/ata/ata_all.h Thu Oct 24 10:33:31 2013 (r257049) @@ -109,6 +109,7 @@ int ata_status_sbuf(struct ccb_ataio *at int ata_res_sbuf(struct ccb_ataio *ataio, struct sbuf *sb); void ata_print_ident(struct ata_params *ident_data); +void ata_print_ident_short(struct ata_params *ident_data); uint32_t ata_logical_sector_size(struct ata_params *ident_data); uint64_t ata_physical_sector_size(struct ata_params *ident_data); @@ -143,6 +144,7 @@ int ata_identify_match(caddr_t identbuff int ata_static_identify_match(caddr_t identbuffer, caddr_t table_entry); void semb_print_ident(struct sep_identify_data *ident_data); +void semb_print_ident_short(struct sep_identify_data *ident_data); void semb_receive_diagnostic_results(struct ccb_ataio *ataio, u_int32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb*), Modified: stable/10/sys/cam/ata/ata_da.c ============================================================================== --- stable/10/sys/cam/ata/ata_da.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/ata/ata_da.c Thu Oct 24 10:33:31 2013 (r257049) @@ -907,7 +907,6 @@ adaoninvalidate(struct cam_periph *perip bioq_flush(&softc->trim_queue, NULL, ENXIO); disk_gone(softc->disk); - xpt_print(periph->path, "lost device\n"); } static void @@ -917,7 +916,6 @@ adacleanup(struct cam_periph *periph) softc = (struct ada_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); cam_periph_unlock(periph); /* Modified: stable/10/sys/cam/ata/ata_pmp.c ============================================================================== --- stable/10/sys/cam/ata/ata_pmp.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/ata/ata_pmp.c Thu Oct 24 10:33:31 2013 (r257049) @@ -241,7 +241,6 @@ pmponinvalidate(struct cam_periph *perip } } pmprelease(periph, -1); - xpt_print(periph->path, "lost device\n"); } static void @@ -251,7 +250,6 @@ pmpcleanup(struct cam_periph *periph) softc = (struct pmp_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); cam_periph_unlock(periph); /* Modified: stable/10/sys/cam/cam_periph.c ============================================================================== --- stable/10/sys/cam/cam_periph.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/cam_periph.c Thu Oct 24 10:33:31 2013 (r257049) @@ -586,6 +586,8 @@ cam_periph_invalidate(struct cam_periph return; CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph invalidated\n")); + if (periph->flags & CAM_PERIPH_ANNOUNCED) + xpt_denounce_periph(periph); periph->flags |= CAM_PERIPH_INVALID; periph->flags &= ~CAM_PERIPH_NEW_DEV_FOUND; if (periph->periph_oninval != NULL) @@ -648,7 +650,10 @@ camperiphfree(struct cam_periph *periph) xpt_remove_periph(periph); xpt_unlock_buses(); - CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph destroyed\n")); + if (periph->flags & CAM_PERIPH_ANNOUNCED) { + xpt_print(periph->path, "Periph destroyed\n"); + } else + CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Periph destroyed\n")); if (periph->flags & CAM_PERIPH_NEW_DEV_FOUND) { union ccb ccb; Modified: stable/10/sys/cam/cam_periph.h ============================================================================== --- stable/10/sys/cam/cam_periph.h Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/cam_periph.h Thu Oct 24 10:33:31 2013 (r257049) @@ -121,6 +121,7 @@ struct cam_periph { #define CAM_PERIPH_NEW_DEV_FOUND 0x10 #define CAM_PERIPH_RECOVERY_INPROG 0x20 #define CAM_PERIPH_FREE 0x80 +#define CAM_PERIPH_ANNOUNCED 0x100 u_int32_t immediate_priority; u_int32_t refcount; SLIST_HEAD(, ccb_hdr) ccb_list; /* For "immediate" requests */ Modified: stable/10/sys/cam/cam_xpt.c ============================================================================== --- stable/10/sys/cam/cam_xpt.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/cam_xpt.c Thu Oct 24 10:33:31 2013 (r257049) @@ -1023,6 +1023,7 @@ xpt_announce_periph(struct cam_periph *p struct cam_path *path = periph->path; mtx_assert(periph->sim->mtx, MA_OWNED); + periph->flags |= CAM_PERIPH_ANNOUNCED; printf("%s%d at %s%d bus %d scbus%d target %d lun %d\n", periph->periph_name, periph->unit_number, @@ -1071,6 +1072,37 @@ xpt_announce_quirks(struct cam_periph *p } } +void +xpt_denounce_periph(struct cam_periph *periph) +{ + struct cam_path *path = periph->path; + + mtx_assert(periph->sim->mtx, MA_OWNED); + printf("%s%d at %s%d bus %d scbus%d target %d lun %d\n", + periph->periph_name, periph->unit_number, + path->bus->sim->sim_name, + path->bus->sim->unit_number, + path->bus->sim->bus_id, + path->bus->path_id, + path->target->target_id, + path->device->lun_id); + printf("%s%d: ", periph->periph_name, periph->unit_number); + if (path->device->protocol == PROTO_SCSI) + scsi_print_inquiry_short(&path->device->inq_data); + else if (path->device->protocol == PROTO_ATA || + path->device->protocol == PROTO_SATAPM) + ata_print_ident_short(&path->device->ident_data); + else if (path->device->protocol == PROTO_SEMB) + semb_print_ident_short( + (struct sep_identify_data *)&path->device->ident_data); + else + printf("Unknown protocol device"); + if (path->device->serial_num_len > 0) + printf(" s/n %.60s", path->device->serial_num); + printf(" detached\n"); +} + + int xpt_getattr(char *buf, size_t len, const char *attr, struct cam_path *path) { Modified: stable/10/sys/cam/cam_xpt_periph.h ============================================================================== --- stable/10/sys/cam/cam_xpt_periph.h Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/cam_xpt_periph.h Thu Oct 24 10:33:31 2013 (r257049) @@ -47,6 +47,7 @@ void xpt_announce_periph(struct cam_per char *announce_string); void xpt_announce_quirks(struct cam_periph *periph, int quirks, char *bit_string); +void xpt_denounce_periph(struct cam_periph *periph); #endif #endif /* _CAM_CAM_XPT_PERIPH_H */ Modified: stable/10/sys/cam/scsi/scsi_all.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_all.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_all.c Thu Oct 24 10:33:31 2013 (r257049) @@ -5249,6 +5249,21 @@ scsi_print_inquiry(struct scsi_inquiry_d dtype, rstr, qtype); } +void +scsi_print_inquiry_short(struct scsi_inquiry_data *inq_data) +{ + char vendor[16], product[48], revision[16]; + + cam_strvis(vendor, inq_data->vendor, sizeof(inq_data->vendor), + sizeof(vendor)); + cam_strvis(product, inq_data->product, sizeof(inq_data->product), + sizeof(product)); + cam_strvis(revision, inq_data->revision, sizeof(inq_data->revision), + sizeof(revision)); + + printf("<%s %s %s>", vendor, product, revision); +} + /* * Table of syncrates that don't follow the "divisible by 4" * rule. This table will be expanded in future SCSI specs. Modified: stable/10/sys/cam/scsi/scsi_all.h ============================================================================== --- stable/10/sys/cam/scsi/scsi_all.h Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_all.h Thu Oct 24 10:33:31 2013 (r257049) @@ -2313,6 +2313,7 @@ char * scsi_cdb_string(u_int8_t *cdb_pt size_t len); void scsi_print_inquiry(struct scsi_inquiry_data *inq_data); +void scsi_print_inquiry_short(struct scsi_inquiry_data *inq_data); u_int scsi_calc_syncsrate(u_int period_factor); u_int scsi_calc_syncparam(u_int period); Modified: stable/10/sys/cam/scsi/scsi_cd.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_cd.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_cd.c Thu Oct 24 10:33:31 2013 (r257049) @@ -428,7 +428,6 @@ cdoninvalidate(struct cam_periph *periph camq_remove(&softc->changer->devq, softc->pinfo.index); disk_gone(softc->disk); - xpt_print(periph->path, "lost device, %d refs\n", periph->refcount); } static void @@ -438,8 +437,6 @@ cdcleanup(struct cam_periph *periph) softc = (struct cd_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); - /* * In the queued, non-active case, the device in question * has already been removed from the changer run queue. Since this Modified: stable/10/sys/cam/scsi/scsi_ch.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_ch.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_ch.c Thu Oct 24 10:33:31 2013 (r257049) @@ -306,9 +306,6 @@ choninvalidate(struct cam_periph *periph * when it has cleaned up its state. */ destroy_dev_sched_cb(softc->dev, chdevgonecb, periph); - - xpt_print(periph->path, "lost device\n"); - } static void @@ -318,8 +315,6 @@ chcleanup(struct cam_periph *periph) softc = (struct ch_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); - devstat_remove_entry(softc->device_stats); free(softc, M_DEVBUF); Modified: stable/10/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_da.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_da.c Thu Oct 24 10:33:31 2013 (r257049) @@ -1561,9 +1561,6 @@ daoninvalidate(struct cam_periph *periph * done cleaning up its resources. */ disk_gone(softc->disk); - - xpt_print(periph->path, "lost device - %d outstanding, %d refs\n", - softc->outstanding_cmds, periph->refcount); } static void @@ -1573,7 +1570,6 @@ dacleanup(struct cam_periph *periph) softc = (struct da_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); cam_periph_unlock(periph); /* Modified: stable/10/sys/cam/scsi/scsi_enc.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_enc.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_enc.c Thu Oct 24 10:33:31 2013 (r257049) @@ -178,8 +178,6 @@ enc_oninvalidate(struct cam_periph *peri callout_drain(&enc->status_updater); destroy_dev_sched_cb(enc->enc_dev, enc_devgonecb, periph); - - xpt_print(periph->path, "lost device\n"); } static void @@ -189,9 +187,6 @@ enc_dtor(struct cam_periph *periph) enc = periph->softc; - xpt_print(periph->path, "removing device entry\n"); - - /* If the sub-driver has a cleanup routine, call it */ if (enc->enc_vec.softc_cleanup != NULL) enc->enc_vec.softc_cleanup(enc); Modified: stable/10/sys/cam/scsi/scsi_pass.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_pass.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_pass.c Thu Oct 24 10:33:31 2013 (r257049) @@ -207,11 +207,6 @@ passoninvalidate(struct cam_periph *peri * XXX Handle any transactions queued to the card * with XPT_ABORT_CCB. */ - - if (bootverbose) { - xpt_print(periph->path, "lost device\n"); - } - } static void @@ -221,8 +216,6 @@ passcleanup(struct cam_periph *periph) softc = (struct pass_softc *)periph->softc; - if (bootverbose) - xpt_print(periph->path, "removing device entry\n"); devstat_remove_entry(softc->device_stats); cam_periph_unlock(periph); Modified: stable/10/sys/cam/scsi/scsi_pt.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_pt.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_pt.c Thu Oct 24 10:33:31 2013 (r257049) @@ -333,8 +333,6 @@ ptoninvalidate(struct cam_periph *periph * with XPT_ABORT_CCB. */ bioq_flush(&softc->bio_queue, NULL, ENXIO); - - xpt_print(periph->path, "lost device\n"); } static void @@ -344,7 +342,6 @@ ptdtor(struct cam_periph *periph) softc = (struct pt_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); devstat_remove_entry(softc->device_stats); cam_periph_unlock(periph); destroy_dev(softc->dev); Modified: stable/10/sys/cam/scsi/scsi_sa.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_sa.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_sa.c Thu Oct 24 10:33:31 2013 (r257049) @@ -1401,9 +1401,6 @@ saoninvalidate(struct cam_periph *periph */ bioq_flush(&softc->bio_queue, NULL, ENXIO); softc->queue_count = 0; - - xpt_print(periph->path, "lost device\n"); - } static void @@ -1414,7 +1411,6 @@ sacleanup(struct cam_periph *periph) softc = (struct sa_softc *)periph->softc; - xpt_print(periph->path, "removing device entry\n"); devstat_remove_entry(softc->device_stats); cam_periph_unlock(periph); destroy_dev(softc->devs.ctl_dev); Modified: stable/10/sys/cam/scsi/scsi_sg.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_sg.c Thu Oct 24 10:31:53 2013 (r257048) +++ stable/10/sys/cam/scsi/scsi_sg.c Thu Oct 24 10:33:31 2013 (r257049) @@ -238,9 +238,6 @@ sgoninvalidate(struct cam_periph *periph * with XPT_ABORT_CCB. */ - if (bootverbose) { - xpt_print(periph->path, "lost device\n"); - } } static void @@ -249,8 +246,6 @@ sgcleanup(struct cam_periph *periph) struct sg_softc *softc; softc = (struct sg_softc *)periph->softc; - if (bootverbose) - xpt_print(periph->path, "removing device entry\n"); devstat_remove_entry(softc->device_stats); From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 11:35:50 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D9D5EDF2; Thu, 24 Oct 2013 11:35:50 +0000 (UTC) (envelope-from bdrewery@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C77E22665; Thu, 24 Oct 2013 11:35:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9OBZoaJ043194; Thu, 24 Oct 2013 11:35:50 GMT (envelope-from bdrewery@svn.freebsd.org) Received: (from bdrewery@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9OBZo8M043193; Thu, 24 Oct 2013 11:35:50 GMT (envelope-from bdrewery@svn.freebsd.org) Message-Id: <201310241135.r9OBZo8M043193@svn.freebsd.org> From: Bryan Drewery Date: Thu, 24 Oct 2013 11:35:50 +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: r257053 - stable/10 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 11:35:50 -0000 Author: bdrewery (ports committer) Date: Thu Oct 24 11:35:50 2013 New Revision: 257053 URL: http://svnweb.freebsd.org/changeset/base/257053 Log: MFC r256842: Fix 'make delete-old-libs' and 'make check-libs' to delete .debug files created by WITH_DEBUG_FILES. Also cleanup .symbols files from the period between r244236 when .symbols were supported and r251512 when they were renamed to .debug. Only propose to delete a .debug file if the corresponding library itself was deleted already. Approved by: bapt Approved by: re (glebius) Modified: stable/10/Makefile.inc1 (contents, props changed) Modified: stable/10/Makefile.inc1 ============================================================================== --- stable/10/Makefile.inc1 Thu Oct 24 10:53:35 2013 (r257052) +++ stable/10/Makefile.inc1 Thu Oct 24 11:35:50 2013 (r257053) @@ -1722,6 +1722,13 @@ delete-old-libs: chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \ rm ${RM_I} "${DESTDIR}/$${file}" <&3; \ fi; \ + for ext in debug symbols; do \ + if ! [ -e "${DESTDIR}/$${file}" ] && [ -f \ + "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \ + rm ${RM_I} "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" \ + <&3; \ + fi; \ + done; \ done @echo ">>> Old libraries removed" @@ -1733,6 +1740,11 @@ check-old-libs: if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \ echo "${DESTDIR}/$${file}"; \ fi; \ + for ext in debug symbols; do \ + if [ -f "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \ + echo "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}"; \ + fi; \ + done; \ done delete-old-dirs: From owner-svn-src-stable-10@FreeBSD.ORG Thu Oct 24 15:21:21 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 51EC29A7; Thu, 24 Oct 2013 15:21:21 +0000 (UTC) (envelope-from smh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3E40A2538; Thu, 24 Oct 2013 15:21:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9OFLLfb020323; Thu, 24 Oct 2013 15:21:21 GMT (envelope-from smh@svn.freebsd.org) Received: (from smh@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9OFLLYW020322; Thu, 24 Oct 2013 15:21:21 GMT (envelope-from smh@svn.freebsd.org) Message-Id: <201310241521.r9OFLLYW020322@svn.freebsd.org> From: Steven Hartland Date: Thu, 24 Oct 2013 15:21: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: r257058 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 15:21:21 -0000 Author: smh Date: Thu Oct 24 15:21:20 2013 New Revision: 257058 URL: http://svnweb.freebsd.org/changeset/base/257058 Log: MFC r256889: Use the vdev's ashift to calculate the supported min block size passed to zio_compress_data(..) when compressing l2arc buffers. This eliminates L2ARC I/O errors, which resulted in very poor performance on vdev's configured with block size greater than 512b due to compression assuming a smaller min block size than the vdev supports. Approved by: re (glebius) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Directory Properties: stable/10/sys/ (props changed) stable/10/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Oct 24 15:11:30 2013 (r257057) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Oct 24 15:21:20 2013 (r257058) @@ -5147,7 +5147,7 @@ l2arc_compress_buf(l2arc_buf_hdr_t *l2hd len = l2hdr->b_asize; cdata = zio_data_buf_alloc(len); csize = zio_compress_data(ZIO_COMPRESS_LZ4, l2hdr->b_tmp_cdata, - cdata, l2hdr->b_asize, (size_t)SPA_MINBLOCKSIZE); + cdata, l2hdr->b_asize, (size_t)(1ULL << l2hdr->b_dev->l2ad_vdev->vdev_ashift)); if (csize == 0) { /* zero block, indicate that there's nothing to write */ From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 10:20:20 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 75EF59EA; Fri, 25 Oct 2013 10:20:20 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 627192BC0; Fri, 25 Oct 2013 10:20:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9PAKKY2007638; Fri, 25 Oct 2013 10:20:20 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9PAKKPP007615; Fri, 25 Oct 2013 10:20:20 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201310251020.r9PAKKPP007615@svn.freebsd.org> From: Hans Petter Selasky Date: Fri, 25 Oct 2013 10:20:20 +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: r257110 - stable/10/sys/dev/usb/controller 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 10:20:20 -0000 Author: hselasky Date: Fri Oct 25 10:20:19 2013 New Revision: 257110 URL: http://svnweb.freebsd.org/changeset/base/257110 Log: MFC r256750: Improve XHCI stability. When a command timeout happens, the command should be aborted else the command queue can stop. Refer to section "4.6.1.2" of the XHCI specification. Approved by: re (glebius) Modified: stable/10/sys/dev/usb/controller/xhci.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/10/sys/dev/usb/controller/xhci.c Fri Oct 25 09:09:00 2013 (r257109) +++ stable/10/sys/dev/usb/controller/xhci.c Fri Oct 25 10:20:19 2013 (r257110) @@ -1144,6 +1144,25 @@ xhci_do_command(struct xhci_softc *sc, s } if (err != 0) { DPRINTFN(0, "Command timeout!\n"); + + /* + * Try to abort the last command as per section + * 4.6.1.2 "Aborting a Command" of the XHCI + * specification: + */ + temp = XREAD4(sc, oper, XHCI_CRCR_LO); + XWRITE4(sc, oper, XHCI_CRCR_LO, temp | XHCI_CRCR_LO_CA); + + /* wait for abort event, if any */ + err = cv_timedwait(&sc->sc_cmd_cv, &sc->sc_bus.bus_mtx, hz / 16); + + if (err != 0 && xhci_interrupt_poll(sc) != 0) { + DPRINTF("Command was completed when polling\n"); + err = 0; + } + if (err != 0) { + DPRINTF("Command abort timeout!\n"); + } err = USB_ERR_TIMEOUT; trb->dwTrb2 = 0; trb->dwTrb3 = 0; From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 13:27:56 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 67B3F2CF; Fri, 25 Oct 2013 13:27:56 +0000 (UTC) (envelope-from tijl@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5501F26C0; Fri, 25 Oct 2013 13:27:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9PDRuOQ070823; Fri, 25 Oct 2013 13:27:56 GMT (envelope-from tijl@svn.freebsd.org) Received: (from tijl@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9PDRu4x070822; Fri, 25 Oct 2013 13:27:56 GMT (envelope-from tijl@svn.freebsd.org) Message-Id: <201310251327.r9PDRu4x070822@svn.freebsd.org> From: Tijl Coosemans Date: Fri, 25 Oct 2013 13:27:56 +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: r257113 - stable/10/include 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 13:27:56 -0000 Author: tijl Date: Fri Oct 25 13:27:55 2013 New Revision: 257113 URL: http://svnweb.freebsd.org/changeset/base/257113 Log: MFC r256925: Add a dummy statement to the beginning of the pthread_cleanup_pop() macro to allow a call of the macro to be labelled as in: label: pthread_cleanup_pop(); Reviewed by: imp Approved by: re (glebius) Modified: stable/10/include/pthread.h Directory Properties: stable/10/include/ (props changed) Modified: stable/10/include/pthread.h ============================================================================== --- stable/10/include/pthread.h Fri Oct 25 13:25:49 2013 (r257112) +++ stable/10/include/pthread.h Fri Oct 25 13:27:55 2013 (r257113) @@ -175,6 +175,7 @@ int pthread_barrierattr_setpshared(pthr { #define pthread_cleanup_pop(execute) \ + (void)0; \ } \ __pthread_cleanup_pop_imp(execute); \ } From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 16:31:29 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 48508ABD; Fri, 25 Oct 2013 16:31:29 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 350B32233; Fri, 25 Oct 2013 16:31:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9PGVTUV036473; Fri, 25 Oct 2013 16:31:29 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9PGVTdf036472; Fri, 25 Oct 2013 16:31:29 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201310251631.r9PGVTdf036472@svn.freebsd.org> From: Konstantin Belousov Date: Fri, 25 Oct 2013 16:31:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r257121 - stable/10/sys/fs/devfs 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 16:31:29 -0000 Author: kib Date: Fri Oct 25 16:31:28 2013 New Revision: 257121 URL: http://svnweb.freebsd.org/changeset/base/257121 Log: MFC r256501: Remove two instances of ARGSUSED comment, and wrap lines nearby the code that is to be changed. Approved by: re (glebius) Modified: stable/10/sys/fs/devfs/devfs_vnops.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/fs/devfs/devfs_vnops.c ============================================================================== --- stable/10/sys/fs/devfs/devfs_vnops.c Fri Oct 25 15:45:29 2013 (r257120) +++ stable/10/sys/fs/devfs/devfs_vnops.c Fri Oct 25 16:31:28 2013 (r257121) @@ -1168,9 +1168,9 @@ devfs_print(struct vop_print_args *ap) return (0); } -/* ARGSUSED */ static int -devfs_read_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags, struct thread *td) +devfs_read_f(struct file *fp, struct uio *uio, struct ucred *cred, + int flags, struct thread *td) { struct cdev *dev; int ioflag, error, ref; @@ -1643,9 +1643,9 @@ devfs_truncate_f(struct file *fp, off_t return (vnops.fo_truncate(fp, length, cred, td)); } -/* ARGSUSED */ static int -devfs_write_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags, struct thread *td) +devfs_write_f(struct file *fp, struct uio *uio, struct ucred *cred, + int flags, struct thread *td) { struct cdev *dev; int error, ioflag, ref; From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 16:33:25 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3B40EC09; Fri, 25 Oct 2013 16:33:25 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0E72F2243; Fri, 25 Oct 2013 16:33:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9PGXOnT036775; Fri, 25 Oct 2013 16:33:24 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9PGXOdK036772; Fri, 25 Oct 2013 16:33:24 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201310251633.r9PGXOdK036772@svn.freebsd.org> From: Konstantin Belousov Date: Fri, 25 Oct 2013 16:33: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: r257122 - in stable/10/sys: fs/devfs kern sys 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 16:33:25 -0000 Author: kib Date: Fri Oct 25 16:33:24 2013 New Revision: 257122 URL: http://svnweb.freebsd.org/changeset/base/257122 Log: MFC r256502: Similar to debug.iosize_max_clamp sysctl, introduce devfs_iosize_max_clamp sysctl, which allows/disables SSIZE_MAX-sized i/o requests on the devfs files. Approved by: re (glebius) Modified: stable/10/sys/fs/devfs/devfs_vnops.c stable/10/sys/kern/sys_generic.c stable/10/sys/sys/systm.h Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/fs/devfs/devfs_vnops.c ============================================================================== --- stable/10/sys/fs/devfs/devfs_vnops.c Fri Oct 25 16:31:28 2013 (r257121) +++ stable/10/sys/fs/devfs/devfs_vnops.c Fri Oct 25 16:33:24 2013 (r257122) @@ -1178,6 +1178,8 @@ devfs_read_f(struct file *fp, struct uio struct cdevsw *dsw; struct file *fpop; + if (uio->uio_resid > DEVFS_IOSIZE_MAX) + return (EINVAL); fpop = td->td_fpop; error = devfs_fp_check(fp, &dev, &dsw, &ref); if (error) @@ -1653,6 +1655,8 @@ devfs_write_f(struct file *fp, struct ui struct cdevsw *dsw; struct file *fpop; + if (uio->uio_resid > DEVFS_IOSIZE_MAX) + return (EINVAL); fpop = td->td_fpop; error = devfs_fp_check(fp, &dev, &dsw, &ref); if (error) Modified: stable/10/sys/kern/sys_generic.c ============================================================================== --- stable/10/sys/kern/sys_generic.c Fri Oct 25 16:31:28 2013 (r257121) +++ stable/10/sys/kern/sys_generic.c Fri Oct 25 16:33:24 2013 (r257122) @@ -78,6 +78,10 @@ __FBSDID("$FreeBSD$"); int iosize_max_clamp = 1; SYSCTL_INT(_debug, OID_AUTO, iosize_max_clamp, CTLFLAG_RW, &iosize_max_clamp, 0, "Clamp max i/o size to INT_MAX"); +int devfs_iosize_max_clamp = 1; +SYSCTL_INT(_debug, OID_AUTO, devfs_iosize_max_clamp, CTLFLAG_RW, + &devfs_iosize_max_clamp, 0, "Clamp max i/o size to INT_MAX for devices"); + /* * Assert that the return value of read(2) and write(2) syscalls fits * into a register. If not, an architecture will need to provide the Modified: stable/10/sys/sys/systm.h ============================================================================== --- stable/10/sys/sys/systm.h Fri Oct 25 16:31:28 2013 (r257121) +++ stable/10/sys/sys/systm.h Fri Oct 25 16:33:24 2013 (r257122) @@ -146,7 +146,9 @@ extern const void *zero_region; /* addre extern int unmapped_buf_allowed; extern int iosize_max_clamp; +extern int devfs_iosize_max_clamp; #define IOSIZE_MAX (iosize_max_clamp ? INT_MAX : SSIZE_MAX) +#define DEVFS_IOSIZE_MAX (devfs_iosize_max_clamp ? INT_MAX : SSIZE_MAX) /* * General function declarations. From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 16:36:17 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9EB30E32; Fri, 25 Oct 2013 16:36:17 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 71AED2259; Fri, 25 Oct 2013 16:36:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9PGaHHW037213; Fri, 25 Oct 2013 16:36:17 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9PGaHT6037211; Fri, 25 Oct 2013 16:36:17 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201310251636.r9PGaHT6037211@svn.freebsd.org> From: Konstantin Belousov Date: Fri, 25 Oct 2013 16:36:17 +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: r257123 - in stable/10/sys: kern sys 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 16:36:17 -0000 Author: kib Date: Fri Oct 25 16:36:16 2013 New Revision: 257123 URL: http://svnweb.freebsd.org/changeset/base/257123 Log: MFC r256504: Add a sysctl kern.disallow_high_osrel which disables executing the images compiled on the world with higher major version number than the high version number of the booted kernel. Default to disable. Approved by: re (glebius) Modified: stable/10/sys/kern/kern_exec.c stable/10/sys/sys/param.h Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/kern/kern_exec.c ============================================================================== --- stable/10/sys/kern/kern_exec.c Fri Oct 25 16:33:24 2013 (r257122) +++ stable/10/sys/kern/kern_exec.c Fri Oct 25 16:36:16 2013 (r257123) @@ -123,6 +123,11 @@ u_long ps_arg_cache_limit = PAGE_SIZE / SYSCTL_ULONG(_kern, OID_AUTO, ps_arg_cache_limit, CTLFLAG_RW, &ps_arg_cache_limit, 0, ""); +static int disallow_high_osrel; +SYSCTL_INT(_kern, OID_AUTO, disallow_high_osrel, CTLFLAG_RW, + &disallow_high_osrel, 0, + "Disallow execution of binaries built for higher version of the world"); + static int map_at_zero = 0; TUNABLE_INT("security.bsd.map_at_zero", &map_at_zero); SYSCTL_INT(_security_bsd, OID_AUTO, map_at_zero, CTLFLAG_RW, &map_at_zero, 0, @@ -552,6 +557,15 @@ interpret: vn_fullpath(td, imgp->vp, &imgp->execpath, &imgp->freepath) != 0)) imgp->execpath = args->fname; + if (disallow_high_osrel && + P_OSREL_MAJOR(p->p_osrel) > P_OSREL_MAJOR(__FreeBSD_version)) { + error = ENOEXEC; + uprintf("Osrel %d for image %s too high\n", p->p_osrel, + imgp->execpath != NULL ? imgp->execpath : ""); + vn_lock(imgp->vp, LK_SHARED | LK_RETRY); + goto exec_fail_dealloc; + } + /* * Copy out strings (args and env) and initialize stack base */ Modified: stable/10/sys/sys/param.h ============================================================================== --- stable/10/sys/sys/param.h Fri Oct 25 16:33:24 2013 (r257122) +++ stable/10/sys/sys/param.h Fri Oct 25 16:36:16 2013 (r257123) @@ -80,6 +80,8 @@ #define P_OSREL_SIGWAIT 700000 #define P_OSREL_SIGSEGV 700004 #define P_OSREL_MAP_ANON 800104 + +#define P_OSREL_MAJOR(x) ((x) / 100000) #endif #ifndef LOCORE From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 18:39:02 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DE68DD59; Fri, 25 Oct 2013 18:39:01 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BC4552957; Fri, 25 Oct 2013 18:39:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9PId1vX081252; Fri, 25 Oct 2013 18:39:01 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9PId10v081250; Fri, 25 Oct 2013 18:39:01 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201310251839.r9PId10v081250@svn.freebsd.org> From: Peter Grehan Date: Fri, 25 Oct 2013 18:39:01 +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: r257128 - 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 18:39:02 -0000 Author: grehan Date: Fri Oct 25 18:39:01 2013 New Revision: 257128 URL: http://svnweb.freebsd.org/changeset/base/257128 Log: MFC r256926, r257005 r256926 Fix AHCI ATAPI emulation when backed with /dev/cd0 - remove assumption that the backing file/device had 512-byte sectors - fix incorrect iovec size variable that would result in a buffer overrun when an o/s issued an i/o request with more s/g elements than the blockif api r257005 Export the block size capability to guests. - Use #defines for capability bits - Export the VTBLK_F_BLK_SIZE capability - Fix bug in calculating capacity: it is in 512-byte units, not the underlying sector size This allows virtio-blk to have backing devices with non 512-byte sector sizes e.g. /dev/cd0, and 4K-block harddrives. Approved by: re (glebius) Modified: stable/10/usr.sbin/bhyve/pci_ahci.c stable/10/usr.sbin/bhyve/pci_virtio_block.c Directory Properties: stable/10/usr.sbin/bhyve/ (props changed) Modified: stable/10/usr.sbin/bhyve/pci_ahci.c ============================================================================== --- stable/10/usr.sbin/bhyve/pci_ahci.c Fri Oct 25 18:38:44 2013 (r257127) +++ stable/10/usr.sbin/bhyve/pci_ahci.c Fri Oct 25 18:39:01 2013 (r257128) @@ -663,8 +663,7 @@ atapi_read_capacity(struct ahci_port *p, uint8_t buf[8]; uint64_t sectors; - sectors = blockif_size(p->bctx) / blockif_sectsz(p->bctx); - sectors >>= 2; + sectors = blockif_size(p->bctx) / 2048; be32enc(buf, sectors - 1); be32enc(buf + 4, 2048); cfis[4] = (cfis[4] & ~7) | ATA_I_CMD | ATA_I_IN; @@ -908,9 +907,9 @@ atapi_read(struct ahci_port *p, int slot /* * Build up the iovec based on the prdt */ - for (i = 0; i < hdr->prdtl; i++) { + for (i = 0; i < iovcnt; i++) { breq->br_iov[i].iov_base = paddr_guest2host(ahci_ctx(sc), - prdt->dba, prdt->dbc + 1); + prdt->dba, prdt->dbc + 1); breq->br_iov[i].iov_len = prdt->dbc + 1; aior->done += (prdt->dbc + 1); prdt++; Modified: stable/10/usr.sbin/bhyve/pci_virtio_block.c ============================================================================== --- stable/10/usr.sbin/bhyve/pci_virtio_block.c Fri Oct 25 18:38:44 2013 (r257127) +++ stable/10/usr.sbin/bhyve/pci_virtio_block.c Fri Oct 25 18:39:01 2013 (r257128) @@ -66,11 +66,16 @@ __FBSDID("$FreeBSD$"); #define VTBLK_BLK_ID_BYTES 20 +/* Capability bits */ +#define VTBLK_F_SEG_MAX (1 << 2) /* Maximum request segments */ +#define VTBLK_F_BLK_SIZE (1 << 6) /* cfg block size valid */ + /* * Host capabilities */ #define VTBLK_S_HOSTCAPS \ - ( 0x00000004 | /* host maximum request segments */ \ + ( VTBLK_F_SEG_MAX | \ + VTBLK_F_BLK_SIZE | \ VIRTIO_RING_F_INDIRECT_DESC ) /* indirect descriptors */ /* @@ -315,7 +320,7 @@ pci_vtblk_init(struct vmctx *ctx, struct digest[0], digest[1], digest[2], digest[3], digest[4], digest[5]); /* setup virtio block config space */ - sc->vbsc_cfg.vbc_capacity = size / sectsz; + sc->vbsc_cfg.vbc_capacity = size / DEV_BSIZE; /* 512-byte units */ sc->vbsc_cfg.vbc_seg_max = VTBLK_MAXSEGS; sc->vbsc_cfg.vbc_blk_size = sectsz; sc->vbsc_cfg.vbc_size_max = 0; /* not negotiated */ From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 21:27:36 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 78E5F71F; Fri, 25 Oct 2013 21:27:36 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6528C22BA; Fri, 25 Oct 2013 21:27:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9PLRae0039589; Fri, 25 Oct 2013 21:27:36 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9PLRaAr039588; Fri, 25 Oct 2013 21:27:36 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201310252127.r9PLRaAr039588@svn.freebsd.org> From: Glen Barber Date: Fri, 25 Oct 2013 21:27:36 +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: r257136 - stable/10 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 21:27:36 -0000 Author: gjb Date: Fri Oct 25 21:27:35 2013 New Revision: 257136 URL: http://svnweb.freebsd.org/changeset/base/257136 Log: MFC r257079: Fix build host pollution by avoiding calling 'uname -srp' to determine values for 'VERSION'. Approved by: re (glebius) Modified: stable/10/Makefile.inc1 (contents, props changed) Modified: stable/10/Makefile.inc1 ============================================================================== --- stable/10/Makefile.inc1 Fri Oct 25 19:49:03 2013 (r257135) +++ stable/10/Makefile.inc1 Fri Oct 25 21:27:35 2013 (r257136) @@ -58,6 +58,7 @@ # use that new version. And the new (dynamically-linked) /bin/sh # will expect to find appropriate libraries in /lib and /libexec. # +SRCDIR?= ${.CURDIR} .if defined(SUBDIR_OVERRIDE) SUBDIR= ${SUBDIR_OVERRIDE} .else @@ -128,8 +129,11 @@ OSRELDATE= 0 .endif .if !defined(VERSION) -VERSION!= uname -srp -VERSION+= ${OSRELDATE} +REVISION!= make -C ${SRCDIR}/release -V REVISION +BRANCH!= make -C ${SRCDIR}/release -V BRANCH +SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ + ${SRCDIR}/sys/sys/param.h +VERSION= FreeBSD ${REVISION}-${BRANCH} ${TARGET_ARCH} ${SRCRELDATE} .endif KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 From owner-svn-src-stable-10@FreeBSD.ORG Fri Oct 25 23:43:51 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E531AC01; Fri, 25 Oct 2013 23:43:50 +0000 (UTC) (envelope-from h.skuhra@gmail.com) Received: from mail-ea0-x22b.google.com (mail-ea0-x22b.google.com [IPv6:2a00:1450:4013:c01::22b]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DD0112A7F; Fri, 25 Oct 2013 23:43:49 +0000 (UTC) Received: by mail-ea0-f171.google.com with SMTP id n15so1025892ead.2 for ; Fri, 25 Oct 2013 16:43:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:message-id:from:to:cc:subject:in-reply-to:references :user-agent:mime-version:content-type; bh=OyEdcaDw0RcKsoBmnSMAibcFzZBdwKrQxDoYBkIXnUA=; b=aMLIW4vHzW6gZptpLsmBLh/ODgSZduIXEUuELmJ1V8vaKKMVRO5hqaVNmPzWP+qRNt ERXymHLC9C+gMerhLPzFPJt3cU7sOZ4DAdZXjypuW/Mj973TufPbgyn4yk7ClfCFIKc3 LPWPOox0g5CgBaC2g/+boeN+0yeDWFbQXo/csCMSu61n2tDmALzPKkEeLXJtMz6hV+xk t0RgabgYCc1JUyEWRdEz18cI9bdGAipWgLGI7FET/Cahqx6VkuQnfOLTQScK/1Wt4CSz iwR6lPIl5QFfApL32tgIsuaBZP1eF2hk2FgX8azKkMehT5Wa/IcGALMIlstA1O1wbvlV rz/A== X-Received: by 10.15.31.9 with SMTP id x9mr10534243eeu.53.1382744626692; Fri, 25 Oct 2013 16:43:46 -0700 (PDT) Received: from oslo.ath.cx ([2001:470:6f:44d:853b:b71c:22bd:ee23]) by mx.google.com with ESMTPSA id e13sm23766293eeu.4.2013.10.25.16.43.45 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 25 Oct 2013 16:43:45 -0700 (PDT) Date: Sat, 26 Oct 2013 01:43:43 +0200 Message-ID: <86mwlw532o.wl%h.skuhra@gmail.com> From: "Herbert J. Skuhra" To: Glen Barber Subject: Re: svn commit: r257136 - stable/10 In-Reply-To: <201310252127.r9PLRaAr039588@svn.freebsd.org> References: <201310252127.r9PLRaAr039588@svn.freebsd.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL/10.8 EasyPG/1.0.0 Emacs/24.3.50 (i386-pc-freebsd10.0) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-10@freebsd.org X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Oct 2013 23:43:51 -0000 Hi, On Fri, 25 Oct 2013 21:27:36 +0000 (UTC) Glen Barber wrote: > Author: gjb > Date: Fri Oct 25 21:27:35 2013 > New Revision: 257136 > URL: http://svnweb.freebsd.org/changeset/base/257136 > > Log: > MFC r257079: > Fix build host pollution by avoiding calling 'uname -srp' to > determine values for 'VERSION'. > > Approved by: re (glebius) > > Modified: > stable/10/Makefile.inc1 (contents, props changed) When running make (check|delete)-old I am still getting: >>> Checking for old files make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/usr/src/release -V REVISION" returned non-zero status make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 133: warning: "make -C /usr/obj/usr/src/release -V BRANCH" returned non-zero status awk: can't open file /usr/obj/usr/src/sys/sys/param.h source line number 1 make[2]: "/usr/src/Makefile.inc1" line 135: warning: "awk '/^#define[[:space:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" returned non-zero status /usr/lib/libbsdyml.a /usr/lib/libbsdyml.so /usr/lib/libbsdyml_p.a /usr/share/man/man3/libbsdyml.3.gz /usr/include/bsdyml.h >>> Checking for old libraries make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/usr/src/release -V REVISION" returned non-zero status make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 133: warning: "make -C /usr/obj/usr/src/release -V BRANCH" returned non-zero status awk: can't open file /usr/obj/usr/src/sys/sys/param.h source line number 1 make[2]: "/usr/src/Makefile.inc1" line 135: warning: "awk '/^#define[[:space:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" returned non-zero status /usr/lib/libbsdyml.so.0 >>> Checking for old directories make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/usr/src/release -V REVISION" returned non-zero status make[3]: chdir /usr/obj/usr/src/release: No such file or directory make[2]: "/usr/src/Makefile.inc1" line 133: warning: "make -C /usr/obj/usr/src/release -V BRANCH" returned non-zero status awk: can't open file /usr/obj/usr/src/sys/sys/param.h source line number 1 make[2]: "/usr/src/Makefile.inc1" line 135: warning: "awk '/^#define[[:space:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" returned non-zero status /usr/share/doc/bind9 /usr/share/doc/bind9/arm /usr/share/doc/bind9/misc To remove old files and directories run 'make delete-old'. To remove old libraries run 'make delete-old-libs'. -- Herbert From owner-svn-src-stable-10@FreeBSD.ORG Sat Oct 26 00:05:19 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id EBCA2E8A; Sat, 26 Oct 2013 00:05:19 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [IPv6:2607:fc50:1:2300:1001:1001:1001:face]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BF6A42B61; Sat, 26 Oct 2013 00:05:19 +0000 (UTC) Received: from glenbarber.us (unknown [64.197.173.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 2BCC6D41F; Sat, 26 Oct 2013 00:05:18 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 2BCC6D41F Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Fri, 25 Oct 2013 20:05:16 -0400 From: Glen Barber To: "Herbert J. Skuhra" Subject: Re: svn commit: r257136 - stable/10 Message-ID: <20131026000423.GA1740@glenbarber.us> References: <201310252127.r9PLRaAr039588@svn.freebsd.org> <86mwlw532o.wl%h.skuhra@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="Fba/0zbH8Xs+Fj9o" Content-Disposition: inline In-Reply-To: <86mwlw532o.wl%h.skuhra@gmail.com> X-Operating-System: FreeBSD 11.0-CURRENT amd64 User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-10@freebsd.org X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Oct 2013 00:05:20 -0000 --Fba/0zbH8Xs+Fj9o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Oct 26, 2013 at 01:43:43AM +0200, Herbert J. Skuhra wrote: > Hi, >=20 > On Fri, 25 Oct 2013 21:27:36 +0000 (UTC) > Glen Barber wrote: >=20 > > Author: gjb > > Date: Fri Oct 25 21:27:35 2013 > > New Revision: 257136 > > URL: http://svnweb.freebsd.org/changeset/base/257136 > >=20 > > Log: > > MFC r257079: > > Fix build host pollution by avoiding calling 'uname -srp' to > > determine values for 'VERSION'. > > =20 > > Approved by: re (glebius) > >=20 > > Modified: > > stable/10/Makefile.inc1 (contents, props changed) >=20 > When running make (check|delete)-old I am still getting: >=20 > >>> Checking for old files > make[3]: chdir /usr/obj/usr/src/release: No such file or directory > make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/us= r/src/release -V REVISION" returned non-zero status > make[3]: chdir /usr/obj/usr/src/release: No such file or directory > make[2]: "/usr/src/Makefile.inc1" line 133: warning: "make -C /usr/obj/us= r/src/release -V BRANCH" returned non-zero status > awk: can't open file /usr/obj/usr/src/sys/sys/param.h > source line number 1 > make[2]: "/usr/src/Makefile.inc1" line 135: warning: "awk '/^#define[[:sp= ace:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" = returned non-zero status > /usr/lib/libbsdyml.a > /usr/lib/libbsdyml.so > /usr/lib/libbsdyml_p.a > /usr/share/man/man3/libbsdyml.3.gz > /usr/include/bsdyml.h > >>> Checking for old libraries > make[3]: chdir /usr/obj/usr/src/release: No such file or directory > make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/us= r/src/release -V REVISION" returned non-zero status > make[3]: chdir /usr/obj/usr/src/release: No such file or directory > make[2]: "/usr/src/Makefile.inc1" line 133: warning: "make -C /usr/obj/us= r/src/release -V BRANCH" returned non-zero status > awk: can't open file /usr/obj/usr/src/sys/sys/param.h > source line number 1 > make[2]: "/usr/src/Makefile.inc1" line 135: warning: "awk '/^#define[[:sp= ace:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" = returned non-zero status > /usr/lib/libbsdyml.so.0 > >>> Checking for old directories > make[3]: chdir /usr/obj/usr/src/release: No such file or directory > make[2]: "/usr/src/Makefile.inc1" line 132: warning: "make -C /usr/obj/us= r/src/release -V REVISION" returned non-zero status > make[3]: chdir /usr/obj/usr/src/release: No such file or directory > make[2]: "/usr/src/Makefile.inc1" line 133: warning: "make -C /usr/obj/us= r/src/release -V BRANCH" returned non-zero status > awk: can't open file /usr/obj/usr/src/sys/sys/param.h > source line number 1 > make[2]: "/usr/src/Makefile.inc1" line 135: warning: "awk '/^#define[[:sp= ace:]]*__FreeBSD_version/ { print $3 }' /usr/obj/usr/src/sys/sys/param.h" = returned non-zero status > /usr/share/doc/bind9 > /usr/share/doc/bind9/arm > /usr/share/doc/bind9/misc > To remove old files and directories run 'make delete-old'. > To remove old libraries run 'make delete-old-libs'. >=20 This will be fixed after -BETA2. I realize the output is annoying, but in these cases, they are non-fatal warnings. It *is* very high on my priority list, but the fix right now is not clear. I'll follow up on -stable@ and -current@ shortly with a full explanation of why -BETA2 is taking so long, by the way, which is directly related to the update this commit makes, and why it is important in order to move forward with this change in the tree, versus reverting it (again). Glen --Fba/0zbH8Xs+Fj9o Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQIbBAEBCAAGBQJSawc7AAoJELls3eqvi17Q+GIP9jFyswMXpPfyWFUa0M44W3Nd 6+jWNvEhUvZlJ8D7MmnsP9LihqvLhQR/LK5HQpQYVW1eyuTQ/msMsxWqqh+/vO6E zGabEX7Yzv0kQTuozoAlIU1AD8HHpHyLn8TMy0PBELzqehGuiIsxJsXSR45XDzQ9 f40i9c7Je/k2KSRGd29xcDxkjxinHvwehBZtSLNbWzFdKwyb5f0CUNEjGTu7bHAQ YMrZrT30nV39Ay0LVuDUHqqEzkBX1wMu+LEnMnFY3Xld/4CclpDOYaCzfX703cAF 0jzzjceHoQKxB9SPC51LzmEO8LfF+Vi5Z7Zxfw46BH6/U09btW75NB7KzdapYAJR OrFVZQf3ho0AfNrOCPkr1r2inTePpqTknbEjYNuz0x/B0YAUBriPUKdtJR50QeJm EwBBW5wENZ0e6Lx+nFwM/L0pTLLXeolvnK5lQirnonCL7E9eYb9XIHqp9bEy8Vz4 xWAjWyxrIGmqtqDSJvQO0brOfSyVj2m1YP3GKTZwbxWQwCinmx6F1jPuKKq6M66y zUl3stz9Aab/Pt/pmnDqj88QcBQ7u4pkmLALPm0Y4ud/ABng04ap9ztUUpAXBLIi TJlDe/sqU4MvBpbanPZJ9xqojAMGcwfDST+tH1D/LvOvQx5E+4ITxTLH3kKseAyg 37ZkqIkFPa13OY+y2cA= =kMO+ -----END PGP SIGNATURE----- --Fba/0zbH8Xs+Fj9o-- From owner-svn-src-stable-10@FreeBSD.ORG Sat Oct 26 08:34:36 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 49FD030D; Sat, 26 Oct 2013 08:34:36 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 366F12F97; Sat, 26 Oct 2013 08:34:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9Q8Ya86078348; Sat, 26 Oct 2013 08:34:36 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9Q8YaXL078347; Sat, 26 Oct 2013 08:34:36 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201310260834.r9Q8YaXL078347@svn.freebsd.org> From: Colin Percival Date: Sat, 26 Oct 2013 08:34:36 +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: r257153 - stable/10/usr.sbin/freebsd-update 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Oct 2013 08:34:36 -0000 Author: cperciva Date: Sat Oct 26 08:34:35 2013 New Revision: 257153 URL: http://svnweb.freebsd.org/changeset/base/257153 Log: MFC r256646, r256767, r257038: When installing updates, install new directories first and remove old directories last. Allow ~ in file names so libtool droppings in contrib don't break updates. It has happened twice now, and is likely to happen again. Be more selective when filtering for lib*.so.N files. These are deleted at the end of the upgrade process, after warning users to upgrade any 3rd party software (e.g., from the ports tree) which might link to the libraries being removed. Approved by: re (gjb) Errata Notice: FreeBSD-EN-13:04.freebsd-update Modified: stable/10/usr.sbin/freebsd-update/freebsd-update.sh Directory Properties: stable/10/usr.sbin/freebsd-update/ (props changed) Modified: stable/10/usr.sbin/freebsd-update/freebsd-update.sh ============================================================================== --- stable/10/usr.sbin/freebsd-update/freebsd-update.sh Sat Oct 26 06:23:51 2013 (r257152) +++ stable/10/usr.sbin/freebsd-update/freebsd-update.sh Sat Oct 26 08:34:35 2013 (r257153) @@ -1200,7 +1200,7 @@ fetch_metadata_sanity () { # Some aliases to save space later: ${P} is a character which can # appear in a path; ${M} is the four numeric metadata fields; and # ${H} is a sha256 hash. - P="[-+./:=%@_[[:alnum:]]" + P="[-+./:=%@_[~[:alnum:]]" M="[0-9]+\|[0-9]+\|[0-9]+\|[0-9]+" H="[0-9a-f]{64}" @@ -2814,16 +2814,24 @@ Kernel updates have been installed. Ple # If we haven't already dealt with the world, deal with it. if ! [ -f $1/worlddone ]; then + # Create any necessary directories first + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '^[^|]+\|d\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + # Install new shared libraries next grep -vE '^/boot/' $1/INDEX-NEW | - grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW + grep -vE '^[^|]+\|d\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW install_from_index INDEX-NEW || return 1 # Deal with everything else grep -vE '^/boot/' $1/INDEX-OLD | - grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^[^|]+\|d\|' | + grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD grep -vE '^/boot/' $1/INDEX-NEW | - grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW + grep -vE '^[^|]+\|d\|' | + grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW install_from_index INDEX-NEW || return 1 install_delete INDEX-OLD INDEX-NEW || return 1 @@ -2844,11 +2852,11 @@ Kernel updates have been installed. Ple # Do we need to ask the user to portupgrade now? grep -vE '^/boot/' $1/INDEX-NEW | - grep -E '/lib/.*\.so\.[0-9]+\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' | cut -f 1 -d '|' | sort > newfiles if grep -vE '^/boot/' $1/INDEX-OLD | - grep -E '/lib/.*\.so\.[0-9]+\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' | cut -f 1 -d '|' | sort | join -v 1 - newfiles | @@ -2868,9 +2876,18 @@ again to finish installing updates. # Remove old shared libraries grep -vE '^/boot/' $1/INDEX-NEW | - grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW + grep -vE '^[^|]+\|d\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW grep -vE '^/boot/' $1/INDEX-OLD | - grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^[^|]+\|d\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Remove old directories + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '^[^|]+\|d\|' > INDEX-OLD + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '^[^|]+\|d\|' > INDEX-OLD install_delete INDEX-OLD INDEX-NEW || return 1 # Remove temporary files From owner-svn-src-stable-10@FreeBSD.ORG Sat Oct 26 15:10:59 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 68273548; Sat, 26 Oct 2013 15:10:59 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 548882285; Sat, 26 Oct 2013 15:10:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9QFAxuS013135; Sat, 26 Oct 2013 15:10:59 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9QFAxrw013134; Sat, 26 Oct 2013 15:10:59 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201310261510.r9QFAxrw013134@svn.freebsd.org> From: Glen Barber Date: Sat, 26 Oct 2013 15:10:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r257166 - stable/10/sys/conf 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Oct 2013 15:10:59 -0000 Author: gjb Date: Sat Oct 26 15:10:58 2013 New Revision: 257166 URL: http://svnweb.freebsd.org/changeset/base/257166 Log: Update stable/10 to BETA2 as part of the 10.0-RELEASE cycle. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: stable/10/sys/conf/newvers.sh Modified: stable/10/sys/conf/newvers.sh ============================================================================== --- stable/10/sys/conf/newvers.sh Sat Oct 26 15:05:27 2013 (r257165) +++ stable/10/sys/conf/newvers.sh Sat Oct 26 15:10:58 2013 (r257166) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="10.0" -BRANCH="BETA1" +BRANCH="BETA2" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi From owner-svn-src-stable-10@FreeBSD.ORG Sat Oct 26 19:02:41 2013 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0154839E; Sat, 26 Oct 2013 19:02:40 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E1C442DAF; Sat, 26 Oct 2013 19:02:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9QJ2eku093159; Sat, 26 Oct 2013 19:02:40 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9QJ2eWo093147; Sat, 26 Oct 2013 19:02:40 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201310261902.r9QJ2eWo093147@svn.freebsd.org> From: Xin LI Date: Sat, 26 Oct 2013 19:02:40 +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: r257187 - stable/10/sys/dev/oce 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-10@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Oct 2013 19:02:41 -0000 Author: delphij Date: Sat Oct 26 19:02:39 2013 New Revision: 257187 URL: http://svnweb.freebsd.org/changeset/base/257187 Log: MFC r257007: Update driver to version 10.0.664.0. Many thanks to Emulex for their continued support of FreeBSD. Submitted by: Venkata Duvvuru Approved by: re (glebius) Modified: stable/10/sys/dev/oce/oce_hw.c stable/10/sys/dev/oce/oce_hw.h stable/10/sys/dev/oce/oce_if.c stable/10/sys/dev/oce/oce_if.h stable/10/sys/dev/oce/oce_mbox.c stable/10/sys/dev/oce/oce_queue.c stable/10/sys/dev/oce/oce_sysctl.c stable/10/sys/dev/oce/oce_util.c Directory Properties: stable/10/sys/ (props changed) Modified: stable/10/sys/dev/oce/oce_hw.c ============================================================================== --- stable/10/sys/dev/oce/oce_hw.c Sat Oct 26 18:59:58 2013 (r257186) +++ stable/10/sys/dev/oce/oce_hw.c Sat Oct 26 19:02:39 2013 (r257187) @@ -38,6 +38,7 @@ /* $FreeBSD$ */ + #include "oce_if.h" static int oce_POST(POCE_SOFTC sc); @@ -203,12 +204,16 @@ void oce_get_pci_capabilities(POCE_SOFTC { uint32_t val; - if (pci_find_cap(sc->dev, PCIY_PCIX, &val) == 0) { +#if __FreeBSD_version >= 1000000 + #define pci_find_extcap pci_find_cap +#endif + + if (pci_find_extcap(sc->dev, PCIY_PCIX, &val) == 0) { if (val != 0) sc->flags |= OCE_FLAGS_PCIX; } - if (pci_find_cap(sc->dev, PCIY_EXPRESS, &val) == 0) { + if (pci_find_extcap(sc->dev, PCIY_EXPRESS, &val) == 0) { if (val != 0) { uint16_t link_status = pci_read_config(sc->dev, val + 0x12, 2); @@ -219,12 +224,12 @@ void oce_get_pci_capabilities(POCE_SOFTC } } - if (pci_find_cap(sc->dev, PCIY_MSI, &val) == 0) { + if (pci_find_extcap(sc->dev, PCIY_MSI, &val) == 0) { if (val != 0) sc->flags |= OCE_FLAGS_MSI_CAPABLE; } - if (pci_find_cap(sc->dev, PCIY_MSIX, &val) == 0) { + if (pci_find_extcap(sc->dev, PCIY_MSIX, &val) == 0) { if (val != 0) { val = pci_msix_count(sc->dev); sc->flags |= OCE_FLAGS_MSIX_CAPABLE; @@ -386,6 +391,9 @@ oce_create_nw_interface(POCE_SOFTC sc) capab_flags &= ~MBX_RX_IFACE_FLAGS_PASS_L3L4_ERR; } + if (IS_SH(sc) || IS_XE201(sc)) + capab_flags |= MBX_RX_IFACE_FLAGS_MULTICAST; + /* enable capabilities controlled via driver startup parameters */ if (is_rss_enabled(sc)) capab_en_flags |= MBX_RX_IFACE_FLAGS_RSS; Modified: stable/10/sys/dev/oce/oce_hw.h ============================================================================== --- stable/10/sys/dev/oce/oce_hw.h Sat Oct 26 18:59:58 2013 (r257186) +++ stable/10/sys/dev/oce/oce_hw.h Sat Oct 26 19:02:39 2013 (r257187) @@ -59,6 +59,30 @@ #define INTR_EN 0x20000000 #define IMAGE_TRANSFER_SIZE (32 * 1024) /* 32K at a time */ + +/********* UE Status and Mask Registers ***/ +#define PCICFG_UE_STATUS_LOW 0xA0 +#define PCICFG_UE_STATUS_HIGH 0xA4 +#define PCICFG_UE_STATUS_LOW_MASK 0xA8 + +/* Lancer SLIPORT registers */ +#define SLIPORT_STATUS_OFFSET 0x404 +#define SLIPORT_CONTROL_OFFSET 0x408 +#define SLIPORT_ERROR1_OFFSET 0x40C +#define SLIPORT_ERROR2_OFFSET 0x410 +#define PHYSDEV_CONTROL_OFFSET 0x414 + +#define SLIPORT_STATUS_ERR_MASK 0x80000000 +#define SLIPORT_STATUS_DIP_MASK 0x02000000 +#define SLIPORT_STATUS_RN_MASK 0x01000000 +#define SLIPORT_STATUS_RDY_MASK 0x00800000 +#define SLI_PORT_CONTROL_IP_MASK 0x08000000 +#define PHYSDEV_CONTROL_FW_RESET_MASK 0x00000002 +#define PHYSDEV_CONTROL_DD_MASK 0x00000004 +#define PHYSDEV_CONTROL_INP_MASK 0x40000000 + +#define SLIPORT_ERROR_NO_RESOURCE1 0x2 +#define SLIPORT_ERROR_NO_RESOURCE2 0x9 /* CSR register offsets */ #define MPU_EP_CONTROL 0 #define MPU_EP_SEMAPHORE_BE3 0xac @@ -2079,7 +2103,8 @@ struct flash_file_hdr { uint32_t antidote; uint32_t num_imgs; uint8_t build[24]; - uint8_t rsvd[32]; + uint8_t asic_type_rev; + uint8_t rsvd[31]; }; struct image_hdr { @@ -3681,4 +3706,3 @@ enum OCE_QUEUE_RX_STATS { QUEUE_RX_BUFFER_ERRORS = 8, QUEUE_RX_N_WORDS = 10 }; - Modified: stable/10/sys/dev/oce/oce_if.c ============================================================================== --- stable/10/sys/dev/oce/oce_if.c Sat Oct 26 18:59:58 2013 (r257186) +++ stable/10/sys/dev/oce/oce_if.c Sat Oct 26 19:02:39 2013 (r257187) @@ -36,7 +36,6 @@ * Costa Mesa, CA 92626 */ - /* $FreeBSD$ */ #include "opt_inet6.h" @@ -44,6 +43,78 @@ #include "oce_if.h" +/* UE Status Low CSR */ +static char *ue_status_low_desc[] = { + "CEV", + "CTX", + "DBUF", + "ERX", + "Host", + "MPU", + "NDMA", + "PTC ", + "RDMA ", + "RXF ", + "RXIPS ", + "RXULP0 ", + "RXULP1 ", + "RXULP2 ", + "TIM ", + "TPOST ", + "TPRE ", + "TXIPS ", + "TXULP0 ", + "TXULP1 ", + "UC ", + "WDMA ", + "TXULP2 ", + "HOST1 ", + "P0_OB_LINK ", + "P1_OB_LINK ", + "HOST_GPIO ", + "MBOX ", + "AXGMAC0", + "AXGMAC1", + "JTAG", + "MPU_INTPEND" +}; + +/* UE Status High CSR */ +static char *ue_status_hi_desc[] = { + "LPCMEMHOST", + "MGMT_MAC", + "PCS0ONLINE", + "MPU_IRAM", + "PCS1ONLINE", + "PCTL0", + "PCTL1", + "PMEM", + "RR", + "TXPB", + "RXPP", + "XAUI", + "TXP", + "ARM", + "IPC", + "HOST2", + "HOST3", + "HOST4", + "HOST5", + "HOST6", + "HOST7", + "HOST8", + "HOST9", + "NETC", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown" +}; + /* Driver entry points prototypes */ static int oce_probe(device_t dev); @@ -388,11 +459,11 @@ oce_ioctl(struct ifnet *ifp, u_long comm } if ((ifp->if_flags & IFF_PROMISC) && !sc->promisc) { - sc->promisc = TRUE; - oce_rxf_set_promiscuous(sc, sc->promisc); + if (!oce_rxf_set_promiscuous(sc, (1 | (1 << 1)))) + sc->promisc = TRUE; } else if (!(ifp->if_flags & IFF_PROMISC) && sc->promisc) { - sc->promisc = FALSE; - oce_rxf_set_promiscuous(sc, sc->promisc); + if (!oce_rxf_set_promiscuous(sc, 0)) + sc->promisc = FALSE; } break; @@ -862,10 +933,12 @@ retry: (m->m_pkthdr.csum_flags & CSUM_TCP) ? 1 : 0; nichdr->u0.s.num_wqe = num_wqes; nichdr->u0.s.total_length = m->m_pkthdr.len; + if (m->m_flags & M_VLANTAG) { nichdr->u0.s.vlan = 1; /*Vlan present*/ nichdr->u0.s.vlan_tag = m->m_pkthdr.ether_vtag; } + if (m->m_pkthdr.csum_flags & CSUM_TSO) { if (m->m_pkthdr.tso_segsz) { nichdr->u0.s.lso = 1; @@ -1156,6 +1229,18 @@ oce_wq_handler(void *arg) } +#if __FreeBSD_version >= 1000000 +static __inline void +drbr_stats_update(struct ifnet *ifp, int len, int mflags) +{ +#ifndef NO_SLOW_STATS + ifp->if_obytes += len; + if (mflags & M_MCAST) + ifp->if_omcasts++; +#endif +} +#endif + static int oce_multiq_transmit(struct ifnet *ifp, struct mbuf *m, struct oce_wq *wq) { @@ -1174,7 +1259,7 @@ oce_multiq_transmit(struct ifnet *ifp, s return status; } - if (m != NULL) { + if (m != NULL) { if ((status = drbr_enqueue(ifp, br, m)) != 0) return status; } @@ -1646,6 +1731,10 @@ oce_attach_ifp(POCE_SOFTC sc) sc->ifp->if_capenable = sc->ifp->if_capabilities; if_initbaudrate(sc->ifp, IF_Gbps(10)); +#if __FreeBSD_version >= 1000000 + sc->ifp->if_hw_tsomax = OCE_MAX_TSO_SIZE; +#endif + ether_ifattach(sc->ifp, sc->macaddr.mac_addr); return 0; @@ -1664,7 +1753,8 @@ oce_add_vlan(void *arg, struct ifnet *if sc->vlan_tag[vtag] = 1; sc->vlans_added++; - oce_vid_config(sc); + if (sc->vlans_added <= (sc->max_vlans + 1)) + oce_vid_config(sc); } @@ -1866,12 +1956,76 @@ done: } +static void oce_detect_hw_error(POCE_SOFTC sc) +{ + + uint32_t ue_low = 0, ue_high = 0, ue_low_mask = 0, ue_high_mask = 0; + uint32_t sliport_status = 0, sliport_err1 = 0, sliport_err2 = 0; + uint32_t i; + + if (sc->hw_error) + return; + + if (IS_XE201(sc)) { + sliport_status = OCE_READ_REG32(sc, db, SLIPORT_STATUS_OFFSET); + if (sliport_status & SLIPORT_STATUS_ERR_MASK) { + sliport_err1 = OCE_READ_REG32(sc, db, SLIPORT_ERROR1_OFFSET); + sliport_err2 = OCE_READ_REG32(sc, db, SLIPORT_ERROR2_OFFSET); + } + } else { + ue_low = OCE_READ_REG32(sc, devcfg, PCICFG_UE_STATUS_LOW); + ue_high = OCE_READ_REG32(sc, devcfg, PCICFG_UE_STATUS_HIGH); + ue_low_mask = OCE_READ_REG32(sc, devcfg, PCICFG_UE_STATUS_LOW_MASK); + ue_high_mask = OCE_READ_REG32(sc, devcfg, PCICFG_UE_STATUS_HI_MASK); + + ue_low = (ue_low & ~ue_low_mask); + ue_high = (ue_high & ~ue_high_mask); + } + + /* On certain platforms BE hardware can indicate spurious UEs. + * Allow the h/w to stop working completely in case of a real UE. + * Hence not setting the hw_error for UE detection. + */ + if (sliport_status & SLIPORT_STATUS_ERR_MASK) { + sc->hw_error = TRUE; + device_printf(sc->dev, "Error detected in the card\n"); + } + + if (sliport_status & SLIPORT_STATUS_ERR_MASK) { + device_printf(sc->dev, + "ERR: sliport status 0x%x\n", sliport_status); + device_printf(sc->dev, + "ERR: sliport error1 0x%x\n", sliport_err1); + device_printf(sc->dev, + "ERR: sliport error2 0x%x\n", sliport_err2); + } + + if (ue_low) { + for (i = 0; ue_low; ue_low >>= 1, i++) { + if (ue_low & 1) + device_printf(sc->dev, "UE: %s bit set\n", + ue_status_low_desc[i]); + } + } + + if (ue_high) { + for (i = 0; ue_high; ue_high >>= 1, i++) { + if (ue_high & 1) + device_printf(sc->dev, "UE: %s bit set\n", + ue_status_hi_desc[i]); + } + } + +} + + static void oce_local_timer(void *arg) { POCE_SOFTC sc = arg; int i = 0; + oce_detect_hw_error(sc); oce_refresh_nic_stats(sc); oce_refresh_queue_stats(sc); oce_mac_addr_set(sc); @@ -1890,7 +2044,7 @@ oce_local_timer(void *arg) /* NOTE : This should only be called holding * DEVICE_LOCK. -*/ + */ static void oce_if_deactivate(POCE_SOFTC sc) { @@ -2080,6 +2234,9 @@ setup_max_queues_want(POCE_SOFTC sc) (sc->flags & OCE_FLAGS_BE2)) { sc->nrqs = 1; sc->nwqs = 1; + } else { + sc->nrqs = MIN(OCE_NCPUS, sc->nrssqs) + 1; + sc->nwqs = MIN(OCE_NCPUS, sc->nrssqs); } } Modified: stable/10/sys/dev/oce/oce_if.h ============================================================================== --- stable/10/sys/dev/oce/oce_if.h Sat Oct 26 18:59:58 2013 (r257186) +++ stable/10/sys/dev/oce/oce_if.h Sat Oct 26 19:02:39 2013 (r257187) @@ -36,7 +36,6 @@ * Costa Mesa, CA 92626 */ - /* $FreeBSD$ */ #include @@ -88,7 +87,8 @@ #include "oce_hw.h" -#define COMPONENT_REVISION "4.6.95.0" +/* OCE device driver module component revision informaiton */ +#define COMPONENT_REVISION "10.0.664.0" /* OCE devices supported by this driver */ #define PCI_VENDOR_EMULEX 0x10df /* Emulex */ @@ -150,6 +150,7 @@ extern int mp_ncpus; /* system's total #define OCE_MAX_TX_ELEMENTS 29 #define OCE_MAX_TX_DESC 1024 #define OCE_MAX_TX_SIZE 65535 +#define OCE_MAX_TSO_SIZE (65535 - ETHER_HDR_LEN) #define OCE_MAX_RX_SIZE 4096 #define OCE_MAX_RQ_POSTS 255 #define OCE_DEFAULT_PROMISCUOUS 0 @@ -173,6 +174,7 @@ extern int mp_ncpus; /* system's total #define OCE_CAPAB_FLAGS (MBX_RX_IFACE_FLAGS_BROADCAST | \ MBX_RX_IFACE_FLAGS_UNTAGGED | \ MBX_RX_IFACE_FLAGS_PROMISCUOUS | \ + MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS | \ MBX_RX_IFACE_FLAGS_MCAST_PROMISCUOUS | \ MBX_RX_IFACE_FLAGS_RSS | \ MBX_RX_IFACE_FLAGS_PASS_L3L4_ERR) @@ -863,7 +865,7 @@ typedef struct oce_softc { uint32_t if_cap_flags; uint32_t flow_control; - uint32_t promisc; + uint8_t promisc; struct oce_aic_obj aic_obj[OCE_MAX_EQ]; @@ -877,9 +879,11 @@ typedef struct oce_softc { struct oce_drv_stats oce_stats_info; struct callout timer; int8_t be3_native; + uint8_t hw_error; uint16_t qnq_debug_event; uint16_t qnqid; uint16_t pvid; + uint16_t max_vlans; } OCE_SOFTC, *POCE_SOFTC; @@ -1010,7 +1014,7 @@ int oce_config_vlan(POCE_SOFTC sc, uint3 uint32_t untagged, uint32_t enable_promisc); int oce_set_flow_control(POCE_SOFTC sc, uint32_t flow_control); int oce_config_nic_rss(POCE_SOFTC sc, uint32_t if_id, uint16_t enable_rss); -int oce_rxf_set_promiscuous(POCE_SOFTC sc, uint32_t enable); +int oce_rxf_set_promiscuous(POCE_SOFTC sc, uint8_t enable); int oce_set_common_iface_rx_filter(POCE_SOFTC sc, POCE_DMA_MEM sgl); int oce_get_link_status(POCE_SOFTC sc, struct link_status *link); int oce_mbox_get_nic_stats_v0(POCE_SOFTC sc, POCE_DMA_MEM pstats_dma_mem); Modified: stable/10/sys/dev/oce/oce_mbox.c ============================================================================== --- stable/10/sys/dev/oce/oce_mbox.c Sat Oct 26 18:59:58 2013 (r257186) +++ stable/10/sys/dev/oce/oce_mbox.c Sat Oct 26 19:02:39 2013 (r257187) @@ -36,11 +36,8 @@ * Costa Mesa, CA 92626 */ - - /* $FreeBSD$ */ - #include "oce_if.h" extern uint32_t sfp_vpd_dump_buffer[TRANSCEIVER_DATA_NUM_ELE]; @@ -281,8 +278,10 @@ oce_get_fw_version(POCE_SOFTC sc) if (!ret) ret = fwcmd->hdr.u0.rsp.status; if (ret) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, ret); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, ret, + fwcmd->hdr.u0.rsp.additional_status); goto error; } @@ -438,8 +437,10 @@ oce_read_mac_addr(POCE_SOFTC sc, uint32_ if (!ret) ret = fwcmd->hdr.u0.rsp.status; if (ret) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, ret); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, ret, + fwcmd->hdr.u0.rsp.additional_status); goto error; } @@ -481,25 +482,27 @@ oce_get_fw_config(POCE_SOFTC sc) if (!ret) ret = fwcmd->hdr.u0.rsp.status; if (ret) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, ret); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, ret, + fwcmd->hdr.u0.rsp.additional_status); goto error; } DW_SWAP(u32ptr(fwcmd), sizeof(struct mbx_common_query_fw_config)); - sc->config_number = fwcmd->params.rsp.config_number; - sc->asic_revision = fwcmd->params.rsp.asic_revision; - sc->port_id = fwcmd->params.rsp.port_id; - sc->function_mode = fwcmd->params.rsp.function_mode; - sc->function_caps = fwcmd->params.rsp.function_caps; + sc->config_number = HOST_32(fwcmd->params.rsp.config_number); + sc->asic_revision = HOST_32(fwcmd->params.rsp.asic_revision); + sc->port_id = HOST_32(fwcmd->params.rsp.port_id); + sc->function_mode = HOST_32(fwcmd->params.rsp.function_mode); + sc->function_caps = HOST_32(fwcmd->params.rsp.function_caps); if (fwcmd->params.rsp.ulp[0].ulp_mode & ULP_NIC_MODE) { - sc->max_tx_rings = fwcmd->params.rsp.ulp[0].nic_wq_tot; - sc->max_rx_rings = fwcmd->params.rsp.ulp[0].lro_rqid_tot; + sc->max_tx_rings = HOST_32(fwcmd->params.rsp.ulp[0].nic_wq_tot); + sc->max_rx_rings = HOST_32(fwcmd->params.rsp.ulp[0].lro_rqid_tot); } else { - sc->max_tx_rings = fwcmd->params.rsp.ulp[1].nic_wq_tot; - sc->max_rx_rings = fwcmd->params.rsp.ulp[1].lro_rqid_tot; + sc->max_tx_rings = HOST_32(fwcmd->params.rsp.ulp[1].nic_wq_tot); + sc->max_rx_rings = HOST_32(fwcmd->params.rsp.ulp[1].lro_rqid_tot); } error: @@ -561,15 +564,17 @@ oce_if_create(POCE_SOFTC sc, if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } - *if_id = LE_32(fwcmd->params.rsp.if_id); + *if_id = HOST_32(fwcmd->params.rsp.if_id); if (mac_addr != NULL) - sc->pmac_id = LE_32(fwcmd->params.rsp.pmac_id); + sc->pmac_id = HOST_32(fwcmd->params.rsp.pmac_id); error: return rc; } @@ -607,8 +612,10 @@ oce_if_del(POCE_SOFTC sc, uint32_t if_id if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -630,7 +637,10 @@ oce_config_vlan(POCE_SOFTC sc, { struct oce_mbx mbx; struct mbx_common_config_vlan *fwcmd; - int rc; + int rc = 0; + + if (sc->vlans_added > sc->max_vlans) + goto vlan_promisc; bzero(&mbx, sizeof(struct oce_mbx)); fwcmd = (struct mbx_common_config_vlan *)&mbx.payload; @@ -659,9 +669,19 @@ oce_config_vlan(POCE_SOFTC sc, if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); - return 0; + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); + + goto done; + +vlan_promisc: + /* Enable Vlan Promis */ + oce_rxf_set_promiscuous(sc, (1 << 1)); + device_printf(sc->dev,"Enabling Vlan Promisc Mode\n"); +done: + return rc; } @@ -702,8 +722,10 @@ oce_set_flow_control(POCE_SOFTC sc, uint if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -802,8 +824,10 @@ oce_config_nic_rss(POCE_SOFTC sc, uint32 if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); } return rc; } @@ -818,7 +842,7 @@ oce_config_nic_rss(POCE_SOFTC sc, uint32 * This function uses the COMMON_SET_IFACE_RX_FILTER command instead. */ int -oce_rxf_set_promiscuous(POCE_SOFTC sc, uint32_t enable) +oce_rxf_set_promiscuous(POCE_SOFTC sc, uint8_t enable) { struct mbx_set_common_iface_rx_filter *fwcmd; int sz = sizeof(struct mbx_set_common_iface_rx_filter); @@ -836,10 +860,13 @@ oce_rxf_set_promiscuous(POCE_SOFTC sc, u req = &fwcmd->params.req; req->iface_flags_mask = MBX_RX_IFACE_FLAGS_PROMISCUOUS | MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS; - if (enable) { - req->iface_flags = MBX_RX_IFACE_FLAGS_PROMISCUOUS | - MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS; - } + /* Bit 0 Mac promisc, Bit 1 Vlan promisc */ + if (enable & 0x01) + req->iface_flags = MBX_RX_IFACE_FLAGS_PROMISCUOUS; + + if (enable & 0x02) + req->iface_flags = MBX_RX_IFACE_FLAGS_VLAN_PROMISCUOUS; + req->if_id = sc->if_id; rc = oce_set_common_iface_rx_filter(sc, &sgl); @@ -886,9 +913,11 @@ oce_set_common_iface_rx_filter(POCE_SOFT if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); - return 0; + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); + return rc; } /** @@ -925,14 +954,16 @@ oce_get_link_status(POCE_SOFTC sc, struc if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } /* interpret response */ bcopy(&fwcmd->params.rsp, link, sizeof(struct link_status)); - link->logical_link_status = LE_32(link->logical_link_status); - link->qos_link_speed = LE_16(link->qos_link_speed); + link->logical_link_status = HOST_32(link->logical_link_status); + link->qos_link_speed = HOST_16(link->qos_link_speed); error: return rc; } @@ -978,8 +1009,10 @@ oce_mbox_get_nic_stats_v0(POCE_SOFTC sc, if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -1028,8 +1061,10 @@ oce_mbox_get_nic_stats(POCE_SOFTC sc, PO if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -1080,8 +1115,10 @@ oce_mbox_get_pport_stats(POCE_SOFTC sc, if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -1133,8 +1170,10 @@ oce_mbox_get_vport_stats(POCE_SOFTC sc, if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -1178,8 +1217,10 @@ oce_update_multicast(POCE_SOFTC sc, POCE if (!rc) rc = req->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + req->hdr.u0.rsp.additional_status); return rc; } @@ -1243,8 +1284,10 @@ oce_mbox_macaddr_add(POCE_SOFTC sc, uint if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } *pmac_id = fwcmd->params.rsp.pmac_id; @@ -1281,8 +1324,10 @@ oce_mbox_macaddr_del(POCE_SOFTC sc, uint if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -1318,11 +1363,13 @@ oce_mbox_check_native_mode(POCE_SOFTC sc if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } - sc->be3_native = fwcmd->params.rsp.capability_flags + sc->be3_native = HOST_32(fwcmd->params.rsp.capability_flags) & CAP_BE3_NATIVE_ERX_API; error: @@ -1363,8 +1410,10 @@ oce_mbox_cmd_set_loopback(POCE_SOFTC sc, if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; @@ -1406,8 +1455,10 @@ oce_mbox_cmd_test_loopback(POCE_SOFTC sc if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; } @@ -1433,9 +1484,9 @@ oce_mbox_write_flashrom(POCE_SOFTC sc, u payload_len, OCE_MBX_VER_V0); - fwcmd->flash_op_type = optype; - fwcmd->flash_op_code = opcode; - fwcmd->data_buffer_size = num_bytes; + fwcmd->flash_op_type = LE_32(optype); + fwcmd->flash_op_code = LE_32(opcode); + fwcmd->data_buffer_size = LE_32(num_bytes); mbx.u0.s.embedded = 0; /*Non embeded*/ mbx.payload_length = payload_len; @@ -1451,8 +1502,10 @@ oce_mbox_write_flashrom(POCE_SOFTC sc, u if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); return rc; @@ -1497,8 +1550,10 @@ oce_mbox_get_flashrom_crc(POCE_SOFTC sc, if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } bcopy(fwcmd->data_buffer, flash_crc, 4); @@ -1532,18 +1587,20 @@ oce_mbox_get_phy_info(POCE_SOFTC sc, str if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } - phy_info->phy_type = fwcmd->params.rsp.phy_info.phy_type; + phy_info->phy_type = HOST_16(fwcmd->params.rsp.phy_info.phy_type); phy_info->interface_type = - fwcmd->params.rsp.phy_info.interface_type; + HOST_16(fwcmd->params.rsp.phy_info.interface_type); phy_info->auto_speeds_supported = - fwcmd->params.rsp.phy_info.auto_speeds_supported; + HOST_16(fwcmd->params.rsp.phy_info.auto_speeds_supported); phy_info->fixed_speeds_supported = - fwcmd->params.rsp.phy_info.fixed_speeds_supported; - phy_info->misc_params =fwcmd->params.rsp.phy_info.misc_params; + HOST_16(fwcmd->params.rsp.phy_info.fixed_speeds_supported); + phy_info->misc_params = HOST_32(fwcmd->params.rsp.phy_info.misc_params); error: return rc; @@ -1593,11 +1650,13 @@ oce_mbox_lancer_write_flashrom(POCE_SOFT if (!rc) rc = fwcmd->params.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->params.rsp.additional_status); goto error; } - *written_data = fwcmd->params.rsp.actual_write_length; + *written_data = HOST_32(fwcmd->params.rsp.actual_write_length); *additional_status = fwcmd->params.rsp.additional_status; error: return rc; @@ -1649,11 +1708,13 @@ oce_mbox_create_rq(struct oce_rq *rq) if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } - rq->rq_id = fwcmd->params.rsp.rq_id; + rq->rq_id = HOST_16(fwcmd->params.rsp.rq_id); rq->rss_cpuid = fwcmd->params.rsp.rss_cpuid; error: return rc; @@ -1673,15 +1734,17 @@ oce_mbox_create_wq(struct oce_wq *wq) bzero(&mbx, sizeof(struct oce_mbx)); fwcmd = (struct mbx_create_nic_wq *)&mbx.payload; - if (IS_XE201(sc)) { + if (IS_XE201(sc)) version = OCE_MBX_VER_V1; - fwcmd->params.req.if_id = sc->if_id; - } else if(IS_BE(sc)) + else if(IS_BE(sc)) IS_PROFILE_SUPER_NIC(sc) ? (version = OCE_MBX_VER_V2) : (version = OCE_MBX_VER_V0); else version = OCE_MBX_VER_V2; + if (version > OCE_MBX_VER_V0) + fwcmd->params.req.if_id = sc->if_id; + mbx_common_req_hdr_init(&fwcmd->hdr, 0, 0, MBX_SUBSYSTEM_NIC, NIC_CREATE_WQ, MBX_TIMEOUT_SEC, @@ -1703,13 +1766,15 @@ oce_mbox_create_wq(struct oce_wq *wq) if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } - wq->wq_id = LE_16(fwcmd->params.rsp.wq_id); + wq->wq_id = HOST_16(fwcmd->params.rsp.wq_id); if (version == OCE_MBX_VER_V2) - wq->db_offset = LE_32(fwcmd->params.rsp.db_offset); + wq->db_offset = HOST_32(fwcmd->params.rsp.db_offset); else wq->db_offset = PD_TXULP_DB; error: @@ -1754,11 +1819,13 @@ oce_mbox_create_eq(struct oce_eq *eq) if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } - eq->eq_id = LE_16(fwcmd->params.rsp.eq_id); + eq->eq_id = HOST_16(fwcmd->params.rsp.eq_id); error: return rc; } @@ -1832,11 +1899,13 @@ oce_mbox_cq_create(struct oce_cq *cq, ui if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } - cq->cq_id = LE_16(fwcmd->params.rsp.cq_id); + cq->cq_id = HOST_16(fwcmd->params.rsp.cq_id); error: return rc; @@ -1885,8 +1954,10 @@ oce_mbox_read_transrecv_data(POCE_SOFTC if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) { - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", + __FUNCTION__, rc, + fwcmd->hdr.u0.rsp.additional_status); goto error; } if(fwcmd->params.rsp.page_num == PAGE_NUM_A0) @@ -1947,8 +2018,10 @@ oce_mbox_eqd_modify_periodic(POCE_SOFTC if (!rc) rc = fwcmd->hdr.u0.rsp.status; if (rc) - device_printf(sc->dev,"%s failed - cmd status: %d\n", - __FUNCTION__, rc); + device_printf(sc->dev, + "%s failed - cmd status: %d addi status: %d\n", *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***