From owner-svn-src-head@FreeBSD.ORG Sun May 16 03:17:12 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 777A41065675; Sun, 16 May 2010 03:17:12 +0000 (UTC) (envelope-from rfarmer@predatorlabs.net) Received: from mail-gx0-f226.google.com (mail-gx0-f226.google.com [209.85.217.226]) by mx1.freebsd.org (Postfix) with ESMTP id 173F68FC16; Sun, 16 May 2010 03:17:11 +0000 (UTC) Received: by gxk26 with SMTP id 26so827746gxk.13 for ; Sat, 15 May 2010 20:17:11 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.75.8 with SMTP id x8mr4537839yba.121.1273979831072; Sat, 15 May 2010 20:17:11 -0700 (PDT) Received: by 10.150.137.17 with HTTP; Sat, 15 May 2010 20:17:11 -0700 (PDT) X-Originating-IP: [128.95.133.90] In-Reply-To: <201005152026.o4FKQA3T081989@svn.freebsd.org> References: <201005152026.o4FKQA3T081989@svn.freebsd.org> Date: Sat, 15 May 2010 20:17:11 -0700 Message-ID: From: Rob Farmer To: Matt Jacob Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208119 - head/sys/dev/isp X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 03:17:12 -0000 On Sat, May 15, 2010 at 1:26 PM, Matt Jacob wrote: > Author: mjacob > Date: Sat May 15 20:26:10 2010 > New Revision: 208119 > URL: http://svn.freebsd.org/changeset/base/208119 > > Log: > =A0Whap. Hook up some wires that were forgotten a few months ago and rest= ore > =A0the zombie device timeout code and the loop down time code and the fab= ric > =A0hysteresis code. > =A0MFC after: =A0 =A01 week > =A0Sponsored By: Panasas > > Modified: > =A0head/sys/dev/isp/isp_freebsd.c > =A0head/sys/dev/isp/ispvar.h > Hi, I haven't seen anything from the tinderbox but I am getting a build failure after this change. This is i386 in vmware: =3D=3D=3D> isp (all) cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=3Dprescott -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq -finline-limit=3D8000 --param inline-unit-growth=3D100 --param large-function-growth=3D1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO -mno-align-long-strings -mpreferred-stack-boundary=3D2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -std=3Diso9899:1999 -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c /usr/src/sys/modules/isp/../../dev/isp/isp.c cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=3Dprescott -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq -finline-limit=3D8000 --param inline-unit-growth=3D100 --param large-function-growth=3D1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO -mno-align-long-strings -mpreferred-stack-boundary=3D2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -std=3Diso9899:1999 -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c /usr/src/sys/modules/isp/../../dev/isp/isp_library.c cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=3Dprescott -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq -finline-limit=3D8000 --param inline-unit-growth=3D100 --param large-function-growth=3D1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO -mno-align-long-strings -mpreferred-stack-boundary=3D2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -std=3Diso9899:1999 -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c /usr/src/sys/modules/isp/../../dev/isp/isp_target.c cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=3Dprescott -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq -finline-limit=3D8000 --param inline-unit-growth=3D100 --param large-function-growth=3D1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO -mno-align-long-strings -mpreferred-stack-boundary=3D2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -std=3Diso9899:1999 -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c cc1: warnings being treated as errors /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c: In function 'isp_gdt'= : /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c:3946: warning: format '%lu' expects type 'long unsigned int', but argument 5 has type 'time_t' /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c: In function 'isp_asyn= c': /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c:5068: warning: format '%lu' expects type 'long unsigned int', but argument 6 has type 'time_t' *** Error code 1 Stop in /usr/src/sys/modules/isp. *** Error code 1 Stop in /usr/src/sys/modules. *** Error code 1 Stop in /usr/obj/usr/src/sys/CORETWO. *** Error code 1 Stop in /usr/src. *** Error code 1 Stop in /usr/src. --=20 Rob Farmer From owner-svn-src-head@FreeBSD.ORG Sun May 16 05:00:29 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88151106564A; Sun, 16 May 2010 05:00:29 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 789628FC12; Sun, 16 May 2010 05:00:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4G50T15095877; Sun, 16 May 2010 05:00:29 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4G50T1o095875; Sun, 16 May 2010 05:00:29 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005160500.o4G50T1o095875@svn.freebsd.org> From: Konstantin Belousov Date: Sun, 16 May 2010 05:00:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208128 - head/sys/fs/nullfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 05:00:29 -0000 Author: kib Date: Sun May 16 05:00:29 2010 New Revision: 208128 URL: http://svn.freebsd.org/changeset/base/208128 Log: Disable bypass for the vop_advlockpurge(). The vop is called after vop_revoke(), the v_data is already destroyed. Reported and tested by: ed Modified: head/sys/fs/nullfs/null_vnops.c Modified: head/sys/fs/nullfs/null_vnops.c ============================================================================== --- head/sys/fs/nullfs/null_vnops.c Sun May 16 04:31:16 2010 (r208127) +++ head/sys/fs/nullfs/null_vnops.c Sun May 16 05:00:29 2010 (r208128) @@ -798,6 +798,7 @@ struct vop_vector null_vnodeops = { .vop_bypass = null_bypass, .vop_access = null_access, .vop_accessx = null_accessx, + .vop_advlockpurge = vop_stdadvlockpurge, .vop_bmap = VOP_EOPNOTSUPP, .vop_getattr = null_getattr, .vop_getwritemount = null_getwritemount, From owner-svn-src-head@FreeBSD.ORG Sun May 16 05:02:31 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3AC2E106566C; Sun, 16 May 2010 05:02:31 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id A5E448FC14; Sun, 16 May 2010 05:02:30 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o4G52dMG058893 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 16 May 2010 08:02:39 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o4G52PCN047989; Sun, 16 May 2010 08:02:26 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o4G52P40047988; Sun, 16 May 2010 08:02:25 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 16 May 2010 08:02:25 +0300 From: Kostik Belousov To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Message-ID: <20100516050225.GY83316@deviant.kiev.zoral.com.ua> References: <201005160500.o4G50T1o095875@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="KISHs/FnjYvFOG5B" Content-Disposition: inline In-Reply-To: <201005160500.o4G50T1o095875@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: Subject: Re: svn commit: r208128 - head/sys/fs/nullfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 05:02:31 -0000 --KISHs/FnjYvFOG5B Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, May 16, 2010 at 05:00:29AM +0000, Konstantin Belousov wrote: > Author: kib > Date: Sun May 16 05:00:29 2010 > New Revision: 208128 > URL: http://svn.freebsd.org/changeset/base/208128 >=20 > Log: > Disable bypass for the vop_advlockpurge(). The vop is called after > vop_revoke(), the v_data is already destroyed. > =20 > Reported and tested by: ed Reported and tested by: emaste Ed Maste, not Ed Schouten. Sorry. --KISHs/FnjYvFOG5B Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkvvfGEACgkQC3+MBN1Mb4i9iACeMv4FTMPhG3yCNy8hEr3ti67x ztoAoNtrmz1TPYDquQ2VflsrWtgcc8o+ =go+E -----END PGP SIGNATURE----- --KISHs/FnjYvFOG5B-- From owner-svn-src-head@FreeBSD.ORG Sun May 16 05:06:56 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 703FD106566B; Sun, 16 May 2010 05:06:56 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id DCCFE8FC12; Sun, 16 May 2010 05:06:55 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o4G575FX059128 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 16 May 2010 08:07:05 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o4G56qoP048006; Sun, 16 May 2010 08:06:52 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o4G56pa9048005; Sun, 16 May 2010 08:06:51 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 16 May 2010 08:06:51 +0300 From: Kostik Belousov To: Zachary Loafman Message-ID: <20100516050651.GZ83316@deviant.kiev.zoral.com.ua> References: <201005122124.o4CLOk3b027904@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="UEl6xVrmin0CpRyj" Content-Disposition: inline In-Reply-To: <201005122124.o4CLOk3b027904@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_40, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, matthew.fleming@isilon.com Subject: Re: svn commit: r208003 - in head/sys: kern sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 05:06:56 -0000 --UEl6xVrmin0CpRyj Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, May 12, 2010 at 09:24:46PM +0000, Zachary Loafman wrote: > Author: zml > Date: Wed May 12 21:24:46 2010 > New Revision: 208003 > URL: http://svn.freebsd.org/changeset/base/208003 >=20 > Log: > Add VOP_ADVLOCKPURGE so that the file system is called when purging > locks (in the case where the VFS impl isn't using lf_*) > =20 > Submitted by: Matthew Fleming > Reviewed by: zml, dfr After looking at what happen to nullfs, see r208003, I wonder why the vop is needed. It is called after VOP_RECLAIM is called by vgonel(), after fs-specific data are destroyed. So, on the one hand, vop can only operate on struct vnode proper, on the other hand, the actions performed by vop_advlockpurge implementation can be done by vop_reclaim as well. Could you, please, give some details on the supposed use of the vop ? --UEl6xVrmin0CpRyj Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkvvfWoACgkQC3+MBN1Mb4gXLwCePdawtU3wzHF64fol/6T27b7I 7PgAn0mJbrA0eirA6wYJOpGV7nzaC2KF =E+dx -----END PGP SIGNATURE----- --UEl6xVrmin0CpRyj-- From owner-svn-src-head@FreeBSD.ORG Sun May 16 06:28:22 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8ACA41065673; Sun, 16 May 2010 06:28:22 +0000 (UTC) (envelope-from mj@feral.com) Received: from ns1.feral.com (ns1.feral.com [192.67.166.1]) by mx1.freebsd.org (Postfix) with ESMTP id 57ADE8FC15; Sun, 16 May 2010 06:28:22 +0000 (UTC) Received: from [192.168.0.102] (m206-63.dsl.tsoft.com [198.144.206.63]) by ns1.feral.com (8.14.3/8.14.3) with ESMTP id o4G6SLJf067461; Sat, 15 May 2010 23:28:21 -0700 (PDT) (envelope-from mj@feral.com) Message-ID: <4BEF908C.3000608@feral.com> Date: Sat, 15 May 2010 23:28:28 -0700 From: Matthew Jacob User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4 MIME-Version: 1.0 To: Rob Farmer References: <201005152026.o4FKQA3T081989@svn.freebsd.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Default is to whitelist mail, not delayed by milter-greylist-4.2.3 (ns1.feral.com [192.67.166.1]); Sat, 15 May 2010 23:28:21 -0700 (PDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Matt Jacob Subject: Re: svn commit: r208119 - head/sys/dev/isp X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 06:28:22 -0000 On 5/15/2010 8:17 PM, Rob Farmer wrote: > On Sat, May 15, 2010 at 1:26 PM, Matt Jacob wrote: > >> Author: mjacob >> Date: Sat May 15 20:26:10 2010 >> New Revision: 208119 >> URL: http://svn.freebsd.org/changeset/base/208119 >> >> Log: >> Whap. Hook up some wires that were forgotten a few months ago and restore >> the zombie device timeout code and the loop down time code and the fabric >> hysteresis code. >> MFC after: 1 week >> Sponsored By: Panasas >> >> Modified: >> head/sys/dev/isp/isp_freebsd.c >> head/sys/dev/isp/ispvar.h >> >> > Hi, > > I haven't seen anything from the tinderbox but I am getting a build > failure after this change. This is i386 in vmware: > > ===> isp (all) > cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=prescott > -Werror -D_KERNEL -DKLD_MODULE -nostdinc > -DHAVE_KERNEL_OPTION_HEADERS -include > /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq > -finline-limit=8000 --param inline-unit-growth=100 --param > large-function-growth=1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO > -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx > -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding > -fstack-protector -std=iso9899:1999 -fstack-protector -Wall > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -c > /usr/src/sys/modules/isp/../../dev/isp/isp.c > cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=prescott > -Werror -D_KERNEL -DKLD_MODULE -nostdinc > -DHAVE_KERNEL_OPTION_HEADERS -include > /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq > -finline-limit=8000 --param inline-unit-growth=100 --param > large-function-growth=1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO > -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx > -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding > -fstack-protector -std=iso9899:1999 -fstack-protector -Wall > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -c > /usr/src/sys/modules/isp/../../dev/isp/isp_library.c > cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=prescott > -Werror -D_KERNEL -DKLD_MODULE -nostdinc > -DHAVE_KERNEL_OPTION_HEADERS -include > /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq > -finline-limit=8000 --param inline-unit-growth=100 --param > large-function-growth=1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO > -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx > -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding > -fstack-protector -std=iso9899:1999 -fstack-protector -Wall > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -c > /usr/src/sys/modules/isp/../../dev/isp/isp_target.c > cc -O2 -fno-strict-aliasing -pipe -fomit-frame-pointer -march=prescott > -Werror -D_KERNEL -DKLD_MODULE -nostdinc > -DHAVE_KERNEL_OPTION_HEADERS -include > /usr/obj/usr/src/sys/CORETWO/opt_global.h -I. -I@ -I@/contrib/altq > -finline-limit=8000 --param inline-unit-growth=100 --param > large-function-growth=1000 -fno-common -I/usr/obj/usr/src/sys/CORETWO > -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx > -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding > -fstack-protector -std=iso9899:1999 -fstack-protector -Wall > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -c > /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c > cc1: warnings being treated as errors > /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c: In function 'isp_gdt': > /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c:3946: warning: > format '%lu' expects type 'long unsigned int', but argument 5 has type > 'time_t' > /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c: In function 'isp_async': > /usr/src/sys/modules/isp/../../dev/isp/isp_freebsd.c:5068: warning: > format '%lu' expects type 'long unsigned int', but argument 6 has type > 'time_t' > *** Error code 1 > Grumble. Thanks. From owner-svn-src-head@FreeBSD.ORG Sun May 16 06:40:05 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8DBA5106564A; Sun, 16 May 2010 06:40:05 +0000 (UTC) (envelope-from mjacob@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CFA38FC0A; Sun, 16 May 2010 06:40:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4G6e5FM021328; Sun, 16 May 2010 06:40:05 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4G6e5fH021326; Sun, 16 May 2010 06:40:05 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201005160640.o4G6e5fH021326@svn.freebsd.org> From: Matt Jacob Date: Sun, 16 May 2010 06:40:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208129 - head/sys/dev/isp X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 06:40:05 -0000 Author: mjacob Date: Sun May 16 06:40:05 2010 New Revision: 208129 URL: http://svn.freebsd.org/changeset/base/208129 Log: Correct compilation error introduced in last commit. X-MFC: 208119 MFC after: 1 week Sponsored By: Panasas Pointy Hat to: Me Noticed by: Rob Modified: head/sys/dev/isp/isp_freebsd.c Modified: head/sys/dev/isp/isp_freebsd.c ============================================================================== --- head/sys/dev/isp/isp_freebsd.c Sun May 16 05:00:29 2010 (r208128) +++ head/sys/dev/isp/isp_freebsd.c Sun May 16 06:40:05 2010 (r208129) @@ -3943,7 +3943,7 @@ isp_gdt(void *arg) fcportdb_t *lp; int dbidx, tgt, more_to_do = 0; - isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d GDT timer expired @ %lu", chan, time_uptime); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d GDT timer expired @ %lu", chan, (unsigned long) time_uptime); for (dbidx = 0; dbidx < MAX_FC_TARG; dbidx++) { lp = &FCPARAM(isp, chan)->portdb[dbidx]; @@ -5065,7 +5065,7 @@ isp_async(ispsoftc_t *isp, ispasync_t cm lp->state = FC_PORTDB_STATE_ZOMBIE; lp->gone_timer = ISP_FC_PC(isp, bus)->gone_device_time; if (fc->ready && !callout_active(&fc->gdt)) { - isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d Starting Gone Device Timer with %u seconds time now %lu", bus, lp->gone_timer, time_uptime); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d Starting Gone Device Timer with %u seconds time now %lu", bus, lp->gone_timer, (unsigned long)time_uptime); callout_reset(&fc->gdt, hz, isp_gdt, fc); } tgt = lp->dev_map_idx - 1; From owner-svn-src-head@FreeBSD.ORG Sun May 16 07:16:30 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80FDF1065674; Sun, 16 May 2010 07:16:30 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6EBEF8FC14; Sun, 16 May 2010 07:16:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4G7GTK0029349; Sun, 16 May 2010 07:16:29 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4G7GTxM029345; Sun, 16 May 2010 07:16:29 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005160716.o4G7GTxM029345@svn.freebsd.org> From: Martin Matuska Date: Sun, 16 May 2010 07:16:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208130 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 07:16:30 -0000 Author: mm Date: Sun May 16 07:16:28 2010 New Revision: 208130 URL: http://svn.freebsd.org/changeset/base/208130 Log: Fix perfomance problem with ZFS prefetch caching [1] Add statistics for ZFS prefetch (sysctl kstat.zfs.misc.zfetchstats) Partial import of OpenSolaris onnv revision 10474:0e96dd3b905a Reported by: jhell@dataix.net (private e-mail) [1] Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6859997, 6868951) MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_zfetch.h Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Sun May 16 06:40:05 2010 (r208129) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c Sun May 16 07:16:28 2010 (r208130) @@ -1192,6 +1192,7 @@ dmu_init(void) { dbuf_init(); dnode_init(); + zfetch_init(); arc_init(); l2arc_init(); } @@ -1200,6 +1201,7 @@ void dmu_fini(void) { arc_fini(); + zfetch_fini(); dnode_fini(); dbuf_fini(); l2arc_fini(); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c Sun May 16 06:40:05 2010 (r208129) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c Sun May 16 07:16:28 2010 (r208130) @@ -19,18 +19,17 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include #include #include #include #include #include +#include /* * I'm against tune-ables, but these should probably exist as tweakable globals @@ -77,6 +76,41 @@ static zstream_t *dmu_zfetch_stream_recl static void dmu_zfetch_stream_remove(zfetch_t *, zstream_t *); static int dmu_zfetch_streams_equal(zstream_t *, zstream_t *); +typedef struct zfetch_stats { + kstat_named_t zfetchstat_hits; + kstat_named_t zfetchstat_misses; + kstat_named_t zfetchstat_colinear_hits; + kstat_named_t zfetchstat_colinear_misses; + kstat_named_t zfetchstat_stride_hits; + kstat_named_t zfetchstat_stride_misses; + kstat_named_t zfetchstat_reclaim_successes; + kstat_named_t zfetchstat_reclaim_failures; + kstat_named_t zfetchstat_stream_resets; + kstat_named_t zfetchstat_stream_noresets; + kstat_named_t zfetchstat_bogus_streams; +} zfetch_stats_t; + +static zfetch_stats_t zfetch_stats = { + { "hits", KSTAT_DATA_UINT64 }, + { "misses", KSTAT_DATA_UINT64 }, + { "colinear_hits", KSTAT_DATA_UINT64 }, + { "colinear_misses", KSTAT_DATA_UINT64 }, + { "stride_hits", KSTAT_DATA_UINT64 }, + { "stride_misses", KSTAT_DATA_UINT64 }, + { "reclaim_successes", KSTAT_DATA_UINT64 }, + { "reclaim_failures", KSTAT_DATA_UINT64 }, + { "streams_resets", KSTAT_DATA_UINT64 }, + { "streams_noresets", KSTAT_DATA_UINT64 }, + { "bogus_streams", KSTAT_DATA_UINT64 }, +}; + +#define ZFETCHSTAT_INCR(stat, val) \ + atomic_add_64(&zfetch_stats.stat.value.ui64, (val)); + +#define ZFETCHSTAT_BUMP(stat) ZFETCHSTAT_INCR(stat, 1); + +kstat_t *zfetch_ksp; + /* * Given a zfetch structure and a zstream structure, determine whether the * blocks to be read are part of a co-linear pair of existing prefetch @@ -213,6 +247,29 @@ dmu_zfetch_dofetch(zfetch_t *zf, zstream zs->zst_last = LBOLT; } +void +zfetch_init(void) +{ + + zfetch_ksp = kstat_create("zfs", 0, "zfetchstats", "misc", + KSTAT_TYPE_NAMED, sizeof (zfetch_stats) / sizeof (kstat_named_t), + KSTAT_FLAG_VIRTUAL); + + if (zfetch_ksp != NULL) { + zfetch_ksp->ks_data = &zfetch_stats; + kstat_install(zfetch_ksp); + } +} + +void +zfetch_fini(void) +{ + if (zfetch_ksp != NULL) { + kstat_delete(zfetch_ksp); + zfetch_ksp = NULL; + } +} + /* * This takes a pointer to a zfetch structure and a dnode. It performs the * necessary setup for the zfetch structure, grokking data from the @@ -283,7 +340,7 @@ dmu_zfetch_fetchsz(dnode_t *dn, uint64_t } /* - * given a zfetch and a zsearch structure, see if there is an associated zstream + * given a zfetch and a zstream structure, see if there is an associated zstream * for this block read. If so, it starts a prefetch for the stream it * located and returns true, otherwise it returns false */ @@ -315,6 +372,7 @@ top: */ if (zs->zst_len == 0) { /* bogus stream */ + ZFETCHSTAT_BUMP(zfetchstat_bogus_streams); continue; } @@ -324,9 +382,14 @@ top: */ if (zh->zst_offset >= zs->zst_offset && zh->zst_offset < zs->zst_offset + zs->zst_len) { - /* already fetched */ - rc = 1; - goto out; + if (prefetched) { + /* already fetched */ + ZFETCHSTAT_BUMP(zfetchstat_stride_hits); + rc = 1; + goto out; + } else { + ZFETCHSTAT_BUMP(zfetchstat_stride_misses); + } } /* @@ -439,6 +502,7 @@ top: if (reset) { zstream_t *remove = zs; + ZFETCHSTAT_BUMP(zfetchstat_stream_resets); rc = 0; mutex_exit(&zs->zst_lock); rw_exit(&zf->zf_rwlock); @@ -457,6 +521,7 @@ top: } } } else { + ZFETCHSTAT_BUMP(zfetchstat_stream_noresets); rc = 1; dmu_zfetch_dofetch(zf, zs); mutex_exit(&zs->zst_lock); @@ -513,13 +578,12 @@ dmu_zfetch_stream_insert(zfetch_t *zf, z zs_next = list_next(&zf->zf_stream, zs_walk); if (dmu_zfetch_streams_equal(zs_walk, zs)) { - return (0); + return (0); } } list_insert_head(&zf->zf_stream, zs); zf->zf_stream_cnt++; - return (1); } @@ -623,8 +687,15 @@ dmu_zfetch(zfetch_t *zf, uint64_t offset P2ALIGN(offset, blksz)) >> blkshft; fetched = dmu_zfetch_find(zf, &zst, prefetched); - if (!fetched) { - fetched = dmu_zfetch_colinear(zf, &zst); + if (fetched) { + ZFETCHSTAT_BUMP(zfetchstat_hits); + } else { + ZFETCHSTAT_BUMP(zfetchstat_misses); + if (fetched = dmu_zfetch_colinear(zf, &zst)) { + ZFETCHSTAT_BUMP(zfetchstat_colinear_hits); + } else { + ZFETCHSTAT_BUMP(zfetchstat_colinear_misses); + } } if (!fetched) { @@ -634,11 +705,14 @@ dmu_zfetch(zfetch_t *zf, uint64_t offset * we still couldn't find a stream, drop the lock, and allocate * one if possible. Otherwise, give up and go home. */ - if (newstream == NULL) { + if (newstream) { + ZFETCHSTAT_BUMP(zfetchstat_reclaim_successes); + } else { uint64_t maxblocks; uint32_t max_streams; uint32_t cur_streams; + ZFETCHSTAT_BUMP(zfetchstat_reclaim_failures); cur_streams = zf->zf_stream_cnt; maxblocks = zf->zf_dnode->dn_maxblkid; @@ -651,7 +725,6 @@ dmu_zfetch(zfetch_t *zf, uint64_t offset if (cur_streams >= max_streams) { return; } - newstream = kmem_zalloc(sizeof (zstream_t), KM_SLEEP); } Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_zfetch.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_zfetch.h Sun May 16 06:40:05 2010 (r208129) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_zfetch.h Sun May 16 07:16:28 2010 (r208130) @@ -19,15 +19,13 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _DFETCH_H #define _DFETCH_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include #ifdef __cplusplus @@ -63,6 +61,9 @@ typedef struct zfetch { uint64_t zf_alloc_fail; /* # of failed attempts to alloc strm */ } zfetch_t; +void zfetch_init(void); +void zfetch_fini(void); + void dmu_zfetch_init(zfetch_t *, struct dnode *); void dmu_zfetch_rele(zfetch_t *); void dmu_zfetch(zfetch_t *, uint64_t, uint64_t, int); From owner-svn-src-head@FreeBSD.ORG Sun May 16 07:46:04 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 691F2106564A; Sun, 16 May 2010 07:46:04 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 56FE68FC14; Sun, 16 May 2010 07:46:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4G7k48g035792; Sun, 16 May 2010 07:46:04 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4G7k3Es035787; Sun, 16 May 2010 07:46:03 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005160746.o4G7k3Es035787@svn.freebsd.org> From: Martin Matuska Date: Sun, 16 May 2010 07:46:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208131 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 07:46:04 -0000 Author: mm Date: Sun May 16 07:46:03 2010 New Revision: 208131 URL: http://svn.freebsd.org/changeset/base/208131 Log: Fix deadlock between zfs_dirent_lock and zfs_rmdir OpenSolaris onnv revision: 11321:506b7043a14c Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6847615) MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_dir.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_dir.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_dir.h Sun May 16 07:16:28 2010 (r208130) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_dir.h Sun May 16 07:46:03 2010 (r208131) @@ -44,6 +44,7 @@ extern "C" { #define ZRENAMING 0x0010 /* znode is being renamed */ #define ZCILOOK 0x0020 /* case-insensitive lookup requested */ #define ZCIEXACT 0x0040 /* c-i requires c-s match (rename) */ +#define ZHAVELOCK 0x0080 /* z_name_lock is already held */ /* mknode flags */ #define IS_ROOT_NODE 0x01 /* create a root node */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Sun May 16 07:16:28 2010 (r208130) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Sun May 16 07:46:03 2010 (r208131) @@ -174,6 +174,7 @@ typedef struct znode_phys { typedef struct zfs_dirlock { char *dl_name; /* directory entry being locked */ uint32_t dl_sharecnt; /* 0 if exclusive, > 0 if shared */ + uint8_t dl_namelock; /* 1 if z_name_lock is NOT held */ uint16_t dl_namesize; /* set if dl_name was allocated */ kcondvar_t dl_cv; /* wait for entry to be unlocked */ struct znode *dl_dzp; /* directory znode */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Sun May 16 07:16:28 2010 (r208130) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Sun May 16 07:46:03 2010 (r208131) @@ -114,6 +114,8 @@ zfs_match_find(zfsvfs_t *zfsvfs, znode_t * ZCIEXACT: On a purely case-insensitive file system, * this lookup should be case-sensitive. * ZRENAMING: we are locking for renaming, force narrow locks + * ZHAVELOCK: Don't grab the z_name_lock for this call. The + * current thread already holds it. * * Output arguments: * zpp - pointer to the znode for the entry (NULL if there isn't one) @@ -208,13 +210,20 @@ zfs_dirent_lock(zfs_dirlock_t **dlpp, zn /* * Wait until there are no locks on this name. + * + * Don't grab the the lock if it is already held. However, cannot + * have both ZSHARED and ZHAVELOCK together. */ - rw_enter(&dzp->z_name_lock, RW_READER); + ASSERT(!(flag & ZSHARED) || !(flag & ZHAVELOCK)); + if (!(flag & ZHAVELOCK)) + rw_enter(&dzp->z_name_lock, RW_READER); + mutex_enter(&dzp->z_lock); for (;;) { if (dzp->z_unlinked) { mutex_exit(&dzp->z_lock); - rw_exit(&dzp->z_name_lock); + if (!(flag & ZHAVELOCK)) + rw_exit(&dzp->z_name_lock); return (ENOENT); } for (dl = dzp->z_dirlocks; dl != NULL; dl = dl->dl_next) { @@ -224,7 +233,8 @@ zfs_dirent_lock(zfs_dirlock_t **dlpp, zn } if (error != 0) { mutex_exit(&dzp->z_lock); - rw_exit(&dzp->z_name_lock); + if (!(flag & ZHAVELOCK)) + rw_exit(&dzp->z_name_lock); return (ENOENT); } if (dl == NULL) { @@ -235,6 +245,7 @@ zfs_dirent_lock(zfs_dirlock_t **dlpp, zn cv_init(&dl->dl_cv, NULL, CV_DEFAULT, NULL); dl->dl_name = name; dl->dl_sharecnt = 0; + dl->dl_namelock = 0; dl->dl_namesize = 0; dl->dl_dzp = dzp; dl->dl_next = dzp->z_dirlocks; @@ -246,6 +257,12 @@ zfs_dirent_lock(zfs_dirlock_t **dlpp, zn cv_wait(&dl->dl_cv, &dzp->z_lock); } + /* + * If the z_name_lock was NOT held for this dirlock record it. + */ + if (flag & ZHAVELOCK) + dl->dl_namelock = 1; + if ((flag & ZSHARED) && ++dl->dl_sharecnt > 1 && dl->dl_namesize == 0) { /* * We're the second shared reference to dl. Make a copy of @@ -325,7 +342,10 @@ zfs_dirent_unlock(zfs_dirlock_t *dl) zfs_dirlock_t **prev_dl, *cur_dl; mutex_enter(&dzp->z_lock); - rw_exit(&dzp->z_name_lock); + + if (!dl->dl_namelock) + rw_exit(&dzp->z_name_lock); + if (dl->dl_sharecnt > 1) { dl->dl_sharecnt--; mutex_exit(&dzp->z_lock); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Sun May 16 07:16:28 2010 (r208130) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Sun May 16 07:46:03 2010 (r208131) @@ -3208,6 +3208,15 @@ top: } } + /* + * If the source and destination directories are the same, we should + * grab the z_name_lock of that directory only once. + */ + if (sdzp == tdzp) { + zflg |= ZHAVELOCK; + rw_enter(&sdzp->z_name_lock, RW_READER); + } + if (cmp < 0) { serr = zfs_dirent_lock(&sdl, sdzp, snm, &szp, ZEXISTS | zflg, NULL, NULL); @@ -3230,6 +3239,10 @@ top: if (tzp) VN_RELE(ZTOV(tzp)); } + + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + if (strcmp(snm, ".") == 0 || strcmp(snm, "..") == 0) serr = EINVAL; ZFS_EXIT(zfsvfs); @@ -3238,6 +3251,10 @@ top: if (terr) { zfs_dirent_unlock(sdl); VN_RELE(ZTOV(szp)); + + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + if (strcmp(tnm, "..") == 0) terr = EINVAL; ZFS_EXIT(zfsvfs); @@ -3320,6 +3337,10 @@ top: zfs_rename_unlock(&zl); zfs_dirent_unlock(sdl); zfs_dirent_unlock(tdl); + + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + VN_RELE(ZTOV(szp)); if (tzp) VN_RELE(ZTOV(tzp)); @@ -3367,6 +3388,9 @@ out: zfs_dirent_unlock(sdl); zfs_dirent_unlock(tdl); + if (sdzp == tdzp) + rw_exit(&sdzp->z_name_lock); + VN_RELE(ZTOV(szp)); if (tzp) VN_RELE(ZTOV(tzp)); From owner-svn-src-head@FreeBSD.ORG Sun May 16 08:03:25 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5B771106564A; Sun, 16 May 2010 08:03:25 +0000 (UTC) (envelope-from kevlo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4A7318FC08; Sun, 16 May 2010 08:03:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4G83OMg039771; Sun, 16 May 2010 08:03:24 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4G83OHV039769; Sun, 16 May 2010 08:03:24 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201005160803.o4G83OHV039769@svn.freebsd.org> From: Kevin Lo Date: Sun, 16 May 2010 08:03:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208132 - head/sbin/bsdlabel X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 08:03:25 -0000 Author: kevlo Date: Sun May 16 08:03:24 2010 New Revision: 208132 URL: http://svn.freebsd.org/changeset/base/208132 Log: Use setresuid/setresgid to drop privileges Modified: head/sbin/bsdlabel/bsdlabel.c Modified: head/sbin/bsdlabel/bsdlabel.c ============================================================================== --- head/sbin/bsdlabel/bsdlabel.c Sun May 16 07:46:03 2010 (r208131) +++ head/sbin/bsdlabel/bsdlabel.c Sun May 16 08:03:24 2010 (r208132) @@ -684,6 +684,8 @@ editit(void) int pid, xpid; int locstat, omask; const char *ed; + uid_t uid; + gid_t gid; omask = sigblock(sigmask(SIGINT)|sigmask(SIGQUIT)|sigmask(SIGHUP)); while ((pid = fork()) < 0) { @@ -699,8 +701,12 @@ editit(void) } if (pid == 0) { sigsetmask(omask); - setgid(getgid()); - setuid(getuid()); + gid = getgid(); + if (setresgid(gid, gid, gid) == -1) + err(1, "setresgid"); + uid = getuid(); + if (setresuid(uid, uid, uid) == -1) + err(1, "setresuid"); if ((ed = getenv("EDITOR")) == (char *)0) ed = DEFEDITOR; execlp(ed, ed, tmpfil, (char *)0); From owner-svn-src-head@FreeBSD.ORG Sun May 16 11:56:43 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2F06E1065670; Sun, 16 May 2010 11:56:43 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1D42A8FC15; Sun, 16 May 2010 11:56:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GBuhWr093124; Sun, 16 May 2010 11:56:43 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GBug1Y093122; Sun, 16 May 2010 11:56:42 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005161156.o4GBug1Y093122@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 16 May 2010 11:56:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208142 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 11:56:43 -0000 Author: pjd Date: Sun May 16 11:56:42 2010 New Revision: 208142 URL: http://svn.freebsd.org/changeset/base/208142 Log: The whole point of having dedicated worker thread for each leaf VDEV was to avoid calling zio_interrupt() from geom_up thread context. It turns out that when provider is forcibly removed from the system and we kill worker thread there can still be some ZIOs pending. To complete pending ZIOs when there is no worker thread anymore we still have to call zio_interrupt() from geom_up context. To avoid this race just remove use of worker threads altogether. This should be more or less fine, because I also thought that zio_interrupt() does more work, but it only makes small UMA allocation with M_WAITOK. It also saves one context switch per I/O request. PR: kern/145339 Reported by: Alex Bakhtin MFC after: 1 week Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Sun May 16 11:17:21 2010 (r208141) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Sun May 16 11:56:42 2010 (r208142) @@ -47,31 +47,6 @@ struct g_class zfs_vdev_class = { DECLARE_GEOM_CLASS(zfs_vdev_class, zfs_vdev); -typedef struct vdev_geom_ctx { - struct g_consumer *gc_consumer; - int gc_state; - struct bio_queue_head gc_queue; - struct mtx gc_queue_mtx; -} vdev_geom_ctx_t; - -static void -vdev_geom_release(vdev_t *vd) -{ - vdev_geom_ctx_t *ctx; - - ctx = vd->vdev_tsd; - vd->vdev_tsd = NULL; - - mtx_lock(&ctx->gc_queue_mtx); - ctx->gc_state = 1; - wakeup_one(&ctx->gc_queue); - while (ctx->gc_state != 2) - msleep(&ctx->gc_state, &ctx->gc_queue_mtx, 0, "vgeom:w", 0); - mtx_unlock(&ctx->gc_queue_mtx); - mtx_destroy(&ctx->gc_queue_mtx); - kmem_free(ctx, sizeof(*ctx)); -} - static void vdev_geom_orphan(struct g_consumer *cp) { @@ -96,8 +71,7 @@ vdev_geom_orphan(struct g_consumer *cp) ZFS_LOG(1, "Destroyed geom %s.", gp->name); g_wither_geom(gp, error); } - vdev_geom_release(vd); - + vd->vdev_tsd = NULL; vd->vdev_remove_wanted = B_TRUE; spa_async_request(vd->vdev_spa, SPA_ASYNC_REMOVE); } @@ -188,52 +162,6 @@ vdev_geom_detach(void *arg, int flag __u } } -static void -vdev_geom_worker(void *arg) -{ - vdev_geom_ctx_t *ctx; - zio_t *zio; - struct bio *bp; - - thread_lock(curthread); - sched_prio(curthread, PRIBIO); - thread_unlock(curthread); - - ctx = arg; - for (;;) { - mtx_lock(&ctx->gc_queue_mtx); - bp = bioq_takefirst(&ctx->gc_queue); - if (bp == NULL) { - if (ctx->gc_state == 1) { - ctx->gc_state = 2; - wakeup_one(&ctx->gc_state); - mtx_unlock(&ctx->gc_queue_mtx); - kthread_exit(); - } - msleep(&ctx->gc_queue, &ctx->gc_queue_mtx, - PRIBIO | PDROP, "vgeom:io", 0); - continue; - } - mtx_unlock(&ctx->gc_queue_mtx); - zio = bp->bio_caller1; - zio->io_error = bp->bio_error; - if (bp->bio_cmd == BIO_FLUSH && bp->bio_error == ENOTSUP) { - vdev_t *vd; - - /* - * If we get ENOTSUP, we know that no future - * attempts will ever succeed. In this case we - * set a persistent bit so that we don't bother - * with the ioctl in the future. - */ - vd = zio->io_vd; - vd->vdev_nowritecache = B_TRUE; - } - g_destroy_bio(bp); - zio_interrupt(zio); - } -} - static uint64_t nvlist_get_guid(nvlist_t *list) { @@ -488,7 +416,6 @@ vdev_geom_open_by_path(vdev_t *vd, int c static int vdev_geom_open(vdev_t *vd, uint64_t *psize, uint64_t *ashift) { - vdev_geom_ctx_t *ctx; struct g_provider *pp; struct g_consumer *cp; int error, owned; @@ -557,19 +484,9 @@ vdev_geom_open(vdev_t *vd, uint64_t *psi } cp->private = vd; - - ctx = kmem_zalloc(sizeof(*ctx), KM_SLEEP); - bioq_init(&ctx->gc_queue); - mtx_init(&ctx->gc_queue_mtx, "zfs:vdev:geom:queue", NULL, MTX_DEF); - ctx->gc_consumer = cp; - ctx->gc_state = 0; - - vd->vdev_tsd = ctx; + vd->vdev_tsd = cp; pp = cp->provider; - kproc_kthread_add(vdev_geom_worker, ctx, &zfsproc, NULL, 0, 0, - "zfskern", "vdev %s", pp->name); - /* * Determine the actual size of the device. */ @@ -592,50 +509,49 @@ vdev_geom_open(vdev_t *vd, uint64_t *psi static void vdev_geom_close(vdev_t *vd) { - vdev_geom_ctx_t *ctx; struct g_consumer *cp; - if ((ctx = vd->vdev_tsd) == NULL) - return; - if ((cp = ctx->gc_consumer) == NULL) + cp = vd->vdev_tsd; + if (cp == NULL) return; - vdev_geom_release(vd); + vd->vdev_tsd = NULL; g_post_event(vdev_geom_detach, cp, M_WAITOK, NULL); } static void vdev_geom_io_intr(struct bio *bp) { - vdev_geom_ctx_t *ctx; zio_t *zio; zio = bp->bio_caller1; - ctx = zio->io_vd->vdev_tsd; - - if ((zio->io_error = bp->bio_error) == 0 && bp->bio_resid != 0) + zio->io_error = bp->bio_error; + if (zio->io_error == 0 && bp->bio_resid != 0) zio->io_error = EIO; + if (bp->bio_cmd == BIO_FLUSH && bp->bio_error == ENOTSUP) { + vdev_t *vd; - mtx_lock(&ctx->gc_queue_mtx); - bioq_insert_tail(&ctx->gc_queue, bp); - wakeup_one(&ctx->gc_queue); - mtx_unlock(&ctx->gc_queue_mtx); + /* + * If we get ENOTSUP, we know that no future + * attempts will ever succeed. In this case we + * set a persistent bit so that we don't bother + * with the ioctl in the future. + */ + vd = zio->io_vd; + vd->vdev_nowritecache = B_TRUE; + } + g_destroy_bio(bp); + zio_interrupt(zio); } static int vdev_geom_io_start(zio_t *zio) { vdev_t *vd; - vdev_geom_ctx_t *ctx; struct g_consumer *cp; struct bio *bp; int error; - cp = NULL; - vd = zio->io_vd; - ctx = vd->vdev_tsd; - if (ctx != NULL) - cp = ctx->gc_consumer; if (zio->io_type == ZIO_TYPE_IOCTL) { /* XXPOLICY */ @@ -664,6 +580,7 @@ vdev_geom_io_start(zio_t *zio) return (ZIO_PIPELINE_CONTINUE); } sendreq: + cp = vd->vdev_tsd; if (cp == NULL) { zio->io_error = ENXIO; return (ZIO_PIPELINE_CONTINUE); From owner-svn-src-head@FreeBSD.ORG Sun May 16 12:39:17 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD3481065672; Sun, 16 May 2010 12:39:17 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BCC878FC2D; Sun, 16 May 2010 12:39:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GCdHru002583; Sun, 16 May 2010 12:39:17 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GCdH7I002581; Sun, 16 May 2010 12:39:17 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005161239.o4GCdH7I002581@svn.freebsd.org> From: Marius Strobl Date: Sun, 16 May 2010 12:39:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208143 - head/sys/modules/cas X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 12:39:17 -0000 Author: marius Date: Sun May 16 12:39:17 2010 New Revision: 208143 URL: http://svn.freebsd.org/changeset/base/208143 Log: Add the ofw_bus_if.h dependency introduced with r207585. Modified: head/sys/modules/cas/Makefile Modified: head/sys/modules/cas/Makefile ============================================================================== --- head/sys/modules/cas/Makefile Sun May 16 11:56:42 2010 (r208142) +++ head/sys/modules/cas/Makefile Sun May 16 12:39:17 2010 (r208143) @@ -3,6 +3,10 @@ .PATH: ${.CURDIR}/../../dev/cas KMOD= if_cas -SRCS= bus_if.h device_if.h if_cas.c miibus_if.h pci_if.h +SRCS= bus_if.h device_if.h if_cas.c miibus_if.h pci_if.h ${ofw_bus_if} + +.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "sparc64" +ofw_bus_if= ofw_bus_if.h +.endif .include From owner-svn-src-head@FreeBSD.ORG Sun May 16 13:14:02 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 27EF8106566C; Sun, 16 May 2010 13:14:02 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail09.syd.optusnet.com.au (mail09.syd.optusnet.com.au [211.29.132.190]) by mx1.freebsd.org (Postfix) with ESMTP id 941D58FC17; Sun, 16 May 2010 13:14:01 +0000 (UTC) Received: from c122-106-169-155.carlnfd1.nsw.optusnet.com.au (c122-106-169-155.carlnfd1.nsw.optusnet.com.au [122.106.169.155]) by mail09.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o4GDDvnS026996 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 16 May 2010 23:13:59 +1000 Date: Sun, 16 May 2010 23:13:57 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Ulrich Spoerlein In-Reply-To: <201005141426.o4EEQu7B081269@svn.freebsd.org> Message-ID: <20100516230149.V8088@delplex.bde.org> References: <201005141426.o4EEQu7B081269@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208075 - in head/usr.sbin/apmd: . contrib X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 13:14:02 -0000 On Fri, 14 May 2010, Ulrich Spoerlein wrote: > Log: > Sync apmd(8) with DragonflyBSD, bringing WARNS to 3 > > Reviewed by: ed (partial, long time ago) > ... > Modified: head/usr.sbin/apmd/apmd.c > ============================================================================== > --- head/usr.sbin/apmd/apmd.c Fri May 14 14:26:49 2010 (r208074) > +++ head/usr.sbin/apmd/apmd.c Fri May 14 14:26:56 2010 (r208075) > @@ -52,8 +52,6 @@ static const char rcsid[] = > ... > - execl(_PATH_BSHELL, "sh", "-c", p->line, (char *)NULL); > + execl(_PATH_BSHELL, "sh", "-c", p->line, NULL); execl() takes variadic args, so removing this cast adds a bug. > @@ -315,7 +313,7 @@ exec_event_cmd(struct event_config *ev) > status = exec_run_cmd(ev->cmdlist); > if (status && ev->rejectable) { > syslog(LOG_ERR, "canceled"); > - (void) event_cmd_reject_act(NULL); > + event_cmd_reject_act(NULL); Removing this cast is not as correct as removing the ones for the err() family, since the function returns non-void. > @@ -674,7 +672,7 @@ main(int ac, char* av[]) > daemon(0, 0); > > #ifdef NICE_INCR > - (void) nice(NICE_INCR); > + nice(NICE_INCR); > #endif Removing this cast is probably correct, since it is probably wrong to not check for errors and wronger to cast away the warning (from lint) about this. The bug of not checking for errors remains. Bruce From owner-svn-src-head@FreeBSD.ORG Sun May 16 15:12:34 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F25E61065676; Sun, 16 May 2010 15:12:34 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DE8968FC16; Sun, 16 May 2010 15:12:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GFCYIK036430; Sun, 16 May 2010 15:12:34 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GFCYq2036425; Sun, 16 May 2010 15:12:34 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005161512.o4GFCYq2036425@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 16 May 2010 15:12:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208147 - in head/sys/cddl: compat/opensolaris/kern compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs contrib/opensolaris/uts/common/fs/zfs/sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 15:12:35 -0000 Author: pjd Date: Sun May 16 15:12:34 2010 New Revision: 208147 URL: http://svn.freebsd.org/changeset/base/208147 Log: Add task structure to zio and use it instead of allocating one. This eliminates the only place where we can sleep when calling zio_interrupt(). As a side-effect this can actually improve performance a little as we allocate one less thing for every I/O. Prodded by: kib MFC after: 1 week Added: head/sys/cddl/compat/opensolaris/sys/taskq.h (contents, props changed) Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Sun May 16 14:53:43 2010 (r208146) +++ head/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Sun May 16 15:12:34 2010 (r208147) @@ -40,12 +40,6 @@ __FBSDID("$FreeBSD$"); static uma_zone_t taskq_zone; -struct ostask { - struct task ost_task; - task_func_t *ost_func; - void *ost_arg; -}; - taskq_t *system_taskq = NULL; static void @@ -140,3 +134,32 @@ taskq_dispatch(taskq_t *tq, task_func_t return ((taskqid_t)(void *)task); } + +#define TASKQ_MAGIC 0x74541c + +static void +taskq_run_safe(void *arg, int pending __unused) +{ + struct ostask *task = arg; + + ASSERT(task->ost_magic == TASKQ_MAGIC); + task->ost_func(task->ost_arg); + task->ost_magic = 0; +} + +taskqid_t +taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg, + struct ostask *task) +{ + + ASSERT(task->ost_magic != TASKQ_MAGIC); + + task->ost_magic = TASKQ_MAGIC; + task->ost_func = func; + task->ost_arg = arg; + + TASK_INIT(&task->ost_task, 0, taskq_run_safe, task); + taskqueue_enqueue(tq->tq_queue, &task->ost_task); + + return ((taskqid_t)(void *)task); +} Added: head/sys/cddl/compat/opensolaris/sys/taskq.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/cddl/compat/opensolaris/sys/taskq.h Sun May 16 15:12:34 2010 (r208147) @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 2010 Pawel Jakub Dawidek + * 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 AUTHORS 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 AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_SYS_TASKQ_H_ +#define _OPENSOLARIS_SYS_TASKQ_H_ + +#include_next + +struct ostask { + struct task ost_task; + task_func_t *ost_func; + void *ost_arg; + int ost_magic; +}; + +taskqid_t taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg, + struct ostask *task); + +#endif /* _OPENSOLARIS_SYS_TASKQ_H_ */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Sun May 16 14:53:43 2010 (r208146) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Sun May 16 15:12:34 2010 (r208147) @@ -316,6 +316,9 @@ struct zio { /* FMA state */ uint64_t io_ena; + + /* FreeBSD only. */ + struct ostask io_task; }; extern zio_t *zio_null(zio_t *pio, spa_t *spa, Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun May 16 14:53:43 2010 (r208146) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun May 16 15:12:34 2010 (r208147) @@ -908,8 +908,8 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ if (t == ZIO_TYPE_WRITE && zio->io_vd && zio->io_vd->vdev_aux) t = ZIO_TYPE_NULL; - (void) taskq_dispatch(zio->io_spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, TQ_SLEEP); + (void) taskq_dispatch_safe(zio->io_spa->spa_zio_taskq[t][q], + (task_func_t *)zio_execute, zio, &zio->io_task); } static boolean_t @@ -2220,9 +2220,9 @@ zio_done(zio_t *zio) * Reexecution is potentially a huge amount of work. * Hand it off to the otherwise-unused claim taskq. */ - (void) taskq_dispatch( + (void) taskq_dispatch_safe( spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP); + (task_func_t *)zio_reexecute, zio, &zio->io_task); } return (ZIO_PIPELINE_STOP); } From owner-svn-src-head@FreeBSD.ORG Sun May 16 15:15:00 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 13A4F1065677; Sun, 16 May 2010 15:15:00 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 021C28FC13; Sun, 16 May 2010 15:15:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GFEx9E036982; Sun, 16 May 2010 15:14:59 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GFExnj036980; Sun, 16 May 2010 15:14:59 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005161514.o4GFExnj036980@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 16 May 2010 15:14:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208148 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 15:15:00 -0000 Author: pjd Date: Sun May 16 15:14:59 2010 New Revision: 208148 URL: http://svn.freebsd.org/changeset/base/208148 Log: Allow to configure UMA usage for ZIO data via loader and turn it on by default for amd64. On i386 I saw performance degradation when UMA was used, but for amd64 it should help. MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun May 16 15:12:34 2010 (r208147) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun May 16 15:14:59 2010 (r208148) @@ -33,6 +33,17 @@ #include #include +#if defined(__amd64__) +static int zio_use_uma = 1; +#else +static int zio_use_uma = 0; +#endif +SYSCTL_DECL(_vfs_zfs); +SYSCTL_NODE(_vfs_zfs, OID_AUTO, zio, CTLFLAG_RW, 0, "ZFS ZIO"); +TUNABLE_INT("vfs.zfs.zio.use_uma", &zio_use_uma); +SYSCTL_INT(_vfs_zfs_zio, OID_AUTO, use_uma, CTLFLAG_RDTUN, &zio_use_uma, 0, + "Use uma(9) for ZIO allocations"); + /* * ========================================================================== * I/O priority table @@ -69,10 +80,8 @@ char *zio_type_name[ZIO_TYPES] = { * ========================================================================== */ kmem_cache_t *zio_cache; -#ifdef ZIO_USE_UMA kmem_cache_t *zio_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT]; kmem_cache_t *zio_data_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT]; -#endif #ifdef _KERNEL extern vmem_t *zio_alloc_arena; @@ -88,13 +97,13 @@ extern vmem_t *zio_alloc_arena; void zio_init(void) { -#ifdef ZIO_USE_UMA size_t c; -#endif zio_cache = kmem_cache_create("zio_cache", sizeof (zio_t), 0, NULL, NULL, NULL, NULL, NULL, 0); -#ifdef ZIO_USE_UMA + if (!zio_use_uma) + goto end; + /* * For small buffers, we want a cache for each multiple of * SPA_MINBLOCKSIZE. For medium-size buffers, we want a cache @@ -138,15 +147,13 @@ zio_init(void) if (zio_data_buf_cache[c - 1] == NULL) zio_data_buf_cache[c - 1] = zio_data_buf_cache[c]; } -#endif - +end: zio_inject_init(); } void zio_fini(void) { -#ifdef ZIO_USE_UMA size_t c; kmem_cache_t *last_cache = NULL; kmem_cache_t *last_data_cache = NULL; @@ -164,7 +171,6 @@ zio_fini(void) } zio_data_buf_cache[c] = NULL; } -#endif kmem_cache_destroy(zio_cache); @@ -186,15 +192,14 @@ zio_fini(void) void * zio_buf_alloc(size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - return (kmem_cache_alloc(zio_buf_cache[c], KM_PUSHPAGE)); -#else - return (kmem_alloc(size, KM_SLEEP)); -#endif + if (zio_use_uma) + return (kmem_cache_alloc(zio_buf_cache[c], KM_PUSHPAGE)); + else + return (kmem_alloc(size, KM_SLEEP)); } /* @@ -206,43 +211,40 @@ zio_buf_alloc(size_t size) void * zio_data_buf_alloc(size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE)); -#else - return (kmem_alloc(size, KM_SLEEP)); -#endif + if (zio_use_uma) + return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE)); + else + return (kmem_alloc(size, KM_SLEEP)); } void zio_buf_free(void *buf, size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - kmem_cache_free(zio_buf_cache[c], buf); -#else - kmem_free(buf, size); -#endif + if (zio_use_uma) + kmem_cache_free(zio_buf_cache[c], buf); + else + kmem_free(buf, size); } void zio_data_buf_free(void *buf, size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - kmem_cache_free(zio_data_buf_cache[c], buf); -#else - kmem_free(buf, size); -#endif + if (zio_use_uma) + kmem_cache_free(zio_data_buf_cache[c], buf); + else + kmem_free(buf, size); } /* From owner-svn-src-head@FreeBSD.ORG Sun May 16 15:18:26 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 27BAD106566C; Sun, 16 May 2010 15:18:26 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 144158FC14; Sun, 16 May 2010 15:18:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GFIPHS037981; Sun, 16 May 2010 15:18:25 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GFIPRM037976; Sun, 16 May 2010 15:18:25 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005161518.o4GFIPRM037976@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 15:18:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208149 - in head/sys: conf dev/pci powerpc/include powerpc/powermac powerpc/powerpc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 15:18:26 -0000 Author: nwhitehorn Date: Sun May 16 15:18:25 2010 New Revision: 208149 URL: http://svn.freebsd.org/changeset/base/208149 Log: Add support for the U4 PCI-Express bridge chipset used in late-generation Powermac G5 systems. MSI and several other things are not presently supported. The U3/U4 internal device support portions of this change were contributed by Andreas Tobler. MFC after: 1 week Added: head/sys/powerpc/powermac/uninorthpci.c (contents, props changed) Deleted: head/sys/powerpc/powermac/cpchtvar.h Modified: head/sys/conf/files.powerpc head/sys/dev/pci/pci.c head/sys/powerpc/include/intr_machdep.h head/sys/powerpc/powermac/cpcht.c head/sys/powerpc/powermac/uninorth.c head/sys/powerpc/powermac/uninorthvar.h head/sys/powerpc/powerpc/openpic.c Modified: head/sys/conf/files.powerpc ============================================================================== --- head/sys/conf/files.powerpc Sun May 16 15:14:59 2010 (r208148) +++ head/sys/conf/files.powerpc Sun May 16 15:18:25 2010 (r208149) @@ -139,7 +139,8 @@ powerpc/powermac/openpic_macio.c optiona powerpc/powermac/pswitch.c optional powermac pswitch powerpc/powermac/pmu.c optional powermac pmu powerpc/powermac/smu.c optional powermac smu -powerpc/powermac/uninorth.c optional powermac pci +powerpc/powermac/uninorth.c optional powermac +powerpc/powermac/uninorthpci.c optional powermac pci powerpc/powermac/vcoregpio.c optional powermac powerpc/powerpc/altivec.c optional aim powerpc/powerpc/atomic.S standard Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Sun May 16 15:14:59 2010 (r208148) +++ head/sys/dev/pci/pci.c Sun May 16 15:18:25 2010 (r208149) @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include -#if defined(__i386__) || defined(__amd64__) +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) #include #endif @@ -559,7 +559,7 @@ pci_read_extcap(device_t pcib, pcicfgreg { #define REG(n, w) PCIB_READ_CONFIG(pcib, cfg->bus, cfg->slot, cfg->func, n, w) #define WREG(n, v, w) PCIB_WRITE_CONFIG(pcib, cfg->bus, cfg->slot, cfg->func, n, v, w) -#if defined(__i386__) || defined(__amd64__) +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) uint64_t addr; #endif uint32_t val; @@ -603,7 +603,7 @@ pci_read_extcap(device_t pcib, pcicfgreg cfg->pp.pp_data = ptr + PCIR_POWER_DATA; } break; -#if defined(__i386__) || defined(__amd64__) +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) case PCIY_HT: /* HyperTransport */ /* Determine HT-specific capability type. */ val = REG(ptr + PCIR_HT_COMMAND, 2); Modified: head/sys/powerpc/include/intr_machdep.h ============================================================================== --- head/sys/powerpc/include/intr_machdep.h Sun May 16 15:14:59 2010 (r208148) +++ head/sys/powerpc/include/intr_machdep.h Sun May 16 15:18:25 2010 (r208149) @@ -30,6 +30,11 @@ #define INTR_VECTORS 256 +/* + * Default base address for MSI messages on PowerPC + */ +#define MSI_INTEL_ADDR_BASE 0xfee00000 + extern device_t pic; extern device_t pic8259; Modified: head/sys/powerpc/powermac/cpcht.c ============================================================================== --- head/sys/powerpc/powermac/cpcht.c Sun May 16 15:14:59 2010 (r208148) +++ head/sys/powerpc/powermac/cpcht.c Sun May 16 15:18:25 2010 (r208149) @@ -1,5 +1,5 @@ /*- - * Copyright (C) 2008 Nathan Whitehorn + * Copyright (C) 2008-2010 Nathan Whitehorn * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -39,7 +39,9 @@ #include #include +#include #include +#include #include #include @@ -47,396 +49,341 @@ #include #include -#include #include #include #include "pcib_if.h" - -#include "opt_isa.h" - -#ifdef DEV_ISA -#include -#endif - -static MALLOC_DEFINE(M_CPCHT, "cpcht", "CPC HT device information"); +#include "pic_if.h" /* - * HT Driver methods. + * IBM CPC9X5 Hypertransport Device interface. */ static int cpcht_probe(device_t); static int cpcht_attach(device_t); -static ofw_bus_get_devinfo_t cpcht_get_devinfo; - - -static device_method_t cpcht_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, cpcht_probe), - DEVMETHOD(device_attach, cpcht_attach), - - /* Bus interface */ - DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_read_ivar, bus_generic_read_ivar), - DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), - DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), - DEVMETHOD(bus_release_resource, bus_generic_release_resource), - DEVMETHOD(bus_activate_resource,bus_generic_activate_resource), - - /* ofw_bus interface */ - DEVMETHOD(ofw_bus_get_devinfo, cpcht_get_devinfo), - DEVMETHOD(ofw_bus_get_compat, ofw_bus_gen_get_compat), - DEVMETHOD(ofw_bus_get_model, ofw_bus_gen_get_model), - DEVMETHOD(ofw_bus_get_name, ofw_bus_gen_get_name), - DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node), - DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type), - - { 0, 0 } -}; - -static driver_t cpcht_driver = { - "cpcht", - cpcht_methods, - 0 -}; - -static devclass_t cpcht_devclass; - -DRIVER_MODULE(cpcht, nexus, cpcht_driver, cpcht_devclass, 0, 0); - -static int -cpcht_probe(device_t dev) -{ - const char *type, *compatible; - - type = ofw_bus_get_type(dev); - compatible = ofw_bus_get_compat(dev); - - if (type == NULL || compatible == NULL) - return (ENXIO); - - if (strcmp(type, "ht") != 0) - return (ENXIO); - - if (strcmp(compatible, "u3-ht") == 0) { - device_set_desc(dev, "IBM CPC925 HyperTransport Tunnel"); - return (0); - } else if (strcmp(compatible,"u4-ht") == 0) { - device_set_desc(dev, "IBM CPC945 HyperTransport Tunnel"); - return (0); - } - - return (ENXIO); -} - -static int -cpcht_attach(device_t dev) -{ - phandle_t root, child; - device_t cdev; - struct ofw_bus_devinfo *dinfo; - u_int32_t reg[6]; - - root = ofw_bus_get_node(dev); - - if (OF_getprop(root, "reg", reg, sizeof(reg)) < 8) - return (ENXIO); - - for (child = OF_child(root); child != 0; child = OF_peer(child)) { - dinfo = malloc(sizeof(*dinfo), M_CPCHT, M_WAITOK | M_ZERO); - - if (ofw_bus_gen_setup_devinfo(dinfo, child) != 0) { - free(dinfo, M_CPCHT); - continue; - } - cdev = device_add_child(dev, NULL, -1); - if (cdev == NULL) { - device_printf(dev, "<%s>: device_add_child failed\n", - dinfo->obd_name); - ofw_bus_gen_destroy_devinfo(dinfo); - free(dinfo, M_CPCHT); - continue; - } - device_set_ivars(cdev, dinfo); - } - - return (bus_generic_attach(dev)); -} - -static const struct ofw_bus_devinfo * -cpcht_get_devinfo(device_t dev, device_t child) -{ - return (device_get_ivars(child)); -} - -#ifdef DEV_ISA - -/* - * CPC ISA Device interface. - */ -static int cpcisa_probe(device_t); - -/* - * Driver methods. - */ -static device_method_t cpcisa_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, cpcisa_probe), - DEVMETHOD(device_attach, isab_attach), - /* Bus interface */ - DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_read_ivar, bus_generic_read_ivar), - DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), - DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), - DEVMETHOD(bus_release_resource, bus_generic_release_resource), - DEVMETHOD(bus_activate_resource,bus_generic_activate_resource), - - {0,0} -}; - -static driver_t cpcisa_driver = { - "isab", - cpcisa_methods, - 0 -}; - -DRIVER_MODULE(cpcisa, cpcht, cpcisa_driver, isab_devclass, 0, 0); - -static int -cpcisa_probe(device_t dev) -{ - const char *type; - - type = ofw_bus_get_type(dev); - - if (type == NULL) - return (ENXIO); - - if (strcmp(type, "isa") != 0) - return (ENXIO); - - device_set_desc(dev, "HyperTransport-ISA bridge"); - - return (0); -} - -#endif /* DEV_ISA */ - -/* - * CPC PCI Device interface. - */ -static int cpcpci_probe(device_t); -static int cpcpci_attach(device_t); +static void cpcht_configure_htbridge(device_t, phandle_t); /* * Bus interface. */ -static int cpcpci_read_ivar(device_t, device_t, int, +static int cpcht_read_ivar(device_t, device_t, int, uintptr_t *); -static struct resource * cpcpci_alloc_resource(device_t bus, - device_t child, int type, int *rid, u_long start, - u_long end, u_long count, u_int flags); -static int cpcpci_activate_resource(device_t bus, device_t child, +static struct resource *cpcht_alloc_resource(device_t bus, device_t child, + int type, int *rid, u_long start, u_long end, + u_long count, u_int flags); +static int cpcht_activate_resource(device_t bus, device_t child, + int type, int rid, struct resource *res); +static int cpcht_release_resource(device_t bus, device_t child, + int type, int rid, struct resource *res); +static int cpcht_deactivate_resource(device_t bus, device_t child, int type, int rid, struct resource *res); /* * pcib interface. */ -static int cpcpci_maxslots(device_t); -static u_int32_t cpcpci_read_config(device_t, u_int, u_int, u_int, +static int cpcht_maxslots(device_t); +static u_int32_t cpcht_read_config(device_t, u_int, u_int, u_int, u_int, int); -static void cpcpci_write_config(device_t, u_int, u_int, u_int, +static void cpcht_write_config(device_t, u_int, u_int, u_int, u_int, u_int32_t, int); -static int cpcpci_route_interrupt(device_t, device_t, int); +static int cpcht_route_interrupt(device_t bus, device_t dev, + int pin); /* * ofw_bus interface */ -static phandle_t cpcpci_get_node(device_t bus, device_t child); +static phandle_t cpcht_get_node(device_t bus, device_t child); /* * Driver methods. */ -static device_method_t cpcpci_methods[] = { +static device_method_t cpcht_methods[] = { /* Device interface */ - DEVMETHOD(device_probe, cpcpci_probe), - DEVMETHOD(device_attach, cpcpci_attach), + DEVMETHOD(device_probe, cpcht_probe), + DEVMETHOD(device_attach, cpcht_attach), /* Bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_read_ivar, cpcpci_read_ivar), + DEVMETHOD(bus_read_ivar, cpcht_read_ivar), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - DEVMETHOD(bus_alloc_resource, cpcpci_alloc_resource), - DEVMETHOD(bus_activate_resource, cpcpci_activate_resource), + DEVMETHOD(bus_alloc_resource, cpcht_alloc_resource), + DEVMETHOD(bus_release_resource, cpcht_release_resource), + DEVMETHOD(bus_activate_resource, cpcht_activate_resource), + DEVMETHOD(bus_deactivate_resource, cpcht_deactivate_resource), /* pcib interface */ - DEVMETHOD(pcib_maxslots, cpcpci_maxslots), - DEVMETHOD(pcib_read_config, cpcpci_read_config), - DEVMETHOD(pcib_write_config, cpcpci_write_config), - DEVMETHOD(pcib_route_interrupt, cpcpci_route_interrupt), + DEVMETHOD(pcib_maxslots, cpcht_maxslots), + DEVMETHOD(pcib_read_config, cpcht_read_config), + DEVMETHOD(pcib_write_config, cpcht_write_config), + DEVMETHOD(pcib_route_interrupt, cpcht_route_interrupt), /* ofw_bus interface */ - DEVMETHOD(ofw_bus_get_node, cpcpci_get_node), + DEVMETHOD(ofw_bus_get_node, cpcht_get_node), { 0, 0 } }; -static driver_t cpcpci_driver = { +struct cpcht_irq { + int ht_source; + + vm_offset_t ht_base; + vm_offset_t apple_eoi; + uint32_t eoi_data; + int edge; +}; + +static struct cpcht_irq *cpcht_irqmap = NULL; + +struct cpcht_softc { + device_t sc_dev; + phandle_t sc_node; + vm_offset_t sc_data; + uint64_t sc_populated_slots; + struct rman sc_mem_rman; + + struct cpcht_irq htirq_map[128]; +}; + +static driver_t cpcht_driver = { "pcib", - cpcpci_methods, - sizeof(struct cpcpci_softc) + cpcht_methods, + sizeof(struct cpcht_softc) }; -static devclass_t cpcpci_devclass; +static devclass_t cpcht_devclass; + +DRIVER_MODULE(cpcht, nexus, cpcht_driver, cpcht_devclass, 0, 0); -DRIVER_MODULE(cpcpci, cpcht, cpcpci_driver, cpcpci_devclass, 0, 0); +#define HTAPIC_REQUEST_EOI 0x20 +#define HTAPIC_TRIGGER_LEVEL 0x02 +#define HTAPIC_MASK 0x01 + +struct cpcht_range { + u_int32_t pci_hi; + u_int32_t pci_mid; + u_int32_t pci_lo; + u_int32_t junk; + u_int32_t host_hi; + u_int32_t host_lo; + u_int32_t size_hi; + u_int32_t size_lo; +}; static int -cpcpci_probe(device_t dev) +cpcht_probe(device_t dev) { - const char *type; + const char *type, *compatible; type = ofw_bus_get_type(dev); + compatible = ofw_bus_get_compat(dev); - if (type == NULL) + if (type == NULL || compatible == NULL) return (ENXIO); - if (strcmp(type, "pci") != 0) + if (strcmp(type, "ht") != 0) return (ENXIO); - device_set_desc(dev, "HyperTransport-PCI bridge"); - + if (strcmp(compatible, "u3-ht") != 0) + return (ENXIO); + + + device_set_desc(dev, "IBM CPC9X5 HyperTransport Tunnel"); return (0); } static int -cpcpci_attach(device_t dev) +cpcht_attach(device_t dev) { - struct cpcpci_softc *sc; - phandle_t node; - u_int32_t reg[2], busrange[2], config_base; - struct cpcpci_range *rp, *io, *mem[2]; - struct cpcpci_range fakeio; - int nmem, i; + struct cpcht_softc *sc; + phandle_t node, child; + u_int32_t reg[3]; + int error; node = ofw_bus_get_node(dev); sc = device_get_softc(dev); - if (OF_getprop(OF_parent(node), "reg", reg, sizeof(reg)) < 8) - return (ENXIO); - - if (OF_getprop(node, "bus-range", busrange, sizeof(busrange)) != 8) + if (OF_getprop(node, "reg", reg, sizeof(reg)) < 12) return (ENXIO); sc->sc_dev = dev; sc->sc_node = node; - sc->sc_bus = busrange[0]; - config_base = reg[1]; - if (sc->sc_bus) - config_base += 0x01000000UL + (sc->sc_bus << 16); - sc->sc_data = (vm_offset_t)pmap_mapdev(config_base, PAGE_SIZE << 4); - - bzero(sc->sc_range, sizeof(sc->sc_range)); - sc->sc_nrange = OF_getprop(node, "ranges", sc->sc_range, - sizeof(sc->sc_range)); + sc->sc_populated_slots = 0; + sc->sc_data = (vm_offset_t)pmap_mapdev(reg[1], reg[2]); - if (sc->sc_nrange == -1) { - device_printf(dev, "could not get ranges\n"); - return (ENXIO); - } + sc->sc_mem_rman.rm_type = RMAN_ARRAY; + sc->sc_mem_rman.rm_descr = "CPCHT Device Memory"; + error = rman_init(&sc->sc_mem_rman); + + if (error) { + device_printf(dev, "rman_init() failed. error = %d\n", error); + return (error); + } + + /* + * Set up the resource manager and the HT->MPIC mapping. For cpcht, + * the ranges are properties of the child bridges, and this is also + * where we get the HT interrupts properties. + */ + + bzero(sc->htirq_map, sizeof(sc->htirq_map)); + for (child = OF_child(node); child != 0; child = OF_peer(child)) + cpcht_configure_htbridge(dev, child); + + /* Now make the mapping table available to the MPIC */ + cpcht_irqmap = sc->htirq_map; + + device_add_child(dev, "pci", device_get_unit(dev)); + + return (bus_generic_attach(dev)); +} - sc->sc_range[6].pci_hi = 0; - io = NULL; - nmem = 0; +static void +cpcht_configure_htbridge(device_t dev, phandle_t child) +{ + struct cpcht_softc *sc; + struct ofw_pci_register pcir; + struct cpcht_range ranges[6], *rp; + int nranges, ptr, nextptr; + uint32_t vend, val; + int i, nirq, irq; + u_int f, s; + + sc = device_get_softc(dev); + if (OF_getprop(child, "reg", &pcir, sizeof(pcir)) == -1) + return; + + s = OFW_PCI_PHYS_HI_DEVICE(pcir.phys_hi); + f = OFW_PCI_PHYS_HI_FUNCTION(pcir.phys_hi); - for (rp = sc->sc_range; rp->pci_hi != 0; rp++) { + /* + * Mark this slot is populated. The remote south bridge does + * not like us talking to unpopulated slots on the root bus. + */ + sc->sc_populated_slots |= (1 << s); + + /* + * Next grab this child bus's bus ranges. + */ + bzero(ranges, sizeof(ranges)); + nranges = OF_getprop(child, "ranges", ranges, sizeof(ranges)); + + ranges[6].pci_hi = 0; + for (rp = ranges; rp->pci_hi != 0; rp++) { switch (rp->pci_hi & OFW_PCI_PHYS_HI_SPACEMASK) { case OFW_PCI_PHYS_HI_SPACE_CONFIG: break; case OFW_PCI_PHYS_HI_SPACE_IO: - io = rp; - break; case OFW_PCI_PHYS_HI_SPACE_MEM32: - mem[nmem] = rp; - nmem++; + rman_manage_region(&sc->sc_mem_rman, rp->pci_lo, + rp->pci_lo + rp->size_lo - 1); break; case OFW_PCI_PHYS_HI_SPACE_MEM64: + panic("64-bit CPCHT reserved memory!"); break; } } - if (io == NULL) { - /* - * On at least some machines, the I/O port range is - * not exported in the OF device tree. So hardcode it. - */ - - fakeio.host_lo = 0; - fakeio.pci_lo = reg[1]; - fakeio.size_lo = 0x00400000; - if (sc->sc_bus) - fakeio.pci_lo += 0x02000000UL + (sc->sc_bus << 14); - io = &fakeio; - } - sc->sc_io_rman.rm_type = RMAN_ARRAY; - sc->sc_io_rman.rm_descr = "CPC 9xx PCI I/O Ports"; - sc->sc_iostart = io->host_lo; - if (rman_init(&sc->sc_io_rman) != 0 || - rman_manage_region(&sc->sc_io_rman, io->pci_lo, - io->pci_lo + io->size_lo - 1) != 0) { - device_printf(dev, "failed to set up io range management\n"); - return (ENXIO); - } - - if (nmem == 0) { - device_printf(dev, "can't find mem ranges\n"); - return (ENXIO); - } - sc->sc_mem_rman.rm_type = RMAN_ARRAY; - sc->sc_mem_rman.rm_descr = "CPC 9xx PCI Memory"; - if (rman_init(&sc->sc_mem_rman) != 0) { - device_printf(dev, - "failed to init mem range resources\n"); - return (ENXIO); - } - for (i = 0; i < nmem; i++) { - if (rman_manage_region(&sc->sc_mem_rman, mem[i]->pci_lo, - mem[i]->pci_lo + mem[i]->size_lo - 1) != 0) { - device_printf(dev, - "failed to set up memory range management\n"); - return (ENXIO); + /* + * Next build up any HT->MPIC mappings for this sub-bus. One would + * naively hope that enabling, disabling, and EOIing interrupts would + * cause the appropriate HT bus transactions to that effect. This is + * not the case. + * + * Instead, we have to muck about on the HT peer's root PCI bridges, + * figure out what interrupts they send, enable them, and cache + * the location of their WaitForEOI registers so that we can + * send EOIs later. + */ + + /* All the devices we are interested in have caps */ + if (!(PCIB_READ_CONFIG(dev, 0, s, f, PCIR_STATUS, 2) + & PCIM_STATUS_CAPPRESENT)) + return; + + nextptr = PCIB_READ_CONFIG(dev, 0, s, f, PCIR_CAP_PTR, 1); + while (nextptr != 0) { + ptr = nextptr; + nextptr = PCIB_READ_CONFIG(dev, 0, s, f, + ptr + PCICAP_NEXTPTR, 1); + + /* Find the HT IRQ capabilities */ + if (PCIB_READ_CONFIG(dev, 0, s, f, + ptr + PCICAP_ID, 1) != PCIY_HT) + continue; + + val = PCIB_READ_CONFIG(dev, 0, s, f, ptr + PCIR_HT_COMMAND, 2); + if ((val & PCIM_HTCMD_CAP_MASK) != PCIM_HTCAP_INTERRUPT) + continue; + + /* Ask for the IRQ count */ + PCIB_WRITE_CONFIG(dev, 0, s, f, ptr + PCIR_HT_COMMAND, 0x1, 1); + nirq = PCIB_READ_CONFIG(dev, 0, s, f, ptr + 4, 4); + nirq = ((nirq >> 16) & 0xff) + 1; + + device_printf(dev, "%d HT IRQs on device %d.%d\n", nirq, s, f); + + for (i = 0; i < nirq; i++) { + PCIB_WRITE_CONFIG(dev, 0, s, f, + ptr + PCIR_HT_COMMAND, 0x10 + (i << 1), 1); + irq = PCIB_READ_CONFIG(dev, 0, s, f, ptr + 4, 4); + + /* + * Mask this interrupt for now. + */ + PCIB_WRITE_CONFIG(dev, 0, s, f, ptr + 4, + irq | HTAPIC_MASK, 4); + irq = (irq >> 16) & 0xff; + + sc->htirq_map[irq].ht_source = i; + sc->htirq_map[irq].ht_base = sc->sc_data + + (((((s & 0x1f) << 3) | (f & 0x07)) << 8) | (ptr)); + + PCIB_WRITE_CONFIG(dev, 0, s, f, + ptr + PCIR_HT_COMMAND, 0x11 + (i << 1), 1); + sc->htirq_map[irq].eoi_data = + PCIB_READ_CONFIG(dev, 0, s, f, ptr + 4, 4) | + 0x80000000; + + /* + * Apple uses a non-compliant IO/APIC that differs + * in how we signal EOIs. Check if this device was + * made by Apple, and act accordingly. + */ + vend = PCIB_READ_CONFIG(dev, 0, s, f, + PCIR_DEVVENDOR, 4); + if ((vend & 0xffff) == 0x106b) + sc->htirq_map[irq].apple_eoi = + (sc->htirq_map[irq].ht_base - ptr) + 0x60; } } - - ofw_bus_setup_iinfo(node, &sc->sc_pci_iinfo, sizeof(cell_t)); - - device_add_child(dev, "pci", device_get_unit(dev)); - - return (bus_generic_attach(dev)); } static int -cpcpci_maxslots(device_t dev) +cpcht_maxslots(device_t dev) { return (PCI_SLOTMAX); } static u_int32_t -cpcpci_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, +cpcht_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, int width) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; vm_offset_t caoff; sc = device_get_softc(dev); caoff = sc->sc_data + (((((slot & 0x1f) << 3) | (func & 0x07)) << 8) | reg); + if (bus == 0 && (!(sc->sc_populated_slots & (1 << slot)) || func > 0)) + return (0xffffffff); + + if (bus > 0) + caoff += 0x01000000UL + (bus << 16); + switch (width) { case 1: return (in8rb(caoff)); @@ -453,16 +400,22 @@ cpcpci_read_config(device_t dev, u_int b } static void -cpcpci_write_config(device_t dev, u_int bus, u_int slot, u_int func, +cpcht_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, u_int32_t val, int width) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; vm_offset_t caoff; sc = device_get_softc(dev); caoff = sc->sc_data + (((((slot & 0x1f) << 3) | (func & 0x07)) << 8) | reg); + if (bus == 0 && (!(sc->sc_populated_slots & (1 << slot)) || func > 0)) + return; + + if (bus > 0) + caoff += 0x01000000UL + (bus << 16); + switch (width) { case 1: out8rb(caoff, val); @@ -477,9 +430,9 @@ cpcpci_write_config(device_t dev, u_int } static int -cpcpci_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) +cpcht_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; sc = device_get_softc(dev); @@ -488,38 +441,53 @@ cpcpci_read_ivar(device_t dev, device_t *result = device_get_unit(dev); return (0); case PCIB_IVAR_BUS: - *result = sc->sc_bus; + *result = 0; /* Root bus */ return (0); } return (ENOENT); } +static phandle_t +cpcht_get_node(device_t bus, device_t dev) +{ + struct cpcht_softc *sc; + + sc = device_get_softc(bus); + /* We only have one child, the PCI bus, which needs our own node. */ + return (sc->sc_node); +} + +static int +cpcht_route_interrupt(device_t bus, device_t dev, int pin) +{ + return (pin); +} + static struct resource * -cpcpci_alloc_resource(device_t bus, device_t child, int type, int *rid, +cpcht_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; struct resource *rv; struct rman *rm; - int needactivate; + int needactivate, err; needactivate = flags & RF_ACTIVE; flags &= ~RF_ACTIVE; sc = device_get_softc(bus); + err = 0; switch (type) { + case SYS_RES_IOPORT: + end = min(end, start + count); + + /* FALLTHROUGH */ case SYS_RES_MEMORY: rm = &sc->sc_mem_rman; break; - case SYS_RES_IOPORT: - rm = &sc->sc_io_rman; - if (rm == NULL) - return (NULL); - break; - case SYS_RES_IRQ: return (bus_alloc_resource(bus, type, rid, start, end, count, flags)); @@ -553,11 +521,11 @@ cpcpci_alloc_resource(device_t bus, devi } static int -cpcpci_activate_resource(device_t bus, device_t child, int type, int rid, +cpcht_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *res) { void *p; - struct cpcpci_softc *sc; + struct cpcht_softc *sc; sc = device_get_softc(bus); @@ -568,15 +536,9 @@ cpcpci_activate_resource(device_t bus, d vm_offset_t start; start = (vm_offset_t)rman_get_start(res); - /* - * For i/o-ports, convert the start address to the - * CPC PCI i/o window - */ - if (type == SYS_RES_IOPORT) - start += sc->sc_iostart; if (bootverbose) - printf("cpcpci mapdev: start %x, len %ld\n", start, + printf("cpcht mapdev: start %zx, len %ld\n", start, rman_get_size(res)); p = pmap_mapdev(start, (vm_size_t)rman_get_size(res)); @@ -590,36 +552,259 @@ cpcpci_activate_resource(device_t bus, d return (rman_activate_resource(res)); } -static phandle_t -cpcpci_get_node(device_t bus, device_t dev) +static int +cpcht_release_resource(device_t bus, device_t child, int type, int rid, + struct resource *res) { - struct cpcpci_softc *sc; - sc = device_get_softc(bus); - /* We only have one child, the PCI bus, which needs our own node. */ - return (sc->sc_node); + if (rman_get_flags(res) & RF_ACTIVE) { + int error = bus_deactivate_resource(child, type, rid, res); + if (error) + return error; + } + + return (rman_release_resource(res)); } static int -cpcpci_route_interrupt(device_t bus, device_t dev, int pin) +cpcht_deactivate_resource(device_t bus, device_t child, int type, int rid, + struct resource *res) { - struct cpcpci_softc *sc; - struct ofw_pci_register reg; - uint32_t pintr, mintr; - uint8_t maskbuf[sizeof(reg) + sizeof(pintr)]; - sc = device_get_softc(bus); - pintr = pin; - if (ofw_bus_lookup_imap(ofw_bus_get_node(dev), &sc->sc_pci_iinfo, ®, - sizeof(reg), &pintr, sizeof(pintr), &mintr, sizeof(mintr), maskbuf)) - return (mintr); - - /* Maybe it's a real interrupt, not an intpin */ - if (pin > 4) - return (pin); - - device_printf(bus, "could not route pin %d for device %d.%d\n", - pin, pci_get_slot(dev), pci_get_function(dev)); - return (PCI_INVALID_IRQ); + /* + * If this is a memory resource, unmap it. + */ + if ((type == SYS_RES_MEMORY) || (type == SYS_RES_IOPORT)) { + u_int32_t psize; + + psize = rman_get_size(res); + pmap_unmapdev((vm_offset_t)rman_get_virtual(res), psize); + } + + return (rman_deactivate_resource(res)); +} + +/* + * Driver for the integrated MPIC on U3/U4 (CPC925/CPC945) + */ + +static int openpic_cpcht_probe(device_t); +static int openpic_cpcht_attach(device_t); +static void openpic_cpcht_config(device_t, u_int irq, + enum intr_trigger trig, enum intr_polarity pol); +static void openpic_cpcht_enable(device_t, u_int irq, u_int vector); +static void openpic_cpcht_unmask(device_t, u_int irq); +static void openpic_cpcht_eoi(device_t, u_int irq); + +static device_method_t openpic_cpcht_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, openpic_cpcht_probe), + DEVMETHOD(device_attach, openpic_cpcht_attach), + + /* PIC interface */ + DEVMETHOD(pic_config, openpic_cpcht_config), + DEVMETHOD(pic_dispatch, openpic_dispatch), + DEVMETHOD(pic_enable, openpic_cpcht_enable), + DEVMETHOD(pic_eoi, openpic_cpcht_eoi), + DEVMETHOD(pic_ipi, openpic_ipi), + DEVMETHOD(pic_mask, openpic_mask), + DEVMETHOD(pic_unmask, openpic_cpcht_unmask), + + { 0, 0 }, +}; + +struct openpic_cpcht_softc { + struct openpic_softc sc_openpic; + + struct mtx sc_ht_mtx; +}; + +static driver_t openpic_cpcht_driver = { + "htpic", + openpic_cpcht_methods, + sizeof(struct openpic_softc), +}; + +DRIVER_MODULE(openpic, unin, openpic_cpcht_driver, openpic_devclass, 0, 0); + +static int +openpic_cpcht_probe(device_t dev) +{ + const char *type = ofw_bus_get_type(dev); + + if (strcmp(type, "open-pic") != 0) + return (ENXIO); + + device_set_desc(dev, OPENPIC_DEVSTR); + return (0); +} + +static int +openpic_cpcht_attach(device_t dev) +{ + struct openpic_cpcht_softc *sc; + int err, irq; + + err = openpic_attach(dev); + if (err != 0) + return (err); + + /* + * The HT APIC stuff is not thread-safe, so we need a mutex to + * protect it. + */ + sc = device_get_softc(dev); + mtx_init(&sc->sc_ht_mtx, "htpic", NULL, MTX_SPIN); + + /* + * Interrupts 0-3 are internally sourced and are level triggered + * active low. Interrupts 4-123 are connected to a pulse generator + * and should be programmed as edge triggered low-to-high. + * + * IBM CPC945 Manual, Section 9.3. + */ + + for (irq = 0; irq < 4; irq++) + openpic_config(dev, irq, INTR_TRIGGER_LEVEL, INTR_POLARITY_LOW); + for (irq = 4; irq < 124; irq++) + openpic_config(dev, irq, INTR_TRIGGER_EDGE, INTR_POLARITY_LOW); + + return (0); +} + +static void +openpic_cpcht_config(device_t dev, u_int irq, enum intr_trigger trig, + enum intr_polarity pol) +{ + struct openpic_cpcht_softc *sc; + uint32_t ht_irq; + + /* + * The interrupt settings for the MPIC are completely determined + * by the internal wiring in the northbridge. Real changes to these + * settings need to be negotiated with the remote IO-APIC on the HT + * link. + */ + + sc = device_get_softc(dev); + + if (cpcht_irqmap != NULL && irq < 128 && + cpcht_irqmap[irq].ht_base > 0 && !cpcht_irqmap[irq].edge) { + mtx_lock_spin(&sc->sc_ht_mtx); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Sun May 16 15:21:13 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5DB7C1065677; Sun, 16 May 2010 15:21:13 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4CB7B8FC15; Sun, 16 May 2010 15:21:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GFLDXg038740; Sun, 16 May 2010 15:21:13 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GFLDu5038738; Sun, 16 May 2010 15:21:13 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005161521.o4GFLDu5038738@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 15:21:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208150 - head/sys/powerpc/cpufreq X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 15:21:13 -0000 Author: nwhitehorn Date: Sun May 16 15:21:13 2010 New Revision: 208150 URL: http://svn.freebsd.org/changeset/base/208150 Log: On SMP G5 systems, sometimes the power-mode-data property is only found on CPU 0, so look there if it is not otherwise available. Modified: head/sys/powerpc/cpufreq/pcr.c Modified: head/sys/powerpc/cpufreq/pcr.c ============================================================================== --- head/sys/powerpc/cpufreq/pcr.c Sun May 16 15:18:25 2010 (r208149) +++ head/sys/powerpc/cpufreq/pcr.c Sun May 16 15:21:13 2010 (r208150) @@ -202,6 +202,11 @@ pcr_attach(device_t dev) return (ENXIO); } + if (OF_getproplen(cpu, "power-mode-data") <= 0) { + /* Use the first CPU's node */ + cpu = OF_child(OF_parent(cpu)); + } + /* * Collect the PCR values for each mode from the device tree. * These include bus timing information, and so cannot be From owner-svn-src-head@FreeBSD.ORG Sun May 16 15:57:00 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A332106566C; Sun, 16 May 2010 15:57:00 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 47BA98FC14; Sun, 16 May 2010 15:57:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GFv0nB046666; Sun, 16 May 2010 15:57:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GFv0Lf046659; Sun, 16 May 2010 15:57:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005161557.o4GFv0Lf046659@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 15:57:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208152 - in head/sys: dev/ofw powerpc/aim powerpc/ofw X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 15:57:00 -0000 Author: nwhitehorn Date: Sun May 16 15:56:59 2010 New Revision: 208152 URL: http://svn.freebsd.org/changeset/base/208152 Log: On PowerMac11,2 and (presumably) PowerMac12,1, we need to quiesce the firmware in order to take over control of the SMU. Without doing this, the firmware background process doing fan control will run amok as we take over the system and crash the management chip. This is limited to these two machines because our kernel is heavily dependent on firmware accesses, and so quiescing firmware can cause nasty problems. Modified: head/sys/dev/ofw/ofw_if.m head/sys/dev/ofw/ofw_standard.c head/sys/dev/ofw/openfirm.c head/sys/dev/ofw/openfirm.h head/sys/powerpc/aim/ofw_machdep.c head/sys/powerpc/ofw/ofw_real.c Modified: head/sys/dev/ofw/ofw_if.m ============================================================================== --- head/sys/dev/ofw/ofw_if.m Sun May 16 15:22:42 2010 (r208151) +++ head/sys/dev/ofw/ofw_if.m Sun May 16 15:56:59 2010 (r208152) @@ -340,6 +340,13 @@ METHOD void release { # Commands for returning control to the firmware /** + * @brief Turn off firmware background activities + */ +METHOD void quiesce { + ofw_t _ofw; +}; + +/** * @brief Temporarily return control to firmware. */ METHOD void enter { Modified: head/sys/dev/ofw/ofw_standard.c ============================================================================== --- head/sys/dev/ofw/ofw_standard.c Sun May 16 15:22:42 2010 (r208151) +++ head/sys/dev/ofw/ofw_standard.c Sun May 16 15:56:59 2010 (r208152) @@ -105,6 +105,7 @@ static ssize_t ofw_std_write(ofw_t ofw, static int ofw_std_seek(ofw_t ofw, ihandle_t instance, uint64_t pos); static caddr_t ofw_std_claim(ofw_t ofw, void *virt, size_t size, u_int align); static void ofw_std_release(ofw_t ofw, void *virt, size_t size); +static void ofw_std_quiesce(ofw_t ofw); static void ofw_std_enter(ofw_t ofw); static void ofw_std_exit(ofw_t ofw); @@ -133,6 +134,7 @@ static ofw_method_t ofw_std_methods[] = OFWMETHOD(ofw_seek, ofw_std_seek), OFWMETHOD(ofw_claim, ofw_std_claim), OFWMETHOD(ofw_release, ofw_std_release), + OFWMETHOD(ofw_quiesce, ofw_std_quiesce), OFWMETHOD(ofw_enter, ofw_std_enter), OFWMETHOD(ofw_exit, ofw_std_exit), @@ -730,6 +732,23 @@ ofw_std_release(ofw_t ofw, void *virt, s * Control transfer functions */ +/* Turn off OF background tasks */ +static void +ofw_std_quiesce(ofw_t ofw) +{ + struct { + cell_t name; + cell_t nargs; + cell_t nreturns; + } args = { + (cell_t)"quiesce", + 0, + 0, + }; + + openfirmware(&args); +} + /* Suspend and drop back to the Open Firmware interface. */ static void ofw_std_enter(ofw_t ofw) Modified: head/sys/dev/ofw/openfirm.c ============================================================================== --- head/sys/dev/ofw/openfirm.c Sun May 16 15:22:42 2010 (r208151) +++ head/sys/dev/ofw/openfirm.c Sun May 16 15:56:59 2010 (r208152) @@ -409,6 +409,15 @@ OF_release(void *virt, size_t size) * Control transfer functions */ +/* Turn off OF background tasks */ +void +OF_quiesce() +{ + + OFW_QUIESCE(ofw_obj); +} + + /* Suspend and drop back to the Open Firmware interface. */ void OF_enter() Modified: head/sys/dev/ofw/openfirm.h ============================================================================== --- head/sys/dev/ofw/openfirm.h Sun May 16 15:22:42 2010 (r208151) +++ head/sys/dev/ofw/openfirm.h Sun May 16 15:56:59 2010 (r208152) @@ -133,6 +133,7 @@ void *OF_claim(void *virtrequest, size_ void OF_release(void *virt, size_t size); /* Control transfer functions */ +void OF_quiesce(void); void OF_enter(void); void OF_exit(void) __attribute__((noreturn)); Modified: head/sys/powerpc/aim/ofw_machdep.c ============================================================================== --- head/sys/powerpc/aim/ofw_machdep.c Sun May 16 15:22:42 2010 (r208151) +++ head/sys/powerpc/aim/ofw_machdep.c Sun May 16 15:56:59 2010 (r208152) @@ -281,6 +281,8 @@ OF_initial_setup(void *fdt_ptr, void *ju boolean_t OF_bootstrap() { + char model[32]; + phandle_t rootnode; boolean_t status = FALSE; mtx_init(&ofw_mutex, "open firmware", NULL, MTX_DEF); @@ -295,6 +297,17 @@ OF_bootstrap() return status; OF_init(openfirmware); + + /* + * On some machines, we need to quiesce OF to turn off + * background processes. + */ + rootnode = OF_finddevice("/"); + if (OF_getprop(rootnode, "model", model, sizeof(model)) > 0) { + if (strcmp(model, "PowerMac11,2") == 0 || + strcmp(model, "PowerMac12,1") == 0) + OF_quiesce(); + } } else { status = OF_install(OFW_FDT, 0); Modified: head/sys/powerpc/ofw/ofw_real.c ============================================================================== --- head/sys/powerpc/ofw/ofw_real.c Sun May 16 15:22:42 2010 (r208151) +++ head/sys/powerpc/ofw/ofw_real.c Sun May 16 15:56:59 2010 (r208152) @@ -106,6 +106,7 @@ static ssize_t ofw_real_write(ofw_t, iha static int ofw_real_seek(ofw_t, ihandle_t instance, u_int64_t pos); static caddr_t ofw_real_claim(ofw_t, void *virt, size_t size, u_int align); static void ofw_real_release(ofw_t, void *virt, size_t size); +static void ofw_real_quiesce(ofw_t); static void ofw_real_enter(ofw_t); static void ofw_real_exit(ofw_t); @@ -133,6 +134,7 @@ static ofw_method_t ofw_real_methods[] = OFWMETHOD(ofw_seek, ofw_real_seek), OFWMETHOD(ofw_claim, ofw_real_claim), OFWMETHOD(ofw_release, ofw_real_release), + OFWMETHOD(ofw_quiesce, ofw_real_quiesce), OFWMETHOD(ofw_enter, ofw_real_enter), OFWMETHOD(ofw_exit, ofw_real_exit), @@ -889,6 +891,27 @@ ofw_real_release(ofw_t ofw, void *virt, * Control transfer functions */ +/* Turn off OF background tasks */ +static void +ofw_real_quiesce(ofw_t ofw) +{ + vm_offset_t argsptr; + struct { + cell_t name; + cell_t nargs; + cell_t nreturns; + } args; + + args.name = (cell_t)(uintptr_t)"quiesce"; + args.nargs = 0; + args.nreturns = 0; + + ofw_real_start(); + argsptr = ofw_real_map(&args, sizeof(args)); + openfirmware((void *)argsptr); + ofw_real_stop(); +} + /* Suspend and drop back to the Open Firmware interface. */ static void ofw_real_enter(ofw_t ofw) From owner-svn-src-head@FreeBSD.ORG Sun May 16 16:54:05 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C6B04106566C; Sun, 16 May 2010 16:54:05 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B5FFB8FC0C; Sun, 16 May 2010 16:54:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GGs5FE059513; Sun, 16 May 2010 16:54:05 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GGs56l059511; Sun, 16 May 2010 16:54:05 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005161654.o4GGs56l059511@svn.freebsd.org> From: Alan Cox Date: Sun, 16 May 2010 16:54:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208159 - head/sys/vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 16:54:05 -0000 Author: alc Date: Sun May 16 16:54:05 2010 New Revision: 208159 URL: http://svn.freebsd.org/changeset/base/208159 Log: Add a comment about the proper use of vm_object_page_remove(). MFC after: 1 week Modified: head/sys/vm/vm_object.c Modified: head/sys/vm/vm_object.c ============================================================================== --- head/sys/vm/vm_object.c Sun May 16 16:52:56 2010 (r208158) +++ head/sys/vm/vm_object.c Sun May 16 16:54:05 2010 (r208159) @@ -1906,7 +1906,8 @@ vm_object_collapse(vm_object_t object) * that contain managed pages. There are two exceptions. First, * it may be performed on the kernel and kmem objects. Second, * it may be used by msync(..., MS_INVALIDATE) to invalidate - * device-backed pages. + * device-backed pages. In both of these cases, "clean_only" + * must be FALSE. * * The object must be locked. */ From owner-svn-src-head@FreeBSD.ORG Sun May 16 17:03:56 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 612081065670; Sun, 16 May 2010 17:03:56 +0000 (UTC) (envelope-from rrs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4ED8A8FC16; Sun, 16 May 2010 17:03:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GH3ufx061720; Sun, 16 May 2010 17:03:56 GMT (envelope-from rrs@svn.freebsd.org) Received: (from rrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GH3ug7061710; Sun, 16 May 2010 17:03:56 GMT (envelope-from rrs@svn.freebsd.org) Message-Id: <201005161703.o4GH3ug7061710@svn.freebsd.org> From: Randall Stewart Date: Sun, 16 May 2010 17:03:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208160 - head/sys/netinet X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 17:03:56 -0000 Author: rrs Date: Sun May 16 17:03:56 2010 New Revision: 208160 URL: http://svn.freebsd.org/changeset/base/208160 Log: This adds back the Iterator to the sctp code base. We now properly have ONE thread that services all VNET's. Also we purge out the old timer based iterator code which had multiple LOR's and other issues. MFC after: 3 days Modified: head/sys/netinet/sctp_bsd_addr.c head/sys/netinet/sctp_bsd_addr.h head/sys/netinet/sctp_constants.h head/sys/netinet/sctp_lock_bsd.h head/sys/netinet/sctp_pcb.c head/sys/netinet/sctp_pcb.h head/sys/netinet/sctp_structs.h head/sys/netinet/sctp_timer.c head/sys/netinet/sctputil.c Modified: head/sys/netinet/sctp_bsd_addr.c ============================================================================== --- head/sys/netinet/sctp_bsd_addr.c Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_bsd_addr.c Sun May 16 17:03:56 2010 (r208160) @@ -49,16 +49,6 @@ __FBSDID("$FreeBSD$"); #include /* Declare all of our malloc named types */ - -/* Note to Michael/Peter for mac-os, - * I think mac has this too since I - * do see the M_PCB type, so I - * will also put in the mac file the - * MALLOC_DECLARE. If this does not - * work for mac uncomment the defines for - * the strings that we use in Panda, I put - * them in comments in the mac-os file. - */ MALLOC_DEFINE(SCTP_M_MAP, "sctp_map", "sctp asoc map descriptor"); MALLOC_DEFINE(SCTP_M_STRMI, "sctp_stri", "sctp stream in array"); MALLOC_DEFINE(SCTP_M_STRMO, "sctp_stro", "sctp stream out array"); @@ -79,46 +69,77 @@ MALLOC_DEFINE(SCTP_M_MVRF, "sctp_mvrf", MALLOC_DEFINE(SCTP_M_ITER, "sctp_iter", "sctp iterator control"); MALLOC_DEFINE(SCTP_M_SOCKOPT, "sctp_socko", "sctp socket option"); -#if defined(SCTP_USE_THREAD_BASED_ITERATOR) +/* Global NON-VNET structure that controls the iterator */ +struct iterator_control sctp_it_ctl; +static int __sctp_thread_based_iterator_started = 0; + + +static void +sctp_cleanup_itqueue(void) +{ + struct sctp_iterator *it; + + while ((it = TAILQ_FIRST(&sctp_it_ctl.iteratorhead)) != NULL) { + if (it->function_atend != NULL) { + (*it->function_atend) (it->pointer, it->val); + } + TAILQ_REMOVE(&sctp_it_ctl.iteratorhead, it, sctp_nxt_itr); + SCTP_FREE(it, SCTP_M_ITER); + } +} + + void sctp_wakeup_iterator(void) { - wakeup(&SCTP_BASE_INFO(iterator_running)); + wakeup(&sctp_it_ctl.iterator_running); } static void sctp_iterator_thread(void *v) { - CURVNET_SET((struct vnet *)v); SCTP_IPI_ITERATOR_WQ_LOCK(); - SCTP_BASE_INFO(iterator_running) = 0; while (1) { - msleep(&SCTP_BASE_INFO(iterator_running), - &SCTP_BASE_INFO(ipi_iterator_wq_mtx), + msleep(&sctp_it_ctl.iterator_running, + &sctp_it_ctl.ipi_iterator_wq_mtx, 0, "waiting_for_work", 0); - if (SCTP_BASE_INFO(threads_must_exit)) { + if (sctp_it_ctl.iterator_flags & SCTP_ITERATOR_MUST_EXIT) { SCTP_IPI_ITERATOR_WQ_DESTROY(); + SCTP_ITERATOR_LOCK_DESTROY(); + sctp_cleanup_itqueue(); + __sctp_thread_based_iterator_started = 0; kthread_exit(); } sctp_iterator_worker(); } - CURVNET_RESTORE(); } void sctp_startup_iterator(void) { + if (__sctp_thread_based_iterator_started) { + /* You only get one */ + return; + } + /* init the iterator head */ + __sctp_thread_based_iterator_started = 1; + sctp_it_ctl.iterator_running = 0; + sctp_it_ctl.iterator_flags = 0; + sctp_it_ctl.cur_it = NULL; + SCTP_ITERATOR_LOCK_INIT(); + SCTP_IPI_ITERATOR_WQ_INIT(); + TAILQ_INIT(&sctp_it_ctl.iteratorhead); + int ret; ret = kproc_create(sctp_iterator_thread, - (void *)curvnet, - &SCTP_BASE_INFO(thread_proc), + (void *)NULL, + &sctp_it_ctl.thread_proc, RFPROC, SCTP_KTHREAD_PAGES, SCTP_KTRHEAD_NAME); } -#endif #ifdef INET6 Modified: head/sys/netinet/sctp_bsd_addr.h ============================================================================== --- head/sys/netinet/sctp_bsd_addr.h Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_bsd_addr.h Sun May 16 17:03:56 2010 (r208160) @@ -37,12 +37,11 @@ __FBSDID("$FreeBSD$"); #if defined(_KERNEL) || defined(__Userspace__) -#if defined(SCTP_USE_THREAD_BASED_ITERATOR) +extern struct iterator_control sctp_it_ctl; void sctp_wakeup_iterator(void); void sctp_startup_iterator(void); -#endif #ifdef INET6 void sctp_gather_internal_ifa_flags(struct sctp_ifa *ifa); Modified: head/sys/netinet/sctp_constants.h ============================================================================== --- head/sys/netinet/sctp_constants.h Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_constants.h Sun May 16 17:03:56 2010 (r208160) @@ -87,10 +87,6 @@ __FBSDID("$FreeBSD$"); /* #define SCTP_AUDITING_ENABLED 1 used for debug/auditing */ #define SCTP_AUDIT_SIZE 256 -/* temporary disabled since it does not work with VNET. */ -#if 0 -#define SCTP_USE_THREAD_BASED_ITERATOR 1 -#endif #define SCTP_KTRHEAD_NAME "sctp_iterator" #define SCTP_KTHREAD_PAGES 0 @@ -572,7 +568,6 @@ __FBSDID("$FreeBSD$"); #define SCTP_TIMER_TYPE_EVENTWAKE 13 #define SCTP_TIMER_TYPE_STRRESET 14 #define SCTP_TIMER_TYPE_INPKILL 15 -#define SCTP_TIMER_TYPE_ITERATOR 16 #define SCTP_TIMER_TYPE_EARLYFR 17 #define SCTP_TIMER_TYPE_ASOCKILL 18 #define SCTP_TIMER_TYPE_ADDR_WQ 19 Modified: head/sys/netinet/sctp_lock_bsd.h ============================================================================== --- head/sys/netinet/sctp_lock_bsd.h Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_lock_bsd.h Sun May 16 17:03:56 2010 (r208160) @@ -107,42 +107,36 @@ extern int sctp_logoff_stuff; #define SCTP_INP_INFO_WUNLOCK() rw_wunlock(&SCTP_BASE_INFO(ipi_ep_mtx)) -#define SCTP_IPI_ADDR_INIT() \ +#define SCTP_IPI_ADDR_INIT() \ rw_init(&SCTP_BASE_INFO(ipi_addr_mtx), "sctp-addr") - #define SCTP_IPI_ADDR_DESTROY() do { \ if(rw_wowned(&SCTP_BASE_INFO(ipi_addr_mtx))) { \ rw_wunlock(&SCTP_BASE_INFO(ipi_addr_mtx)); \ } \ rw_destroy(&SCTP_BASE_INFO(ipi_addr_mtx)); \ } while (0) - - - #define SCTP_IPI_ADDR_RLOCK() do { \ rw_rlock(&SCTP_BASE_INFO(ipi_addr_mtx)); \ } while (0) - #define SCTP_IPI_ADDR_WLOCK() do { \ rw_wlock(&SCTP_BASE_INFO(ipi_addr_mtx)); \ } while (0) - #define SCTP_IPI_ADDR_RUNLOCK() rw_runlock(&SCTP_BASE_INFO(ipi_addr_mtx)) #define SCTP_IPI_ADDR_WUNLOCK() rw_wunlock(&SCTP_BASE_INFO(ipi_addr_mtx)) #define SCTP_IPI_ITERATOR_WQ_INIT() \ - mtx_init(&SCTP_BASE_INFO(ipi_iterator_wq_mtx), "sctp-it-wq", "sctp_it_wq", MTX_DEF) + mtx_init(&sctp_it_ctl.ipi_iterator_wq_mtx, "sctp-it-wq", "sctp_it_wq", MTX_DEF) #define SCTP_IPI_ITERATOR_WQ_DESTROY() \ - mtx_destroy(&SCTP_BASE_INFO(ipi_iterator_wq_mtx)) + mtx_destroy(&sctp_it_ctl.ipi_iterator_wq_mtx) #define SCTP_IPI_ITERATOR_WQ_LOCK() do { \ - mtx_lock(&SCTP_BASE_INFO(ipi_iterator_wq_mtx)); \ + mtx_lock(&sctp_it_ctl.ipi_iterator_wq_mtx); \ } while (0) -#define SCTP_IPI_ITERATOR_WQ_UNLOCK() mtx_unlock(&SCTP_BASE_INFO(ipi_iterator_wq_mtx)) +#define SCTP_IPI_ITERATOR_WQ_UNLOCK() mtx_unlock(&sctp_it_ctl.ipi_iterator_wq_mtx) #define SCTP_IP_PKTLOG_INIT() \ @@ -300,25 +294,45 @@ extern int sctp_logoff_stuff; #endif #define SCTP_ITERATOR_LOCK_INIT() \ - mtx_init(&SCTP_BASE_INFO(it_mtx), "sctp-it", "iterator", MTX_DEF) + mtx_init(&sctp_it_ctl.it_mtx, "sctp-it", "iterator", MTX_DEF) #ifdef INVARIANTS #define SCTP_ITERATOR_LOCK() \ do { \ - if (mtx_owned(&SCTP_BASE_INFO(it_mtx))) \ + if (mtx_owned(&sctp_it_ctl.it_mtx)) \ panic("Iterator Lock"); \ - mtx_lock(&SCTP_BASE_INFO(it_mtx)); \ + mtx_lock(&sctp_it_ctl.it_mtx); \ } while (0) #else #define SCTP_ITERATOR_LOCK() \ do { \ - mtx_lock(&SCTP_BASE_INFO(it_mtx)); \ + mtx_lock(&sctp_it_ctl.it_mtx); \ } while (0) #endif -#define SCTP_ITERATOR_UNLOCK() mtx_unlock(&SCTP_BASE_INFO(it_mtx)) -#define SCTP_ITERATOR_LOCK_DESTROY() mtx_destroy(&SCTP_BASE_INFO(it_mtx)) +#define SCTP_ITERATOR_UNLOCK() mtx_unlock(&sctp_it_ctl.it_mtx) +#define SCTP_ITERATOR_LOCK_DESTROY() mtx_destroy(&sctp_it_ctl.it_mtx) + + +#define SCTP_WQ_ADDR_INIT() do { \ + mtx_init(&SCTP_BASE_INFO(wq_addr_mtx), "sctp-addr-wq","sctp_addr_wq",MTX_DEF); \ + } while (0) + +#define SCTP_WQ_ADDR_DESTROY() do { \ + if(mtx_owned(&SCTP_BASE_INFO(wq_addr_mtx))) { \ + mtx_unlock(&SCTP_BASE_INFO(wq_addr_mtx)); \ + } \ + mtx_destroy(&SCTP_BASE_INFO(wq_addr_mtx)); \ + } while (0) + +#define SCTP_WQ_ADDR_LOCK() do { \ + mtx_lock(&SCTP_BASE_INFO(wq_addr_mtx)); \ +} while (0) +#define SCTP_WQ_ADDR_UNLOCK() do { \ + mtx_unlock(&SCTP_BASE_INFO(wq_addr_mtx)); \ +} while (0) + #define SCTP_INCR_EP_COUNT() \ Modified: head/sys/netinet/sctp_pcb.c ============================================================================== --- head/sys/netinet/sctp_pcb.c Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_pcb.c Sun May 16 17:03:56 2010 (r208160) @@ -692,13 +692,11 @@ sctp_add_addr_to_vrf(uint32_t vrf_id, vo (void)SCTP_GETTIME_TIMEVAL(&wi->start_time); wi->ifa = sctp_ifap; wi->action = SCTP_ADD_IP_ADDRESS; - SCTP_IPI_ITERATOR_WQ_LOCK(); - /* - * Should this really be a tailq? As it is we will process - * the newest first :-0 - */ + + SCTP_WQ_ADDR_LOCK(); LIST_INSERT_HEAD(&SCTP_BASE_INFO(addr_wq), wi, sctp_nxt_addr); - SCTP_IPI_ITERATOR_WQ_UNLOCK(); + SCTP_WQ_ADDR_UNLOCK(); + sctp_timer_start(SCTP_TIMER_TYPE_ADDR_WQ, (struct sctp_inpcb *)NULL, (struct sctp_tcb *)NULL, @@ -806,13 +804,13 @@ out_now: (void)SCTP_GETTIME_TIMEVAL(&wi->start_time); wi->ifa = sctp_ifap; wi->action = SCTP_DEL_IP_ADDRESS; - SCTP_IPI_ITERATOR_WQ_LOCK(); + SCTP_WQ_ADDR_LOCK(); /* * Should this really be a tailq? As it is we will process * the newest first :-0 */ LIST_INSERT_HEAD(&SCTP_BASE_INFO(addr_wq), wi, sctp_nxt_addr); - SCTP_IPI_ITERATOR_WQ_UNLOCK(); + SCTP_WQ_ADDR_UNLOCK(); sctp_timer_start(SCTP_TIMER_TYPE_ADDR_WQ, (struct sctp_inpcb *)NULL, @@ -3017,57 +3015,68 @@ continue_anyway: static void -sctp_iterator_inp_being_freed(struct sctp_inpcb *inp, struct sctp_inpcb *inp_next) +sctp_iterator_inp_being_freed(struct sctp_inpcb *inp) { - struct sctp_iterator *it; + struct sctp_iterator *it, *nit; /* * We enter with the only the ITERATOR_LOCK in place and a write * lock on the inp_info stuff. */ - + it = sctp_it_ctl.cur_it; + if (it && (it->vn != curvnet)) { + /* Its not looking at our VNET */ + return; + } + if (it && (it->inp == inp)) { + /* + * This is tricky and we hold the iterator lock, but when it + * returns and gets the lock (when we release it) the + * iterator will try to operate on inp. We need to stop that + * from happening. But of course the iterator has a + * reference on the stcb and inp. We can mark it and it will + * stop. + * + * If its a single iterator situation, we set the end iterator + * flag. Otherwise we set the iterator to go to the next + * inp. + * + */ + if (it->iterator_flags & SCTP_ITERATOR_DO_SINGLE_INP) { + sctp_it_ctl.iterator_flags |= SCTP_ITERATOR_STOP_CUR_IT; + } else { + sctp_it_ctl.iterator_flags |= SCTP_ITERATOR_STOP_CUR_INP; + } + } /* - * Go through all iterators, we must do this since it is possible - * that some iterator does NOT have the lock, but is waiting for it. - * And the one that had the lock has either moved in the last - * iteration or we just cleared it above. We need to find all of - * those guys. The list of iterators should never be very big - * though. - */ - TAILQ_FOREACH(it, &SCTP_BASE_INFO(iteratorhead), sctp_nxt_itr) { - if (it == inp->inp_starting_point_for_iterator) - /* skip this guy, he's special */ + * Now go through and remove any single reference to our inp that + * may be still pending on the list + */ + SCTP_IPI_ITERATOR_WQ_LOCK(); + it = TAILQ_FIRST(&sctp_it_ctl.iteratorhead); + while (it) { + nit = TAILQ_NEXT(it, sctp_nxt_itr); + if (it->vn != curvnet) { + it = nit; continue; + } if (it->inp == inp) { - /* - * This is tricky and we DON'T lock the iterator. - * Reason is he's running but waiting for me since - * inp->inp_starting_point_for_iterator has the lock - * on me (the guy above we skipped). This tells us - * its is not running but waiting for - * inp->inp_starting_point_for_iterator to be - * released by the guy that does have our INP in a - * lock. - */ + /* This one points to me is it inp specific? */ if (it->iterator_flags & SCTP_ITERATOR_DO_SINGLE_INP) { - it->inp = NULL; - it->stcb = NULL; + /* Remove and free this one */ + TAILQ_REMOVE(&sctp_it_ctl.iteratorhead, + it, sctp_nxt_itr); + if (it->function_atend != NULL) { + (*it->function_atend) (it->pointer, it->val); + } + SCTP_FREE(it, SCTP_M_ITER); } else { - /* set him up to do the next guy not me */ - it->inp = inp_next; - it->stcb = NULL; + it->inp = LIST_NEXT(it->inp, sctp_list); } } + it = nit; } - it = inp->inp_starting_point_for_iterator; - if (it) { - if (it->iterator_flags & SCTP_ITERATOR_DO_SINGLE_INP) { - it->inp = NULL; - } else { - it->inp = inp_next; - } - it->stcb = NULL; - } + SCTP_IPI_ITERATOR_WQ_UNLOCK(); } /* release sctp_inpcb unbind the port */ @@ -3083,7 +3092,6 @@ sctp_inpcb_free(struct sctp_inpcb *inp, * all associations. d) finally the ep itself. */ struct sctp_pcb *m; - struct sctp_inpcb *inp_save; struct sctp_tcb *asoc, *nasoc; struct sctp_laddr *laddr, *nladdr; struct inpcb *ip_pcb; @@ -3100,6 +3108,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, sctp_log_closing(inp, NULL, 0); #endif SCTP_ITERATOR_LOCK(); + so = inp->sctp_socket; if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) { /* been here before.. eeks.. get out of here */ @@ -3126,6 +3135,9 @@ sctp_inpcb_free(struct sctp_inpcb *inp, inp->sctp_flags |= SCTP_PCB_FLAGS_DONT_WAKE; inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEINPUT; inp->sctp_flags &= ~SCTP_PCB_FLAGS_WAKEOUTPUT; + + /* mark any iterators on the list or being processed */ + sctp_iterator_inp_being_freed(inp); } sctp_timer_stop(SCTP_TIMER_TYPE_NEWCOOKIE, inp, NULL, NULL, SCTP_FROM_SCTP_PCB + SCTP_LOC_1); @@ -3494,11 +3506,8 @@ sctp_inpcb_free(struct sctp_inpcb *inp, shared_key = LIST_FIRST(&inp->sctp_ep.shared_keys); } - inp_save = LIST_NEXT(inp, sctp_list); LIST_REMOVE(inp, sctp_list); - /* fix any iterators only after out of the list */ - sctp_iterator_inp_being_freed(inp, inp_save); /* * if we have an address list the following will free the list of * ifaddr's that are set into this ep. Again macro limitations here, @@ -5436,8 +5445,6 @@ sctp_pcb_init() /* init the empty list of (All) Endpoints */ LIST_INIT(&SCTP_BASE_INFO(listhead)); - /* init the iterator head */ - TAILQ_INIT(&SCTP_BASE_INFO(iteratorhead)); /* init the hash table of endpoints */ TUNABLE_INT_FETCH("net.inet.sctp.tcbhashsize", &SCTP_BASE_SYSCTL(sctp_hashtblsize)); @@ -5500,16 +5507,15 @@ sctp_pcb_init() /* Master Lock INIT for info structure */ SCTP_INP_INFO_LOCK_INIT(); SCTP_STATLOG_INIT_LOCK(); - SCTP_ITERATOR_LOCK_INIT(); SCTP_IPI_COUNT_INIT(); SCTP_IPI_ADDR_INIT(); - SCTP_IPI_ITERATOR_WQ_INIT(); #ifdef SCTP_PACKET_LOGGING SCTP_IP_PKTLOG_INIT(); #endif LIST_INIT(&SCTP_BASE_INFO(addr_wq)); + SCTP_WQ_ADDR_INIT(); /* not sure if we need all the counts */ SCTP_BASE_INFO(ipi_count_ep) = 0; /* assoc/tcb zone info */ @@ -5537,11 +5543,7 @@ sctp_pcb_init() LIST_INIT(&SCTP_BASE_INFO(vtag_timewait)[i]); } -#if defined(SCTP_USE_THREAD_BASED_ITERATOR) - SCTP_BASE_INFO(iterator_running) = 0; - SCTP_BASE_INFO(threads_must_exit) = 0; sctp_startup_iterator(); -#endif /* * INIT the default VRF which for BSD is the only one, other O/S's @@ -5565,30 +5567,49 @@ sctp_pcb_finish(void) struct sctpvtaghead *chain; struct sctp_tagblock *twait_block, *prev_twait_block; struct sctp_laddr *wi; - struct sctp_iterator *it; int i; -#if defined(SCTP_USE_THREAD_BASED_ITERATOR) - SCTP_BASE_INFO(threads_must_exit) = 1; - /* Wake the thread up so it will exit now */ - sctp_wakeup_iterator(); + /* + * Free BSD the it thread never exits but we do clean up. The only + * way freebsd reaches here if we have VRF's but we still add the + * ifdef to make it compile on old versions. + */ + { + struct sctp_iterator *it, *nit; + + SCTP_IPI_ITERATOR_WQ_LOCK(); + it = TAILQ_FIRST(&sctp_it_ctl.iteratorhead); + while (it) { + nit = TAILQ_NEXT(it, sctp_nxt_itr); + if (it->vn != curvnet) { + it = nit; + continue; + } + TAILQ_REMOVE(&sctp_it_ctl.iteratorhead, + it, sctp_nxt_itr); + if (it->function_atend != NULL) { + (*it->function_atend) (it->pointer, it->val); + } + SCTP_FREE(it, SCTP_M_ITER); + it = nit; + } + SCTP_IPI_ITERATOR_WQ_UNLOCK(); + SCTP_ITERATOR_LOCK(); + if ((sctp_it_ctl.cur_it) && + (sctp_it_ctl.cur_it->vn == curvnet)) { + sctp_it_ctl.iterator_flags |= SCTP_ITERATOR_STOP_CUR_IT; + } + SCTP_ITERATOR_UNLOCK(); + } -#endif SCTP_OS_TIMER_STOP(&SCTP_BASE_INFO(addr_wq_timer.timer)); - SCTP_IPI_ITERATOR_WQ_LOCK(); + SCTP_WQ_ADDR_LOCK(); while ((wi = LIST_FIRST(&SCTP_BASE_INFO(addr_wq))) != NULL) { LIST_REMOVE(wi, sctp_nxt_addr); SCTP_DECR_LADDR_COUNT(); SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_laddr), wi); } - SCTP_IPI_ITERATOR_WQ_UNLOCK(); - while ((it = TAILQ_FIRST(&SCTP_BASE_INFO(iteratorhead))) != NULL) { - if (it->function_atend != NULL) { - (*it->function_atend) (it->pointer, it->val); - } - TAILQ_REMOVE(&SCTP_BASE_INFO(iteratorhead), it, sctp_nxt_itr); - SCTP_FREE(it, SCTP_M_ITER); - } + SCTP_WQ_ADDR_UNLOCK(); /* * free the vrf/ifn/ifa lists and hashes (be sure address monitor is @@ -5640,10 +5661,11 @@ sctp_pcb_finish(void) SCTP_IP_PKTLOG_DESTROY(); #endif SCTP_IPI_ADDR_DESTROY(); - SCTP_ITERATOR_LOCK_DESTROY(); SCTP_STATLOG_DESTROY(); SCTP_INP_INFO_LOCK_DESTROY(); + SCTP_WQ_ADDR_DESTROY(); + SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_ep)); SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_asoc)); SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_laddr)); @@ -6632,6 +6654,7 @@ sctp_initiate_iterator(inp_func inpf, it->asoc_state = asoc_state; it->function_inp_end = inpe; it->no_chunk_output = chunk_output_off; + it->vn = curvnet; if (s_inp) { it->inp = s_inp; it->iterator_flags = SCTP_ITERATOR_DO_SINGLE_INP; @@ -6647,22 +6670,11 @@ sctp_initiate_iterator(inp_func inpf, if (it->inp) { SCTP_INP_INCR_REF(it->inp); } - TAILQ_INSERT_TAIL(&SCTP_BASE_INFO(iteratorhead), it, sctp_nxt_itr); -#if defined(SCTP_USE_THREAD_BASED_ITERATOR) - if (SCTP_BASE_INFO(iterator_running) == 0) { + TAILQ_INSERT_TAIL(&sctp_it_ctl.iteratorhead, it, sctp_nxt_itr); + if (sctp_it_ctl.iterator_running == 0) { sctp_wakeup_iterator(); } SCTP_IPI_ITERATOR_WQ_UNLOCK(); -#else - if (it->inp) - SCTP_INP_DECR_REF(it->inp); - SCTP_IPI_ITERATOR_WQ_UNLOCK(); - /* Init the timer */ - SCTP_OS_TIMER_INIT(&it->tmr.timer); - /* add to the list of all iterators */ - sctp_timer_start(SCTP_TIMER_TYPE_ITERATOR, (struct sctp_inpcb *)it, - NULL, NULL); -#endif /* sa_ignore MEMLEAK {memory is put on the tailq for the iterator} */ return (0); } Modified: head/sys/netinet/sctp_pcb.h ============================================================================== --- head/sys/netinet/sctp_pcb.h Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_pcb.h Sun May 16 17:03:56 2010 (r208160) @@ -177,8 +177,6 @@ struct sctp_epinfo { struct sctppcbhead listhead; struct sctpladdr addr_wq; - struct sctpiterators iteratorhead; - int threads_must_exit; /* ep zone info */ sctp_zone_t ipi_zone_ep; sctp_zone_t ipi_zone_asoc; @@ -191,10 +189,10 @@ struct sctp_epinfo { sctp_zone_t ipi_zone_asconf_ack; struct rwlock ipi_ep_mtx; - struct mtx it_mtx; struct mtx ipi_iterator_wq_mtx; struct rwlock ipi_addr_mtx; struct mtx ipi_pktlog_mtx; + struct mtx wq_addr_mtx; uint32_t ipi_count_ep; /* assoc/tcb zone info */ @@ -228,14 +226,9 @@ struct sctp_epinfo { uint32_t ipi_free_chunks; uint32_t ipi_free_strmoq; - struct sctpvtaghead vtag_timewait[SCTP_STACK_VTAG_HASH_SIZE]; /* address work queue handling */ -#if defined(SCTP_USE_THREAD_BASED_ITERATOR) - uint32_t iterator_running; - SCTP_PROCESS_STRUCT thread_proc; -#endif struct sctp_timer addr_wq_timer; }; Modified: head/sys/netinet/sctp_structs.h ============================================================================== --- head/sys/netinet/sctp_structs.h Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_structs.h Sun May 16 17:03:56 2010 (r208160) @@ -108,9 +108,11 @@ typedef void (*end_func) (void *ptr, uin struct sctp_iterator { TAILQ_ENTRY(sctp_iterator) sctp_nxt_itr; + struct vnet *vn; struct sctp_timer tmr; struct sctp_inpcb *inp; /* current endpoint */ struct sctp_tcb *stcb; /* current* assoc */ + struct sctp_inpcb *next_inp; /* special hook to skip to */ asoc_func function_assoc; /* per assoc function */ inp_func function_inp; /* per endpoint function */ inp_func function_inp_end; /* end INP function */ @@ -129,6 +131,7 @@ struct sctp_iterator { #define SCTP_ITERATOR_DO_ALL_INP 0x00000001 #define SCTP_ITERATOR_DO_SINGLE_INP 0x00000002 + TAILQ_HEAD(sctpiterators, sctp_iterator); struct sctp_copy_all { @@ -145,6 +148,20 @@ struct sctp_asconf_iterator { int cnt; }; +struct iterator_control { + struct mtx ipi_iterator_wq_mtx; + struct mtx it_mtx; + SCTP_PROCESS_STRUCT thread_proc; + struct sctpiterators iteratorhead; + struct sctp_iterator *cur_it; + uint32_t iterator_running; + uint32_t iterator_flags; +}; + +#define SCTP_ITERATOR_MUST_EXIT 0x00000001 +#define SCTP_ITERATOR_STOP_CUR_IT 0x00000002 +#define SCTP_ITERATOR_STOP_CUR_INP 0x00000004 + struct sctp_net_route { sctp_rtentry_t *ro_rt; void *ro_lle; Modified: head/sys/netinet/sctp_timer.c ============================================================================== --- head/sys/netinet/sctp_timer.c Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctp_timer.c Sun May 16 17:03:56 2010 (r208160) @@ -1880,143 +1880,3 @@ sctp_autoclose_timer(struct sctp_inpcb * } } } - -void -sctp_iterator_timer(struct sctp_iterator *it) -{ - int iteration_count = 0; - int inp_skip = 0; - - /* - * only one iterator can run at a time. This is the only way we can - * cleanly pull ep's from underneath all the running interators when - * a ep is freed. - */ - SCTP_ITERATOR_LOCK(); - if (it->inp == NULL) { - /* iterator is complete */ -done_with_iterator: - SCTP_ITERATOR_UNLOCK(); - SCTP_INP_INFO_WLOCK(); - TAILQ_REMOVE(&SCTP_BASE_INFO(iteratorhead), it, sctp_nxt_itr); - /* stopping the callout is not needed, in theory */ - SCTP_INP_INFO_WUNLOCK(); - (void)SCTP_OS_TIMER_STOP(&it->tmr.timer); - if (it->function_atend != NULL) { - (*it->function_atend) (it->pointer, it->val); - } - SCTP_FREE(it, SCTP_M_ITER); - return; - } -select_a_new_ep: - SCTP_INP_WLOCK(it->inp); - while (((it->pcb_flags) && - ((it->inp->sctp_flags & it->pcb_flags) != it->pcb_flags)) || - ((it->pcb_features) && - ((it->inp->sctp_features & it->pcb_features) != it->pcb_features))) { - /* endpoint flags or features don't match, so keep looking */ - if (it->iterator_flags & SCTP_ITERATOR_DO_SINGLE_INP) { - SCTP_INP_WUNLOCK(it->inp); - goto done_with_iterator; - } - SCTP_INP_WUNLOCK(it->inp); - it->inp = LIST_NEXT(it->inp, sctp_list); - if (it->inp == NULL) { - goto done_with_iterator; - } - SCTP_INP_WLOCK(it->inp); - } - if ((it->inp->inp_starting_point_for_iterator != NULL) && - (it->inp->inp_starting_point_for_iterator != it)) { - SCTP_PRINTF("Iterator collision, waiting for one at %p\n", - it->inp); - SCTP_INP_WUNLOCK(it->inp); - goto start_timer_return; - } - /* mark the current iterator on the endpoint */ - it->inp->inp_starting_point_for_iterator = it; - SCTP_INP_WUNLOCK(it->inp); - SCTP_INP_RLOCK(it->inp); - /* now go through each assoc which is in the desired state */ - if (it->done_current_ep == 0) { - if (it->function_inp != NULL) - inp_skip = (*it->function_inp) (it->inp, it->pointer, it->val); - it->done_current_ep = 1; - } - if (it->stcb == NULL) { - /* run the per instance function */ - it->stcb = LIST_FIRST(&it->inp->sctp_asoc_list); - } - SCTP_INP_RUNLOCK(it->inp); - if ((inp_skip) || it->stcb == NULL) { - if (it->function_inp_end != NULL) { - inp_skip = (*it->function_inp_end) (it->inp, - it->pointer, - it->val); - } - goto no_stcb; - } - if ((it->stcb) && - (it->stcb->asoc.stcb_starting_point_for_iterator == it)) { - it->stcb->asoc.stcb_starting_point_for_iterator = NULL; - } - while (it->stcb) { - SCTP_TCB_LOCK(it->stcb); - if (it->asoc_state && ((it->stcb->asoc.state & it->asoc_state) != it->asoc_state)) { - /* not in the right state... keep looking */ - SCTP_TCB_UNLOCK(it->stcb); - goto next_assoc; - } - /* mark the current iterator on the assoc */ - it->stcb->asoc.stcb_starting_point_for_iterator = it; - /* see if we have limited out the iterator loop */ - iteration_count++; - if (iteration_count > SCTP_ITERATOR_MAX_AT_ONCE) { - start_timer_return: - /* set a timer to continue this later */ - if (it->stcb) - SCTP_TCB_UNLOCK(it->stcb); - sctp_timer_start(SCTP_TIMER_TYPE_ITERATOR, - (struct sctp_inpcb *)it, NULL, NULL); - SCTP_ITERATOR_UNLOCK(); - return; - } - /* run function on this one */ - (*it->function_assoc) (it->inp, it->stcb, it->pointer, it->val); - - /* - * we lie here, it really needs to have its own type but - * first I must verify that this won't effect things :-0 - */ - if (it->no_chunk_output == 0) - sctp_chunk_output(it->inp, it->stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_NOT_LOCKED); - - SCTP_TCB_UNLOCK(it->stcb); -next_assoc: - it->stcb = LIST_NEXT(it->stcb, sctp_tcblist); - if (it->stcb == NULL) { - if (it->function_inp_end != NULL) { - inp_skip = (*it->function_inp_end) (it->inp, - it->pointer, - it->val); - } - } - } -no_stcb: - /* done with all assocs on this endpoint, move on to next endpoint */ - it->done_current_ep = 0; - SCTP_INP_WLOCK(it->inp); - it->inp->inp_starting_point_for_iterator = NULL; - SCTP_INP_WUNLOCK(it->inp); - if (it->iterator_flags & SCTP_ITERATOR_DO_SINGLE_INP) { - it->inp = NULL; - } else { - SCTP_INP_INFO_RLOCK(); - it->inp = LIST_NEXT(it->inp, sctp_list); - SCTP_INP_INFO_RUNLOCK(); - } - if (it->inp == NULL) { - goto done_with_iterator; - } - goto select_a_new_ep; -} Modified: head/sys/netinet/sctputil.c ============================================================================== --- head/sys/netinet/sctputil.c Sun May 16 16:54:05 2010 (r208159) +++ head/sys/netinet/sctputil.c Sun May 16 17:03:56 2010 (r208160) @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #define NUMBER_OF_MTU_SIZES 18 @@ -1255,7 +1256,6 @@ sctp_expand_mapping_array(struct sctp_as } -#if defined(SCTP_USE_THREAD_BASED_ITERATOR) static void sctp_iterator_work(struct sctp_iterator *it) { @@ -1277,27 +1277,23 @@ done_with_iterator: return; } select_a_new_ep: - SCTP_INP_WLOCK(it->inp); + SCTP_INP_RLOCK(it->inp); while (((it->pcb_flags) && ((it->inp->sctp_flags & it->pcb_flags) != it->pcb_flags)) || ((it->pcb_features) && ((it->inp->sctp_features & it->pcb_features) != it->pcb_features))) { /* endpoint flags or features don't match, so keep looking */ if (it->iterator_flags & SCTP_ITERATOR_DO_SINGLE_INP) { - SCTP_INP_WUNLOCK(it->inp); + SCTP_INP_RUNLOCK(it->inp); goto done_with_iterator; } - SCTP_INP_WUNLOCK(it->inp); + SCTP_INP_RUNLOCK(it->inp); it->inp = LIST_NEXT(it->inp, sctp_list); if (it->inp == NULL) { goto done_with_iterator; } - SCTP_INP_WLOCK(it->inp); + SCTP_INP_RLOCK(it->inp); } - - SCTP_INP_WUNLOCK(it->inp); - SCTP_INP_RLOCK(it->inp); - /* now go through each assoc which is in the desired state */ if (it->done_current_ep == 0) { if (it->function_inp != NULL) @@ -1330,13 +1326,34 @@ select_a_new_ep: /* Pause to let others grab the lock */ atomic_add_int(&it->stcb->asoc.refcnt, 1); SCTP_TCB_UNLOCK(it->stcb); - SCTP_INP_INCR_REF(it->inp); SCTP_INP_RUNLOCK(it->inp); SCTP_ITERATOR_UNLOCK(); SCTP_ITERATOR_LOCK(); + if (sctp_it_ctl.iterator_flags) { + /* We won't be staying here */ + SCTP_INP_DECR_REF(it->inp); + atomic_add_int(&it->stcb->asoc.refcnt, -1); + if (sctp_it_ctl.iterator_flags & + SCTP_ITERATOR_MUST_EXIT) { + goto done_with_iterator; + } + if (sctp_it_ctl.iterator_flags & + SCTP_ITERATOR_STOP_CUR_IT) { + sctp_it_ctl.iterator_flags &= ~SCTP_ITERATOR_STOP_CUR_IT; + goto done_with_iterator; + } + if (sctp_it_ctl.iterator_flags & + SCTP_ITERATOR_STOP_CUR_INP) { + sctp_it_ctl.iterator_flags &= ~SCTP_ITERATOR_STOP_CUR_INP; + goto no_stcb; + } + /* If we reach here huh? */ + printf("Unknown it ctl flag %x\n", + sctp_it_ctl.iterator_flags); + sctp_it_ctl.iterator_flags = 0; + } SCTP_INP_RLOCK(it->inp); - SCTP_INP_DECR_REF(it->inp); SCTP_TCB_LOCK(it->stcb); atomic_add_int(&it->stcb->asoc.refcnt, -1); @@ -1368,8 +1385,6 @@ next_assoc: no_stcb: /* done with all assocs on this endpoint, move on to next endpoint */ it->done_current_ep = 0; - SCTP_INP_WLOCK(it->inp); - SCTP_INP_WUNLOCK(it->inp); if (it->iterator_flags & SCTP_ITERATOR_DO_SINGLE_INP) { it->inp = NULL; } else { @@ -1390,27 +1405,28 @@ sctp_iterator_worker(void) /* This function is called with the WQ lock in place */ - SCTP_BASE_INFO(iterator_running) = 1; -again: - it = TAILQ_FIRST(&SCTP_BASE_INFO(iteratorhead)); + sctp_it_ctl.iterator_running = 1; + sctp_it_ctl.cur_it = it = TAILQ_FIRST(&sctp_it_ctl.iteratorhead); while (it) { /* now lets work on this one */ - TAILQ_REMOVE(&SCTP_BASE_INFO(iteratorhead), it, sctp_nxt_itr); + TAILQ_REMOVE(&sctp_it_ctl.iteratorhead, it, sctp_nxt_itr); SCTP_IPI_ITERATOR_WQ_UNLOCK(); + CURVNET_SET(it->vn); sctp_iterator_work(it); + + CURVNET_RESTORE(); SCTP_IPI_ITERATOR_WQ_LOCK(); + if (sctp_it_ctl.iterator_flags & SCTP_ITERATOR_MUST_EXIT) { + sctp_it_ctl.cur_it = NULL; + break; + } /* sa_ignore FREED_MEMORY */ - it = TAILQ_FIRST(&SCTP_BASE_INFO(iteratorhead)); - } - if (TAILQ_FIRST(&SCTP_BASE_INFO(iteratorhead))) { - goto again; + sctp_it_ctl.cur_it = it = TAILQ_FIRST(&sctp_it_ctl.iteratorhead); } - SCTP_BASE_INFO(iterator_running) = 0; + sctp_it_ctl.iterator_running = 0; return; } -#endif - static void sctp_handle_addr_wq(void) @@ -1431,7 +1447,8 @@ sctp_handle_addr_wq(void) } LIST_INIT(&asc->list_of_work); asc->cnt = 0; - SCTP_IPI_ITERATOR_WQ_LOCK(); + + SCTP_WQ_ADDR_LOCK(); wi = LIST_FIRST(&SCTP_BASE_INFO(addr_wq)); while (wi != NULL) { LIST_REMOVE(wi, sctp_nxt_addr); @@ -1439,7 +1456,8 @@ sctp_handle_addr_wq(void) asc->cnt++; wi = LIST_FIRST(&SCTP_BASE_INFO(addr_wq)); } - SCTP_IPI_ITERATOR_WQ_UNLOCK(); + SCTP_WQ_ADDR_UNLOCK(); + if (asc->cnt == 0) { SCTP_FREE(asc, SCTP_M_ASC_IT); } else { @@ -1470,7 +1488,6 @@ sctp_timeout_handler(void *t) #endif int did_output, type; - struct sctp_iterator *it = NULL; tmr = (struct sctp_timer *)t; inp = (struct sctp_inpcb *)tmr->ep; @@ -1509,10 +1526,6 @@ sctp_timeout_handler(void *t) } /* if this is an iterator timeout, get the struct and clear inp */ tmr->stopped_from = 0xa003; - if (tmr->type == SCTP_TIMER_TYPE_ITERATOR) { - it = (struct sctp_iterator *)inp; - inp = NULL; - } type = tmr->type; if (inp) { SCTP_INP_INCR_REF(inp); @@ -1611,10 +1624,6 @@ sctp_timeout_handler(void *t) case SCTP_TIMER_TYPE_ADDR_WQ: sctp_handle_addr_wq(); break; - case SCTP_TIMER_TYPE_ITERATOR: - SCTP_STAT_INCR(sctps_timoiterator); - sctp_iterator_timer(it); - break; case SCTP_TIMER_TYPE_SEND: if ((stcb == NULL) || (inp == NULL)) { break; @@ -1962,15 +1971,6 @@ sctp_timer_start(int t_type, struct sctp tmr = &SCTP_BASE_INFO(addr_wq_timer); to_ticks = SCTP_ADDRESS_TICK_DELAY; break; - case SCTP_TIMER_TYPE_ITERATOR: - { - struct sctp_iterator *it; - - it = (struct sctp_iterator *)inp; - tmr = &it->tmr; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Sun May 16 17:55:09 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EA6C106564A; Sun, 16 May 2010 17:55:09 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 619548FC18; Sun, 16 May 2010 17:55:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GHt9Nm072937; Sun, 16 May 2010 17:55:09 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GHt9ie072934; Sun, 16 May 2010 17:55:09 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005161755.o4GHt9ie072934@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 17:55:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208162 - in head/sys: dev/ata/chipsets powerpc/ofw X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 17:55:09 -0000 Author: nwhitehorn Date: Sun May 16 17:55:09 2010 New Revision: 208162 URL: http://svn.freebsd.org/changeset/base/208162 Log: Relocate interrupt sense setting for K2 SATA from the ATA driver to the OFW PCI layer and read the sense directly from the device tree instead of guessing. MFC after: 1 week Modified: head/sys/dev/ata/chipsets/ata-serverworks.c head/sys/powerpc/ofw/ofw_pcibus.c Modified: head/sys/dev/ata/chipsets/ata-serverworks.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-serverworks.c Sun May 16 17:22:54 2010 (r208161) +++ head/sys/dev/ata/chipsets/ata-serverworks.c Sun May 16 17:55:09 2010 (r208162) @@ -41,9 +41,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef __powerpc__ -#include -#endif #include #include #include @@ -220,10 +217,6 @@ ata_serverworks_ch_attach(device_t dev) ch->hw.tf_write = ata_serverworks_tf_write; #ifdef __powerpc__ ch->hw.status = ata_serverworks_status; - - /* Make sure that our interrupt is edge triggered */ - powerpc_config_intr(bus_get_resource_start(device_get_parent(dev), - SYS_RES_IRQ, 0), INTR_TRIGGER_EDGE, INTR_POLARITY_HIGH); #endif if (ctlr->chip->chipid == ATA_K2) { Modified: head/sys/powerpc/ofw/ofw_pcibus.c ============================================================================== --- head/sys/powerpc/ofw/ofw_pcibus.c Sun May 16 17:22:54 2010 (r208161) +++ head/sys/powerpc/ofw/ofw_pcibus.c Sun May 16 17:55:09 2010 (r208162) @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -192,20 +193,36 @@ ofw_pcibus_enum_devtree(device_t dev, u_ pci_add_child(dev, (struct pci_devinfo *)dinfo); /* - * Some devices don't have an intpin set, but do have - * interrupts. These are fully specified, and set in the + * Some devices don't have an intpin set, but do have + * interrupts. These are fully specified, and set in the * interrupts property, so add that value to the device's * resource list. - */ - if (dinfo->opd_dinfo.cfg.intpin == 0) { - ofw_pci_intr_t intr; + */ + if (dinfo->opd_dinfo.cfg.intpin == 0) { + ofw_pci_intr_t intr[2]; + phandle_t iparent; + int icells; if (OF_getprop(child, "interrupts", &intr, sizeof(intr)) > 0) { - resource_list_add(&dinfo->opd_dinfo.resources, - SYS_RES_IRQ, 0, intr, intr, 1); + iparent = 0; + icells = 1; + OF_getprop(child, "interrupt-parent", &iparent, + sizeof(iparent)); + OF_getprop(iparent, "#interrupt-cells", &icells, + sizeof(icells)); + + if (iparent != 0 && icells > 1) { + powerpc_config_intr(intr[0], + (intr[1] & 1) ? INTR_TRIGGER_LEVEL : + INTR_TRIGGER_EDGE, + INTR_POLARITY_HIGH); + } + + resource_list_add(&dinfo->opd_dinfo.resources, + SYS_RES_IRQ, 0, intr[0], intr[0], 1); } - } + } } } From owner-svn-src-head@FreeBSD.ORG Sun May 16 19:25:57 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56A10106564A; Sun, 16 May 2010 19:25:57 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4600A8FC16; Sun, 16 May 2010 19:25:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GJPvlf092878; Sun, 16 May 2010 19:25:57 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GJPvMu092877; Sun, 16 May 2010 19:25:57 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005161925.o4GJPvMu092877@svn.freebsd.org> From: Alan Cox Date: Sun, 16 May 2010 19:25:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208164 - head/sys/vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 19:25:57 -0000 Author: alc Date: Sun May 16 19:25:56 2010 New Revision: 208164 URL: http://svn.freebsd.org/changeset/base/208164 Log: Correct an error of omission in r202897: Now that amd64 uses the direct map to access the message buffer, we must explicitly request that the underlying physical pages are included in a crash dump. Reported by: Benjamin Kaduk Modified: head/sys/vm/vm_page.c Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Sun May 16 19:01:32 2010 (r208163) +++ head/sys/vm/vm_page.c Sun May 16 19:25:56 2010 (r208164) @@ -108,6 +108,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -375,6 +376,19 @@ vm_page_startup(vm_offset_t vaddr) new_end + vm_page_dump_size, VM_PROT_READ | VM_PROT_WRITE); bzero((void *)vm_page_dump, vm_page_dump_size); #endif +#ifdef __amd64__ + /* + * Request that the physical pages underlying the message buffer be + * included in a crash dump. Since the message buffer is accessed + * through the direct map, they are not automatically included. + */ + pa = DMAP_TO_PHYS((vm_offset_t)msgbufp->msg_ptr); + last_pa = pa + round_page(MSGBUF_SIZE); + while (pa < last_pa) { + dump_add_page(pa); + pa += PAGE_SIZE; + } +#endif /* * Compute the number of pages of memory that will be available for * use (taking into account the overhead of a page structure per From owner-svn-src-head@FreeBSD.ORG Sun May 16 19:43:49 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 73AAE106566C; Sun, 16 May 2010 19:43:49 +0000 (UTC) (envelope-from rrs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 60D328FC15; Sun, 16 May 2010 19:43:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GJhncg096846; Sun, 16 May 2010 19:43:49 GMT (envelope-from rrs@svn.freebsd.org) Received: (from rrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GJhnTo096839; Sun, 16 May 2010 19:43:49 GMT (envelope-from rrs@svn.freebsd.org) Message-Id: <201005161943.o4GJhnTo096839@svn.freebsd.org> From: Randall Stewart Date: Sun, 16 May 2010 19:43:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208165 - in head/sys: kern mips/conf mips/include mips/mips mips/rmi mips/rmi/dev/xlr X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 19:43:49 -0000 Author: rrs Date: Sun May 16 19:43:48 2010 New Revision: 208165 URL: http://svn.freebsd.org/changeset/base/208165 Log: This pushes all of JC's patches that I have in place. I am now able to run 32 cores ok.. but I still will hang on buildworld with a NFS problem. I suspect I am missing a patch for the netlogic rge driver. JC check and see if I am missing anything except your core-mask changes Obtained from: JC Modified: head/sys/kern/sched_ule.c head/sys/kern/subr_smp.c head/sys/mips/conf/XLR head/sys/mips/include/locore.h head/sys/mips/include/param.h head/sys/mips/include/smp.h head/sys/mips/mips/cpu.c head/sys/mips/mips/machdep.c head/sys/mips/mips/mp_machdep.c head/sys/mips/mips/mpboot.S head/sys/mips/mips/pmap.c head/sys/mips/rmi/dev/xlr/rge.c head/sys/mips/rmi/files.xlr head/sys/mips/rmi/interrupt.h head/sys/mips/rmi/intr_machdep.c head/sys/mips/rmi/iodi.c head/sys/mips/rmi/on_chip.c head/sys/mips/rmi/pic.h head/sys/mips/rmi/xlr_machdep.c head/sys/mips/rmi/xlr_pci.c head/sys/mips/rmi/xlrconfig.h Modified: head/sys/kern/sched_ule.c ============================================================================== --- head/sys/kern/sched_ule.c Sun May 16 19:25:56 2010 (r208164) +++ head/sys/kern/sched_ule.c Sun May 16 19:43:48 2010 (r208165) @@ -80,7 +80,7 @@ dtrace_vtime_switch_func_t dtrace_vtime_ #include #include -#if defined(__sparc64__) || defined(__mips__) +#if defined(__sparc64__) #error "This architecture is not currently compatible with ULE" #endif Modified: head/sys/kern/subr_smp.c ============================================================================== --- head/sys/kern/subr_smp.c Sun May 16 19:25:56 2010 (r208164) +++ head/sys/kern/subr_smp.c Sun May 16 19:43:48 2010 (r208165) @@ -503,7 +503,10 @@ smp_topo_none(void) top = &group[0]; top->cg_parent = NULL; top->cg_child = NULL; - top->cg_mask = (1 << mp_ncpus) - 1; + if (mp_ncpus == sizeof(top->cg_mask) * 8) + top->cg_mask = -1; + else + top->cg_mask = (1 << mp_ncpus) - 1; top->cg_count = mp_ncpus; top->cg_children = 0; top->cg_level = CG_SHARE_NONE; Modified: head/sys/mips/conf/XLR ============================================================================== --- head/sys/mips/conf/XLR Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/conf/XLR Sun May 16 19:43:48 2010 (r208165) @@ -59,10 +59,11 @@ include "../rmi/std.xlr" makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols #profile 2 -#options SCHED_ULE # ULE scheduler +options SCHED_ULE # ULE scheduler #options VERBOSE_SYSINIT -options SCHED_4BSD # 4BSD scheduler -#options PREEMPTION # Enable kernel thread preemption +#options SCHED_4BSD # 4BSD scheduler +options SMP +options PREEMPTION # Enable kernel thread preemption #options FULL_PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options INET6 # IPv6 communications protocols Modified: head/sys/mips/include/locore.h ============================================================================== --- head/sys/mips/include/locore.h Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/include/locore.h Sun May 16 19:43:48 2010 (r208165) @@ -60,6 +60,7 @@ typedef int mips_prid_t; /* 0x09 unannounced */ /* 0x0a unannounced */ #define MIPS_PRID_CID_LEXRA 0x0b /* Lexra */ +#define MIPS_PRID_CID_RMI 0x0c /* RMI */ #define MIPS_PRID_CID_CAVIUM 0x0d /* Cavium */ #define MIPS_PRID_COPTS(x) (((x) >> 24) & 0x00ff) /* Company Options */ Modified: head/sys/mips/include/param.h ============================================================================== --- head/sys/mips/include/param.h Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/include/param.h Sun May 16 19:43:48 2010 (r208165) @@ -70,7 +70,7 @@ #define MID_MACHINE 0 /* None but has to be defined */ #ifdef SMP -#define MAXSMPCPU 16 +#define MAXSMPCPU 32 #define MAXCPU MAXSMPCPU #else #define MAXSMPCPU 1 Modified: head/sys/mips/include/smp.h ============================================================================== --- head/sys/mips/include/smp.h Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/include/smp.h Sun May 16 19:43:48 2010 (r208165) @@ -26,6 +26,7 @@ #define IPI_AST 0x0004 #define IPI_STOP 0x0008 #define IPI_STOP_HARD 0x0008 +#define IPI_PREEMPT 0x0010 #ifndef LOCORE Modified: head/sys/mips/mips/cpu.c ============================================================================== --- head/sys/mips/mips/cpu.c Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/mips/cpu.c Sun May 16 19:43:48 2010 (r208165) @@ -178,6 +178,9 @@ cpu_identify(void) case MIPS_PRID_CID_LEXRA: printf("Lexra"); break; + case MIPS_PRID_CID_RMI: + printf("RMI"); + break; case MIPS_PRID_CID_CAVIUM: printf("Cavium"); break; Modified: head/sys/mips/mips/machdep.c ============================================================================== --- head/sys/mips/mips/machdep.c Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/mips/machdep.c Sun May 16 19:43:48 2010 (r208165) @@ -346,7 +346,7 @@ mips_vector_init(void) bcopy(MipsTLBMiss, (void *)TLB_MISS_EXC_VEC, MipsTLBMissEnd - MipsTLBMiss); -#ifdef TARGET_OCTEON +#if defined(TARGET_OCTEON) || defined(TARGET_XLR_XLS) /* Fake, but sufficient, for the 32-bit with 64-bit hardware addresses */ bcopy(MipsTLBMiss, (void *)XTLB_MISS_EXC_VEC, MipsTLBMissEnd - MipsTLBMiss); Modified: head/sys/mips/mips/mp_machdep.c ============================================================================== --- head/sys/mips/mips/mp_machdep.c Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/mips/mp_machdep.c Sun May 16 19:43:48 2010 (r208165) @@ -141,6 +141,10 @@ mips_ipi_handler(void *arg) atomic_clear_int(&stopped_cpus, cpumask); CTR0(KTR_SMP, "IPI_STOP (restart)"); break; + case IPI_PREEMPT: + CTR1(KTR_SMP, "%s: IPI_PREEMPT", __func__); + sched_preempt(curthread); + break; default: panic("Unknown IPI 0x%0x on cpu %d", ipi, curcpu); } @@ -234,7 +238,9 @@ cpu_mp_start(void) void smp_init_secondary(u_int32_t cpuid) { +#ifndef TARGET_XLR_XLS int ipi_int_mask, clock_int_mask; +#endif /* TLB */ Mips_SetWIRED(0); @@ -288,12 +294,16 @@ smp_init_secondary(u_int32_t cpuid) while (smp_started == 0) ; /* nothing */ +#ifndef TARGET_XLR_XLS /* * Unmask the clock and ipi interrupts. */ clock_int_mask = hard_int_mask(5); ipi_int_mask = hard_int_mask(platform_ipi_intrnum()); set_intr_mask(ALL_INT_MASK & ~(ipi_int_mask | clock_int_mask)); +#else + platform_init_ap(cpuid); +#endif /* * Bootstrap the compare register. Modified: head/sys/mips/mips/mpboot.S ============================================================================== --- head/sys/mips/mips/mpboot.S Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/mips/mpboot.S Sun May 16 19:43:48 2010 (r208165) @@ -76,9 +76,10 @@ GLOBAL(mpentry) PTR_LA gp, _C_LABEL(_gp) +#ifndef TARGET_XLR_XLS jal platform_init_ap move a0, s0 - +#endif jal smp_init_secondary move a0, s0 Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/mips/pmap.c Sun May 16 19:43:48 2010 (r208165) @@ -80,6 +80,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -109,6 +110,10 @@ __FBSDID("$FreeBSD$"); #define PMAP_SHPGPERPROC 200 #endif +#if defined(TARGET_XLR_XLS) +#define HIGHMEM_SUPPORT +#endif + #if !defined(PMAP_DIAGNOSTIC) #define PMAP_INLINE __inline #else @@ -183,12 +188,18 @@ static int pmap_unuse_pt(pmap_t, vm_offs static int init_pte_prot(vm_offset_t va, vm_page_t m, vm_prot_t prot); static void pmap_TLB_invalidate_kernel(vm_offset_t); static void pmap_TLB_update_kernel(vm_offset_t, pt_entry_t); +static vm_page_t pmap_alloc_pte_page(pmap_t, unsigned int, int, vm_offset_t *); +static void pmap_release_pte_page(vm_page_t); #ifdef SMP static void pmap_invalidate_page_action(void *arg); static void pmap_invalidate_all_action(void *arg); static void pmap_update_page_action(void *arg); +#endif +#ifdef HIGHMEM_SUPPORT +static void * pmap_ptpgzone_allocf(uma_zone_t, int, u_int8_t*, int); +static uma_zone_t ptpgzone; #endif struct local_sysmaps { @@ -530,6 +541,12 @@ pmap_init(void) pv_entry_max = PMAP_SHPGPERPROC * maxproc + cnt.v_page_count; pv_entry_high_water = 9 * (pv_entry_max / 10); uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + +#ifdef HIGHMEM_SUPPORT + ptpgzone = uma_zcreate("PT ENTRY", PAGE_SIZE, NULL, + NULL, NULL, NULL, PAGE_SIZE-1, UMA_ZONE_NOFREE); + uma_zone_set_allocf(ptpgzone, pmap_ptpgzone_allocf); +#endif } /*************************************************** @@ -887,7 +904,7 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_pa /* * If the page is finally unwired, simply free it. */ - vm_page_free_zero(m); + pmap_release_pte_page(m); atomic_subtract_int(&cnt.v_wire_count, 1); return (1); } @@ -947,6 +964,118 @@ pmap_pinit0(pmap_t pmap) bzero(&pmap->pm_stats, sizeof pmap->pm_stats); } +#ifdef HIGHMEM_SUPPORT +static void * +pmap_ptpgzone_allocf(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) +{ + vm_page_t m; + vm_paddr_t paddr; + + *flags = UMA_SLAB_PRIV; + m = vm_phys_alloc_contig(1, 0, MIPS_KSEG0_LARGEST_PHYS, + PAGE_SIZE, PAGE_SIZE); + if (m == NULL) + return (NULL); + + paddr = VM_PAGE_TO_PHYS(m); + return ((void *)MIPS_PHYS_TO_KSEG0(paddr)); +} + +static vm_page_t +pmap_alloc_pte_page(pmap_t pmap, unsigned int index, int wait, vm_offset_t *vap) +{ + vm_paddr_t paddr; + void *va; + vm_page_t m; + int locked; + + locked = mtx_owned(&pmap->pm_mtx); + if (locked) { + mtx_assert(&vm_page_queue_mtx, MA_OWNED); + PMAP_UNLOCK(pmap); + vm_page_unlock_queues(); + } + va = uma_zalloc(ptpgzone, wait); + if (locked) { + vm_page_lock_queues(); + PMAP_LOCK(pmap); + } + if (va == NULL) + return (NULL); + + paddr = MIPS_KSEG0_TO_PHYS(va); + m = PHYS_TO_VM_PAGE(paddr); + + if ((m->flags & PG_ZERO) == 0) + bzero(va, PAGE_SIZE); + m->pindex = index; + m->valid = VM_PAGE_BITS_ALL; + m->wire_count = 1; + atomic_add_int(&cnt.v_wire_count, 1); + *vap = (vm_offset_t)va; + return (m); +} + +static void +pmap_release_pte_page(vm_page_t m) +{ + void *va; + vm_paddr_t paddr; + + paddr = VM_PAGE_TO_PHYS(m); + va = (void *)MIPS_PHYS_TO_KSEG0(paddr); + uma_zfree(ptpgzone, va); +} +#else +static vm_page_t +pmap_alloc_pte_page(pmap_t pmap, unsigned int index, int wait, vm_offset_t *vap) +{ + vm_offset_t va; + vm_page_t m; + int locked, req; + + locked = mtx_owned(&pmap->pm_mtx); + req = VM_ALLOC_WIRED | VM_ALLOC_NOOBJ; + if (wait & M_WAITOK) + req |= VM_ALLOC_NORMAL; + else + req |= VM_ALLOC_INTERRUPT; + + m = vm_page_alloc(NULL, index, req); + if (m == NULL) { + if (wait & M_WAITOK) { + if (locked) { + mtx_assert(&vm_page_queue_mtx, MA_OWNED); + PMAP_UNLOCK(pmap); + vm_page_unlock_queues(); + } + VM_WAIT; + if (locked) { + vm_page_lock_queues(); + PMAP_LOCK(pmap); + } + } + return NULL; + } + + va = MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(m)); + if ((m->flags & PG_ZERO) == 0) + bzero((void *)va, PAGE_SIZE); + else + vm_page_flag_clear(m, PG_ZERO); + + m->valid = VM_PAGE_BITS_ALL; + *vap = (vm_offset_t)va; + return (m); +} + +static void +pmap_release_pte_page(vm_page_t m) +{ + vm_page_free(m); +} +#endif + /* * Initialize a preallocated and zeroed pmap structure, * such as one in a vmspace structure. @@ -955,37 +1084,16 @@ int pmap_pinit(pmap_t pmap) { vm_offset_t ptdva; - vm_paddr_t ptdpa; vm_page_t ptdpg; int i; - int req; PMAP_LOCK_INIT(pmap); - req = VM_ALLOC_NOOBJ | VM_ALLOC_NORMAL | VM_ALLOC_WIRED | - VM_ALLOC_ZERO; - /* * allocate the page directory page */ - while ((ptdpg = vm_page_alloc(NULL, NUSERPGTBLS, req)) == NULL) - VM_WAIT; - - ptdpg->valid = VM_PAGE_BITS_ALL; - - ptdpa = VM_PAGE_TO_PHYS(ptdpg); - if (ptdpa < MIPS_KSEG0_LARGEST_PHYS) { - ptdva = MIPS_PHYS_TO_KSEG0(ptdpa); - } else { - ptdva = kmem_alloc_nofault(kernel_map, PAGE_SIZE); - if (ptdva == 0) - panic("pmap_pinit: unable to allocate kva"); - pmap_kenter(ptdva, ptdpa); - } - + ptdpg = pmap_alloc_pte_page(pmap, NUSERPGTBLS, M_WAITOK, &ptdva); pmap->pm_segtab = (pd_entry_t *)ptdva; - if ((ptdpg->flags & PG_ZERO) == 0) - bzero(pmap->pm_segtab, PAGE_SIZE); pmap->pm_active = 0; pmap->pm_ptphint = NULL; @@ -1006,7 +1114,7 @@ pmap_pinit(pmap_t pmap) static vm_page_t _pmap_allocpte(pmap_t pmap, unsigned ptepindex, int flags) { - vm_offset_t pteva, ptepa; + vm_offset_t pteva; vm_page_t m; int req; @@ -1018,25 +1126,9 @@ _pmap_allocpte(pmap_t pmap, unsigned pte /* * Find or fabricate a new pagetable page */ - if ((m = vm_page_alloc(NULL, ptepindex, req)) == NULL) { - if (flags & M_WAITOK) { - PMAP_UNLOCK(pmap); - vm_page_unlock_queues(); - VM_WAIT; - vm_page_lock_queues(); - PMAP_LOCK(pmap); - } - /* - * Indicate the need to retry. While waiting, the page - * table page may have been allocated. - */ + m = pmap_alloc_pte_page(pmap, ptepindex, flags, &pteva); + if (m == NULL) return (NULL); - } - if ((m->flags & PG_ZERO) == 0) - pmap_zero_page(m); - - KASSERT(m->queue == PQ_NONE, - ("_pmap_allocpte: %p->queue != PQ_NONE", m)); /* * Map the pagetable page into the process address space, if it @@ -1044,34 +1136,12 @@ _pmap_allocpte(pmap_t pmap, unsigned pte */ pmap->pm_stats.resident_count++; - - ptepa = VM_PAGE_TO_PHYS(m); - if (ptepa < MIPS_KSEG0_LARGEST_PHYS) { - pteva = MIPS_PHYS_TO_KSEG0(ptepa); - } else { - pteva = kmem_alloc_nofault(kernel_map, PAGE_SIZE); - if (pteva == 0) - panic("_pmap_allocpte: unable to allocate kva"); - pmap_kenter(pteva, ptepa); - } - pmap->pm_segtab[ptepindex] = (pd_entry_t)pteva; /* * Set the page table hint */ pmap->pm_ptphint = m; - - /* - * Kernel page tables are allocated in pmap_bootstrap() or - * pmap_growkernel(). - */ - if (is_kernel_pmap(pmap)) - panic("_pmap_allocpte() called for kernel pmap\n"); - - m->valid = VM_PAGE_BITS_ALL; - vm_page_flag_clear(m, PG_ZERO); - return (m); } @@ -1158,17 +1228,12 @@ pmap_release(pmap_t pmap) ptdva = (vm_offset_t)pmap->pm_segtab; ptdpg = PHYS_TO_VM_PAGE(vtophys(ptdva)); - if (ptdva >= VM_MIN_KERNEL_ADDRESS) { - pmap_kremove(ptdva); - kmem_free(kernel_map, ptdva, PAGE_SIZE); - } else { - KASSERT(MIPS_IS_KSEG0_ADDR(ptdva), - ("pmap_release: 0x%0lx is not in kseg0", (long)ptdva)); - } + KASSERT(MIPS_IS_KSEG0_ADDR(ptdva), + ("pmap_release: 0x%0lx is not in kseg0", (long)ptdva)); ptdpg->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1); - vm_page_free_zero(ptdpg); + pmap_release_pte_page(ptdpg); PMAP_LOCK_DESTROY(pmap); } @@ -1178,10 +1243,10 @@ pmap_release(pmap_t pmap) void pmap_growkernel(vm_offset_t addr) { - vm_offset_t ptppaddr; + vm_offset_t pageva; vm_page_t nkpg; pt_entry_t *pte; - int i, req; + int i; mtx_assert(&kernel_map->system_mtx, MA_OWNED); if (kernel_vm_end == 0) { @@ -1213,26 +1278,13 @@ pmap_growkernel(vm_offset_t addr) /* * This index is bogus, but out of the way */ - req = VM_ALLOC_INTERRUPT | VM_ALLOC_WIRED | VM_ALLOC_NOOBJ; - nkpg = vm_page_alloc(NULL, nkpt, req); + nkpg = pmap_alloc_pte_page(kernel_pmap, nkpt, M_NOWAIT, &pageva); + if (!nkpg) panic("pmap_growkernel: no memory to grow kernel"); nkpt++; - - ptppaddr = VM_PAGE_TO_PHYS(nkpg); - if (ptppaddr >= MIPS_KSEG0_LARGEST_PHYS) { - /* - * We need to do something here, but I am not sure - * what. We can access anything in the 0 - 512Meg - * region, but if we get a page to go in the kernel - * segmap that is outside of of that we really need - * to have another mapping beyond the temporary ones - * I have. Not sure how to do this yet. FIXME FIXME. - */ - panic("Gak, can't handle a k-page table outside of lower 512Meg"); - } - pte = (pt_entry_t *)MIPS_PHYS_TO_KSEG0(ptppaddr); + pte = (pt_entry_t *)pageva; segtab_pde(kernel_segmap, kernel_vm_end) = (pd_entry_t)pte; /* @@ -1396,7 +1448,8 @@ pmap_remove_entry(struct pmap *pmap, vm_ } } - KASSERT(pv != NULL, ("pmap_remove_entry: pv not found")); + KASSERT(pv != NULL, ("pmap_remove_entry: pv not found, pa %lx va %lx", + (u_long)VM_PAGE_TO_PHYS(m), (u_long)va)); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); m->md.pv_list_count--; if (TAILQ_FIRST(&m->md.pv_list) == NULL) Modified: head/sys/mips/rmi/dev/xlr/rge.c ============================================================================== --- head/sys/mips/rmi/dev/xlr/rge.c Sun May 16 19:25:56 2010 (r208164) +++ head/sys/mips/rmi/dev/xlr/rge.c Sun May 16 19:43:48 2010 (r208165) @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #define __RMAN_RESOURCE_VISIBLE #include #include +#include #include #include @@ -83,6 +84,7 @@ __FBSDID("$FreeBSD$"); #include #include #include /* for DELAY */ +#include #include /* */ #include #include @@ -112,7 +114,6 @@ MODULE_DEPEND(rge, ether, 1, 1, 1); MODULE_DEPEND(rge, miibus, 1, 1, 1); /* #define DEBUG */ -/*#define RX_COPY */ #define RGE_TX_THRESHOLD 1024 #define RGE_TX_Q_SIZE 1024 @@ -204,10 +205,18 @@ ldadd_wu(unsigned int value, unsigned lo return value; } +static __inline__ uint32_t +xlr_enable_kx(void) +{ + uint32_t sr = mips_rd_status(); + + mips_wr_status((sr & ~MIPS_SR_INT_IE) | MIPS_SR_KX); + return sr; +} + /* #define mac_stats_add(x, val) ({(x) += (val);}) */ #define mac_stats_add(x, val) ldadd_wu(val, &x) - #define XLR_MAX_CORE 8 #define RGE_LOCK_INIT(_sc, _name) \ mtx_init(&(_sc)->rge_mtx, _name, MTX_NETWORK_LOCK, MTX_DEF) @@ -332,56 +341,6 @@ DRIVER_MODULE(miibus, rge, miibus_driver #define STR(x) __STR(x) #endif -#define XKPHYS 0x8000000000000000 -/* -- No longer needed RRS -static __inline__ uint32_t -lw_40bit_phys(uint64_t phys, int cca) -{ - uint64_t addr; - uint32_t value = 0; - unsigned long flags; - - addr = XKPHYS | ((uint64_t) cca << 59) | (phys & 0xfffffffffcULL); - - enable_KX(flags); - __asm__ __volatile__( - ".set push\n" - ".set noreorder\n" - ".set mips64\n" - "lw %0, 0(%1) \n" - ".set pop\n" - : "=r"(value) - : "r"(addr)); - - disable_KX(flags); - return value; -} -*/ -/* -- No longer used RRS -static __inline__ uint64_t -ld_40bit_phys(uint64_t phys, int cca) -{ - uint64_t addr; - uint64_t value = 0; - unsigned long flags; - - - addr = XKPHYS | ((uint64_t) cca << 59) | (phys & 0xfffffffffcULL); - enable_KX(flags); - __asm__ __volatile__( - ".set push\n" - ".set noreorder\n" - ".set mips64\n" - "ld %0, 0(%1) \n" - ".set pop\n" - : "=r"(value) - : "r"(addr)); - - disable_KX(flags); - return value; -} -*/ - void *xlr_tx_ring_mem; struct tx_desc_node { @@ -449,7 +408,7 @@ init_p2d_allocation(void) for (i = 0; i < 32; i++) { if (cpumask & (1 << i)) { - cpu = cpu_ltop_map[i]; + cpu = i; if (!active_core[cpu / 4]) { active_core[cpu / 4] = 1; xlr_total_active_core++; @@ -507,7 +466,7 @@ get_p2d_desc(void) { struct tx_desc_node *node; struct p2d_tx_desc *tx_desc = NULL; - int cpu = xlr_cpu_id(); + int cpu = xlr_core_id(); mtx_lock_spin(&tx_desc_lock[cpu]); node = TAILQ_FIRST(&tx_frag_desc[cpu]); @@ -527,7 +486,7 @@ static void free_p2d_desc(struct p2d_tx_desc *tx_desc) { struct tx_desc_node *node; - int cpu = xlr_cpu_id(); + int cpu = xlr_core_id(); mtx_lock_spin(&tx_desc_lock[cpu]); node = TAILQ_FIRST(&free_tx_frag_desc[cpu]); @@ -553,7 +512,7 @@ build_frag_list(struct mbuf *m_head, str vm_offset_t taddr; uint64_t fr_stid; - fr_stid = (xlr_cpu_id() << 3) + xlr_thr_id() + 4; + fr_stid = (xlr_core_id() << 3) + xlr_thr_id() + 4; if (tx_desc == NULL) return 1; @@ -620,21 +579,6 @@ build_frag_list(struct mbuf *m_head, str static void release_tx_desc(struct msgrng_msg *msg, int rel_buf) { - /* - * OLD code: vm_paddr_t paddr = msg->msg0 & 0xffffffffffULL; - * uint64_t temp; struct p2d_tx_desc *tx_desc; struct mbuf *m; - * - * paddr += (XLR_MAX_TX_FRAGS * sizeof(uint64_t)); *** In o32 we will - * crash here ****** temp = ld_40bit_phys(paddr, 3); tx_desc = - * (struct p2d_tx_desc *)((vm_offset_t)temp); - * - * if (rel_buf) { paddr += sizeof(uint64_t); - * - * temp = ld_40bit_phys(paddr, 3); - * - * m = (struct mbuf *)((vm_offset_t)temp); m_freem(m); } printf("Call - * fre_p2d_desc\n"); free_p2d_desc(tx_desc); - */ struct p2d_tx_desc *tx_desc, *chk_addr; struct mbuf *m; @@ -652,52 +596,6 @@ release_tx_desc(struct msgrng_msg *msg, free_p2d_desc(tx_desc); } -#ifdef RX_COPY -#define RGE_MAX_NUM_DESC (6 * MAX_NUM_DESC) -uint8_t *rge_rx_buffers[RGE_MAX_NUM_DESC]; -static struct mtx rge_rx_mtx; -int g_rx_buf_head; - -static void -init_rx_buf(void) -{ - int i; - uint8_t *buf, *start; - uint32_t size, *ptr; - - mtx_init(&rge_rx_mtx, "xlr rx_desc", NULL, MTX_SPIN); - - size = (RGE_MAX_NUM_DESC * (MAX_FRAME_SIZE + XLR_CACHELINE_SIZE)); - - start = (uint8_t *) contigmalloc(size, M_DEVBUF, M_NOWAIT | M_ZERO, - 0, 0xffffffff, XLR_CACHELINE_SIZE, 0); - if (start == NULL) - panic("NO RX BUFFERS"); - buf = start; - size = (MAX_FRAME_SIZE + XLR_CACHELINE_SIZE); - for (i = 0; i < RGE_MAX_NUM_DESC; i++) { - buf = start + (i * size); - ptr = (uint32_t *) buf; - *ptr = (uint32_t) buf; - rge_rx_buffers[i] = buf + XLR_CACHELINE_SIZE; - } -} - -static void * -get_rx_buf(void) -{ - void *ptr = NULL; - - mtx_lock_spin(&rge_rx_mtx); - if (g_rx_buf_head < RGE_MAX_NUM_DESC) { - ptr = (void *)rge_rx_buffers[g_rx_buf_head]; - g_rx_buf_head++; - } - mtx_unlock_spin(&rge_rx_mtx); - return ptr; -} - -#endif static struct mbuf * get_mbuf(void) @@ -716,23 +614,16 @@ static void free_buf(vm_paddr_t paddr) { struct mbuf *m; - uint32_t *temp; - uint32_t mag, um; + uint32_t mag, um, sr; + + sr = xlr_enable_kx(); + um = xlr_paddr_lw(paddr - XLR_CACHELINE_SIZE); + mag = xlr_paddr_lw(paddr - XLR_CACHELINE_SIZE + sizeof(uint32_t)); + mips_wr_status(sr); - /* - * This will crash I think. RRS temp = lw_40bit_phys((paddr - - * XLR_CACHELINE_SIZE), 3); m = (struct mbuf *)temp; - */ - /* - * This gets us a kseg0 address for the mbuf/magic on the ring but - * we need to get the va to free the mbuf. This is stored at *temp; - */ - temp = (uint32_t *) MIPS_PHYS_TO_KSEG0(paddr - XLR_CACHELINE_SIZE); - um = temp[0]; - mag = temp[1]; if (mag != 0xf00bad) { - printf("Something is wrong kseg:%p found mag:%x not 0xf00bad\n", - temp, mag); + printf("Something is wrong kseg:%lx found mag:%x not 0xf00bad\n", + (u_long)paddr, mag); return; } m = (struct mbuf *)um; @@ -743,19 +634,13 @@ free_buf(vm_paddr_t paddr) static void * get_buf(void) { -#ifdef RX_COPY - return get_rx_buf(); -#else struct mbuf *m_new = NULL; - + unsigned int *md; #ifdef INVARIANTS vm_paddr_t temp1, temp2; - #endif - unsigned int *md; m_new = get_mbuf(); - if (m_new == NULL) return NULL; @@ -765,8 +650,6 @@ get_buf(void) md[1] = 0xf00bad; m_adj(m_new, XLR_CACHELINE_SIZE); - - /* return (void *)m_new; */ #ifdef INVARIANTS temp1 = vtophys((vm_offset_t)m_new->m_data); temp2 = vtophys((vm_offset_t)m_new->m_data + 1536); @@ -774,7 +657,6 @@ get_buf(void) panic("ALLOCED BUFFER IS NOT CONTIGUOUS\n"); #endif return (void *)m_new->m_data; -#endif } /********************************************************************** @@ -826,13 +708,13 @@ xlr_mac_send_fr(struct driver_data *priv { int stid = priv->rfrbucket; struct msgrng_msg msg; - int vcpu = (xlr_cpu_id() << 2) + xlr_thr_id(); + int vcpu = xlr_cpu_id(); mac_make_desc_rfr(&msg, addr); /* Send the packet to MAC */ - dbg_msg("mac_%d: Sending free packet %llx to stid %d\n", - priv->instance, addr, stid); + dbg_msg("mac_%d: Sending free packet %lx to stid %d\n", + priv->instance, (u_long)addr, stid); if (priv->type == XLR_XGMAC) { while (message_send(1, MSGRNG_CODE_XGMAC, stid, &msg)); } else { @@ -1084,18 +966,25 @@ rmi_xlr_config_pde(struct driver_data *p /* uint32_t desc_pack_ctrl = 0; */ uint32_t cpumask; - cpumask = PCPU_GET(cpumask) | PCPU_GET(other_cpus); + cpumask = PCPU_GET(cpumask); +#ifdef SMP + /* + * rge may be called before SMP start in a BOOTP/NFSROOT + * setup. we will distribute packets to other cpus only when + * the SMP is started. + */ + if (smp_started) + cpumask |= PCPU_GET(other_cpus); +#endif - for (i = 0; i < 32; i++) { + for (i = 0; i < MAXCPU; i++) { if (cpumask & (1 << i)) { - cpu = cpu_ltop_map[i]; + cpu = i; bucket = ((cpu >> 2) << 3); - //|(cpu & 0x03); bucket_map |= (1ULL << bucket); - dbg_msg("i=%d, cpu=%d, bucket = %d, bucket_map=%llx\n", - i, cpu, bucket, bucket_map); } } + printf("rmi_xlr_config_pde: bucket_map=%llx\n", bucket_map); /* bucket_map = 0x1; */ xlr_write_reg(priv->mmio, R_PDE_CLASS_0, (bucket_map & 0xffffffff)); @@ -1116,6 +1005,28 @@ rmi_xlr_config_pde(struct driver_data *p } static void +rge_smp_update_pde(void *dummy __unused) +{ + int i; + struct driver_data *priv; + struct rge_softc *sc; + + printf("Updating packet distribution for SMP\n"); + for (i = 0; i < XLR_MAX_MACS; i++) { + sc = dev_mac[i]; + if (!sc) + continue; + priv = &(sc->priv); + rmi_xlr_mac_set_enable(priv, 0); + rmi_xlr_config_pde(priv); + rmi_xlr_mac_set_enable(priv, 1); + } +} + +SYSINIT(rge_smp_update_pde, SI_SUB_SMP, SI_ORDER_ANY, rge_smp_update_pde, NULL); + + +static void rmi_xlr_config_parser(struct driver_data *priv) { /* @@ -1613,10 +1524,7 @@ retry: static void mac_frin_replenish(void *args /* ignored */ ) { -#ifdef RX_COPY - return; -#else - int cpu = xlr_cpu_id(); + int cpu = xlr_core_id(); int done = 0; int i = 0; @@ -1685,7 +1593,6 @@ mac_frin_replenish(void *args /* ignored if (done == XLR_MAX_MACS) break; } -#endif } static volatile uint32_t g_tx_frm_tx_ok=0; @@ -1716,8 +1623,8 @@ rmi_xlr_mac_msgring_handler(int bucket, struct rge_softc *sc = NULL; struct driver_data *priv = 0; struct ifnet *ifp; - int cpu = xlr_cpu_id(); - int vcpu = (cpu << 2) + xlr_thr_id(); + int vcpu = xlr_cpu_id(); + int cpu = xlr_core_id(); dbg_msg("mac: bucket=%d, size=%d, code=%d, stid=%d, msg0=%llx msg1=%llx\n", bucket, size, code, stid, msg->msg0, msg->msg1); @@ -2098,80 +2005,18 @@ rge_release_resources(struct rge_softc * uint32_t gmac_rx_fail[32]; uint32_t gmac_rx_pass[32]; -#ifdef RX_COPY static void rge_rx(struct rge_softc *sc, vm_paddr_t paddr, int len) { - /* - * struct mbuf *m = (struct mbuf *)*(unsigned int *)((char *)addr - - * XLR_CACHELINE_SIZE); - */ struct mbuf *m; - void *ptr; - uint32_t *temp; + uint32_t tm, mag, sr; struct ifnet *ifp = sc->rge_ifp; - unsigned long msgrng_flags; - int cpu = PCPU_GET(cpuid); - - - temp = (uint32_t *) MIPS_PHYS_TO_KSEG0(paddr - XLR_CACHELINE_SIZE); - ptr = (void *)(temp + XLR_CACHELINE_SIZE); - m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); - if (m != NULL) { - m->m_len = m->m_pkthdr.len = MCLBYTES; - m_copyback(m, 0, len + BYTE_OFFSET, ptr); - /* align the data */ - m->m_data += BYTE_OFFSET; - m->m_pkthdr.len = m->m_len = len; - m->m_pkthdr.rcvif = ifp; - gmac_rx_pass[cpu]++; - } else { - gmac_rx_fail[cpu]++; - } - msgrng_access_enable(msgrng_flags); - xlr_mac_send_fr(&sc->priv, paddr, MAX_FRAME_SIZE); - msgrng_access_disable(msgrng_flags); - -#ifdef DUMP_PACKETS - { - int i = 0; - unsigned char *buf = (char *)m->m_data; + sr = xlr_enable_kx(); + tm = xlr_paddr_lw(paddr - XLR_CACHELINE_SIZE); + mag = xlr_paddr_lw(paddr - XLR_CACHELINE_SIZE + sizeof(uint32_t)); + mips_wr_status(sr); - printf("Rx Packet: length=%d\n", len); - for (i = 0; i < 64; i++) { - if (i && (i % 16) == 0) - printf("\n"); - printf("%02x ", buf[i]); - } - printf("\n"); - } -#endif - - - if (m) { - ifp->if_ipackets++; - (*ifp->if_input) (ifp, m); - } -} - -#else -static void -rge_rx(struct rge_softc *sc, vm_paddr_t paddr, int len) -{ - /* - * struct mbuf *m = (struct mbuf *)*(unsigned int *)((char *)addr - - * XLR_CACHELINE_SIZE); - */ - struct mbuf *m; - uint32_t *temp, tm, mag; - - struct ifnet *ifp = sc->rge_ifp; - - - temp = (uint32_t *) MIPS_PHYS_TO_KSEG0(paddr - XLR_CACHELINE_SIZE); - tm = temp[0]; - mag = temp[1]; m = (struct mbuf *)tm; if (mag != 0xf00bad) { /* somebody else packet Error - FIXME in intialization */ @@ -2201,8 +2046,6 @@ rge_rx(struct rge_softc *sc, vm_paddr_t (*ifp->if_input) (ifp, m); } -#endif *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Sun May 16 19:44:08 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 690FA106564A; Sun, 16 May 2010 19:44:08 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 570B58FC14; Sun, 16 May 2010 19:44:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GJi8YX096964; Sun, 16 May 2010 19:44:08 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GJi8bM096961; Sun, 16 May 2010 19:44:08 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005161944.o4GJi8bM096961@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 16 May 2010 19:44:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208166 - in head: cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 19:44:08 -0000 Author: pjd Date: Sun May 16 19:44:08 2010 New Revision: 208166 URL: http://svn.freebsd.org/changeset/base/208166 Log: Fix userland build by making io_task available only for the kernel and by providing taskq_dispatch_safe() macro. MFC after: 1 week Modified: head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Modified: head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Sun May 16 19:43:48 2010 (r208165) +++ head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Sun May 16 19:44:08 2010 (r208166) @@ -343,6 +343,9 @@ extern void taskq_wait(taskq_t *); extern int taskq_member(taskq_t *, void *); extern void system_taskq_init(void); +#define taskq_dispatch_safe(tq, func, arg, task) \ + taskq_dispatch((tq), (func), (arg), TQ_SLEEP) + #define XVA_MAPSIZE 3 #define XVA_MAGIC 0x78766174 Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Sun May 16 19:43:48 2010 (r208165) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Sun May 16 19:44:08 2010 (r208166) @@ -317,8 +317,10 @@ struct zio { /* FMA state */ uint64_t io_ena; +#ifdef _KERNEL /* FreeBSD only. */ struct ostask io_task; +#endif }; extern zio_t *zio_null(zio_t *pio, spa_t *spa, From owner-svn-src-head@FreeBSD.ORG Sun May 16 19:54:43 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 989A71065672; Sun, 16 May 2010 19:54:43 +0000 (UTC) (envelope-from juli@clockworksquid.com) Received: from mail-px0-f182.google.com (mail-px0-f182.google.com [209.85.212.182]) by mx1.freebsd.org (Postfix) with ESMTP id 5A8BA8FC08; Sun, 16 May 2010 19:54:42 +0000 (UTC) Received: by pxi7 with SMTP id 7so860374pxi.13 for ; Sun, 16 May 2010 12:54:42 -0700 (PDT) Received: by 10.141.124.3 with SMTP id b3mr2904972rvn.123.1274039682616; Sun, 16 May 2010 12:54:42 -0700 (PDT) MIME-Version: 1.0 Sender: juli@clockworksquid.com Received: by 10.140.247.13 with HTTP; Sun, 16 May 2010 12:54:22 -0700 (PDT) In-Reply-To: <201005161943.o4GJhnTo096839@svn.freebsd.org> References: <201005161943.o4GJhnTo096839@svn.freebsd.org> From: Juli Mallett Date: Sun, 16 May 2010 12:54:22 -0700 X-Google-Sender-Auth: _jXcWiqN0hqDjkNSeNDAInP3sWQ Message-ID: To: Randall Stewart Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208165 - in head/sys: kern mips/conf mips/include mips/mips mips/rmi mips/rmi/dev/xlr X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 19:54:43 -0000 On Sun, May 16, 2010 at 12:43, Randall Stewart wrote: > Author: rrs > Date: Sun May 16 19:43:48 2010 > New Revision: 208165 > URL: http://svn.freebsd.org/changeset/base/208165 > > Log: > =A0This pushes all of JC's patches that I have in place. I > =A0am now able to run 32 cores ok.. but I still will hang > =A0on buildworld with a NFS problem. I suspect I am missing > =A0a patch for the netlogic rge driver. > > =A0JC check and see if I am missing anything except your > =A0core-mask changes This isn't a very good commit message. Commits communicate things going forward. A follow-up E-Mail CCing JC would have been a good way to chat with him about its completeness. More importantly, though, there's just no description of the contents. This is particularly frustrating as it's also not broken up into functional chunks very well. Given the fact that there are MI changes and pan-MIPS changes here it would be nice to see a little more care taken. The changes to the MIPS MP code, for instance, I thought we had discussed and decided were sub-par and easily made less invasive. I can't comment on the RMI-specific stuff except to say that it's an unenumerated jumble of VM, networking and SMP changes. From owner-svn-src-head@FreeBSD.ORG Sun May 16 19:57:39 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 19B4E1065673; Sun, 16 May 2010 19:57:39 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 084B58FC0C; Sun, 16 May 2010 19:57:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GJvcEP099940; Sun, 16 May 2010 19:57:38 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GJvcVV099932; Sun, 16 May 2010 19:57:38 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005161957.o4GJvcVV099932@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 19:57:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208167 - head/sys/powerpc/powermac X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 19:57:39 -0000 Author: nwhitehorn Date: Sun May 16 19:57:38 2010 New Revision: 208167 URL: http://svn.freebsd.org/changeset/base/208167 Log: Enable smu(4) to report fan speeds on late-model Powermac G5s. Modified: head/sys/powerpc/powermac/smu.c Modified: head/sys/powerpc/powermac/smu.c ============================================================================== --- head/sys/powerpc/powermac/smu.c Sun May 16 19:44:08 2010 (r208166) +++ head/sys/powerpc/powermac/smu.c Sun May 16 19:57:38 2010 (r208167) @@ -662,14 +662,34 @@ static int smu_fan_read_rpm(device_t smu, struct smu_fan *fan) { struct smu_cmd cmd; + int rpm, error; - cmd.cmd = SMU_FAN; - cmd.len = 1; - cmd.data[0] = 1; + if (!fan->old_style) { + cmd.cmd = SMU_FAN; + cmd.len = 2; + cmd.data[0] = 0x31; + cmd.data[1] = fan->reg; + + error = smu_run_cmd(smu, &cmd, 1); + if (error) + fan->old_style = 1; + + rpm = (cmd.data[0] << 8) | cmd.data[1]; + } - smu_run_cmd(smu, &cmd, 1); + if (fan->old_style) { + cmd.cmd = SMU_FAN; + cmd.len = 1; + cmd.data[0] = 1; + + error = smu_run_cmd(smu, &cmd, 1); + if (error) + return (error); - return ((cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2]); + rpm = (cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2]; + } + + return (rpm); } static int @@ -685,6 +705,9 @@ smu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS) fan = &sc->sc_fans[arg2]; rpm = smu_fan_read_rpm(smu, fan); + if (rpm < 0) + return (rpm); + error = sysctl_handle_int(oidp, &rpm, 0, req); if (error || !req->newptr) From owner-svn-src-head@FreeBSD.ORG Sun May 16 20:13:58 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BD34A106564A; Sun, 16 May 2010 20:13:58 +0000 (UTC) (envelope-from dimitry@andric.com) Received: from tensor.andric.com (cl-327.ede-01.nl.sixxs.net [IPv6:2001:7b8:2ff:146::2]) by mx1.freebsd.org (Postfix) with ESMTP id 3BB878FC08; Sun, 16 May 2010 20:13:58 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7:0:b97b:7c39:3a92:b81] (unknown [IPv6:2001:7b8:3a7:0:b97b:7c39:3a92:b81]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 29FAA5C43; Sun, 16 May 2010 22:13:57 +0200 (CEST) Message-ID: <4BF0520C.5040903@andric.com> Date: Sun, 16 May 2010 22:14:04 +0200 From: Dimitry Andric User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.5pre) Gecko/20100516 Lanikai/3.1pre MIME-Version: 1.0 To: Jeff Roberson References: <201004240705.o3O75aZP055400@svn.freebsd.org> In-Reply-To: <201004240705.o3O75aZP055400@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r207141 - in head: lib/libufs sbin/dumpfs sbin/fsck_ffs sbin/fsdb sbin/tunefs sys/kern sys/sys sys/ufs/ffs sys/ufs/ufs usr.sbin/makefs/ffs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 20:13:58 -0000 On 2010-04-24 09:05, Jeff Roberson wrote: > Author: jeff > Date: Sat Apr 24 07:05:35 2010 > New Revision: 207141 > URL: http://svn.freebsd.org/changeset/base/207141 > > Log: > - Merge soft-updates journaling from projects/suj/head into head. This > brings in support for an optional intent log which eliminates the need > for background fsck on unclean shutdown. Hi Jeff, Sorry that I am a bit late in checking this out, but my -CURRENT box was nice and stable, and only now did I update it. I found out that this specific commit has caused softupdates to become unstable for me. That is, when running a specific set of commands (just building the bash port), I get a few LORs involving softupdates; first this one: lock order reversal: 1st 0xe41e9ee4 bufwait (bufwait) @ /usr/src/sys/kern/vfs_bio.c:2581 2nd 0xc4e59a00 dirhash (dirhash) @ /usr/src/sys/ufs/ufs/ufs_dirhash.c:283 KDB: stack backtrace: db_trace_self_wrapper(c0cc05e4,f32287bc,c08e7c55,c08d7fcb,c0cc35be,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08d7fcb,c0cc35be,c4122fc8,c41263c8,f3228818,...) at kdb_backtrace+0x29 _witness_debugger(c0cc35be,c4e59a00,c0ce70a0,c41263c8,c0ce6d25,...) at _witness_debugger+0x25 witness_checkorder(c4e59a00,9,c0ce6d25,11b,0,...) at witness_checkorder+0x839 _sx_xlock(c4e59a00,0,c0ce6d25,11b,c4fc01d0,...) at _sx_xlock+0x85 ufsdirhash_acquire(e41e9e84,e74f4800,200,e74f4818,f32288e8,...) at ufsdirhash_acquire+0x35 ufsdirhash_add(c4fc01d0,f3228944,818,f32288d4,f32288d8,...) at ufsdirhash_add+0x13 ufs_direnter(c4fc2660,c4fdebb0,f3228944,f3228bd4,0,...) at ufs_direnter+0x6f9 ufs_makeinode(f3228bd4,0,f3228b30,f3228a8c,c0bfc9f5,...) at ufs_makeinode+0x557 ufs_create(f3228b30,f3228b48,0,0,f3228ba8,...) at ufs_create+0x30 VOP_CREATE_APV(c0dcde00,f3228b30,f3228bd4,f3228ac8,0,...) at VOP_CREATE_APV+0xa5 vn_open_cred(f3228ba8,f3228c5c,1a4,0,c4ccf900,...) at vn_open_cred+0x215 vn_open(f3228ba8,f3228c5c,1a4,c4d22188,0,...) at vn_open+0x3b kern_openat(c4e55900,ffffff9c,28415180,0,a02,...) at kern_openat+0x125 kern_open(c4e55900,28415180,0,a01,1a4,...) at kern_open+0x35 open(c4e55900,f3228cf8,c0cf8fe1,c0cc3e0e,c4e4daa0,...) at open+0x30 syscall(f3228d38) at syscall+0x220 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (5, FreeBSD ELF32, open), eip = 0x283685e3, esp = 0xbfbfe6fc, ebp = 0xbfbfe728 --- Then the next one: lock order reversal: 1st 0xc4eb3c08 ufs (ufs) @ /usr/src/sys/kern/vfs_lookup.c:502 2nd 0xe415b130 bufwait (bufwait) @ /usr/src/sys/ufs/ffs/ffs_softdep.c:11189 3rd 0xc50778d8 ufs (ufs) @ /usr/src/sys/kern/vfs_subr.c:2091 KDB: stack backtrace: db_trace_self_wrapper(c0cc05e4,f3225300,c08e7c55,c08d7fcb,c0cc35d7,...) at db_trace_self_wrapper+0x26 kdb_backtrace(c08d7fcb,c0cc35d7,c4122fc8,c4126360,f322535c,...) at kdb_backtrace+0x29 _witness_debugger(c0cc35d7,c50778d8,c0cb5991,c4126360,c0cca6ba,...) at _witness_debugger+0x25 witness_checkorder(c50778d8,9,c0cca6ba,82b,0,...) at witness_checkorder+0x839 __lockmgr_args(c50778d8,80100,c50778f8,0,0,...) at __lockmgr_args+0x7f9 ffs_lock(f3225480,c08e79fb,c0cc9b5f,80100,c5077880,...) at ffs_lock+0x8a VOP_LOCK1_APV(c0dcde00,f3225480,c4e55be4,c0de87a0,c5077880,...) at VOP_LOCK1_APV+0xb5 _vn_lock(c5077880,80100,c0cca6ba,82b,4,...) at _vn_lock+0x5e vget(c5077880,80100,c4e55b40,50,0,...) at vget+0xb9 vfs_hash_get(c4ac8ca8,1a9e03,80000,c4e55b40,f32255d0,...) at vfs_hash_get+0xe6 ffs_vgetf(c4ac8ca8,1a9e03,80000,f32255d0,1,...) at ffs_vgetf+0x49 softdep_sync_metadata(c4eb3bb0,0,c0ce68d1,147,0,...) at softdep_sync_metadata+0xc92 ffs_syncvnode(c4eb3bb0,1,c4e55b40,f3225690,246,...) at ffs_syncvnode+0x3e2 ffs_truncate(c4eb3bb0,a00,0,880,c4ccf900,...) at ffs_truncate+0x862 ufs_direnter(c4eb3bb0,c5111bb0,f3225944,f3225bd4,0,...) at ufs_direnter+0x8d4 ufs_makeinode(f3225bd4,0,f3225b30,f3225a8c,c0bfc9f5,...) at ufs_makeinode+0x557 ufs_create(f3225b30,f3225b48,0,0,f3225ba8,...) at ufs_create+0x30 VOP_CREATE_APV(c0dcde00,f3225b30,f3225bd4,f3225ac8,0,...) at VOP_CREATE_APV+0xa5 vn_open_cred(f3225ba8,f3225c5c,1a4,0,c4ccf900,...) at vn_open_cred+0x215 vn_open(f3225ba8,f3225c5c,1a4,c4d22348,28411000,...) at vn_open+0x3b kern_openat(c4e55b40,ffffff9c,28409ad4,0,602,...) at kern_openat+0x125 kern_open(c4e55b40,28409ad4,0,601,1b6,...) at kern_open+0x35 open(c4e55b40,f3225cf8,c,c4e55b40,c4e4dd48,...) at open+0x30 syscall(f3225d38) at syscall+0x220 Xint0x80_syscall() at Xint0x80_syscall+0x20 --- syscall (5, FreeBSD ELF32, open), eip = 0x281e15e3, esp = 0xbfbfe2cc, ebp = 0xbfbfe388 --- And soon after that second one, the system will just stop reacting to any keyboard input, or on any ssh sessions. It can still be ping'd, though, so something is definitely alive, but it is totally unusable. Is there any possibility of finding out whether there's a real deadlock going on? I can access ddb since it's a virtual machine. Btw, I ended up on r207141 by bisecting; r207139 works perfectly stable, r207141 will always hang up after a certain amount of time. I realize that r207141 was a merge from a project branch, so maybe I can try to bisect in that branch, to see if I can pinpoint a specific change that causes this breakage? From owner-svn-src-head@FreeBSD.ORG Sun May 16 20:31:31 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF8A41065673; Sun, 16 May 2010 20:31:31 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CE6D88FC24; Sun, 16 May 2010 20:31:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GKVVHk008145; Sun, 16 May 2010 20:31:31 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GKVV2u008143; Sun, 16 May 2010 20:31:31 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005162031.o4GKVV2u008143@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 20:31:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208168 - head/sys/powerpc/powermac X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 20:31:32 -0000 Author: nwhitehorn Date: Sun May 16 20:31:31 2010 New Revision: 208168 URL: http://svn.freebsd.org/changeset/base/208168 Log: It is not necessary (and in some cases harmful) to hardcode ata_kauai's IRQ to 39 on K2 devices, as well as Shasta ones. Reported by: Andreas Tobler Modified: head/sys/powerpc/powermac/ata_kauai.c Modified: head/sys/powerpc/powermac/ata_kauai.c ============================================================================== --- head/sys/powerpc/powermac/ata_kauai.c Sun May 16 19:57:38 2010 (r208167) +++ head/sys/powerpc/powermac/ata_kauai.c Sun May 16 20:31:31 2010 (r208168) @@ -220,8 +220,9 @@ ata_kauai_probe(device_t dev) if (compatstring != NULL && strcmp(compatstring,"shasta-ata") == 0) sc->shasta = 1; - /* Regular Kauai controllers apparently need this hack */ - if (!sc->shasta) + /* Pre-K2 controllers apparently need this hack */ + if (!sc->shasta && + (compatstring == NULL || strcmp(compatstring, "K2-UATA") != 0)) bus_set_resource(dev, SYS_RES_IRQ, 0, 39, 1); rid = PCIR_BARS; From owner-svn-src-head@FreeBSD.ORG Sun May 16 20:43:17 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7AEBA1065672; Sun, 16 May 2010 20:43:17 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 69F478FC21; Sun, 16 May 2010 20:43:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GKhHpl010718; Sun, 16 May 2010 20:43:17 GMT (envelope-from kientzle@svn.freebsd.org) Received: (from kientzle@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GKhHp8010715; Sun, 16 May 2010 20:43:17 GMT (envelope-from kientzle@svn.freebsd.org) Message-Id: <201005162043.o4GKhHp8010715@svn.freebsd.org> From: Tim Kientzle Date: Sun, 16 May 2010 20:43:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208169 - head/lib/libarchive X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 20:43:17 -0000 Author: kientzle Date: Sun May 16 20:43:17 2010 New Revision: 208169 URL: http://svn.freebsd.org/changeset/base/208169 Log: Reorganize slightly in preparation for making lzma and bz2 support conditional. Modified: head/lib/libarchive/Makefile head/lib/libarchive/config_freebsd.h Modified: head/lib/libarchive/Makefile ============================================================================== --- head/lib/libarchive/Makefile Sun May 16 20:31:31 2010 (r208168) +++ head/lib/libarchive/Makefile Sun May 16 20:43:17 2010 (r208169) @@ -2,8 +2,16 @@ .include LIB= archive -DPADD= ${LIBBZ2} ${LIBZ} ${LIBMD} ${LIBLZMA} -LDADD= -lbz2 -lz -lmd -llzma +DPADD= ${LIBZ} ${LIBMD} +LDADD= -lz -lmd + +DPADD+= ${LIBBZ2} +LDADD+= -lbz2 +CFLAGS+= -DHAVE_BZLIB_H 1 + +DPADD+= ${LIBLZMA} +LDADD+= -llzma +CFLAGS+= -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1 # FreeBSD SHLIB_MAJOR value is managed as part of the FreeBSD system. # It has no real relation to the libarchive version number. @@ -11,7 +19,6 @@ SHLIB_MAJOR= 5 CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" CFLAGS+= -I${.OBJDIR} -CFLAGS+= -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1 .if ${MK_OPENSSL} != "no" CFLAGS+= -DWITH_OPENSSL Modified: head/lib/libarchive/config_freebsd.h ============================================================================== --- head/lib/libarchive/config_freebsd.h Sun May 16 20:31:31 2010 (r208168) +++ head/lib/libarchive/config_freebsd.h Sun May 16 20:43:17 2010 (r208169) @@ -52,7 +52,6 @@ #endif #define HAVE_BSDXML_H 1 -#define HAVE_BZLIB_H 1 #define HAVE_CHFLAGS 1 #define HAVE_CHOWN 1 #define HAVE_DECL_INT64_MAX 1 From owner-svn-src-head@FreeBSD.ORG Sun May 16 20:48:02 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A25241065672; Sun, 16 May 2010 20:48:02 +0000 (UTC) (envelope-from kientzle@freebsd.org) Received: from monday.kientzle.com (kientzle.com [66.166.149.50]) by mx1.freebsd.org (Postfix) with ESMTP id 58C828FC17; Sun, 16 May 2010 20:48:02 +0000 (UTC) Received: (from root@localhost) by monday.kientzle.com (8.14.3/8.14.3) id o4GKmIjd006039; Sun, 16 May 2010 20:48:18 GMT (envelope-from kientzle@freebsd.org) Received: from horton.x.kientzle.com (fw2.kientzle.com [10.123.1.2]) by kientzle.com with SMTP id itt5meaxfyidh7etigcicbfwww; Sun, 16 May 2010 20:48:17 +0000 (UTC) (envelope-from kientzle@freebsd.org) Message-ID: <4BF059FF.8050002@freebsd.org> Date: Sun, 16 May 2010 13:47:59 -0700 From: Tim Kientzle User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.23) Gecko/20100314 SeaMonkey/1.1.18 MIME-Version: 1.0 To: Anonymous References: <201005081628.o48GSM9s067363__30886.3841965378$1273336146$gmane$org@svn.freebsd.org> <86aas3oc8b.fsf@gmail.com> In-Reply-To: <86aas3oc8b.fsf@gmail.com> Content-Type: multipart/mixed; boundary="------------040200080200060400000804" Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r207790 - head/usr.bin/tar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 20:48:02 -0000 This is a multi-part message in MIME format. --------------040200080200060400000804 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Please try the attached patch and let me know if it fixes it for you... Cheers, Tim Anonymous wrote: > Tim Kientzle writes: > >> Author: kientzle >> Date: Sat May 8 16:28:22 2010 >> New Revision: 207790 >> URL: http://svn.freebsd.org/changeset/base/207790 >> >> Log: >> Config updates. >> >> Modified: >> head/usr.bin/tar/config_freebsd.h > > Smth broke after this commit. Hitting ^T causes ports to barf errors. > > before > > x11-toolkits/wxgtk28 $ make BATCH= patch > ===> Extracting for wxgtk2-2.8.10_4 > => MD5 Checksum OK for wxGTK-2.8.10.tar.bz2. > => SHA256 Checksum OK for wxGTK-2.8.10.tar.bz2. > load: 0.05 cmd: sh 64229 [running] 0.00r 0.00u 0.00s 0% 1576k > load: 0.05 cmd: bzip2 64231 [running] 0.19r 0.16u 0.00s 2% 4564k > load: 0.05 cmd: bsdtar 64232 [running] 0.36r 0.00u 0.13s 1% 2420k > load: 0.05 cmd: bzip2 64231 [running] 0.56r 0.47u 0.00s 4% 4568k > load: 0.05 cmd: bsdtar 64232 [running] 1.82r 0.05u 0.62s 6% 2448k > ===> Patching for wxgtk2-2.8.10_4 > ===> Applying FreeBSD patches for wxgtk2-2.8.10_4 > > after > > x11-toolkits/wxgtk28 $ make BATCH= patch > load: 0.05 cmd: make 63587 [zio->io_cv)] 0.19r 0.03u 0.00s 0% 1268k > ===> Extracting for wxgtk2-2.8.10_4 > load: 0.05 cmd: awk 63621 [zio->io_cv)] 0.01r 0.00u 0.00s 0% 1492k > => MD5 Checksum OK for wxGTK-2.8.10.tar.bz2. > => SHA256 Checksum OK for wxGTK-2.8.10.tar.bz2. > load: 0.05 cmd: bzip2 63631 [running] 0.13r 0.10u 0.00s 1% 4564k > wxGTK-2.8.10/contrib/include/wx/fl/controlbar.h: Error reading stdin > load: 0.05 cmd: bzip2 63631 [running] 0.34r 0.30u 0.00s 3% 4568k > tar: Error exit delayed from previous errors. > *** Error code 1 > > Looks like errors are related to extracting from stdin. > > $ bzip2 -dc wxGTK-2.8.10.tar.bz2 | tar xf - > load: 0.04 cmd: bzip2 65117 [running] 0.17r 0.07u 0.00s 0% 4564k > tar: Error reading stdin > load: 0.04 cmd: bzip2 65117 [running] 0.33r 0.23u 0.00s 2% 4568k > tar: Error exit delayed from previous errors. > zsh: broken pipe bzip2 -dc wxGTK-2.8.10.tar.bz2 | > zsh: exit 1 tar xf - > > --------------040200080200060400000804 Content-Type: text/x-patch; name="libarchive_retry_eintr.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="libarchive_retry_eintr.patch" Index: archive_read_open_fd.c =================================================================== --- archive_read_open_fd.c (revision 208162) +++ archive_read_open_fd.c (working copy) @@ -116,11 +116,15 @@ ssize_t bytes_read; *buff = mine->buffer; - bytes_read = read(mine->fd, mine->buffer, mine->block_size); - if (bytes_read < 0) { - archive_set_error(a, errno, "Error reading fd %d", mine->fd); + for (;;) { + bytes_read = read(mine->fd, mine->buffer, mine->block_size); + if (bytes_read < 0) { + if (errno == EINTR) + continue; + archive_set_error(a, errno, "Error reading fd %d", mine->fd); + } + return (bytes_read); } - return (bytes_read); } #if ARCHIVE_API_VERSION < 2 Index: archive_read_open_filename.c =================================================================== --- archive_read_open_filename.c (revision 208162) +++ archive_read_open_filename.c (working copy) @@ -160,15 +160,19 @@ ssize_t bytes_read; *buff = mine->buffer; - bytes_read = read(mine->fd, mine->buffer, mine->block_size); - if (bytes_read < 0) { - if (mine->filename[0] == '\0') - archive_set_error(a, errno, "Error reading stdin"); - else - archive_set_error(a, errno, "Error reading '%s'", - mine->filename); + for (;;) { + bytes_read = read(mine->fd, mine->buffer, mine->block_size); + if (bytes_read < 0) { + if (errno == EINTR) + continue; + else if (mine->filename[0] == '\0') + archive_set_error(a, errno, "Error reading stdin"); + else + archive_set_error(a, errno, "Error reading '%s'", + mine->filename); + } + return (bytes_read); } - return (bytes_read); } #if ARCHIVE_API_VERSION < 2 --------------040200080200060400000804-- From owner-svn-src-head@FreeBSD.ORG Sun May 16 21:06:27 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 081E31065670; Sun, 16 May 2010 21:06:27 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EABAC8FC0A; Sun, 16 May 2010 21:06:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GL6Qur015818; Sun, 16 May 2010 21:06:26 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GL6Qnm015816; Sun, 16 May 2010 21:06:26 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005162106.o4GL6Qnm015816@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 16 May 2010 21:06:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208170 - head/usr.bin/wc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 21:06:27 -0000 Author: pjd Date: Sun May 16 21:06:26 2010 New Revision: 208170 URL: http://svn.freebsd.org/changeset/base/208170 Log: On SIGINFO print current values on stderr. Modified: head/usr.bin/wc/wc.c Modified: head/usr.bin/wc/wc.c ============================================================================== --- head/usr.bin/wc/wc.c Sun May 16 20:43:17 2010 (r208169) +++ head/usr.bin/wc/wc.c Sun May 16 21:06:26 2010 (r208170) @@ -63,11 +63,20 @@ __FBSDID("$FreeBSD$"); #include uintmax_t tlinect, twordct, tcharct, tlongline; -int doline, doword, dochar, domulti, dolongline; +int doline, doword, dochar, domulti, dolongline, siginfo; +static void show_cnt(const char *file, uintmax_t linect, uintmax_t wordct, + uintmax_t charct, uintmax_t llct); static int cnt(const char *); static void usage(void); +static void +siginfo_handler(int sig __unused) +{ + + siginfo = 1; +} + int main(int argc, char *argv[]) { @@ -101,6 +110,8 @@ main(int argc, char *argv[]) argv += optind; argc -= optind; + (void)signal(SIGINFO, siginfo_handler); + /* Wc's flags are on by default. */ if (doline + doword + dochar + domulti + dolongline == 0) doline = doword = dochar = 1; @@ -110,31 +121,46 @@ main(int argc, char *argv[]) if (!*argv) { if (cnt((char *)NULL) != 0) ++errors; - else - (void)printf("\n"); - } - else do { - if (cnt(*argv) != 0) - ++errors; - else - (void)printf(" %s\n", *argv); - ++total; - } while(*++argv); - - if (total > 1) { - if (doline) - (void)printf(" %7ju", tlinect); - if (doword) - (void)printf(" %7ju", twordct); - if (dochar || domulti) - (void)printf(" %7ju", tcharct); - if (dolongline) - (void)printf(" %7ju", tlongline); - (void)printf(" total\n"); + } else { + do { + if (cnt(*argv) != 0) + ++errors; + ++total; + } while(*++argv); } + + if (total > 1) + show_cnt("total", tlinect, twordct, tcharct, tlongline); exit(errors == 0 ? 0 : 1); } +static void +show_cnt(const char *file, uintmax_t linect, uintmax_t wordct, + uintmax_t charct, uintmax_t llct) +{ + FILE *out; + + if (!siginfo) + out = stdout; + else { + out = stderr; + siginfo = 0; + } + + if (doline) + (void)fprintf(out, " %7ju", linect); + if (doword) + (void)fprintf(out, " %7ju", wordct); + if (dochar || domulti) + (void)fprintf(out, " %7ju", charct); + if (dolongline) + (void)fprintf(out, " %7ju", llct); + if (file != NULL) + (void)fprintf(out, " %s\n", file); + else + (void)fprintf(out, "\n"); +} + static int cnt(const char *file) { @@ -149,10 +175,9 @@ cnt(const char *file) mbstate_t mbs; linect = wordct = charct = llct = tmpll = 0; - if (file == NULL) { - file = "stdin"; + if (file == NULL) fd = STDIN_FILENO; - } else { + else { if ((fd = open(file, O_RDONLY, 0)) < 0) { warn("%s: open", file); return (1); @@ -171,6 +196,10 @@ cnt(const char *file) (void)close(fd); return (1); } + if (siginfo) { + show_cnt(file, linect, wordct, charct, + llct); + } charct += len; for (p = buf; len--; ++p) if (*p == '\n') { @@ -182,16 +211,13 @@ cnt(const char *file) tmpll++; } tlinect += linect; - (void)printf(" %7ju", linect); - if (dochar) { + if (dochar) tcharct += charct; - (void)printf(" %7ju", charct); - } if (dolongline) { if (llct > tlongline) tlongline = llct; - (void)printf(" %7ju", tlongline); } + show_cnt(file, linect, wordct, charct, llct); (void)close(fd); return (0); } @@ -206,8 +232,9 @@ cnt(const char *file) return (1); } if (S_ISREG(sb.st_mode)) { - (void)printf(" %7lld", (long long)sb.st_size); - tcharct += sb.st_size; + charct = sb.st_size; + show_cnt(file, linect, wordct, charct, llct); + tcharct += charct; (void)close(fd); return (0); } @@ -220,12 +247,14 @@ word: gotsp = 1; memset(&mbs, 0, sizeof(mbs)); while ((len = read(fd, buf, MAXBSIZE)) != 0) { if (len == -1) { - warn("%s: read", file); + warn("%s: read", file != NULL ? file : "stdin"); (void)close(fd); return (1); } p = buf; while (len > 0) { + if (siginfo) + show_cnt(file, linect, wordct, charct, llct); if (!domulti || MB_CUR_MAX == 1) { clen = 1; wch = (unsigned char)*p; @@ -233,7 +262,8 @@ word: gotsp = 1; (size_t)-1) { if (!warned) { errno = EILSEQ; - warn("%s", file); + warn("%s", + file != NULL ? file : "stdin"); warned = 1; } memset(&mbs, 0, sizeof(mbs)); @@ -264,24 +294,18 @@ word: gotsp = 1; } if (domulti && MB_CUR_MAX > 1) if (mbrtowc(NULL, NULL, 0, &mbs) == (size_t)-1 && !warned) - warn("%s", file); - if (doline) { + warn("%s", file != NULL ? file : "stdin"); + if (doline) tlinect += linect; - (void)printf(" %7ju", linect); - } - if (doword) { + if (doword) twordct += wordct; - (void)printf(" %7ju", wordct); - } - if (dochar || domulti) { + if (dochar || domulti) tcharct += charct; - (void)printf(" %7ju", charct); - } if (dolongline) { if (llct > tlongline) tlongline = llct; - (void)printf(" %7ju", llct); } + show_cnt(file, linect, wordct, charct, llct); (void)close(fd); return (0); } From owner-svn-src-head@FreeBSD.ORG Sun May 16 21:38:24 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 079721065670; Sun, 16 May 2010 21:38:24 +0000 (UTC) (envelope-from marius@alchemy.franken.de) Received: from alchemy.franken.de (alchemy.franken.de [194.94.249.214]) by mx1.freebsd.org (Postfix) with ESMTP id 737838FC0C; Sun, 16 May 2010 21:38:23 +0000 (UTC) Received: from alchemy.franken.de (localhost [127.0.0.1]) by alchemy.franken.de (8.14.3/8.14.3/ALCHEMY.FRANKEN.DE) with ESMTP id o4GLcMTP029152; Sun, 16 May 2010 23:38:22 +0200 (CEST) (envelope-from marius@alchemy.franken.de) Received: (from marius@localhost) by alchemy.franken.de (8.14.3/8.14.3/Submit) id o4GLcMIh029151; Sun, 16 May 2010 23:38:22 +0200 (CEST) (envelope-from marius) Date: Sun, 16 May 2010 23:38:22 +0200 From: Marius Strobl To: Nathan Whitehorn Message-ID: <20100516213822.GA49967@alchemy.franken.de> References: <201005161557.o4GFv0Lf046659@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201005161557.o4GFv0Lf046659@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208152 - in head/sys: dev/ofw powerpc/aim powerpc/ofw X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 21:38:24 -0000 On Sun, May 16, 2010 at 03:57:00PM +0000, Nathan Whitehorn wrote: > Author: nwhitehorn > Date: Sun May 16 15:56:59 2010 > New Revision: 208152 > URL: http://svn.freebsd.org/changeset/base/208152 > > Log: > On PowerMac11,2 and (presumably) PowerMac12,1, we need to quiesce the > firmware in order to take over control of the SMU. Without doing this, > the firmware background process doing fan control will run amok as we > take over the system and crash the management chip. > > This is limited to these two machines because our kernel is heavily > dependent on firmware accesses, and so quiescing firmware can cause > nasty problems. > Given that the "quiesce" service isn't part of the Open Firmware standard nor of one of its supplements as far as I can see and given this service isn't available on sun4u I'd prefer this implementation to be entirely moved to MD parts instead (similar to the "SUNW," services which we keep MD). Marius From owner-svn-src-head@FreeBSD.ORG Sun May 16 21:47:07 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2A241065672; Sun, 16 May 2010 21:47:07 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from argol.doit.wisc.edu (argol.doit.wisc.edu [144.92.197.212]) by mx1.freebsd.org (Postfix) with ESMTP id B16378FC08; Sun, 16 May 2010 21:47:07 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII; format=flowed Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) id <0L2J001008IJDI00@smtpauth3.wiscmail.wisc.edu>; Sun, 16 May 2010 16:47:07 -0500 (CDT) Received: from comporellon.tachypleus.net ([unknown] [76.210.66.137]) by smtpauth3.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) with ESMTPSA id <0L2J00I988IH1G40@smtpauth3.wiscmail.wisc.edu>; Sun, 16 May 2010 16:47:06 -0500 (CDT) Date: Sun, 16 May 2010 16:47:05 -0500 From: Nathan Whitehorn In-reply-to: <20100516213822.GA49967@alchemy.franken.de> To: Marius Strobl Message-id: <4BF067D9.3030602@freebsd.org> X-Spam-Report: AuthenticatedSender=yes, SenderIP=76.210.66.137 X-Spam-PmxInfo: Server=avs-9, Version=5.5.9.395186, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2010.5.16.213917, SenderIP=76.210.66.137 References: <201005161557.o4GFv0Lf046659@svn.freebsd.org> <20100516213822.GA49967@alchemy.franken.de> User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.9) Gecko/20100407 Thunderbird/3.0.4 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208152 - in head/sys: dev/ofw powerpc/aim powerpc/ofw X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 21:47:08 -0000 On 05/16/10 16:38, Marius Strobl wrote: > On Sun, May 16, 2010 at 03:57:00PM +0000, Nathan Whitehorn wrote: > >> Author: nwhitehorn >> Date: Sun May 16 15:56:59 2010 >> New Revision: 208152 >> URL: http://svn.freebsd.org/changeset/base/208152 >> >> Log: >> On PowerMac11,2 and (presumably) PowerMac12,1, we need to quiesce the >> firmware in order to take over control of the SMU. Without doing this, >> the firmware background process doing fan control will run amok as we >> take over the system and crash the management chip. >> >> This is limited to these two machines because our kernel is heavily >> dependent on firmware accesses, and so quiescing firmware can cause >> nasty problems. >> >> > Given that the "quiesce" service isn't part of the Open Firmware > standard nor of one of its supplements as far as I can see and > given this service isn't available on sun4u I'd prefer this > implementation to be entirely moved to MD parts instead (similar > to the "SUNW," services which we keep MD). > This is tricky on PowerPC, because there are 3 OF implementations in use (native virtual-mode, 32-bit virtual mode, and 32-bit real mode), and it has to go in all of them. I'll try to come up with a non-horrible way to put this in the MD code, and I won't MFC this change in the meantime. -Nathan From owner-svn-src-head@FreeBSD.ORG Sun May 16 21:48:40 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55DC3106567C; Sun, 16 May 2010 21:48:40 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 44C118FC16; Sun, 16 May 2010 21:48:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GLme5O025006; Sun, 16 May 2010 21:48:40 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GLmele025002; Sun, 16 May 2010 21:48:40 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <201005162148.o4GLmele025002@svn.freebsd.org> From: Kip Macy Date: Sun, 16 May 2010 21:48:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208171 - in head/sys: net netinet6 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 21:48:40 -0000 Author: kmacy Date: Sun May 16 21:48:39 2010 New Revision: 208171 URL: http://svn.freebsd.org/changeset/base/208171 Log: allocate ipv6 flows from the ipv6 flow zone reported by: rrs@ MFC after: 3 days Modified: head/sys/net/flowtable.c head/sys/net/flowtable.h head/sys/netinet6/ip6_input.c Modified: head/sys/net/flowtable.c ============================================================================== --- head/sys/net/flowtable.c Sun May 16 21:06:26 2010 (r208170) +++ head/sys/net/flowtable.c Sun May 16 21:48:39 2010 (r208171) @@ -417,7 +417,6 @@ flowtable_pcpu_unlock(struct flowtable * #define FL_ENTRY_UNLOCK(table, hash) (table)->ft_unlock((table), (hash)) #define FL_STALE (1<<8) -#define FL_IPV6 (1<<9) #define FL_OVERWRITE (1<<10) void Modified: head/sys/net/flowtable.h ============================================================================== --- head/sys/net/flowtable.h Sun May 16 21:06:26 2010 (r208170) +++ head/sys/net/flowtable.h Sun May 16 21:48:39 2010 (r208171) @@ -37,6 +37,7 @@ $FreeBSD$ #define FL_HASH_ALL (1<<0) /* hash 4-tuple + protocol */ #define FL_PCPU (1<<1) /* pcpu cache */ #define FL_NOAUTO (1<<2) /* don't automatically add flentry on miss */ +#define FL_IPV6 (1<<9) #define FL_TCP (1<<11) #define FL_SCTP (1<<12) Modified: head/sys/netinet6/ip6_input.c ============================================================================== --- head/sys/netinet6/ip6_input.c Sun May 16 21:06:26 2010 (r208170) +++ head/sys/netinet6/ip6_input.c Sun May 16 21:48:39 2010 (r208171) @@ -191,7 +191,7 @@ ip6_init(void) */ V_ip6_output_flowtable_size = 1 << fls((1024 + maxusers * 64)-1); } - V_ip6_ft = flowtable_alloc("ipv6", V_ip6_output_flowtable_size, FL_PCPU); + V_ip6_ft = flowtable_alloc("ipv6", V_ip6_output_flowtable_size, FL_IPV6|FL_PCPU); #endif V_ip6_desync_factor = arc4random() % MAX_TEMP_DESYNC_FACTOR; From owner-svn-src-head@FreeBSD.ORG Sun May 16 22:01:44 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 046E7106566C; Sun, 16 May 2010 22:01:44 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E61CB8FC15; Sun, 16 May 2010 22:01:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GM1hej027921; Sun, 16 May 2010 22:01:43 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GM1h8W027917; Sun, 16 May 2010 22:01:43 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005162201.o4GM1h8W027917@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 22:01:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208172 - in head/sys: dev/ofw powerpc/aim powerpc/ofw X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 22:01:44 -0000 Author: nwhitehorn Date: Sun May 16 22:01:43 2010 New Revision: 208172 URL: http://svn.freebsd.org/changeset/base/208172 Log: Pull OF_quiesce() out of the MI Open Firmware layer and entirely into PPC ofw_machdep.c, in recognition of its state as a machine specific hack. Requested by: marius Modified: head/sys/dev/ofw/ofw_if.m head/sys/dev/ofw/ofw_standard.c head/sys/dev/ofw/openfirm.c head/sys/dev/ofw/openfirm.h head/sys/powerpc/aim/ofw_machdep.c head/sys/powerpc/ofw/ofw_real.c Modified: head/sys/dev/ofw/ofw_if.m ============================================================================== --- head/sys/dev/ofw/ofw_if.m Sun May 16 21:48:39 2010 (r208171) +++ head/sys/dev/ofw/ofw_if.m Sun May 16 22:01:43 2010 (r208172) @@ -340,13 +340,6 @@ METHOD void release { # Commands for returning control to the firmware /** - * @brief Turn off firmware background activities - */ -METHOD void quiesce { - ofw_t _ofw; -}; - -/** * @brief Temporarily return control to firmware. */ METHOD void enter { Modified: head/sys/dev/ofw/ofw_standard.c ============================================================================== --- head/sys/dev/ofw/ofw_standard.c Sun May 16 21:48:39 2010 (r208171) +++ head/sys/dev/ofw/ofw_standard.c Sun May 16 22:01:43 2010 (r208172) @@ -105,7 +105,6 @@ static ssize_t ofw_std_write(ofw_t ofw, static int ofw_std_seek(ofw_t ofw, ihandle_t instance, uint64_t pos); static caddr_t ofw_std_claim(ofw_t ofw, void *virt, size_t size, u_int align); static void ofw_std_release(ofw_t ofw, void *virt, size_t size); -static void ofw_std_quiesce(ofw_t ofw); static void ofw_std_enter(ofw_t ofw); static void ofw_std_exit(ofw_t ofw); @@ -134,7 +133,6 @@ static ofw_method_t ofw_std_methods[] = OFWMETHOD(ofw_seek, ofw_std_seek), OFWMETHOD(ofw_claim, ofw_std_claim), OFWMETHOD(ofw_release, ofw_std_release), - OFWMETHOD(ofw_quiesce, ofw_std_quiesce), OFWMETHOD(ofw_enter, ofw_std_enter), OFWMETHOD(ofw_exit, ofw_std_exit), @@ -732,23 +730,6 @@ ofw_std_release(ofw_t ofw, void *virt, s * Control transfer functions */ -/* Turn off OF background tasks */ -static void -ofw_std_quiesce(ofw_t ofw) -{ - struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - } args = { - (cell_t)"quiesce", - 0, - 0, - }; - - openfirmware(&args); -} - /* Suspend and drop back to the Open Firmware interface. */ static void ofw_std_enter(ofw_t ofw) Modified: head/sys/dev/ofw/openfirm.c ============================================================================== --- head/sys/dev/ofw/openfirm.c Sun May 16 21:48:39 2010 (r208171) +++ head/sys/dev/ofw/openfirm.c Sun May 16 22:01:43 2010 (r208172) @@ -409,15 +409,6 @@ OF_release(void *virt, size_t size) * Control transfer functions */ -/* Turn off OF background tasks */ -void -OF_quiesce() -{ - - OFW_QUIESCE(ofw_obj); -} - - /* Suspend and drop back to the Open Firmware interface. */ void OF_enter() Modified: head/sys/dev/ofw/openfirm.h ============================================================================== --- head/sys/dev/ofw/openfirm.h Sun May 16 21:48:39 2010 (r208171) +++ head/sys/dev/ofw/openfirm.h Sun May 16 22:01:43 2010 (r208172) @@ -133,7 +133,6 @@ void *OF_claim(void *virtrequest, size_ void OF_release(void *virt, size_t size); /* Control transfer functions */ -void OF_quiesce(void); void OF_enter(void); void OF_exit(void) __attribute__((noreturn)); Modified: head/sys/powerpc/aim/ofw_machdep.c ============================================================================== --- head/sys/powerpc/aim/ofw_machdep.c Sun May 16 21:48:39 2010 (r208171) +++ head/sys/powerpc/aim/ofw_machdep.c Sun May 16 22:01:43 2010 (r208172) @@ -77,6 +77,7 @@ static int (*ofwcall)(void *); static void *fdt; int ofw_real_mode; +static void ofw_quiesce(void); static int openfirmware(void *args); /* @@ -281,8 +282,6 @@ OF_initial_setup(void *fdt_ptr, void *ju boolean_t OF_bootstrap() { - char model[32]; - phandle_t rootnode; boolean_t status = FALSE; mtx_init(&ofw_mutex, "open firmware", NULL, MTX_DEF); @@ -302,12 +301,7 @@ OF_bootstrap() * On some machines, we need to quiesce OF to turn off * background processes. */ - rootnode = OF_finddevice("/"); - if (OF_getprop(rootnode, "model", model, sizeof(model)) > 0) { - if (strcmp(model, "PowerMac11,2") == 0 || - strcmp(model, "PowerMac12,1") == 0) - OF_quiesce(); - } + ofw_quiesce(); } else { status = OF_install(OFW_FDT, 0); @@ -320,6 +314,39 @@ OF_bootstrap() return (status); } +static void +ofw_quiesce(void) +{ + phandle_t rootnode; + char model[32]; + struct { + cell_t name; + cell_t nargs; + cell_t nreturns; + } args; + + /* + * Only quiesce Open Firmware on PowerMac11,2 and 12,1. It is + * necessary there to shut down a background thread doing fan + * management, and is harmful on other machines. + * + * Note: we don't need to worry about which OF module we are + * using since this is called only from very early boot, within + * OF's boot context. + */ + + rootnode = OF_finddevice("/"); + if (OF_getprop(rootnode, "model", model, sizeof(model)) > 0) { + if (strcmp(model, "PowerMac11,2") == 0 || + strcmp(model, "PowerMac12,1") == 0) { + args.name = (cell_t)(uintptr_t)"quiesce"; + args.nargs = 0; + args.nreturns = 0; + openfirmware(&args); + } + } +} + static int openfirmware(void *args) { Modified: head/sys/powerpc/ofw/ofw_real.c ============================================================================== --- head/sys/powerpc/ofw/ofw_real.c Sun May 16 21:48:39 2010 (r208171) +++ head/sys/powerpc/ofw/ofw_real.c Sun May 16 22:01:43 2010 (r208172) @@ -106,7 +106,6 @@ static ssize_t ofw_real_write(ofw_t, iha static int ofw_real_seek(ofw_t, ihandle_t instance, u_int64_t pos); static caddr_t ofw_real_claim(ofw_t, void *virt, size_t size, u_int align); static void ofw_real_release(ofw_t, void *virt, size_t size); -static void ofw_real_quiesce(ofw_t); static void ofw_real_enter(ofw_t); static void ofw_real_exit(ofw_t); @@ -134,7 +133,6 @@ static ofw_method_t ofw_real_methods[] = OFWMETHOD(ofw_seek, ofw_real_seek), OFWMETHOD(ofw_claim, ofw_real_claim), OFWMETHOD(ofw_release, ofw_real_release), - OFWMETHOD(ofw_quiesce, ofw_real_quiesce), OFWMETHOD(ofw_enter, ofw_real_enter), OFWMETHOD(ofw_exit, ofw_real_exit), @@ -891,27 +889,6 @@ ofw_real_release(ofw_t ofw, void *virt, * Control transfer functions */ -/* Turn off OF background tasks */ -static void -ofw_real_quiesce(ofw_t ofw) -{ - vm_offset_t argsptr; - struct { - cell_t name; - cell_t nargs; - cell_t nreturns; - } args; - - args.name = (cell_t)(uintptr_t)"quiesce"; - args.nargs = 0; - args.nreturns = 0; - - ofw_real_start(); - argsptr = ofw_real_map(&args, sizeof(args)); - openfirmware((void *)argsptr); - ofw_real_stop(); -} - /* Suspend and drop back to the Open Firmware interface. */ static void ofw_real_enter(ofw_t ofw) From owner-svn-src-head@FreeBSD.ORG Sun May 16 22:03:09 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80FD2106566B; Sun, 16 May 2010 22:03:09 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from adsum.doit.wisc.edu (adsum.doit.wisc.edu [144.92.197.210]) by mx1.freebsd.org (Postfix) with ESMTP id 517228FC14; Sun, 16 May 2010 22:03:09 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII; format=flowed Received: from avs-daemon.smtpauth1.wiscmail.wisc.edu by smtpauth1.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) id <0L2J00D00998TQ00@smtpauth1.wiscmail.wisc.edu>; Sun, 16 May 2010 17:03:08 -0500 (CDT) Received: from comporellon.tachypleus.net ([unknown] [76.210.66.137]) by smtpauth1.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) with ESMTPSA id <0L2J000H7996MS40@smtpauth1.wiscmail.wisc.edu>; Sun, 16 May 2010 17:03:07 -0500 (CDT) Date: Sun, 16 May 2010 17:03:06 -0500 From: Nathan Whitehorn In-reply-to: <4BF067D9.3030602@freebsd.org> To: Marius Strobl Message-id: <4BF06B9A.7000402@freebsd.org> X-Spam-Report: AuthenticatedSender=yes, SenderIP=76.210.66.137 X-Spam-PmxInfo: Server=avs-12, Version=5.5.9.395186, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2010.5.16.215415, SenderIP=76.210.66.137 References: <201005161557.o4GFv0Lf046659@svn.freebsd.org> <20100516213822.GA49967@alchemy.franken.de> <4BF067D9.3030602@freebsd.org> User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.9) Gecko/20100407 Thunderbird/3.0.4 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208152 - in head/sys: dev/ofw powerpc/aim powerpc/ofw X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 22:03:09 -0000 On 05/16/10 16:47, Nathan Whitehorn wrote: > On 05/16/10 16:38, Marius Strobl wrote: >> On Sun, May 16, 2010 at 03:57:00PM +0000, Nathan Whitehorn wrote: >>> Author: nwhitehorn >>> Date: Sun May 16 15:56:59 2010 >>> New Revision: 208152 >>> URL: http://svn.freebsd.org/changeset/base/208152 >>> >>> Log: >>> On PowerMac11,2 and (presumably) PowerMac12,1, we need to quiesce >>> the >>> firmware in order to take over control of the SMU. Without doing >>> this, >>> the firmware background process doing fan control will run amok >>> as we >>> take over the system and crash the management chip. >>> >>> This is limited to these two machines because our kernel is heavily >>> dependent on firmware accesses, and so quiescing firmware can cause >>> nasty problems. >>> >> Given that the "quiesce" service isn't part of the Open Firmware >> standard nor of one of its supplements as far as I can see and >> given this service isn't available on sun4u I'd prefer this >> implementation to be entirely moved to MD parts instead (similar >> to the "SUNW," services which we keep MD). > > This is tricky on PowerPC, because there are 3 OF implementations in > use (native virtual-mode, 32-bit virtual mode, and 32-bit real mode), > and it has to go in all of them. I'll try to come up with a > non-horrible way to put this in the MD code, and I won't MFC this > change in the meantime. > -Nathan Immediately after writing this, I realized I had tricked myself into thinking it was hard. Since this is called very early on, in the context set up by Open Firmware, none of those distinctions matter. It's been pulled back in to PPC-specific code in revision 208172. -Nathan From owner-svn-src-head@FreeBSD.ORG Sun May 16 22:21:33 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9FE51106564A; Sun, 16 May 2010 22:21:33 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 749E28FC16; Sun, 16 May 2010 22:21:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GMLXFc032240; Sun, 16 May 2010 22:21:33 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GMLXet032237; Sun, 16 May 2010 22:21:33 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005162221.o4GMLXet032237@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 16 May 2010 22:21:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208173 - in head: sbin/geom/class/part sys/geom/part X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 22:21:33 -0000 Author: nwhitehorn Date: Sun May 16 22:21:33 2010 New Revision: 208173 URL: http://svn.freebsd.org/changeset/base/208173 Log: Teach gpart about bootcode on APM. Modified: head/sbin/geom/class/part/geom_part.c head/sys/geom/part/g_part_apm.c Modified: head/sbin/geom/class/part/geom_part.c ============================================================================== --- head/sbin/geom/class/part/geom_part.c Sun May 16 22:01:43 2010 (r208172) +++ head/sbin/geom/class/part/geom_part.c Sun May 16 22:21:33 2010 (r208173) @@ -705,7 +705,7 @@ gpart_bootcode(struct gctl_req *req, uns if (gctl_has_param(req, bootcode_param)) { s = gctl_get_ascii(req, bootcode_param); - bootsize = 64 * 1024; /* Arbitrary limit. */ + bootsize = 800 * 1024; /* Arbitrary limit. */ bootcode = gpart_bootfile_read(s, &bootsize); error = gctl_change_param(req, bootcode_param, bootsize, bootcode); Modified: head/sys/geom/part/g_part_apm.c ============================================================================== --- head/sys/geom/part/g_part_apm.c Sun May 16 22:01:43 2010 (r208172) +++ head/sys/geom/part/g_part_apm.c Sun May 16 22:21:33 2010 (r208173) @@ -131,6 +131,26 @@ apm_parse_type(const char *type, char *b strncpy(buf, type, bufsz); return (0); } + alias = g_part_alias_name(G_PART_ALIAS_APPLE_BOOT); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_BOOT); + return (0); + } + alias = g_part_alias_name(G_PART_ALIAS_APPLE_HFS); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_HFS); + return (0); + } + alias = g_part_alias_name(G_PART_ALIAS_APPLE_UFS); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_UFS); + return (0); + } + alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_BOOT); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_BOOT); + return (0); + } alias = g_part_alias_name(G_PART_ALIAS_FREEBSD); if (!strcasecmp(type, alias)) { strcpy(buf, APM_ENT_TYPE_FREEBSD); @@ -445,6 +465,12 @@ g_part_apm_type(struct g_part_table *bas entry = (struct g_part_apm_entry *)baseentry; type = entry->ent.ent_type; + if (!strcmp(type, APM_ENT_TYPE_APPLE_BOOT)) + return (g_part_alias_name(G_PART_ALIAS_APPLE_BOOT)); + if (!strcmp(type, APM_ENT_TYPE_APPLE_HFS)) + return (g_part_alias_name(G_PART_ALIAS_APPLE_HFS)); + if (!strcmp(type, APM_ENT_TYPE_APPLE_UFS)) + return (g_part_alias_name(G_PART_ALIAS_APPLE_UFS)); if (!strcmp(type, APM_ENT_TYPE_FREEBSD)) return (g_part_alias_name(G_PART_ALIAS_FREEBSD)); if (!strcmp(type, APM_ENT_TYPE_FREEBSD_SWAP)) From owner-svn-src-head@FreeBSD.ORG Sun May 16 23:45:10 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B4E301065670; Sun, 16 May 2010 23:45:10 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A0D8C8FC18; Sun, 16 May 2010 23:45:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4GNjA17050503; Sun, 16 May 2010 23:45:10 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4GNjAnG050489; Sun, 16 May 2010 23:45:10 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005162345.o4GNjAnG050489@svn.freebsd.org> From: Alan Cox Date: Sun, 16 May 2010 23:45:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208175 - in head/sys: amd64/amd64 arm/arm i386/i386 i386/xen ia64/ia64 mips/mips powerpc/aim powerpc/booke sparc64/sparc64 sun4v/sun4v vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 May 2010 23:45:10 -0000 Author: alc Date: Sun May 16 23:45:10 2010 New Revision: 208175 URL: http://svn.freebsd.org/changeset/base/208175 Log: On entry to pmap_enter(), assert that the page is busy. While I'm here, make the style of assertion used by pmap_enter() consistent across all architectures. On entry to pmap_remove_write(), assert that the page is neither unmanaged nor fictitious, since we cannot remove write access to either kind of page. With the push down of the page queues lock, pmap_remove_write() cannot condition its behavior on the state of the PG_WRITEABLE flag if the page is busy. Assert that the object containing the page is locked. This allows us to know that the page will neither become busy nor will PG_WRITEABLE be set on it while pmap_remove_write() is running. Correct a long-standing bug in vm_page_cowsetup(). We cannot possibly do copy-on-write-based zero-copy transmit on unmanaged or fictitious pages, so don't even try. Previously, the call to pmap_remove_write() would have failed silently. Modified: head/sys/amd64/amd64/pmap.c head/sys/arm/arm/pmap.c head/sys/i386/i386/pmap.c head/sys/i386/xen/pmap.c head/sys/ia64/ia64/pmap.c head/sys/mips/mips/pmap.c head/sys/powerpc/aim/mmu_oea.c head/sys/powerpc/aim/mmu_oea64.c head/sys/powerpc/booke/pmap.c head/sys/sparc64/sparc64/pmap.c head/sys/sun4v/sun4v/pmap.c head/sys/vm/vm_page.c head/sys/vm/vm_page.h Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/amd64/amd64/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -3139,7 +3139,10 @@ pmap_enter(pmap_t pmap, vm_offset_t va, va = trunc_page(va); KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); KASSERT(va < UPT_MIN_ADDRESS || va >= UPT_MAX_ADDRESS, - ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%lx)", va)); + ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%lx)", + va)); + KASSERT((m->oflags & VPO_BUSY) != 0, + ("pmap_enter: page %p is not busy", m)); mpte = NULL; @@ -4240,7 +4243,16 @@ pmap_remove_write(vm_page_t m) pt_entry_t oldpte, *pte; vm_offset_t va; - if ((m->flags & PG_FICTITIOUS) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/arm/arm/pmap.c ============================================================================== --- head/sys/arm/arm/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/arm/arm/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -3318,6 +3318,8 @@ pmap_enter_locked(pmap_t pmap, vm_offset u_int oflags; vm_paddr_t pa; + KASSERT((m->oflags & VPO_BUSY) != 0 || (flags & M_NOWAIT) != 0, + ("pmap_enter_locked: page %p is not busy", m)); PMAP_ASSERT_LOCKED(pmap); mtx_assert(&vm_page_queue_mtx, MA_OWNED); if (va == vector_page) { @@ -4527,7 +4529,17 @@ void pmap_remove_write(vm_page_t m) { - if (m->flags & PG_WRITEABLE) { + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) != 0 || + (m->flags & PG_WRITEABLE) != 0) { vm_page_lock_queues(); pmap_clearbit(m, PVF_WRITE); vm_page_unlock_queues(); Modified: head/sys/i386/i386/pmap.c ============================================================================== --- head/sys/i386/i386/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/i386/i386/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -3268,7 +3268,10 @@ pmap_enter(pmap_t pmap, vm_offset_t va, va = trunc_page(va); KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); KASSERT(va < UPT_MIN_ADDRESS || va >= UPT_MAX_ADDRESS, - ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%x)", va)); + ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%x)", + va)); + KASSERT((m->oflags & VPO_BUSY) != 0, + ("pmap_enter: page %p is not busy", m)); mpte = NULL; @@ -4410,7 +4413,16 @@ pmap_remove_write(vm_page_t m) pt_entry_t oldpte, *pte; vm_offset_t va; - if ((m->flags & PG_FICTITIOUS) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/i386/xen/pmap.c ============================================================================== --- head/sys/i386/xen/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/i386/xen/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -2682,12 +2682,12 @@ pmap_enter(pmap_t pmap, vm_offset_t va, CTR6(KTR_PMAP, "pmap_enter: pmap=%08p va=0x%08x access=0x%x ma=0x%08x prot=0x%x wired=%d", pmap, va, access, xpmap_ptom(VM_PAGE_TO_PHYS(m)), prot, wired); va = trunc_page(va); -#ifdef PMAP_DIAGNOSTIC - if (va > VM_MAX_KERNEL_ADDRESS) - panic("pmap_enter: toobig"); - if ((va >= UPT_MIN_ADDRESS) && (va < UPT_MAX_ADDRESS)) - panic("pmap_enter: invalid to pmap_enter page table pages (va: 0x%x)", va); -#endif + KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); + KASSERT(va < UPT_MIN_ADDRESS || va >= UPT_MAX_ADDRESS, + ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%x)", + va)); + KASSERT((m->oflags & VPO_BUSY) != 0, + ("pmap_enter: page %p is not busy", m)); mpte = NULL; @@ -3780,7 +3780,16 @@ pmap_remove_write(vm_page_t m) pmap_t pmap; pt_entry_t oldpte, *pte; - if ((m->flags & PG_FICTITIOUS) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/ia64/ia64/pmap.c ============================================================================== --- head/sys/ia64/ia64/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/ia64/ia64/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -1497,10 +1497,9 @@ pmap_enter(pmap_t pmap, vm_offset_t va, oldpmap = pmap_switch(pmap); va &= ~PAGE_MASK; -#ifdef DIAGNOSTIC - if (va > VM_MAX_KERNEL_ADDRESS) - panic("pmap_enter: toobig"); -#endif + KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); + KASSERT((m->oflags & VPO_BUSY) != 0, + ("pmap_enter: page %p is not busy", m)); /* * Find (or create) a pte for the given mapping. @@ -2116,7 +2115,16 @@ pmap_remove_write(vm_page_t m) pv_entry_t pv; vm_prot_t prot; - if ((m->flags & PG_FICTITIOUS) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/mips/mips/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -1791,10 +1791,9 @@ pmap_enter(pmap_t pmap, vm_offset_t va, return; va &= ~PAGE_MASK; -#ifdef PMAP_DIAGNOSTIC - if (va > VM_MAX_KERNEL_ADDRESS) - panic("pmap_enter: toobig"); -#endif + KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); + KASSERT((m->oflags & VPO_BUSY) != 0, + ("pmap_enter: page %p is not busy", m)); mpte = NULL; @@ -2584,7 +2583,16 @@ pmap_remove_write(vm_page_t m) vm_offset_t va; pt_entry_t *pte; - if ((m->flags & PG_FICTITIOUS) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; Modified: head/sys/powerpc/aim/mmu_oea.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/powerpc/aim/mmu_oea.c Sun May 16 23:45:10 2010 (r208175) @@ -876,6 +876,7 @@ moea_bootstrap(mmu_t mmup, vm_offset_t k struct vm_page m; m.phys_addr = translations[i].om_pa + off; + m.oflags = VPO_BUSY; PMAP_LOCK(&ofw_pmap); moea_enter_locked(&ofw_pmap, translations[i].om_va + off, &m, @@ -1101,6 +1102,8 @@ moea_enter_locked(pmap_t pmap, vm_offset if (pmap_bootstrapped) mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) != 0 || VM_OBJECT_LOCKED(m->object), + ("moea_enter_locked: page %p is not busy", m)); /* XXX change the pvo head for fake pages */ if ((m->flags & PG_FICTITIOUS) == PG_FICTITIOUS) { @@ -1323,7 +1326,16 @@ moea_remove_write(mmu_t mmu, vm_page_t m pmap_t pmap; u_int lo; - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("moea_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea64.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/powerpc/aim/mmu_oea64.c Sun May 16 23:45:10 2010 (r208175) @@ -1235,6 +1235,8 @@ moea64_enter_locked(pmap_t pmap, vm_offs if (pmap_bootstrapped) mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) != 0 || VM_OBJECT_LOCKED(m->object), + ("moea64_enter_locked: page %p is not busy", m)); /* XXX change the pvo head for fake pages */ if ((m->flags & PG_FICTITIOUS) == PG_FICTITIOUS) { @@ -1519,7 +1521,16 @@ moea64_remove_write(mmu_t mmu, vm_page_t pmap_t pmap; uint64_t lo; - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("moea64_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/powerpc/booke/pmap.c ============================================================================== --- head/sys/powerpc/booke/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/powerpc/booke/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -1557,6 +1557,8 @@ mmu_booke_enter_locked(mmu_t mmu, pmap_t KASSERT((va <= VM_MAXUSER_ADDRESS), ("mmu_booke_enter_locked: user pmap, non user va")); } + KASSERT((m->oflags & VPO_BUSY) != 0 || VM_OBJECT_LOCKED(m->object), + ("mmu_booke_enter_locked: page %p is not busy", m)); PMAP_LOCK_ASSERT(pmap, MA_OWNED); @@ -1941,7 +1943,16 @@ mmu_booke_remove_write(mmu_t mmu, vm_pag pv_entry_t pv; pte_t *pte; - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("mmu_booke_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/sparc64/sparc64/pmap.c ============================================================================== --- head/sys/sparc64/sparc64/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/sparc64/sparc64/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -1351,6 +1351,8 @@ pmap_enter_locked(pmap_t pm, vm_offset_t mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_LOCK_ASSERT(pm, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) != 0 || VM_OBJECT_LOCKED(m->object), + ("pmap_enter_locked: page %p is not busy", m)); PMAP_STATS_INC(pmap_nenter); pa = VM_PAGE_TO_PHYS(m); @@ -1985,7 +1987,16 @@ pmap_remove_write(vm_page_t m) struct tte *tp; u_long data; - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0 || + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); Modified: head/sys/sun4v/sun4v/pmap.c ============================================================================== --- head/sys/sun4v/sun4v/pmap.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/sun4v/sun4v/pmap.c Sun May 16 23:45:10 2010 (r208175) @@ -1061,6 +1061,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t om; int invlva; + KASSERT((m->oflags & VPO_BUSY) != 0, + ("pmap_enter: page %p is not busy", m)); if (pmap->pm_context) DPRINTF("pmap_enter(va=%lx, pa=0x%lx, prot=%x)\n", va, VM_PAGE_TO_PHYS(m), prot); @@ -1737,7 +1739,17 @@ void pmap_remove_write(vm_page_t m) { - if ((m->flags & PG_WRITEABLE) == 0) + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_remove_write: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by + * another thread while the object is locked. Thus, if PG_WRITEABLE + * is clear, no page table entries need updating. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && + (m->flags & PG_WRITEABLE) == 0) return; vm_page_lock_queues(); tte_clear_phys_bit(m, VTD_SW_W|VTD_W); Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Sun May 16 22:52:51 2010 (r208174) +++ head/sys/vm/vm_page.c Sun May 16 23:45:10 2010 (r208175) @@ -2336,10 +2336,12 @@ vm_page_cowsetup(vm_page_t m) { vm_page_lock_assert(m, MA_OWNED); - if (m->cow == USHRT_MAX - 1) + if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0 || + m->cow == USHRT_MAX - 1 || !VM_OBJECT_TRYLOCK(m->object)) return (EBUSY); m->cow++; pmap_remove_write(m); + VM_OBJECT_UNLOCK(m->object); return (0); } Modified: head/sys/vm/vm_page.h ============================================================================== --- head/sys/vm/vm_page.h Sun May 16 22:52:51 2010 (r208174) +++ head/sys/vm/vm_page.h Sun May 16 23:45:10 2010 (r208175) @@ -217,8 +217,8 @@ extern struct vpglocks pa_lock[]; * pte mappings, nor can they be removed from their objects via * the object, and such pages are also not on any PQ queue. * - * PG_WRITEABLE is set exclusively by pmap_enter(). When it does so, either - * the page must be VPO_BUSY or the containing object must be locked. + * PG_WRITEABLE is set exclusively by pmap_enter(). When it does so, the page + * must be VPO_BUSY. */ #define PG_CACHED 0x0001 /* page is cached */ #define PG_FREE 0x0002 /* page is free */ From owner-svn-src-head@FreeBSD.ORG Mon May 17 01:20:50 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 35CBF106566B; Mon, 17 May 2010 01:20:50 +0000 (UTC) (envelope-from keramida@ceid.upatras.gr) Received: from igloo.linux.gr (igloo.linux.gr [62.1.205.36]) by mx1.freebsd.org (Postfix) with ESMTP id 9E5DC8FC14; Mon, 17 May 2010 01:20:49 +0000 (UTC) X-Spam-Status: No X-Hellug-MailScanner-From: keramida@ceid.upatras.gr X-Hellug-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-1.001, required 5, autolearn=not spam, ALL_TRUSTED -1.00, BAYES_40 -0.00) X-Hellug-MailScanner: Found to be clean X-Hellug-MailScanner-ID: o4H12i8J022125 Received: from kobe.laptop (ppp-94-64-236-75.home.otenet.gr [94.64.236.75]) (authenticated bits=128) by igloo.linux.gr (8.14.3/8.14.3/Debian-9.1) with ESMTP id o4H12i8J022125 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 17 May 2010 04:02:50 +0300 Received: from kobe.laptop (kobe.laptop [127.0.0.1]) by kobe.laptop (8.14.4/8.14.4) with ESMTP id o4H12hsC057801 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 17 May 2010 04:02:44 +0300 (EEST) (envelope-from keramida@ceid.upatras.gr) Received: (from keramida@localhost) by kobe.laptop (8.14.4/8.14.4/Submit) id o4H12h9h057798; Mon, 17 May 2010 04:02:43 +0300 (EEST) (envelope-from keramida@ceid.upatras.gr) From: Giorgos Keramidas To: Tim Kientzle References: <201005162043.o4GKhHp8010715@svn.freebsd.org> Date: Mon, 17 May 2010 04:02:43 +0300 In-Reply-To: <201005162043.o4GKhHp8010715@svn.freebsd.org> (Tim Kientzle's message of "Sun, 16 May 2010 20:43:17 +0000 (UTC)") Message-ID: <87fx1r8hn0.fsf@kobe.laptop> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208169 - head/lib/libarchive X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 01:20:50 -0000 On Sun, 16 May 2010 20:43:17 +0000 (UTC), Tim Kientzle wrote: > Author: kientzle > Date: Sun May 16 20:43:17 2010 > New Revision: 208169 > URL: http://svn.freebsd.org/changeset/base/208169 > > Log: > Reorganize slightly in preparation for making lzma and bz2 support conditional. > > Modified: > head/lib/libarchive/Makefile > head/lib/libarchive/config_freebsd.h > > Modified: head/lib/libarchive/Makefile > ============================================================================== > --- head/lib/libarchive/Makefile Sun May 16 20:31:31 2010 (r208168) > +++ head/lib/libarchive/Makefile Sun May 16 20:43:17 2010 (r208169) > @@ -2,8 +2,16 @@ > .include > > LIB= archive > -DPADD= ${LIBBZ2} ${LIBZ} ${LIBMD} ${LIBLZMA} > -LDADD= -lbz2 -lz -lmd -llzma > +DPADD= ${LIBZ} ${LIBMD} > +LDADD= -lz -lmd > + > +DPADD+= ${LIBBZ2} > +LDADD+= -lbz2 > +CFLAGS+= -DHAVE_BZLIB_H 1 We need an equal-sign in -DHAVE_BZLIB_H=1 here. Otherwise libarchive is broken with: % cc -O2 -pipe -DHAVE_BZLIB_H 1 -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1 \ % -DPLATFORM_CONFIG_H=\"config_freebsd.h\" \ % -I/usr/obj/usr/src/lib/libarchive -DWITH_OPENSSL -g -std=gnu99 \ % -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k \ % -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes \ % -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch \ % -Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts \ % -Winline -Wnested-externs -Wredundant-decls -Wold-style-definition \ % -Wno-pointer-sign -c /usr/src/lib/libarchive/archive_check_magic.c % cc: 1: No such file or directory From owner-svn-src-head@FreeBSD.ORG Mon May 17 03:51:58 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CBD43106564A; Mon, 17 May 2010 03:51:57 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 84BCD8FC12; Mon, 17 May 2010 03:51:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4H3pvBj006402; Mon, 17 May 2010 03:51:57 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4H3pvuG006399; Mon, 17 May 2010 03:51:57 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005170351.o4H3pvuG006399@svn.freebsd.org> From: Alexander Motin Date: Mon, 17 May 2010 03:51:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208183 - in head/sys: conf modules/mvs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 03:51:58 -0000 Author: mav Date: Mon May 17 03:51:57 2010 New Revision: 208183 URL: http://svn.freebsd.org/changeset/base/208183 Log: Make mvs_if.c to not be always linked statically into the kernel. Link it same way as mvs.c. Modified: head/sys/conf/files head/sys/modules/mvs/Makefile Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon May 17 02:44:51 2010 (r208182) +++ head/sys/conf/files Mon May 17 03:51:57 2010 (r208183) @@ -1294,7 +1294,7 @@ dev/mpt/mpt_raid.c optional mpt dev/mpt/mpt_user.c optional mpt dev/msk/if_msk.c optional msk inet dev/mvs/mvs.c optional mvs -dev/mvs/mvs_if.m standard +dev/mvs/mvs_if.m optional mvs dev/mvs/mvs_pci.c optional mvs pci dev/mwl/if_mwl.c optional mwl dev/mwl/if_mwl_pci.c optional mwl pci Modified: head/sys/modules/mvs/Makefile ============================================================================== --- head/sys/modules/mvs/Makefile Mon May 17 02:44:51 2010 (r208182) +++ head/sys/modules/mvs/Makefile Mon May 17 03:51:57 2010 (r208183) @@ -3,7 +3,7 @@ .PATH: ${.CURDIR}/../../dev/mvs KMOD= mvs -SRCS= mvs.c mvs_pci.c mvs.h mvs_if.h device_if.h bus_if.h pci_if.h opt_cam.h +SRCS= mvs.c mvs_pci.c mvs.h mvs_if.c mvs_if.h device_if.h bus_if.h pci_if.h opt_cam.h MFILES= kern/bus_if.m kern/device_if.m dev/pci/pci_if.m dev/mvs/mvs_if.m From owner-svn-src-head@FreeBSD.ORG Mon May 17 07:06:55 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ACD7A106566B; Mon, 17 May 2010 07:06:55 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 831E08FC1C; Mon, 17 May 2010 07:06:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4H76tuO049239; Mon, 17 May 2010 07:06:55 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4H76t8e049238; Mon, 17 May 2010 07:06:55 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201005170706.o4H76t8e049238@svn.freebsd.org> From: Xin LI Date: Mon, 17 May 2010 07:06:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208184 - head/lib/libarchive X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 07:06:55 -0000 Author: delphij Date: Mon May 17 07:06:54 2010 New Revision: 208184 URL: http://svn.freebsd.org/changeset/base/208184 Log: Fix build. Modified: head/lib/libarchive/Makefile Modified: head/lib/libarchive/Makefile ============================================================================== --- head/lib/libarchive/Makefile Mon May 17 03:51:57 2010 (r208183) +++ head/lib/libarchive/Makefile Mon May 17 07:06:54 2010 (r208184) @@ -7,7 +7,7 @@ LDADD= -lz -lmd DPADD+= ${LIBBZ2} LDADD+= -lbz2 -CFLAGS+= -DHAVE_BZLIB_H 1 +CFLAGS+= -DHAVE_BZLIB_H=1 DPADD+= ${LIBLZMA} LDADD+= -llzma From owner-svn-src-head@FreeBSD.ORG Mon May 17 09:38:00 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A2CE106567C; Mon, 17 May 2010 09:38:00 +0000 (UTC) (envelope-from kaiw@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 48DC18FC0A; Mon, 17 May 2010 09:38:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4H9bx1Z082616; Mon, 17 May 2010 09:37:59 GMT (envelope-from kaiw@svn.freebsd.org) Received: (from kaiw@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4H9bxMR082608; Mon, 17 May 2010 09:37:59 GMT (envelope-from kaiw@svn.freebsd.org) Message-Id: <201005170937.o4H9bxMR082608@svn.freebsd.org> From: Kai Wang Date: Mon, 17 May 2010 09:37:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208189 - head/usr.bin/ar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 09:38:00 -0000 Author: kaiw Date: Mon May 17 09:37:59 2010 New Revision: 208189 URL: http://svn.freebsd.org/changeset/base/208189 Log: Removed ar(1)'s support for compressed archives. This change removes ar(1)'s dependencies on compressor libraries -lz, -lbz2 and -llzma and fixes building HEAD on some versions of FreeBSD[78]. Option -j and -z is now accepted but ignored. Compressed ar(1) archives are not useful without a ld(1) that can read them. Also, the current ar(1) compression scheme prevents random access of archive members and needs to be redesigned anyway. Submitted by: kientzle (original patch) Reviewed by: delphij Discussed on: -current mailing list Modified: head/usr.bin/ar/Makefile head/usr.bin/ar/acpyacc.y head/usr.bin/ar/ar.1 head/usr.bin/ar/ar.c head/usr.bin/ar/ar.h head/usr.bin/ar/read.c head/usr.bin/ar/write.c Modified: head/usr.bin/ar/Makefile ============================================================================== --- head/usr.bin/ar/Makefile Mon May 17 08:46:27 2010 (r208188) +++ head/usr.bin/ar/Makefile Mon May 17 09:37:59 2010 (r208189) @@ -3,8 +3,8 @@ PROG= ar SRCS= ar.c acplex.l acpyacc.y read.c util.c write.c y.tab.h -DPADD= ${LIBARCHIVE} ${LIBBZ2} ${LIBZ} ${LIBLZMA} ${LIBELF} -LDADD= -larchive -lbz2 -lz -llzma -lelf +DPADD= ${LIBARCHIVE} ${LIBELF} +LDADD= -larchive -lelf CFLAGS+=-I. -I${.CURDIR} Modified: head/usr.bin/ar/acpyacc.y ============================================================================== --- head/usr.bin/ar/acpyacc.y Mon May 17 08:46:27 2010 (r208188) +++ head/usr.bin/ar/acpyacc.y Mon May 17 09:37:59 2010 (r208189) @@ -250,7 +250,7 @@ arscp_open(char *fname) if ((a = archive_read_new()) == NULL) bsdar_errc(bsdar, EX_SOFTWARE, 0, "archive_read_new failed"); - archive_read_support_compression_all(a); + archive_read_support_compression_none(a); archive_read_support_format_ar(a); AC(archive_read_open_file(a, fname, DEF_BLKSZ)); if ((r = archive_read_next_header(a, &entry))) Modified: head/usr.bin/ar/ar.1 ============================================================================== --- head/usr.bin/ar/ar.1 Mon May 17 08:46:27 2010 (r208188) +++ head/usr.bin/ar/ar.1 Mon May 17 09:37:59 2010 (r208189) @@ -23,7 +23,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 31, 2007 +.Dd May 17, 2010 .Dt AR 1 .Os .Sh NAME @@ -186,8 +186,7 @@ Synonymous with option Synonymous with option .Fl b . .It Fl j -Compress the resulting archive with -.Xr bzip2 1 . +This option is accepted but ignored. .It Fl m Move archive members specified by arguments .Ar files ... @@ -344,8 +343,7 @@ of extraction unless the .Fl o option was specified. .It Fl z -Compress the resulting archive with -.Xr gzip 1 . +This option is accepted but ignored. .El .Sh EXAMPLES To create a new archive Modified: head/usr.bin/ar/ar.c ============================================================================== --- head/usr.bin/ar/ar.c Mon May 17 08:46:27 2010 (r208188) +++ head/usr.bin/ar/ar.c Mon May 17 09:37:59 2010 (r208189) @@ -178,7 +178,7 @@ main(int argc, char **argv) bsdar->options |= AR_TR; break; case 'j': - bsdar->options |= AR_J; + /* ignored */ break; case 'l': /* ignored, for GNU ar comptibility */ @@ -223,7 +223,7 @@ main(int argc, char **argv) set_mode(bsdar, opt); break; case 'z': - bsdar->options |= AR_Z; + /* ignored */ break; case OPTION_HELP: bsdar_usage(); Modified: head/usr.bin/ar/ar.h ============================================================================== --- head/usr.bin/ar/ar.h Mon May 17 08:46:27 2010 (r208188) +++ head/usr.bin/ar/ar.h Mon May 17 09:37:59 2010 (r208189) @@ -81,7 +81,6 @@ struct bsdar { const char *addlib; /* target of ADDLIB. */ const char *posarg; /* position arg for modifiers -a, -b. */ char mode; /* program mode */ - char compression; /* compression mode */ int options; /* command line options */ const char *progname; /* program name */ Modified: head/usr.bin/ar/read.c ============================================================================== --- head/usr.bin/ar/read.c Mon May 17 08:46:27 2010 (r208188) +++ head/usr.bin/ar/read.c Mon May 17 09:37:59 2010 (r208189) @@ -87,7 +87,7 @@ read_archive(struct bsdar *bsdar, char m if ((a = archive_read_new()) == NULL) bsdar_errc(bsdar, EX_SOFTWARE, 0, "archive_read_new failed"); - archive_read_support_compression_all(a); + archive_read_support_compression_none(a); archive_read_support_format_ar(a); AC(archive_read_open_file(a, bsdar->filename, DEF_BLKSZ)); Modified: head/usr.bin/ar/write.c ============================================================================== --- head/usr.bin/ar/write.c Mon May 17 08:46:27 2010 (r208188) +++ head/usr.bin/ar/write.c Mon May 17 09:37:59 2010 (r208189) @@ -247,7 +247,7 @@ read_objs(struct bsdar *bsdar, const cha if ((a = archive_read_new()) == NULL) bsdar_errc(bsdar, EX_SOFTWARE, 0, "archive_read_new failed"); - archive_read_support_compression_all(a); + archive_read_support_compression_none(a); archive_read_support_format_ar(a); AC(archive_read_open_filename(a, archive, DEF_BLKSZ)); for (;;) { @@ -264,13 +264,6 @@ read_objs(struct bsdar *bsdar, const cha continue; } - /* - * Remember the compression mode of existing archive. - * If neither -j nor -z is specified, this mode will - * be used for resulting archive. - */ - bsdar->compression = archive_compression(a); - name = archive_entry_pathname(entry); /* @@ -360,9 +353,6 @@ write_archive(struct bsdar *bsdar, char pos = NULL; memset(&sb, 0, sizeof(sb)); - /* By default, no compression is assumed. */ - bsdar->compression = ARCHIVE_COMPRESSION_NONE; - /* * Test if the specified archive exists, to figure out * whether we are creating one here. @@ -618,23 +608,7 @@ write_objs(struct bsdar *bsdar) bsdar_errc(bsdar, EX_SOFTWARE, 0, "archive_write_new failed"); archive_write_set_format_ar_svr4(a); - - /* The compression mode of the existing archive is used - * for the result archive or if creating a new archive, we - * do not compress archive by default. This default behavior can - * be overrided by compression mode specified explicitly - * through command line option `-j' or `-z'. - */ - if (bsdar->options & AR_J) - bsdar->compression = ARCHIVE_COMPRESSION_BZIP2; - if (bsdar->options & AR_Z) - bsdar->compression = ARCHIVE_COMPRESSION_GZIP; - if (bsdar->compression == ARCHIVE_COMPRESSION_BZIP2) - archive_write_set_compression_bzip2(a); - else if (bsdar->compression == ARCHIVE_COMPRESSION_GZIP) - archive_write_set_compression_gzip(a); - else - archive_write_set_compression_none(a); + archive_write_set_compression_none(a); AC(archive_write_open_filename(a, bsdar->filename)); From owner-svn-src-head@FreeBSD.ORG Mon May 17 10:28:53 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 70F4D1065672; Mon, 17 May 2010 10:28:53 +0000 (UTC) (envelope-from swell.k@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.153]) by mx1.freebsd.org (Postfix) with ESMTP id 7298B8FC17; Mon, 17 May 2010 10:28:52 +0000 (UTC) Received: by fg-out-1718.google.com with SMTP id l26so2055509fgb.13 for ; Mon, 17 May 2010 03:28:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:references :date:in-reply-to:message-id:user-agent:mime-version:content-type; bh=UUc22fba6th222nUhsbYkQ7tPqwKOM8Wos5Ltg0IP2M=; b=LbatYRBLdcbE6xROXFb5VuvPExK0dhekRXqnDVixrr/hdagR5qvR9dgMOjYu2c2VHb 168U4s+VpCKHS5cr6ouDfu08vif+DP4RY4kj2rrom9ZGYwSgVLbbySs5pEmjJYRaHRIi QjBvcVoeKGt+nvj0rzNiTZqRPlr4CT7fnFP2M= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; b=IjXh2aAJv8kd9vXW+U8RVupHSsSJCYa3W/f8zcF12xMfu7DnlaK5iHp/VxE7moGXdz iSuq87uCzU2zbTvvYVH49y6gSw+R3x1NXbmldKxF77fUyOVer8nBjtmhF5CNx97mFAq2 Nimtwp3vD8o+iNi/SzfwElDFM9X1EMMX0ZStk= Received: by 10.87.69.29 with SMTP id w29mr8241514fgk.35.1274092131297; Mon, 17 May 2010 03:28:51 -0700 (PDT) Received: from localhost (95-25-188-72.broadband.corbina.ru [95.25.188.72]) by mx.google.com with ESMTPS id d4sm13002266fga.5.2010.05.17.03.28.50 (version=SSLv3 cipher=RC4-MD5); Mon, 17 May 2010 03:28:50 -0700 (PDT) From: Anonymous To: Tim Kientzle References: <201005081628.o48GSM9s067363__30886.3841965378$1273336146$gmane$org@svn.freebsd.org> <86aas3oc8b.fsf@gmail.com> <4BF059FF.8050002__30617.9139217877$1274042897$gmane$org@freebsd.org> Date: Mon, 17 May 2010 14:28:48 +0400 In-Reply-To: <4BF059FF.8050002__30617.9139217877$1274042897$gmane$org@freebsd.org> (Tim Kientzle's message of "Sun, 16 May 2010 13:47:59 -0700") Message-ID: <861vdaakkf.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r207790 - head/usr.bin/tar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 10:28:53 -0000 Tim Kientzle writes: > Please try the attached patch and let me know if it fixes it for you... > > Cheers, > > Tim [...] It fixes the issue. Thanks. From owner-svn-src-head@FreeBSD.ORG Mon May 17 10:54:12 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 978D31065689; Mon, 17 May 2010 10:54:12 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.geekcn.org (tarsier.geekcn.org [IPv6:2001:470:a803::1]) by mx1.freebsd.org (Postfix) with ESMTP id 680FB8FC19; Mon, 17 May 2010 10:54:11 +0000 (UTC) Received: from mail.geekcn.org (tarsier.geekcn.org [211.166.10.233]) by tarsier.geekcn.org (Postfix) with ESMTP id 6BE8CA56AA3; Mon, 17 May 2010 18:54:09 +0800 (CST) X-Virus-Scanned: amavisd-new at geekcn.org Received: from tarsier.geekcn.org ([211.166.10.233]) by mail.geekcn.org (mail.geekcn.org [211.166.10.233]) (amavisd-new, port 10024) with LMTP id 9fP0SweT0Qya; Mon, 17 May 2010 18:54:03 +0800 (CST) Received: from delta.delphij.net (c-24-4-100-103.hsd1.ca.comcast.net [24.4.100.103]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tarsier.geekcn.org (Postfix) with ESMTPSA id 7B11EA56AA9; Mon, 17 May 2010 18:54:01 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=delphij.net; c=nofws; q=dns; h=message-id:date:from:reply-to:organization:user-agent: mime-version:to:cc:subject:references:in-reply-to: x-enigmail-version:openpgp:content-type:content-transfer-encoding; b=riGW7YufkQgMRQsmo9dgekV/sxcSAeKW2tlkqOdpsYhbpje7U56i64s8je/E49nQ4 P3gmVxUDOgYDgBhGB18PA== Message-ID: <4BF12043.3010009@delphij.net> Date: Mon, 17 May 2010 03:53:55 -0700 From: Xin LI Organization: The Geek China Organization User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.9) Gecko/20100408 Thunderbird/3.0.4 ThunderBrowse/3.2.8.1 MIME-Version: 1.0 To: Kai Wang References: <201005170937.o4H9bxMR082608@svn.freebsd.org> In-Reply-To: <201005170937.o4H9bxMR082608@svn.freebsd.org> X-Enigmail-Version: 1.0.1 OpenPGP: id=3FCA37C1; url=http://www.delphij.net/delphij.asc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG Subject: Re: svn commit: r208189 - head/usr.bin/ar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 10:54:12 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 2010/05/17 02:37, Kai Wang wrote: > Author: kaiw > Date: Mon May 17 09:37:59 2010 > New Revision: 208189 > URL: http://svn.freebsd.org/changeset/base/208189 > > Log: > Removed ar(1)'s support for compressed archives. This change removes > ar(1)'s dependencies on compressor libraries -lz, -lbz2 and -llzma and > fixes building HEAD on some versions of FreeBSD[78]. Option -j and -z > is now accepted but ignored. > > Compressed ar(1) archives are not useful without a ld(1) that can read > them. Also, the current ar(1) compression scheme prevents random > access of archive members and needs to be redesigned anyway. > > Submitted by: kientzle (original patch) Thanks! Cheers, - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iQEcBAEBAgAGBQJL8SBDAAoJEATO+BI/yjfB5L8H/1g1dYSRfWF46pTaRVmaXVFq SwehL5jGPtN9UxZzSeLD9XTqOCQc1VSl5yrkTp+FtHxwh8gG6H8J8rQeQlVvguzd Ns3HXTL3b64LOPvumYj22+kklbapvP7ZjZHCT4pixcGA8wyteM8Zi5hjN0bELINM 0eq62DJuaC59UzPksfWGO7pdlGmkWeAYzPWXsPpaCX65MAkHJpIwmTrrMiNELvvu bhmxw3Op2iVmiY4AJuQX/yjL9AHSpriHC/sb1n9iQMfcqJ0OQRKHR2DR04omWAbF RUF6p5N501yylLAEI3MOGZH/f47/GIr84eAheuNbC4WzI93StWllB7s6DHdlN1U= =/81y -----END PGP SIGNATURE----- From owner-svn-src-head@FreeBSD.ORG Mon May 17 11:18:33 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFA631065672; Mon, 17 May 2010 11:18:33 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DF27C8FC19; Mon, 17 May 2010 11:18:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4HBIXNm007529; Mon, 17 May 2010 11:18:33 GMT (envelope-from ivoras@svn.freebsd.org) Received: (from ivoras@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4HBIXo3007527; Mon, 17 May 2010 11:18:33 GMT (envelope-from ivoras@svn.freebsd.org) Message-Id: <201005171118.o4HBIXo3007527@svn.freebsd.org> From: Ivan Voras Date: Mon, 17 May 2010 11:18:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208190 - head/usr.sbin/daemon X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 11:18:34 -0000 Author: ivoras Date: Mon May 17 11:18:33 2010 New Revision: 208190 URL: http://svn.freebsd.org/changeset/base/208190 Log: Slightly improve wording. Modified: head/usr.sbin/daemon/daemon.8 Modified: head/usr.sbin/daemon/daemon.8 ============================================================================== --- head/usr.sbin/daemon/daemon.8 Mon May 17 09:37:59 2010 (r208189) +++ head/usr.sbin/daemon/daemon.8 Mon May 17 11:18:33 2010 (r208190) @@ -63,7 +63,8 @@ Note, that the file will be created shor actually executed, and will remain after the process exits (although it will be removed if the execution fails). .It Fl u Ar user -Run the program with the rights of user specified, requires privilege. +Login name of the user to execute the program under. +Requires adequate superuser privileges. .El .Sh EXIT STATUS The From owner-svn-src-head@FreeBSD.ORG Mon May 17 15:45:54 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 95BA5106566C; Mon, 17 May 2010 15:45:54 +0000 (UTC) (envelope-from matthew.fleming@isilon.com) Received: from seaxch09.isilon.com (seaxch09.isilon.com [74.85.160.25]) by mx1.freebsd.org (Postfix) with ESMTP id 733018FC16; Mon, 17 May 2010 15:45:54 +0000 (UTC) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Date: Mon, 17 May 2010 08:33:52 -0700 Message-ID: <06D5F9F6F655AD4C92E28B662F7F853E021D4D66@seaxch09.desktop.isilon.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: svn commit: r208003 - in head/sys: kern sys Thread-Index: Acr0tZ24VvXcICWfSciYrg8DiAvBhwBH5f1R References: <201005122124.o4CLOk3b027904@svn.freebsd.org> <20100516050651.GZ83316@deviant.kiev.zoral.com.ua> From: "Matthew Fleming" To: "Kostik Belousov" , "Zachary Loafman" Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: RE: svn commit: r208003 - in head/sys: kern sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 15:45:54 -0000 > From: Kostik Belousov [mailto:kostikbel@gmail.com] > On Wed, May 12, 2010 at 09:24:46PM +0000, Zachary Loafman wrote: > > Author: zml > > Date: Wed May 12 21:24:46 2010 > > New Revision: 208003 > > URL: http://svn.freebsd.org/changeset/base/208003 > >=20 > > Log: > > Add VOP_ADVLOCKPURGE so that the file system is called when = purging > > locks (in the case where the VFS impl isn't using lf_*) > > =20 > > Submitted by: Matthew Fleming > > Reviewed by: zml, dfr >=20 > After looking at what happen to nullfs, see r208003, I wonder why > the vop is needed. It is called after VOP_RECLAIM is called by = vgonel(), > after fs-specific data are destroyed. So, on the one hand, vop can = only > operate on struct vnode proper, on the other hand, the actions = performed > by vop_advlockpurge implementation can be done by vop_reclaim as well. >=20 > Could you, please, give some details on the supposed use of the vop ? >From a design perspective, it makes little sense to allow overriding the = advlock operation, but not the purge. A specific example is if an = implementation does not use struct lockf to implement advlock, then the = hack you mention of purging in VOP_RECLAIM is needed. After looking over the history of the changes, I believe it would be = sufficient to have the lock purge done before the reclaim. The vnode is = locked exclusively for both operations, so I don't believe there will be = any timing windows. But I am still not 100% sure when the file lock is = used versus the interlock for serializing access to various fields. The advlock VOPs are analogous to the regular VOP_LOCK in that we expect = an implementation may override the VOP and also the data structures = used, e.g. to not use the vnode's v_lock field for the VOP_LOCK. Thus = any code which refers to v_lockf should be wrapped in a VOP to allow = correct overriding. Thanks, matthew From owner-svn-src-head@FreeBSD.ORG Mon May 17 16:28:11 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55FFF106564A; Mon, 17 May 2010 16:28:11 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id DF2808FC15; Mon, 17 May 2010 16:28:10 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o4HGSJKh019060 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 17 May 2010 19:28:19 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o4HGS6SI046648; Mon, 17 May 2010 19:28:06 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o4HGS628046639; Mon, 17 May 2010 19:28:06 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 17 May 2010 19:28:06 +0300 From: Kostik Belousov To: Matthew Fleming Message-ID: <20100517162806.GM83316@deviant.kiev.zoral.com.ua> References: <201005122124.o4CLOk3b027904@svn.freebsd.org> <20100516050651.GZ83316@deviant.kiev.zoral.com.ua> <06D5F9F6F655AD4C92E28B662F7F853E021D4D66@seaxch09.desktop.isilon.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="n8d7KAgWmJ23Ts4y" Content-Disposition: inline In-Reply-To: <06D5F9F6F655AD4C92E28B662F7F853E021D4D66@seaxch09.desktop.isilon.com> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-2.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_50, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Zachary Loafman , src-committers@freebsd.org Subject: Re: svn commit: r208003 - in head/sys: kern sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 16:28:11 -0000 --n8d7KAgWmJ23Ts4y Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, May 17, 2010 at 08:33:52AM -0700, Matthew Fleming wrote: > > From: Kostik Belousov [mailto:kostikbel@gmail.com] > > On Wed, May 12, 2010 at 09:24:46PM +0000, Zachary Loafman wrote: > > > Author: zml > > > Date: Wed May 12 21:24:46 2010 > > > New Revision: 208003 > > > URL: http://svn.freebsd.org/changeset/base/208003 > > >=20 > > > Log: > > > Add VOP_ADVLOCKPURGE so that the file system is called when purging > > > locks (in the case where the VFS impl isn't using lf_*) > > > =20 > > > Submitted by: Matthew Fleming > > > Reviewed by: zml, dfr > >=20 > > After looking at what happen to nullfs, see r208003, I wonder why > > the vop is needed. It is called after VOP_RECLAIM is called by vgonel(), > > after fs-specific data are destroyed. So, on the one hand, vop can only > > operate on struct vnode proper, on the other hand, the actions performed > > by vop_advlockpurge implementation can be done by vop_reclaim as well. > >=20 > > Could you, please, give some details on the supposed use of the vop ? >=20 > >From a design perspective, it makes little sense to allow overriding > the advlock operation, but not the purge. A specific example is if an > implementation does not use struct lockf to implement advlock, then > the hack you mention of purging in VOP_RECLAIM is needed. > > After looking over the history of the changes, I believe it would be > sufficient to have the lock purge done before the reclaim. The vnode > is locked exclusively for both operations, so I don't believe there > will be any timing windows. But I am still not 100% sure when the file > lock is used versus the interlock for serializing access to various > fields. > > The advlock VOPs are analogous to the regular VOP_LOCK in that we > expect an implementation may override the VOP and also the data > structures used, e.g. to not use the vnode's v_lock field for the > VOP_LOCK. Thus any code which refers to v_lockf should be wrapped in a > VOP to allow correct overriding. Essentially, my argument is that whatever you do in VOP_ADVLOCKPURGE, can be and should be done in VOP_RECLAIM. This would also cover the v_data issue. --n8d7KAgWmJ23Ts4y Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkvxbpUACgkQC3+MBN1Mb4jcwQCeItE83uff8FnY+WbI7H0xwDC+ QQAAoMFTDaTO9L/6gYGutbLyqpOoIJZd =PJi1 -----END PGP SIGNATURE----- --n8d7KAgWmJ23Ts4y-- From owner-svn-src-head@FreeBSD.ORG Mon May 17 18:32:10 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 62999106564A; Mon, 17 May 2010 18:32:10 +0000 (UTC) (envelope-from matthew.fleming@isilon.com) Received: from seaxch09.isilon.com (seaxch09.isilon.com [74.85.160.25]) by mx1.freebsd.org (Postfix) with ESMTP id 3E3B48FC1C; Mon, 17 May 2010 18:32:09 +0000 (UTC) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Date: Mon, 17 May 2010 11:28:47 -0700 Message-ID: <06D5F9F6F655AD4C92E28B662F7F853E021D4D6C@seaxch09.desktop.isilon.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: svn commit: r208003 - in head/sys: kern sys Thread-Index: Acr13fOGz6Nv5xS2R+WpPsEqIM73KgAENasM References: <201005122124.o4CLOk3b027904@svn.freebsd.org> <20100516050651.GZ83316@deviant.kiev.zoral.com.ua> <06D5F9F6F655AD4C92E28B662F7F853E021D4D66@seaxch09.desktop.isilon.com> <20100517162806.GM83316@deviant.kiev.zoral.com.ua> From: "Matthew Fleming" To: "Kostik Belousov" Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Zachary Loafman , src-committers@freebsd.org Subject: RE: svn commit: r208003 - in head/sys: kern sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 18:32:10 -0000 From: Kostik Belousov [mailto:kostikbel@gmail.com] > Essentially, my argument is that whatever you do in VOP_ADVLOCKPURGE, > can be and should be done in VOP_RECLAIM. This would also cover the = v_data > issue. I disagree about the "should". I believe that if BSD wants to allow = overriding lf_advlock(9) with VOP_ADVLOCK it should fully support the = overriding. Alternatively, the call to lf_purgelocks(9) should be = pushed down into each filesystem's VOP_RECLAIM for consistency. Thanks, matthew From owner-svn-src-head@FreeBSD.ORG Mon May 17 19:12:25 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA3431065675; Mon, 17 May 2010 19:12:25 +0000 (UTC) (envelope-from marius@alchemy.franken.de) Received: from alchemy.franken.de (alchemy.franken.de [194.94.249.214]) by mx1.freebsd.org (Postfix) with ESMTP id 06C5D8FC14; Mon, 17 May 2010 19:12:24 +0000 (UTC) Received: from alchemy.franken.de (localhost [127.0.0.1]) by alchemy.franken.de (8.14.3/8.14.3/ALCHEMY.FRANKEN.DE) with ESMTP id o4HJCMdY039538; Mon, 17 May 2010 21:12:23 +0200 (CEST) (envelope-from marius@alchemy.franken.de) Received: (from marius@localhost) by alchemy.franken.de (8.14.3/8.14.3/Submit) id o4HJCMSW039537; Mon, 17 May 2010 21:12:22 +0200 (CEST) (envelope-from marius) Date: Mon, 17 May 2010 21:12:22 +0200 From: Marius Strobl To: Nathan Whitehorn Message-ID: <20100517191222.GB49967@alchemy.franken.de> References: <201005162201.o4GM1h8W027917@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201005162201.o4GM1h8W027917@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208172 - in head/sys: dev/ofw powerpc/aim powerpc/ofw X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 19:12:25 -0000 On Sun, May 16, 2010 at 10:01:43PM +0000, Nathan Whitehorn wrote: > Author: nwhitehorn > Date: Sun May 16 22:01:43 2010 > New Revision: 208172 > URL: http://svn.freebsd.org/changeset/base/208172 > > Log: > Pull OF_quiesce() out of the MI Open Firmware layer and entirely into > PPC ofw_machdep.c, in recognition of its state as a machine specific hack. > Thanks! Marius From owner-svn-src-head@FreeBSD.ORG Mon May 17 19:13:50 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43E8C1065674; Mon, 17 May 2010 19:13:50 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 33BAE8FC1E; Mon, 17 May 2010 19:13:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4HJDoJj013468; Mon, 17 May 2010 19:13:50 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4HJDoSW013467; Mon, 17 May 2010 19:13:50 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005171913.o4HJDoSW013467@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Mon, 17 May 2010 19:13:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208210 - head/usr.bin/wc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 19:13:50 -0000 Author: pjd Date: Mon May 17 19:13:49 2010 New Revision: 208210 URL: http://svn.freebsd.org/changeset/base/208210 Log: Use better type for siginfo (volatile sig_atomic_t instead of int). Pointed out by: jh Modified: head/usr.bin/wc/wc.c Modified: head/usr.bin/wc/wc.c ============================================================================== --- head/usr.bin/wc/wc.c Mon May 17 17:56:27 2010 (r208209) +++ head/usr.bin/wc/wc.c Mon May 17 19:13:49 2010 (r208210) @@ -63,7 +63,8 @@ __FBSDID("$FreeBSD$"); #include uintmax_t tlinect, twordct, tcharct, tlongline; -int doline, doword, dochar, domulti, dolongline, siginfo; +int doline, doword, dochar, domulti, dolongline; +static volatile sig_atomic_t siginfo; static void show_cnt(const char *file, uintmax_t linect, uintmax_t wordct, uintmax_t charct, uintmax_t llct); From owner-svn-src-head@FreeBSD.ORG Mon May 17 19:36:56 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC966106566B; Mon, 17 May 2010 19:36:56 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AC7818FC0A; Mon, 17 May 2010 19:36:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4HJauJJ018588; Mon, 17 May 2010 19:36:56 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4HJauI8018586; Mon, 17 May 2010 19:36:56 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005171936.o4HJauI8018586@svn.freebsd.org> From: John Baldwin Date: Mon, 17 May 2010 19:36:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208212 - head/sys/net X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 19:36:56 -0000 Author: jhb Date: Mon May 17 19:36:56 2010 New Revision: 208212 URL: http://svn.freebsd.org/changeset/base/208212 Log: Ignore failures from removing multicast addresses from the parent (trunk) interface when tearing down a vlan interface. If a trunk interface is detached, all of its multicast addresses are removed before the ifnet departure eventhandlers are invoked. This means that all of the multicast addresses are removed before the vlan interfaces are removed which causes the if_delmulti() calls in the vlan teardown to fail. In the VLAN_ARRAY case, this left vlan interfaces referencing a no longer valid parent interface. In the !VLAN_ARRAY case, the eventhandler gets stuck in an infinite loop retrying vlan_unconfig_locked() forever. In general the callers of vlan_unconfig_locked() do not expect nor handle failure, so I believe it is safer to ignore the errors and tear down as much of the vlan state as possible. Silence from: net@ MFC after: 4 days Modified: head/sys/net/if_vlan.c Modified: head/sys/net/if_vlan.c ============================================================================== --- head/sys/net/if_vlan.c Mon May 17 19:19:48 2010 (r208211) +++ head/sys/net/if_vlan.c Mon May 17 19:36:56 2010 (r208212) @@ -187,8 +187,8 @@ static int vlan_setflag(struct ifnet *if int (*func)(struct ifnet *, int)); static int vlan_setflags(struct ifnet *ifp, int status); static int vlan_setmulti(struct ifnet *ifp); -static int vlan_unconfig(struct ifnet *ifp); -static int vlan_unconfig_locked(struct ifnet *ifp); +static void vlan_unconfig(struct ifnet *ifp); +static void vlan_unconfig_locked(struct ifnet *ifp); static int vlan_config(struct ifvlan *ifv, struct ifnet *p, uint16_t tag); static void vlan_link_state(struct ifnet *ifp); static void vlan_capabilities(struct ifvlan *ifv); @@ -1128,25 +1128,22 @@ done: return (error); } -static int +static void vlan_unconfig(struct ifnet *ifp) { - int ret; VLAN_LOCK(); - ret = vlan_unconfig_locked(ifp); + vlan_unconfig_locked(ifp); VLAN_UNLOCK(); - return (ret); } -static int +static void vlan_unconfig_locked(struct ifnet *ifp) { struct ifvlantrunk *trunk; struct vlan_mc_entry *mc; struct ifvlan *ifv; struct ifnet *parent; - int error; VLAN_LOCK_ASSERT(); @@ -1175,9 +1172,15 @@ vlan_unconfig_locked(struct ifnet *ifp) while ((mc = SLIST_FIRST(&ifv->vlan_mc_listhead)) != NULL) { bcopy((char *)&mc->mc_addr, LLADDR(&sdl), ETHER_ADDR_LEN); - error = if_delmulti(parent, (struct sockaddr *)&sdl); - if (error) - return (error); + + /* + * This may fail if the parent interface is + * being detached. Regardless, we should do a + * best effort to free this interface as much + * as possible as all callers expect vlan + * destruction to succeed. + */ + (void)if_delmulti(parent, (struct sockaddr *)&sdl); SLIST_REMOVE_HEAD(&ifv->vlan_mc_listhead, mc_entries); free(mc, M_VLAN); } @@ -1223,8 +1226,6 @@ vlan_unconfig_locked(struct ifnet *ifp) */ if (parent != NULL) EVENTHANDLER_INVOKE(vlan_unconfig, parent, ifv->ifv_tag); - - return (0); } /* Handle a reference counted flag that should be set on the parent as well */ From owner-svn-src-head@FreeBSD.ORG Mon May 17 19:40:04 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B6D281065670; Mon, 17 May 2010 19:40:04 +0000 (UTC) (envelope-from rpaulo@lavabit.com) Received: from karen.lavabit.com (karen.lavabit.com [72.249.41.33]) by mx1.freebsd.org (Postfix) with ESMTP id 5717C8FC08; Mon, 17 May 2010 19:40:04 +0000 (UTC) Received: from e.earth.lavabit.com (e.earth.lavabit.com [192.168.111.14]) by karen.lavabit.com (Postfix) with ESMTP id 1528B18F5BB; Mon, 17 May 2010 14:07:33 -0500 (CDT) Received: from 10.0.10.3 (54.81.54.77.rev.vodafone.pt [77.54.81.54]) by lavabit.com with ESMTP id PEPZU9FDEU3Q; Mon, 17 May 2010 14:07:33 -0500 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=lavabit; d=lavabit.com; b=qFGP764o8RtlELW7d4DT7v1wsqbM/A35mso2pHaQ/GFeubJYhHxRoowzMLBICldSMp6RS0LFeePm1VS7LyDPxXW5m1WfUxzcUbZinBk3+mvf29rp3hJs5GWEgZyXMndhhrwZ0oagtuRR40bG2O+eggq+zrSEdFHo0rlT//1YEc0=; h=Subject:Mime-Version:Content-Type:From:In-Reply-To:Date:Cc:Content-Transfer-Encoding:Message-Id:References:To:X-Mailer; Mime-Version: 1.0 (Apple Message framework v1078) Content-Type: text/plain; charset=us-ascii From: Rui Paulo In-Reply-To: Date: Mon, 17 May 2010 20:07:29 +0100 Content-Transfer-Encoding: 7bit Message-Id: References: <201005161943.o4GJhnTo096839@svn.freebsd.org> To: Juli Mallett X-Mailer: Apple Mail (2.1078) Cc: svn-src-head@freebsd.org, Randall Stewart , svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208165 - in head/sys: kern mips/conf mips/include mips/mips mips/rmi mips/rmi/dev/xlr X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 19:40:04 -0000 On 16 May 2010, at 20:54, Juli Mallett wrote: > On Sun, May 16, 2010 at 12:43, Randall Stewart wrote: >> Author: rrs >> Date: Sun May 16 19:43:48 2010 >> New Revision: 208165 >> URL: http://svn.freebsd.org/changeset/base/208165 >> >> Log: >> This pushes all of JC's patches that I have in place. I >> am now able to run 32 cores ok.. but I still will hang >> on buildworld with a NFS problem. I suspect I am missing >> a patch for the netlogic rge driver. >> >> JC check and see if I am missing anything except your >> core-mask changes > > This isn't a very good commit message. Commits communicate things > going forward. A follow-up E-Mail CCing JC would have been a good way > to chat with him about its completeness. More importantly, though, > there's just no description of the contents. This is particularly > frustrating as it's also not broken up into functional chunks very > well. Given the fact that there are MI changes and pan-MIPS changes > here it would be nice to see a little more care taken. The changes to > the MIPS MP code, for instance, I thought we had discussed and decided > were sub-par and easily made less invasive. I can't comment on the > RMI-specific stuff except to say that it's an unenumerated jumble of > VM, networking and SMP changes. I completely agree. Regards, -- Rui Paulo From owner-svn-src-head@FreeBSD.ORG Mon May 17 19:51:34 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 91A191065678; Mon, 17 May 2010 19:51:34 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 81D278FC12; Mon, 17 May 2010 19:51:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4HJpYHM021868; Mon, 17 May 2010 19:51:34 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4HJpYc6021866; Mon, 17 May 2010 19:51:34 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005171951.o4HJpYc6021866@svn.freebsd.org> From: John Baldwin Date: Mon, 17 May 2010 19:51:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208213 - head/etc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 19:51:34 -0000 Author: jhb Date: Mon May 17 19:51:34 2010 New Revision: 208213 URL: http://svn.freebsd.org/changeset/base/208213 Log: Prevent unloading a kld for a driver that has subinterfaces (vlan and/or wlan interfaces) from being automatically reloaded via devd shutdown event handlers. - Revert part of my previous changes to call ifn_stop on subinterfaces when an interface is detached. It is better to destroy the interfaces first so that an 'ifconfig foo0.blah down' doesn't result in ifconfig auto-loading if_foo.ko. The ifconfig command will not be invoked if foo0.blah is gone when ifn_stop() is called. Furthermore, it is not necessary to explicitly invoke ifn_stop() after the subinterface is destroyed as devd will already do that. - Pass -n to ifconfig when destroying interfaces so that destroying a cloned interface does not kldload any drivers. Reviewed by: dougb MFC after: 4 days Modified: head/etc/network.subr Modified: head/etc/network.subr ============================================================================== --- head/etc/network.subr Mon May 17 19:36:56 2010 (r208212) +++ head/etc/network.subr Mon May 17 19:51:34 2010 (r208213) @@ -917,7 +917,7 @@ clone_down() _list= for ifn in ${cloned_interfaces}; do - ifconfig ${ifn} destroy + ifconfig -n ${ifn} destroy if [ $? -eq 0 ]; then _list="${_list}${_prefix}${ifn}" [ -z "$_prefix" ] && _prefix=' ' @@ -1002,10 +1002,7 @@ childif_destroy() if ! ifexists $child; then continue fi - if autoif $child; then - ifn_stop $child - fi - ifconfig $child destroy && cfg=0 + ifconfig -n $child destroy && cfg=0 done child_vlans=`get_if_var $ifn vlans_IF` @@ -1016,10 +1013,7 @@ childif_destroy() if ! ifexists $child; then continue fi - if autoif $child; then - ifn_stop $child - fi - ifconfig $child destroy && cfg=0 + ifconfig -n $child destroy && cfg=0 done return ${cfg} From owner-svn-src-head@FreeBSD.ORG Mon May 17 20:06:18 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A876106564A; Mon, 17 May 2010 20:06:18 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 5CDD68FC08; Mon, 17 May 2010 20:06:18 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 3F1C846B58; Mon, 17 May 2010 16:06:16 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPA id 3F1B68A021; Mon, 17 May 2010 16:06:15 -0400 (EDT) From: John Baldwin To: src-committers@freebsd.org Date: Mon, 17 May 2010 15:47:40 -0400 User-Agent: KMail/1.12.1 (FreeBSD/7.3-CBSD-20100217; KDE/4.3.1; amd64; ; ) References: <201005171936.o4HJauI8018586@svn.freebsd.org> In-Reply-To: <201005171936.o4HJauI8018586@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201005171547.40705.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 17 May 2010 16:06:15 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r208212 - head/sys/net X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 20:06:18 -0000 On Monday 17 May 2010 3:36:56 pm John Baldwin wrote: > Author: jhb > Date: Mon May 17 19:36:56 2010 > New Revision: 208212 > URL: http://svn.freebsd.org/changeset/base/208212 > > Log: > Ignore failures from removing multicast addresses from the parent (trunk) > interface when tearing down a vlan interface. If a trunk interface is > detached, all of its multicast addresses are removed before the ifnet > departure eventhandlers are invoked. This means that all of the multicast > addresses are removed before the vlan interfaces are removed which causes > the if_delmulti() calls in the vlan teardown to fail. > > In the VLAN_ARRAY case, this left vlan interfaces referencing a no longer > valid parent interface. In the !VLAN_ARRAY case, the eventhandler gets > stuck in an infinite loop retrying vlan_unconfig_locked() forever. In > general the callers of vlan_unconfig_locked() do not expect nor handle > failure, so I believe it is safer to ignore the errors and tear down as > much of the vlan state as possible. The infinite loop is reproducible by doing something like: ifconfig cxgb0.100 create <.. configure cxgb0.100 ..> <.. listen for multicast on cxgb0.100 ..> kldunload if_cxgb.ko In 7 the infinite loop occurs under Giant which causes maximum fun as ptys for sshd need Giant still in 7. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Mon May 17 20:06:20 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 52C311065678; Mon, 17 May 2010 20:06:20 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 251E58FC35; Mon, 17 May 2010 20:06:20 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id C611E46B7E; Mon, 17 May 2010 16:06:17 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPA id E47428A025; Mon, 17 May 2010 16:06:16 -0400 (EDT) From: John Baldwin To: src-committers@freebsd.org Date: Mon, 17 May 2010 16:05:40 -0400 User-Agent: KMail/1.12.1 (FreeBSD/7.3-CBSD-20100217; KDE/4.3.1; amd64; ; ) References: <201005171951.o4HJpYc6021866@svn.freebsd.org> In-Reply-To: <201005171951.o4HJpYc6021866@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201005171605.41009.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 17 May 2010 16:06:17 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r208213 - head/etc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 20:06:20 -0000 On Monday 17 May 2010 3:51:34 pm John Baldwin wrote: > Author: jhb > Date: Mon May 17 19:51:34 2010 > New Revision: 208213 > URL: http://svn.freebsd.org/changeset/base/208213 > > Log: > Prevent unloading a kld for a driver that has subinterfaces (vlan and/or > wlan interfaces) from being automatically reloaded via devd shutdown > event handlers. > - Revert part of my previous changes to call ifn_stop on subinterfaces > when an interface is detached. It is better to destroy the interfaces > first so that an 'ifconfig foo0.blah down' doesn't result in ifconfig > auto-loading if_foo.ko. The ifconfig command will not be invoked if > foo0.blah is gone when ifn_stop() is called. Furthermore, it is not > necessary to explicitly invoke ifn_stop() after the subinterface is > destroyed as devd will already do that. > - Pass -n to ifconfig when destroying interfaces so that destroying a > cloned interface does not kldload any drivers. Arguably, ifconfig's autoloading behavior is probably a bit broken. First, doing 'ifconfig foo0.blah ' probably shouldn't try to autoload if_foo.ko. It should try to trim off a string of digits at the end and then autoload the result instead of walking to find the first digit and then loading that. Second, 'ifconfig destroy' should probably imply -n and not autoload anything. An interface wouldn't exist to be destroyed unless its driver was already loaded. Adding -n in network.subr is the most expedient fix, but I think fixing ifconfig is a better long term solution. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Mon May 17 21:55:47 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CAC94106567A; Mon, 17 May 2010 21:55:47 +0000 (UTC) (envelope-from neelnatu@gmail.com) Received: from mail-pv0-f182.google.com (mail-pv0-f182.google.com [74.125.83.182]) by mx1.freebsd.org (Postfix) with ESMTP id 7F3718FC16; Mon, 17 May 2010 21:55:47 +0000 (UTC) Received: by pvh11 with SMTP id 11so2705650pvh.13 for ; Mon, 17 May 2010 14:55:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=nFIvdCPzEo1Fa18exaakf5ndtkLDY+MAknQmaN02ROU=; b=LSiUvb2WmCOfkGtA/PhpASGhV+ds8RJHoZQDWQjnF24hek32ZP4489dyHAnLDMc14N /MQtbLN2ZiKoHcySWJia38xQGFU3oQJhCD5vdLG8MV/cKoqDCC9wWsyPPpPdNi49TE2d 4uM61oLedlCya8N1qNklgNZs6S3iOy4A9UoiA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=N9VByb0oRTomcH31Bp6R/dLxXoMmAt1Yrq6p+8BYK2YUwV4i5FLYZV6Eopjo0KWxcF aCmtjzRCz6MtfS05ubchAm3UKFyi2yDYwCc+cCHORZcUFe0uOaEQuUrDrdaOEiCfc6UR 4SWaXQfbz/+1yC3in5XTiBnvEDKqgI/cr75Ow= MIME-Version: 1.0 Received: by 10.143.25.2 with SMTP id c2mr3981095wfj.147.1274133346363; Mon, 17 May 2010 14:55:46 -0700 (PDT) Received: by 10.142.172.9 with HTTP; Mon, 17 May 2010 14:55:46 -0700 (PDT) In-Reply-To: References: <201005161943.o4GJhnTo096839@svn.freebsd.org> Date: Mon, 17 May 2010 14:55:46 -0700 Message-ID: From: Neel Natu To: Juli Mallett Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, Randall Stewart , svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208165 - in head/sys: kern mips/conf mips/include mips/mips mips/rmi mips/rmi/dev/xlr X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 21:55:47 -0000 Hi Randall, On Sun, May 16, 2010 at 12:54 PM, Juli Mallett wrote= : > On Sun, May 16, 2010 at 12:43, Randall Stewart wrote: >> Author: rrs >> Date: Sun May 16 19:43:48 2010 >> New Revision: 208165 >> URL: http://svn.freebsd.org/changeset/base/208165 >> >> Log: >> =A0This pushes all of JC's patches that I have in place. I >> =A0am now able to run 32 cores ok.. but I still will hang >> =A0on buildworld with a NFS problem. I suspect I am missing >> =A0a patch for the netlogic rge driver. >> >> =A0JC check and see if I am missing anything except your >> =A0core-mask changes > > This isn't a very good commit message. =A0Commits communicate things > going forward. =A0A follow-up E-Mail CCing JC would have been a good way > to chat with him about its completeness. =A0More importantly, though, > there's just no description of the contents. =A0This is particularly > frustrating as it's also not broken up into functional chunks very > well. =A0Given the fact that there are MI changes and pan-MIPS changes > here it would be nice to see a little more care taken. =A0The changes to > the MIPS MP code, for instance, I thought we had discussed and decided > were sub-par and easily made less invasive. =A0I can't comment on the > RMI-specific stuff except to say that it's an unenumerated jumble of > VM, networking and SMP changes. > I agree with Juli. This is especially true with respect to the changes to pmap.c. There needed to be a companion set of changes to exception.S to undo some of the changes to the TLB invalid handler that deal with recursive faults in the TLB miss handler. best Neel From owner-svn-src-head@FreeBSD.ORG Mon May 17 23:55:38 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A732B1065675; Mon, 17 May 2010 23:55:38 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 968678FC16; Mon, 17 May 2010 23:55:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4HNtcUo077442; Mon, 17 May 2010 23:55:38 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4HNtc90077440; Mon, 17 May 2010 23:55:38 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201005172355.o4HNtc90077440@svn.freebsd.org> From: Rick Macklem Date: Mon, 17 May 2010 23:55:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208234 - head/sys/fs/nfsclient X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2010 23:55:38 -0000 Author: rmacklem Date: Mon May 17 23:55:38 2010 New Revision: 208234 URL: http://svn.freebsd.org/changeset/base/208234 Log: Add a sanity check for a negative args.fhsize to the experimental NFS client. MFC after: 5 days Modified: head/sys/fs/nfsclient/nfs_clvfsops.c Modified: head/sys/fs/nfsclient/nfs_clvfsops.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clvfsops.c Mon May 17 23:55:23 2010 (r208233) +++ head/sys/fs/nfsclient/nfs_clvfsops.c Mon May 17 23:55:38 2010 (r208234) @@ -951,7 +951,7 @@ nfs_mount(struct mount *mp) if (vfs_getopt(mp->mnt_optnew, "fh", (void **)&args.fh, &args.fhsize) == 0) { - if (args.fhsize > NFSX_FHMAX) { + if (args.fhsize < 0 || args.fhsize > NFSX_FHMAX) { vfs_mount_error(mp, "Bad file handle"); error = EINVAL; goto out; From owner-svn-src-head@FreeBSD.ORG Tue May 18 01:45:29 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2D3D106566B; Tue, 18 May 2010 01:45:28 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E19C58FC0A; Tue, 18 May 2010 01:45:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4I1jSOi002280; Tue, 18 May 2010 01:45:28 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4I1jSph002278; Tue, 18 May 2010 01:45:28 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201005180145.o4I1jSph002278@svn.freebsd.org> From: Jeff Roberson Date: Tue, 18 May 2010 01:45:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208241 - head/sbin/tunefs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 01:45:29 -0000 Author: jeff Date: Tue May 18 01:45:28 2010 New Revision: 208241 URL: http://svn.freebsd.org/changeset/base/208241 Log: - Round up the journal size to the block size so we don't confuse fsck. Reported by: Mikolaj Golub - Only require 256k of blocks per-cg when trying to allocate contiguous journal blocks. The storage may not actually be contiguous but is at least within one cg. - When disabling SUJ leave SU enabled and report this to the user. It is expected that users will upgrade SU filesystems to SUJ and want a similar downgrade path. Modified: head/sbin/tunefs/tunefs.c Modified: head/sbin/tunefs/tunefs.c ============================================================================== --- head/sbin/tunefs/tunefs.c Tue May 18 00:46:15 2010 (r208240) +++ head/sbin/tunefs/tunefs.c Tue May 18 01:45:28 2010 (r208241) @@ -358,10 +358,12 @@ main(int argc, char *argv[]) warnx("%s remains unchanged as disabled", name); } else { journal_clear(); - sblock.fs_flags &= ~(FS_DOSOFTDEP | FS_SUJ); + sblock.fs_flags &= ~FS_SUJ; sblock.fs_sujfree = 0; - warnx("%s cleared, " - "remove .sujournal to reclaim space", name); + warnx("%s cleared but soft updates still set.", + name); + + warnx("remove .sujournal to reclaim space"); } } } @@ -546,7 +548,7 @@ journal_balloc(void) * Try to minimize fragmentation by requiring a minimum * number of blocks present. */ - if (cgp->cg_cs.cs_nbfree > 128 * 1024 * 1024) + if (cgp->cg_cs.cs_nbfree > 256 * 1024) break; if (contig == 0 && cgp->cg_cs.cs_nbfree) break; @@ -906,6 +908,8 @@ journal_alloc(int64_t size) if (size / sblock.fs_fsize > sblock.fs_fpg) size = sblock.fs_fpg * sblock.fs_fsize; size = MAX(SUJ_MIN, size); + /* fsck does not support fragments in journal files. */ + size = roundup(size, sblock.fs_bsize); } resid = blocks = size / sblock.fs_bsize; if (sblock.fs_cstotal.cs_nbfree < blocks) { From owner-svn-src-head@FreeBSD.ORG Tue May 18 03:30:07 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D61E1065672; Tue, 18 May 2010 03:30:07 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.cksoft.de (mail.cksoft.de [IPv6:2001:4068:10::3]) by mx1.freebsd.org (Postfix) with ESMTP id 294E08FC15; Tue, 18 May 2010 03:30:07 +0000 (UTC) Received: from localhost (amavis.fra.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id 887EC41C667; Tue, 18 May 2010 05:30:06 +0200 (CEST) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([192.168.74.103]) by localhost (amavis.fra.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id z7bs6qvGnq7W; Tue, 18 May 2010 05:30:05 +0200 (CEST) Received: by mail.cksoft.de (Postfix, from userid 66) id C164441C64C; Tue, 18 May 2010 05:30:05 +0200 (CEST) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id 4654D4448EC; Tue, 18 May 2010 03:27:34 +0000 (UTC) Date: Tue, 18 May 2010 03:27:33 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Pyun YongHyeon In-Reply-To: <201005101714.o4AHEFuu015079@svn.freebsd.org> Message-ID: <20100518032628.S23815@maildrop.int.zabbadoz.net> References: <201005101714.o4AHEFuu015079@svn.freebsd.org> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r207851 - head/sys/dev/sge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 03:30:07 -0000 On Mon, 10 May 2010, Pyun YongHyeon wrote: > Author: yongari > Date: Mon May 10 17:14:14 2010 > New Revision: 207851 > URL: http://svn.freebsd.org/changeset/base/207851 > > Log: > Implement TSO and TSO over VLAN. Increase number of allowed > fragmentation of mbuf chain to 32 from 16 because TSO can send 64KB > sized packet which in turn requires long list of mbuf chain. Due to > lack of documentation, I'm not sure whether driver have to pull up > ethernet/IP/TCP header with options to make controller work but > driver have to parse TCP header to update pseudo TCP checksum > anyway. The controller expects pseudo TCP checksum computed by > upper stack and the checksum should follow the MS NDIS > specification to make TSO work. > > Tested by: xclin cs dot nctu dot edu dot tw > This brings in INET as a dependency for the driver and fails on my nooptions INET nooptions INET6 kernels (in_pseudo()). /bz -- Bjoern A. Zeeb (from 21) Micky Rosa: But as we've all said, this game is about the past and the future, and tonight we forget about the past. We just focus on the future. From owner-svn-src-head@FreeBSD.ORG Tue May 18 04:02:34 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B1C1C1065678; Tue, 18 May 2010 04:02:34 +0000 (UTC) (envelope-from rrs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9F81F8FC14; Tue, 18 May 2010 04:02:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4I42Y97033212; Tue, 18 May 2010 04:02:34 GMT (envelope-from rrs@svn.freebsd.org) Received: (from rrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4I42Yew033206; Tue, 18 May 2010 04:02:34 GMT (envelope-from rrs@svn.freebsd.org) Message-Id: <201005180402.o4I42Yew033206@svn.freebsd.org> From: Randall Stewart Date: Tue, 18 May 2010 04:02:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208249 - in head/sys/mips: include mips rmi sibyte X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 04:02:34 -0000 Author: rrs Date: Tue May 18 04:02:34 2010 New Revision: 208249 URL: http://svn.freebsd.org/changeset/base/208249 Log: Adds JC's cleanup patches that fix it so we call an platform dependant topo function as well as clean up all the XLR specific ifdefs around smp platform init. Obtained from: JC Modified: head/sys/mips/include/hwfunc.h head/sys/mips/mips/mp_machdep.c head/sys/mips/mips/mpboot.S head/sys/mips/rmi/xlr_machdep.c head/sys/mips/sibyte/sb_machdep.c Modified: head/sys/mips/include/hwfunc.h ============================================================================== --- head/sys/mips/include/hwfunc.h Tue May 18 03:16:02 2010 (r208248) +++ head/sys/mips/include/hwfunc.h Tue May 18 04:02:34 2010 (r208249) @@ -93,5 +93,11 @@ extern int platform_processor_id(void); */ extern int platform_num_processors(void); +/* + * Return the topology of processors on this platform + */ +struct cpu_group *platform_smp_topo(void); + + #endif /* SMP */ #endif /* !_MACHINE_HWFUNC_H_ */ Modified: head/sys/mips/mips/mp_machdep.c ============================================================================== --- head/sys/mips/mips/mp_machdep.c Tue May 18 03:16:02 2010 (r208248) +++ head/sys/mips/mips/mp_machdep.c Tue May 18 04:02:34 2010 (r208249) @@ -196,8 +196,7 @@ cpu_mp_announce(void) struct cpu_group * cpu_topo(void) { - - return (smp_topo_none()); + return (platform_smp_topo()); } int @@ -238,10 +237,6 @@ cpu_mp_start(void) void smp_init_secondary(u_int32_t cpuid) { -#ifndef TARGET_XLR_XLS - int ipi_int_mask, clock_int_mask; -#endif - /* TLB */ Mips_SetWIRED(0); Mips_TLBFlush(num_tlbentries); @@ -294,17 +289,6 @@ smp_init_secondary(u_int32_t cpuid) while (smp_started == 0) ; /* nothing */ -#ifndef TARGET_XLR_XLS - /* - * Unmask the clock and ipi interrupts. - */ - clock_int_mask = hard_int_mask(5); - ipi_int_mask = hard_int_mask(platform_ipi_intrnum()); - set_intr_mask(ALL_INT_MASK & ~(ipi_int_mask | clock_int_mask)); -#else - platform_init_ap(cpuid); -#endif - /* * Bootstrap the compare register. */ Modified: head/sys/mips/mips/mpboot.S ============================================================================== --- head/sys/mips/mips/mpboot.S Tue May 18 03:16:02 2010 (r208248) +++ head/sys/mips/mips/mpboot.S Tue May 18 04:02:34 2010 (r208249) @@ -76,10 +76,8 @@ GLOBAL(mpentry) PTR_LA gp, _C_LABEL(_gp) -#ifndef TARGET_XLR_XLS jal platform_init_ap move a0, s0 -#endif jal smp_init_secondary move a0, s0 Modified: head/sys/mips/rmi/xlr_machdep.c ============================================================================== --- head/sys/mips/rmi/xlr_machdep.c Tue May 18 03:16:02 2010 (r208248) +++ head/sys/mips/rmi/xlr_machdep.c Tue May 18 04:02:34 2010 (r208249) @@ -534,6 +534,8 @@ void platform_init_ap(int processor_id) /* Setup interrupts for secondary CPUs here */ stat = mips_rd_status(); + KASSERT((stat & MIPS_SR_INT_IE) == 0, + ("Interrupts enabled in %s!", __func__)); stat |= MIPS_SR_COP_2_BIT | MIPS_SR_COP_0_BIT; mips_wr_status(stat); @@ -570,4 +572,11 @@ int platform_num_processors(void) { return fls(xlr_boot1_info.cpu_online_map); } + +struct cpu_group * +platform_smp_topo() +{ + return (smp_topo_2level(CG_SHARE_L2, platform_num_processors() / 4, + CG_SHARE_L1, 4, CG_FLAG_THREAD)); +} #endif Modified: head/sys/mips/sibyte/sb_machdep.c ============================================================================== --- head/sys/mips/sibyte/sb_machdep.c Tue May 18 03:16:02 2010 (r208248) +++ head/sys/mips/sibyte/sb_machdep.c Tue May 18 04:02:34 2010 (r208249) @@ -344,9 +344,16 @@ platform_ipi_intrnum(void) return (4); } +struct cpu_group * +platform_smp_topo(void) +{ + return (smp_topo_none()); +} + void platform_init_ap(int cpuid) { + int ipi_int_mask, clock_int_mask; KASSERT(cpuid == 1, ("AP has an invalid cpu id %d", cpuid)); @@ -356,6 +363,13 @@ platform_init_ap(int cpuid) kseg0_map_coherent(); sb_intr_init(cpuid); + + /* + * Unmask the clock and ipi interrupts. + */ + clock_int_mask = hard_int_mask(5); + ipi_int_mask = hard_int_mask(platform_ipi_intrnum()); + set_intr_mask(ALL_INT_MASK & ~(ipi_int_mask | clock_int_mask)); } int From owner-svn-src-head@FreeBSD.ORG Tue May 18 04:08:58 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A8C68106566B; Tue, 18 May 2010 04:08:58 +0000 (UTC) (envelope-from rrs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7DC888FC16; Tue, 18 May 2010 04:08:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4I48wjK034645; Tue, 18 May 2010 04:08:58 GMT (envelope-from rrs@svn.freebsd.org) Received: (from rrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4I48weH034643; Tue, 18 May 2010 04:08:58 GMT (envelope-from rrs@svn.freebsd.org) Message-Id: <201005180408.o4I48weH034643@svn.freebsd.org> From: Randall Stewart Date: Tue, 18 May 2010 04:08:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208250 - head/sys/mips/rmi X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 04:08:58 -0000 Author: rrs Date: Tue May 18 04:08:58 2010 New Revision: 208250 URL: http://svn.freebsd.org/changeset/base/208250 Log: Adds the file I forgot to add... that handles the mpwait.S for RMI Approved by: JC Added: head/sys/mips/rmi/mpwait.S (contents, props changed) Added: head/sys/mips/rmi/mpwait.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/mips/rmi/mpwait.S Tue May 18 04:08:58 2010 (r208250) @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2010 RMI Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include +#include + +#include "assym.s" + + .text + .set noat + .set noreorder + +/* + * On XLR the slave processors and threads will be executing boot + * loader code on startup. We need to make them run our code before + * blowing away boot loader memory. + */ +LEAF(mpwait) + PTR_LA gp, _C_LABEL(_gp) + PTR_LA t1, _C_LABEL(xlr_ap_release) + mfc0 t2, $15, 1 + andi t2, 0x1f + sll t2, t2, 2 + add t1, t2 + +1: lw t0, 0(t1) + bnez t0, 2f + nop /* We should not busy wait in core0 threads */ + nop /* on bootup, this will slow the cpu0 thread */ + nop /* down - TODO - wait with IPI based wakeup */ + nop + nop + nop + nop + nop + j 1b + nop +2: + PTR_LA t1, _C_LABEL(mpentry) + jr t1 + nop +END(mpwait) From owner-svn-src-head@FreeBSD.ORG Tue May 18 05:12:55 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4FC4A106566C; Tue, 18 May 2010 05:12:55 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3E26C8FC0C; Tue, 18 May 2010 05:12:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4I5Ct1Z048758; Tue, 18 May 2010 05:12:55 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4I5CtwH048756; Tue, 18 May 2010 05:12:55 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201005180512.o4I5CtwH048756@svn.freebsd.org> From: Neel Natu Date: Tue, 18 May 2010 05:12:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208253 - head/sys/mips/sibyte X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 05:12:55 -0000 Author: neel Date: Tue May 18 05:12:54 2010 New Revision: 208253 URL: http://svn.freebsd.org/changeset/base/208253 Log: Fix Sibyte SMP kernel breakage caused by r208249. We need to include the header file that provides declaration of the smp_topo_none() function. Modified: head/sys/mips/sibyte/sb_machdep.c Modified: head/sys/mips/sibyte/sb_machdep.c ============================================================================== --- head/sys/mips/sibyte/sb_machdep.c Tue May 18 04:21:50 2010 (r208252) +++ head/sys/mips/sibyte/sb_machdep.c Tue May 18 05:12:54 2010 (r208253) @@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include #ifdef SMP +#include #include #endif @@ -347,6 +348,7 @@ platform_ipi_intrnum(void) struct cpu_group * platform_smp_topo(void) { + return (smp_topo_none()); } From owner-svn-src-head@FreeBSD.ORG Tue May 18 05:18:21 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A1D161065673; Tue, 18 May 2010 05:18:21 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 902418FC1B; Tue, 18 May 2010 05:18:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4I5ILlZ049961; Tue, 18 May 2010 05:18:21 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4I5ILXU049959; Tue, 18 May 2010 05:18:21 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201005180518.o4I5ILXU049959@svn.freebsd.org> From: Rick Macklem Date: Tue, 18 May 2010 05:18:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208254 - head/sys/fs/nfsclient X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 05:18:21 -0000 Author: rmacklem Date: Tue May 18 05:18:21 2010 New Revision: 208254 URL: http://svn.freebsd.org/changeset/base/208254 Log: Allow the experimental NFSv4 client to use cached attributes when a write delegation is held. Also, add a missing mtx_unlock() call for the ACL debugging code. MFC after: 5 days Modified: head/sys/fs/nfsclient/nfs_clsubs.c Modified: head/sys/fs/nfsclient/nfs_clsubs.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clsubs.c Tue May 18 05:12:54 2010 (r208253) +++ head/sys/fs/nfsclient/nfs_clsubs.c Tue May 18 05:18:21 2010 (r208254) @@ -188,11 +188,12 @@ ncl_getattrcache(struct vnode *vp, struc struct nfsnode *np; struct vattr *vap; struct nfsmount *nmp; - int timeo; + int timeo, mustflush; np = VTONFS(vp); vap = &np->n_vattr.na_vattr; nmp = VFSTONFS(vp->v_mount); + mustflush = nfscl_mustflush(vp); /* must be before mtx_lock() */ #ifdef NFS_ACDEBUG mtx_lock(&Giant); /* ncl_printf() */ #endif @@ -228,9 +229,13 @@ ncl_getattrcache(struct vnode *vp, struc (time_second - np->n_attrstamp), timeo); #endif - if ((time_second - np->n_attrstamp) >= timeo) { + if ((time_second - np->n_attrstamp) >= timeo && + mustflush != 0) { newnfsstats.attrcache_misses++; mtx_unlock(&np->n_mtx); +#ifdef NFS_ACDEBUG + mtx_unlock(&Giant); /* ncl_printf() */ +#endif return( ENOENT); } newnfsstats.attrcache_hits++; From owner-svn-src-head@FreeBSD.ORG Tue May 18 08:55:24 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47051106564A; Tue, 18 May 2010 08:55:24 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 33D9F8FC0A; Tue, 18 May 2010 08:55:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4I8tO9o097840; Tue, 18 May 2010 08:55:24 GMT (envelope-from rdivacky@svn.freebsd.org) Received: (from rdivacky@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4I8tOcm097836; Tue, 18 May 2010 08:55:24 GMT (envelope-from rdivacky@svn.freebsd.org) Message-Id: <201005180855.o4I8tOcm097836@svn.freebsd.org> From: Roman Divacky Date: Tue, 18 May 2010 08:55:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208256 - in head/libexec/rtld-elf: . amd64 arm i386 powerpc sparc64 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 08:55:24 -0000 Author: rdivacky Date: Tue May 18 08:55:23 2010 New Revision: 208256 URL: http://svn.freebsd.org/changeset/base/208256 Log: Only use the cache after the early stage of loading. This is because calling mmap() etc. may use GOT which is not set up yet. Use calloc() instead of mmap() in cases where this was the case before (sparc64, powerpc, arm). Submitted by: Dimitry Andric (dimitry andric com) Reviewed by: kan Approved by: ed (mentor) Modified: head/libexec/rtld-elf/amd64/reloc.c head/libexec/rtld-elf/arm/reloc.c head/libexec/rtld-elf/i386/reloc.c head/libexec/rtld-elf/powerpc/reloc.c head/libexec/rtld-elf/rtld.c head/libexec/rtld-elf/sparc64/reloc.c Modified: head/libexec/rtld-elf/amd64/reloc.c ============================================================================== --- head/libexec/rtld-elf/amd64/reloc.c Tue May 18 07:45:27 2010 (r208255) +++ head/libexec/rtld-elf/amd64/reloc.c Tue May 18 08:55:23 2010 (r208256) @@ -118,15 +118,16 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry const Elf_Rela *relalim; const Elf_Rela *rela; SymCache *cache; - int bytes = obj->nchains * sizeof(SymCache); int r = -1; /* * The dynamic loader may be called from a thread, we have * limited amounts of stack available so we cannot use alloca(). */ - cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0); - if (cache == MAP_FAILED) + if (obj != obj_rtld) { + cache = calloc(obj->nchains, sizeof(SymCache)); + /* No need to check for NULL here */ + } else cache = NULL; relalim = (const Elf_Rela *) ((caddr_t) obj->rela + obj->relasize); @@ -322,8 +323,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry } r = 0; done: - if (cache) - munmap(cache, bytes); + if (cache != NULL) + free(cache); return(r); } Modified: head/libexec/rtld-elf/arm/reloc.c ============================================================================== --- head/libexec/rtld-elf/arm/reloc.c Tue May 18 07:45:27 2010 (r208255) +++ head/libexec/rtld-elf/arm/reloc.c Tue May 18 08:55:23 2010 (r208256) @@ -245,7 +245,6 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry const Elf_Rel *rellim; const Elf_Rel *rel; SymCache *cache; - int bytes = obj->nchains * sizeof(SymCache); int r = -1; /* The relocation for the dynamic loader has already been done. */ @@ -255,10 +254,9 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry * The dynamic loader may be called from a thread, we have * limited amounts of stack available so we cannot use alloca(). */ - cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0); - if (cache == MAP_FAILED) - cache = NULL; - + cache = calloc(obj->nchains, sizeof(SymCache)); + /* No need to check for NULL here */ + rellim = (const Elf_Rel *)((caddr_t)obj->rel + obj->relsize); for (rel = obj->rel; rel < rellim; rel++) { if (reloc_nonplt_object(obj, rel, cache) < 0) @@ -266,9 +264,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry } r = 0; done: - if (cache) { - munmap(cache, bytes); - } + if (cache != NULL) + free(cache); return (r); } Modified: head/libexec/rtld-elf/i386/reloc.c ============================================================================== --- head/libexec/rtld-elf/i386/reloc.c Tue May 18 07:45:27 2010 (r208255) +++ head/libexec/rtld-elf/i386/reloc.c Tue May 18 08:55:23 2010 (r208256) @@ -119,15 +119,16 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry const Elf_Rel *rellim; const Elf_Rel *rel; SymCache *cache; - int bytes = obj->nchains * sizeof(SymCache); int r = -1; /* * The dynamic loader may be called from a thread, we have * limited amounts of stack available so we cannot use alloca(). */ - cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0); - if (cache == MAP_FAILED) + if (obj != obj_rtld) { + cache = calloc(obj->nchains, sizeof(SymCache)); + /* No need to check for NULL here */ + } else cache = NULL; rellim = (const Elf_Rel *) ((caddr_t) obj->rel + obj->relsize); @@ -273,8 +274,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry } r = 0; done: - if (cache) - munmap(cache, bytes); + if (cache != NULL) + free(cache); return(r); } Modified: head/libexec/rtld-elf/powerpc/reloc.c ============================================================================== --- head/libexec/rtld-elf/powerpc/reloc.c Tue May 18 07:45:27 2010 (r208255) +++ head/libexec/rtld-elf/powerpc/reloc.c Tue May 18 08:55:23 2010 (r208256) @@ -287,7 +287,6 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry const Elf_Rela *relalim; const Elf_Rela *rela; SymCache *cache; - int bytes = obj->nchains * sizeof(SymCache); int r = -1; /* @@ -295,10 +294,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry * limited amounts of stack available so we cannot use alloca(). */ if (obj != obj_rtld) { - cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, - -1, 0); - if (cache == MAP_FAILED) - cache = NULL; + cache = calloc(obj->nchains, sizeof(SymCache)); + /* No need to check for NULL here */ } else cache = NULL; @@ -314,9 +311,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry } r = 0; done: - if (cache) { - munmap(cache, bytes); - } + if (cache != NULL) + free(cache); return (r); } Modified: head/libexec/rtld-elf/rtld.c ============================================================================== --- head/libexec/rtld-elf/rtld.c Tue May 18 07:45:27 2010 (r208255) +++ head/libexec/rtld-elf/rtld.c Tue May 18 08:55:23 2010 (r208256) @@ -3311,6 +3311,10 @@ allocate_module_tls(int index) } p = malloc(obj->tlssize); + if (p == NULL) { + _rtld_error("Cannot allocate TLS block for index %d", index); + die(); + } memcpy(p, obj->tlsinit, obj->tlsinitsize); memset(p + obj->tlsinitsize, 0, obj->tlssize - obj->tlsinitsize); Modified: head/libexec/rtld-elf/sparc64/reloc.c ============================================================================== --- head/libexec/rtld-elf/sparc64/reloc.c Tue May 18 07:45:27 2010 (r208255) +++ head/libexec/rtld-elf/sparc64/reloc.c Tue May 18 08:55:23 2010 (r208256) @@ -254,7 +254,6 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry const Elf_Rela *relalim; const Elf_Rela *rela; SymCache *cache; - int bytes = obj->nchains * sizeof(SymCache); int r = -1; /* @@ -262,10 +261,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry * limited amounts of stack available so we cannot use alloca(). */ if (obj != obj_rtld) { - cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, - -1, 0); - if (cache == MAP_FAILED) - cache = NULL; + cache = calloc(obj->nchains, sizeof(SymCache)); + /* No need to check for NULL here */ } else cache = NULL; @@ -276,8 +273,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry } r = 0; done: - if (cache) - munmap(cache, bytes); + if (cache != NULL) + free(cache); return (r); } From owner-svn-src-head@FreeBSD.ORG Tue May 18 14:11:39 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79DCE106566C; Tue, 18 May 2010 14:11:39 +0000 (UTC) (envelope-from kientzle@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 67F818FC24; Tue, 18 May 2010 14:11:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4IEBdTG073798; Tue, 18 May 2010 14:11:39 GMT (envelope-from kientzle@svn.freebsd.org) Received: (from kientzle@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4IEBdWS073795; Tue, 18 May 2010 14:11:39 GMT (envelope-from kientzle@svn.freebsd.org) Message-Id: <201005181411.o4IEBdWS073795@svn.freebsd.org> From: Tim Kientzle Date: Tue, 18 May 2010 14:11:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208263 - head/lib/libarchive X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 14:11:39 -0000 Author: kientzle Date: Tue May 18 14:11:38 2010 New Revision: 208263 URL: http://svn.freebsd.org/changeset/base/208263 Log: Retry reads that fail with EINTR. This fixes a problem with bsdtar failing on SIGINT. Modified: head/lib/libarchive/archive_read_open_fd.c head/lib/libarchive/archive_read_open_filename.c Modified: head/lib/libarchive/archive_read_open_fd.c ============================================================================== --- head/lib/libarchive/archive_read_open_fd.c Tue May 18 10:32:20 2010 (r208262) +++ head/lib/libarchive/archive_read_open_fd.c Tue May 18 14:11:38 2010 (r208263) @@ -116,11 +116,15 @@ file_read(struct archive *a, void *clien ssize_t bytes_read; *buff = mine->buffer; - bytes_read = read(mine->fd, mine->buffer, mine->block_size); - if (bytes_read < 0) { - archive_set_error(a, errno, "Error reading fd %d", mine->fd); + for (;;) { + bytes_read = read(mine->fd, mine->buffer, mine->block_size); + if (bytes_read < 0) { + if (errno == EINTR) + continue; + archive_set_error(a, errno, "Error reading fd %d", mine->fd); + } + return (bytes_read); } - return (bytes_read); } #if ARCHIVE_API_VERSION < 2 Modified: head/lib/libarchive/archive_read_open_filename.c ============================================================================== --- head/lib/libarchive/archive_read_open_filename.c Tue May 18 10:32:20 2010 (r208262) +++ head/lib/libarchive/archive_read_open_filename.c Tue May 18 14:11:38 2010 (r208263) @@ -160,15 +160,19 @@ file_read(struct archive *a, void *clien ssize_t bytes_read; *buff = mine->buffer; - bytes_read = read(mine->fd, mine->buffer, mine->block_size); - if (bytes_read < 0) { - if (mine->filename[0] == '\0') - archive_set_error(a, errno, "Error reading stdin"); - else - archive_set_error(a, errno, "Error reading '%s'", - mine->filename); + for (;;) { + bytes_read = read(mine->fd, mine->buffer, mine->block_size); + if (bytes_read < 0) { + if (errno == EINTR) + continue; + else if (mine->filename[0] == '\0') + archive_set_error(a, errno, "Error reading stdin"); + else + archive_set_error(a, errno, "Error reading '%s'", + mine->filename); + } + return (bytes_read); } - return (bytes_read); } #if ARCHIVE_API_VERSION < 2 From owner-svn-src-head@FreeBSD.ORG Tue May 18 16:40:29 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD5C8106566C; Tue, 18 May 2010 16:40:29 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A1DD38FC17; Tue, 18 May 2010 16:40:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4IGeTVY006766; Tue, 18 May 2010 16:40:29 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4IGeTrL006763; Tue, 18 May 2010 16:40:29 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005181640.o4IGeTrL006763@svn.freebsd.org> From: Alan Cox Date: Tue, 18 May 2010 16:40:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208264 - in head/sys: kern vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 16:40:29 -0000 Author: alc Date: Tue May 18 16:40:29 2010 New Revision: 208264 URL: http://svn.freebsd.org/changeset/base/208264 Log: The page queues lock is no longer required by vm_page_set_invalid(), so eliminate it. Assert that the object containing the page is locked in vm_page_test_dirty(). Perform some style clean up while I'm here. Reviewed by: kib Modified: head/sys/kern/vfs_bio.c head/sys/vm/vm_page.c Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Tue May 18 14:11:38 2010 (r208263) +++ head/sys/kern/vfs_bio.c Tue May 18 16:40:29 2010 (r208264) @@ -1353,9 +1353,7 @@ brelse(struct buf *bp) (PAGE_SIZE - poffset) : resid; KASSERT(presid >= 0, ("brelse: extra page")); - vm_page_lock_queues(); vm_page_set_invalid(m, poffset, presid); - vm_page_unlock_queues(); if (had_bogus) printf("avoided corruption bug in bogus_page/brelse code\n"); } Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Tue May 18 14:11:38 2010 (r208263) +++ head/sys/vm/vm_page.c Tue May 18 16:40:29 2010 (r208264) @@ -2160,10 +2160,13 @@ vm_page_set_invalid(vm_page_t m, int bas int bits; VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("vm_page_set_invalid: page %p is busy", m)); bits = vm_page_bits(base, size); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); if (m->valid == VM_PAGE_BITS_ALL && bits != 0) pmap_remove_all(m); + KASSERT(!pmap_page_is_mapped(m), + ("vm_page_set_invalid: page %p is mapped", m)); m->valid &= ~bits; m->dirty &= ~bits; m->object->generation++; @@ -2241,9 +2244,10 @@ vm_page_is_valid(vm_page_t m, int base, void vm_page_test_dirty(vm_page_t m) { - if ((m->dirty != VM_PAGE_BITS_ALL) && pmap_is_modified(m)) { + + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if (m->dirty != VM_PAGE_BITS_ALL && pmap_is_modified(m)) vm_page_dirty(m); - } } int so_zerocp_fullpage = 0; From owner-svn-src-head@FreeBSD.ORG Tue May 18 17:01:07 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 75F9F106566B; Tue, 18 May 2010 17:01:07 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4BF738FC0C; Tue, 18 May 2010 17:01:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4IH17HH011430; Tue, 18 May 2010 17:01:07 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4IH17Ce011428; Tue, 18 May 2010 17:01:07 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201005181701.o4IH17Ce011428@svn.freebsd.org> From: Rui Paulo Date: Tue, 18 May 2010 17:01:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208265 - head/sys/mips/rmi/dev/xlr X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 17:01:07 -0000 Author: rpaulo Date: Tue May 18 17:01:07 2010 New Revision: 208265 URL: http://svn.freebsd.org/changeset/base/208265 Log: Add a device description. Modified: head/sys/mips/rmi/dev/xlr/rge.c Modified: head/sys/mips/rmi/dev/xlr/rge.c ============================================================================== --- head/sys/mips/rmi/dev/xlr/rge.c Tue May 18 16:40:29 2010 (r208264) +++ head/sys/mips/rmi/dev/xlr/rge.c Tue May 18 17:01:07 2010 (r208265) @@ -1707,6 +1707,8 @@ static int rge_probe(dev) device_t dev; { + device_set_desc(dev, "RMI Gigabit Ethernet"); + /* Always return 0 */ return 0; } From owner-svn-src-head@FreeBSD.ORG Tue May 18 17:14:25 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B8E7A106564A; Tue, 18 May 2010 17:14:25 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from mail-pv0-f182.google.com (mail-pv0-f182.google.com [74.125.83.182]) by mx1.freebsd.org (Postfix) with ESMTP id 63F208FC1C; Tue, 18 May 2010 17:14:25 +0000 (UTC) Received: by pvg4 with SMTP id 4so6272pvg.13 for ; Tue, 18 May 2010 10:14:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:from:date:to:cc :subject:message-id:reply-to:references:mime-version:content-type :content-disposition:in-reply-to:user-agent; bh=3Bzl2nxt3xX5+p3fd1qRfoXsoHq3yyxPE3gduKi69fo=; b=EIDhs14WxT/ogBBJBKLfDzvFs3GFWksdPwfODtg4UrCtm47Oqz3E4+7Dsgt2Ketc9X cMpcra1dlx1Rc9AIfSC4CS24frirpi/P3UWjCopw+ptcf05T3fVEhJjBZM8zBT9OtsJH OXCsDdKY05iecTenQQ09e7omCbtKyM/KyJ0As= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:date:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=Tiq9ls/COe6irq2h4+oSKZtyUebJfhgZJyLpgyxiAnbQurbZV3SeEYXI/2ZvFTEmBV xDHtye5PemE8GsjyXeCNt35DC6NyhHmj1+sbxmMDTUoTMdHQRFDDmkbnk3oewdFdo4fM OUtoDHWta2FYM35+n9c5sdMnGGTh76wR8q5wI= Received: by 10.141.187.15 with SMTP id o15mr5243722rvp.174.1274202864550; Tue, 18 May 2010 10:14:24 -0700 (PDT) Received: from pyunyh@gmail.com ([174.35.1.224]) by mx.google.com with ESMTPS id b12sm5325824rvn.22.2010.05.18.10.14.22 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 18 May 2010 10:14:22 -0700 (PDT) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Tue, 18 May 2010 10:13:15 -0700 From: Pyun YongHyeon Date: Tue, 18 May 2010 10:13:15 -0700 To: "Bjoern A. Zeeb" Message-ID: <20100518171315.GA5968@michelle.cdnetworks.com> References: <201005101714.o4AHEFuu015079@svn.freebsd.org> <20100518032628.S23815@maildrop.int.zabbadoz.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100518032628.S23815@maildrop.int.zabbadoz.net> User-Agent: Mutt/1.4.2.3i Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Pyun YongHyeon Subject: Re: svn commit: r207851 - head/sys/dev/sge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: pyunyh@gmail.com List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 17:14:25 -0000 On Tue, May 18, 2010 at 03:27:33AM +0000, Bjoern A. Zeeb wrote: > On Mon, 10 May 2010, Pyun YongHyeon wrote: > > >Author: yongari > >Date: Mon May 10 17:14:14 2010 > >New Revision: 207851 > >URL: http://svn.freebsd.org/changeset/base/207851 > > > >Log: > > Implement TSO and TSO over VLAN. Increase number of allowed > > fragmentation of mbuf chain to 32 from 16 because TSO can send 64KB > > sized packet which in turn requires long list of mbuf chain. Due to > > lack of documentation, I'm not sure whether driver have to pull up > > ethernet/IP/TCP header with options to make controller work but > > driver have to parse TCP header to update pseudo TCP checksum > > anyway. The controller expects pseudo TCP checksum computed by > > upper stack and the checksum should follow the MS NDIS > > specification to make TSO work. > > > > Tested by: xclin cs dot nctu dot edu dot tw > > > This brings in INET as a dependency for the driver and fails on my > nooptions INET > nooptions INET6 > kernels (in_pseudo()). > AFAIK sge(4) is not the only driver that has INET dependency. I think we need IPv6 offloading framework(checksum offloading, TSO4 and TSO6) before removing INET dependency in various drivers. Most recent ethernet controllers support IPv6 offloading and FreeBSD still lacks these nice features. > /bz > > -- > Bjoern A. Zeeb (from 21) Micky Rosa: > But as we've all said, this game is about the past and the future, > and tonight we forget about the past. We just focus on the future. From owner-svn-src-head@FreeBSD.ORG Tue May 18 18:10:56 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DDFD1065675; Tue, 18 May 2010 18:10:56 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 22CEC8FC1C; Tue, 18 May 2010 18:10:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o4II7MaB025503; Tue, 18 May 2010 12:07:22 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Tue, 18 May 2010 12:07:48 -0600 (MDT) Message-Id: <20100518.120748.450985660133983957.imp@bsdimp.com> To: uqs@FreeBSD.org From: "M. Warner Losh" In-Reply-To: <201005141426.o4EEQu7B081269@svn.freebsd.org> References: <201005141426.o4EEQu7B081269@svn.freebsd.org> X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208075 - in head/usr.sbin/apmd: . contrib X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 18:10:56 -0000 : Modified: head/usr.sbin/apmd/apmd.c : - execl(_PATH_BSHELL, "sh", "-c", p->line, (char *)NULL); : + execl(_PATH_BSHELL, "sh", "-c", p->line, NULL); This looks like a regression to me. Since execl is varadic, you do need this cast... Warner From owner-svn-src-head@FreeBSD.ORG Tue May 18 18:14:13 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2DA801065673; Tue, 18 May 2010 18:14:13 +0000 (UTC) (envelope-from bcr@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1CBB58FC16; Tue, 18 May 2010 18:14:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4IIEC09028433; Tue, 18 May 2010 18:14:12 GMT (envelope-from bcr@svn.freebsd.org) Received: (from bcr@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4IIEC0k028431; Tue, 18 May 2010 18:14:12 GMT (envelope-from bcr@svn.freebsd.org) Message-Id: <201005181814.o4IIEC0k028431@svn.freebsd.org> From: Benedict Reuschling Date: Tue, 18 May 2010 18:14:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208273 - head/usr.sbin/ntp/doc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 18:14:13 -0000 Author: bcr (doc committer) Date: Tue May 18 18:14:12 2010 New Revision: 208273 URL: http://svn.freebsd.org/changeset/base/208273 Log: Add a sentence to the man page explaining that the -d option can only be used when ntpd is compiled with DEBUG support. PR: docs/138206 Submitted by: Oliver Pinter (oliver dot pntr at gmail dot com) MFC after: 5 days Approved by: roberto Modified: head/usr.sbin/ntp/doc/ntpd.8 Modified: head/usr.sbin/ntp/doc/ntpd.8 ============================================================================== --- head/usr.sbin/ntp/doc/ntpd.8 Tue May 18 17:43:53 2010 (r208272) +++ head/usr.sbin/ntp/doc/ntpd.8 Tue May 18 18:14:12 2010 (r208273) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 17, 2006 +.Dd May 18, 2010 .Dt NTPD 8 .Os .Sh NAME @@ -108,6 +108,9 @@ Specify the name and path of the configu Specify debugging mode. This option may occur more than once, with each occurrence indicating greater detail of display. +You need to compile +.Nm +with DEBUG in order to use this. .It Fl D Ar level Specify debugging level directly. .It Fl f Ar driftfile From owner-svn-src-head@FreeBSD.ORG Tue May 18 18:28:17 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 963821065672; Tue, 18 May 2010 18:28:17 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 853218FC18; Tue, 18 May 2010 18:28:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4IISHgn031758; Tue, 18 May 2010 18:28:17 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4IISHTn031756; Tue, 18 May 2010 18:28:17 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005181828.o4IISHTn031756@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 18 May 2010 18:28:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208276 - head/sys/dev/fb X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 18:28:17 -0000 Author: jkim Date: Tue May 18 18:28:17 2010 New Revision: 208276 URL: http://svn.freebsd.org/changeset/base/208276 Log: Remove unnecessary pointer increment. A wrong pointer may be passed to free(9) and it can cause kernel panic when there are multiple graphics controllers in the system. Tested by: Brandon Gooch (jamesbrandongooch at gmail dot com) MFC after: 3 days Modified: head/sys/dev/fb/vesa.c Modified: head/sys/dev/fb/vesa.c ============================================================================== --- head/sys/dev/fb/vesa.c Tue May 18 18:20:11 2010 (r208275) +++ head/sys/dev/fb/vesa.c Tue May 18 18:28:17 2010 (r208276) @@ -240,10 +240,10 @@ vesa_bios_post(void) /* Find the matching PCI video controller. */ dc = devclass_find("vgapci"); if (dc != NULL && devclass_get_devices(dc, &devs, &count) == 0) { - for (dev = NULL, i = 0; dev == NULL && i < count; devs++, i++) - if (device_get_flags(*devs) != 0 && - x86bios_match_device(0xc0000, *devs)) { - dev = *devs; + for (i = 0; i < count; i++) + if (device_get_flags(devs[i]) != 0 && + x86bios_match_device(0xc0000, devs[i])) { + dev = devs[i]; is_pci = 1; break; } From owner-svn-src-head@FreeBSD.ORG Tue May 18 21:23:51 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E917D106566C; Tue, 18 May 2010 21:23:51 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D83728FC12; Tue, 18 May 2010 21:23:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4ILNpX1071617; Tue, 18 May 2010 21:23:51 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4ILNpdf071615; Tue, 18 May 2010 21:23:51 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005182123.o4ILNpdf071615@svn.freebsd.org> From: Rafal Jaworowski Date: Tue, 18 May 2010 21:23:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208278 - head/sys/powerpc/include X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 21:23:52 -0000 Author: raj Date: Tue May 18 21:23:51 2010 New Revision: 208278 URL: http://svn.freebsd.org/changeset/base/208278 Log: Provide missing members for Book-E pmap (and fix build). Modified: head/sys/powerpc/include/pmap.h Modified: head/sys/powerpc/include/pmap.h ============================================================================== --- head/sys/powerpc/include/pmap.h Tue May 18 21:01:42 2010 (r208277) +++ head/sys/powerpc/include/pmap.h Tue May 18 21:23:51 2010 (r208278) @@ -125,6 +125,8 @@ struct pmap { struct mtx pm_mtx; /* pmap mutex */ tlbtid_t pm_tid[MAXCPU]; /* TID to identify this pmap entries in TLB */ u_int pm_active; /* active on cpus */ + uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ + u_int pm_retries; int pm_refs; /* ref count */ struct pmap_statistics pm_stats; /* pmap statistics */ From owner-svn-src-head@FreeBSD.ORG Tue May 18 22:30:55 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D41DA106566B; Tue, 18 May 2010 22:30:55 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C390A8FC15; Tue, 18 May 2010 22:30:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4IMUtbm086581; Tue, 18 May 2010 22:30:55 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4IMUtjf086579; Tue, 18 May 2010 22:30:55 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005182230.o4IMUtjf086579@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 18 May 2010 22:30:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208279 - head/sys/dev/fb X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 22:30:55 -0000 Author: jkim Date: Tue May 18 22:30:55 2010 New Revision: 208279 URL: http://svn.freebsd.org/changeset/base/208279 Log: Restore the previous VESA mode after BIOS POST, just in case. Modified: head/sys/dev/fb/vesa.c Modified: head/sys/dev/fb/vesa.c ============================================================================== --- head/sys/dev/fb/vesa.c Tue May 18 21:23:51 2010 (r208278) +++ head/sys/dev/fb/vesa.c Tue May 18 22:30:55 2010 (r208279) @@ -1443,6 +1443,7 @@ vesa_load_state(video_adapter_t *adp, vo /* Try BIOS POST to restore a sane state. */ (void)vesa_bios_post(); (void)int10_set_mode(adp->va_initial_bios_mode); + (void)vesa_set_mode(adp, adp->va_mode); return (vesa_bios_save_restore(STATE_LOAD, ((adp_state_t *)p)->regs, vesa_state_buf_size)); From owner-svn-src-head@FreeBSD.ORG Tue May 18 22:55:08 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 727F61065670; Tue, 18 May 2010 22:55:08 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.cksoft.de (mail.cksoft.de [IPv6:2001:4068:10::3]) by mx1.freebsd.org (Postfix) with ESMTP id 05AA08FC12; Tue, 18 May 2010 22:55:08 +0000 (UTC) Received: from localhost (amavis.fra.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id 0508241C796; Wed, 19 May 2010 00:55:07 +0200 (CEST) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([192.168.74.103]) by localhost (amavis.fra.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id ZJX+saodK586; Wed, 19 May 2010 00:55:06 +0200 (CEST) Received: by mail.cksoft.de (Postfix, from userid 66) id EFF2C41C795; Wed, 19 May 2010 00:55:05 +0200 (CEST) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id C87D24448EC; Tue, 18 May 2010 22:53:27 +0000 (UTC) Date: Tue, 18 May 2010 22:53:27 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Pyun YongHyeon In-Reply-To: <20100518171315.GA5968@michelle.cdnetworks.com> Message-ID: <20100518224555.G23815@maildrop.int.zabbadoz.net> References: <201005101714.o4AHEFuu015079@svn.freebsd.org> <20100518032628.S23815@maildrop.int.zabbadoz.net> <20100518171315.GA5968@michelle.cdnetworks.com> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Pyun YongHyeon Subject: Re: svn commit: r207851 - head/sys/dev/sge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 22:55:08 -0000 On Tue, 18 May 2010, Pyun YongHyeon wrote: > On Tue, May 18, 2010 at 03:27:33AM +0000, Bjoern A. Zeeb wrote: >> On Mon, 10 May 2010, Pyun YongHyeon wrote: >> >>> Author: yongari >>> Date: Mon May 10 17:14:14 2010 >>> New Revision: 207851 >>> URL: http://svn.freebsd.org/changeset/base/207851 >>> >>> Log: >>> Implement TSO and TSO over VLAN. Increase number of allowed >>> fragmentation of mbuf chain to 32 from 16 because TSO can send 64KB >>> sized packet which in turn requires long list of mbuf chain. Due to >>> lack of documentation, I'm not sure whether driver have to pull up >>> ethernet/IP/TCP header with options to make controller work but >>> driver have to parse TCP header to update pseudo TCP checksum >>> anyway. The controller expects pseudo TCP checksum computed by >>> upper stack and the checksum should follow the MS NDIS >>> specification to make TSO work. >>> >>> Tested by: xclin cs dot nctu dot edu dot tw > >> >> This brings in INET as a dependency for the driver and fails on my >> nooptions INET >> nooptions INET6 >> kernels (in_pseudo()). >> > > AFAIK sge(4) is not the only driver that has INET dependency. I > think we need IPv6 offloading framework(checksum offloading, TSO4 There is no checksum on IPv6. > and TSO6) before removing INET dependency in various drivers. > Most recent ethernet controllers support IPv6 offloading and > FreeBSD still lacks these nice features. This is true, but we should (still) fix this and work on a better solution. You may remember that I tried to get this discussion started twice during the last 12 months. First time after I added the inet depency in sys/conf/files for all the other drivers that have the same problem(s). I will be very happy to chat with you and np@ and maybe tuexen@ for SCTP and Drew and Jack again to get this all sorted out. /bz -- Bjoern A. Zeeb (from 21) Micky Rosa: But as we've all said, this game is about the past and the future, and tonight we forget about the past. We just focus on the future. From owner-svn-src-head@FreeBSD.ORG Tue May 18 23:20:45 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40AEA1065670; Tue, 18 May 2010 23:20:45 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from mail-pz0-f181.google.com (mail-pz0-f181.google.com [209.85.222.181]) by mx1.freebsd.org (Postfix) with ESMTP id E62D68FC18; Tue, 18 May 2010 23:20:44 +0000 (UTC) Received: by pzk11 with SMTP id 11so4360869pzk.28 for ; Tue, 18 May 2010 16:20:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:from:date:to:cc :subject:message-id:reply-to:references:mime-version:content-type :content-disposition:in-reply-to:user-agent; bh=Nlena592uBNoEf6l6RE2XZNOGV59xHMiJHAq9gxn3Mo=; b=UlHeYxbWjwklZ3zo+b93GJgeluEhyDU2FD0k/DMz+NHWO62fdYwOnh5HRVtULdow1+ TTotmAb0E0fWBRqoNML+WTNJ1OgGaRJiBvj/Dr0aOIwAYf7xgp/MMo0DB9I3FTBC6vaH GAjoWCqE9MyzBCnPt+UcXmBD1hMFRpkv1F40o= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:date:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=hvbZYyECmUflbgrl2l72bC3CnRI7iNjDUepxdF+kLcFKwYRZUM/tp4AR+vte/rTOcs QU9N3tEJjIJQnWmVsQj83gtVlYn+be954zYh63yVT6JEQLV0xYQpXSt6BBFafGqAOPwg k4RGpJXug+aDbvSMhX0Vh7A4nOV74hWngIpGY= Received: by 10.141.3.14 with SMTP id f14mr5649895rvi.98.1274224844339; Tue, 18 May 2010 16:20:44 -0700 (PDT) Received: from pyunyh@gmail.com ([174.35.1.224]) by mx.google.com with ESMTPS id h11sm5584960rvm.9.2010.05.18.16.20.43 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 18 May 2010 16:20:43 -0700 (PDT) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Tue, 18 May 2010 16:19:36 -0700 From: Pyun YongHyeon Date: Tue, 18 May 2010 16:19:36 -0700 To: "Bjoern A. Zeeb" Message-ID: <20100518231936.GH5968@michelle.cdnetworks.com> References: <201005101714.o4AHEFuu015079@svn.freebsd.org> <20100518032628.S23815@maildrop.int.zabbadoz.net> <20100518171315.GA5968@michelle.cdnetworks.com> <20100518224555.G23815@maildrop.int.zabbadoz.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100518224555.G23815@maildrop.int.zabbadoz.net> User-Agent: Mutt/1.4.2.3i Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Pyun YongHyeon Subject: Re: svn commit: r207851 - head/sys/dev/sge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: pyunyh@gmail.com List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 23:20:45 -0000 On Tue, May 18, 2010 at 10:53:27PM +0000, Bjoern A. Zeeb wrote: > On Tue, 18 May 2010, Pyun YongHyeon wrote: > > >On Tue, May 18, 2010 at 03:27:33AM +0000, Bjoern A. Zeeb wrote: > >>On Mon, 10 May 2010, Pyun YongHyeon wrote: > >> > >>>Author: yongari > >>>Date: Mon May 10 17:14:14 2010 > >>>New Revision: 207851 > >>>URL: http://svn.freebsd.org/changeset/base/207851 > >>> > >>>Log: > >>>Implement TSO and TSO over VLAN. Increase number of allowed > >>>fragmentation of mbuf chain to 32 from 16 because TSO can send 64KB > >>>sized packet which in turn requires long list of mbuf chain. Due to > >>>lack of documentation, I'm not sure whether driver have to pull up > >>>ethernet/IP/TCP header with options to make controller work but > >>>driver have to parse TCP header to update pseudo TCP checksum > >>>anyway. The controller expects pseudo TCP checksum computed by > >>>upper stack and the checksum should follow the MS NDIS > >>>specification to make TSO work. > >>> > >>>Tested by: xclin cs dot nctu dot edu dot tw > > >> > >>This brings in INET as a dependency for the driver and fails on my > >> nooptions INET > >> nooptions INET6 > >>kernels (in_pseudo()). > >> > > > >AFAIK sge(4) is not the only driver that has INET dependency. I > >think we need IPv6 offloading framework(checksum offloading, TSO4 > > There is no checksum on IPv6. > Yes, but controllers that computes only partial checksum for received frames require parsing IPv4/IPv6 header to support checksum offloading. If we have good framework we can avoid duplicated code as well as INET/INET6 dependency. > >and TSO6) before removing INET dependency in various drivers. > >Most recent ethernet controllers support IPv6 offloading and > >FreeBSD still lacks these nice features. > > This is true, but we should (still) fix this and work on a better > solution. You may remember that I tried to get this discussion > started twice during the last 12 months. First time after I added > the inet depency in sys/conf/files for all the other drivers that > have the same problem(s). > > I will be very happy to chat with you and np@ and maybe tuexen@ for > SCTP and Drew and Jack again to get this all sorted out. > I'm also happy to go that direction. But it wouldn't be for 8.1-RELEASE, right? > /bz > > -- > Bjoern A. Zeeb (from 21) Micky Rosa: > But as we've all said, this game is about the past and the future, > and tonight we forget about the past. We just focus on the future. From owner-svn-src-head@FreeBSD.ORG Tue May 18 23:30:08 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DC7691065673; Tue, 18 May 2010 23:30:07 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.cksoft.de (mail.cksoft.de [IPv6:2001:4068:10::3]) by mx1.freebsd.org (Postfix) with ESMTP id 8B1638FC0C; Tue, 18 May 2010 23:30:07 +0000 (UTC) Received: from localhost (amavis.fra.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id E5A6541C7A3; Wed, 19 May 2010 01:30:06 +0200 (CEST) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([192.168.74.103]) by localhost (amavis.fra.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id 3gkwq2RUz3Xv; Wed, 19 May 2010 01:30:05 +0200 (CEST) Received: by mail.cksoft.de (Postfix, from userid 66) id BFC3341C798; Wed, 19 May 2010 01:30:05 +0200 (CEST) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id 1E7E54448EC; Tue, 18 May 2010 23:28:03 +0000 (UTC) Date: Tue, 18 May 2010 23:28:03 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Pyun YongHyeon In-Reply-To: <20100518231936.GH5968@michelle.cdnetworks.com> Message-ID: <20100518232729.N23815@maildrop.int.zabbadoz.net> References: <201005101714.o4AHEFuu015079@svn.freebsd.org> <20100518032628.S23815@maildrop.int.zabbadoz.net> <20100518171315.GA5968@michelle.cdnetworks.com> <20100518224555.G23815@maildrop.int.zabbadoz.net> <20100518231936.GH5968@michelle.cdnetworks.com> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Pyun YongHyeon Subject: Re: svn commit: r207851 - head/sys/dev/sge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2010 23:30:08 -0000 On Tue, 18 May 2010, Pyun YongHyeon wrote: > On Tue, May 18, 2010 at 10:53:27PM +0000, Bjoern A. Zeeb wrote: >> On Tue, 18 May 2010, Pyun YongHyeon wrote: >> >>> On Tue, May 18, 2010 at 03:27:33AM +0000, Bjoern A. Zeeb wrote: >>>> On Mon, 10 May 2010, Pyun YongHyeon wrote: >>>> >>>>> Author: yongari >>>>> Date: Mon May 10 17:14:14 2010 >>>>> New Revision: 207851 >>>>> URL: http://svn.freebsd.org/changeset/base/207851 >>>>> >>>>> Log: >>>>> Implement TSO and TSO over VLAN. Increase number of allowed >>>>> fragmentation of mbuf chain to 32 from 16 because TSO can send 64KB >>>>> sized packet which in turn requires long list of mbuf chain. Due to >>>>> lack of documentation, I'm not sure whether driver have to pull up >>>>> ethernet/IP/TCP header with options to make controller work but >>>>> driver have to parse TCP header to update pseudo TCP checksum >>>>> anyway. The controller expects pseudo TCP checksum computed by >>>>> upper stack and the checksum should follow the MS NDIS >>>>> specification to make TSO work. >>>>> >>>>> Tested by: xclin cs dot nctu dot edu dot tw > >>>> >>>> This brings in INET as a dependency for the driver and fails on my >>>> nooptions INET >>>> nooptions INET6 >>>> kernels (in_pseudo()). >>>> >>> >>> AFAIK sge(4) is not the only driver that has INET dependency. I >>> think we need IPv6 offloading framework(checksum offloading, TSO4 >> >> There is no checksum on IPv6. >> > > Yes, but controllers that computes only partial checksum for > received frames require parsing IPv4/IPv6 header to support > checksum offloading. If we have good framework we can avoid > duplicated code as well as INET/INET6 dependency. > >>> and TSO6) before removing INET dependency in various drivers. >>> Most recent ethernet controllers support IPv6 offloading and >>> FreeBSD still lacks these nice features. >> >> This is true, but we should (still) fix this and work on a better >> solution. You may remember that I tried to get this discussion >> started twice during the last 12 months. First time after I added >> the inet depency in sys/conf/files for all the other drivers that >> have the same problem(s). >> >> I will be very happy to chat with you and np@ and maybe tuexen@ for >> SCTP and Drew and Jack again to get this all sorted out. >> > > I'm also happy to go that direction. Great! > But it wouldn't be for 8.1-RELEASE, right? Right. -- Bjoern A. Zeeb (from 21) Micky Rosa: But as we've all said, this game is about the past and the future, and tonight we forget about the past. We just focus on the future. From owner-svn-src-head@FreeBSD.ORG Wed May 19 00:03:48 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DED511065673; Wed, 19 May 2010 00:03:48 +0000 (UTC) (envelope-from jfv@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CE40D8FC0C; Wed, 19 May 2010 00:03:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J03mPl007374; Wed, 19 May 2010 00:03:48 GMT (envelope-from jfv@svn.freebsd.org) Received: (from jfv@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J03mg8007371; Wed, 19 May 2010 00:03:48 GMT (envelope-from jfv@svn.freebsd.org) Message-Id: <201005190003.o4J03mg8007371@svn.freebsd.org> From: Jack F Vogel Date: Wed, 19 May 2010 00:03:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208282 - head/sys/dev/ixgbe X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 00:03:49 -0000 Author: jfv Date: Wed May 19 00:03:48 2010 New Revision: 208282 URL: http://svn.freebsd.org/changeset/base/208282 Log: A few changes: When not defining header split do not allocate mbufs, this can be a BIG savings in the mbuf memory pool. Also keep seperate dma maps for the header and payload pieces when doing header split. The basis of this code was a patch done a while ago by yongari, thank you :) A number of white space changes. MFC: in a few days Modified: head/sys/dev/ixgbe/ixgbe.c head/sys/dev/ixgbe/ixgbe.h Modified: head/sys/dev/ixgbe/ixgbe.c ============================================================================== --- head/sys/dev/ixgbe/ixgbe.c Tue May 18 23:20:42 2010 (r208281) +++ head/sys/dev/ixgbe/ixgbe.c Wed May 19 00:03:48 2010 (r208282) @@ -46,7 +46,7 @@ int ixgbe_display_debug_stat /********************************************************************* * Driver version *********************************************************************/ -char ixgbe_driver_version[] = "2.1.8"; +char ixgbe_driver_version[] = "2.2.0"; /********************************************************************* * PCI Device ID Table @@ -256,11 +256,11 @@ TUNABLE_INT("hw.ixgbe.enable_msix", &ixg /* * Header split has seemed to be beneficial in - * all circumstances tested, so its on by default + * most circumstances tested, so its on by default * however this variable will allow it to be disabled * for some debug purposes. */ -static bool ixgbe_header_split = TRUE; +static bool ixgbe_header_split = FALSE; TUNABLE_INT("hw.ixgbe.hdr_split", &ixgbe_header_split); /* @@ -406,39 +406,39 @@ ixgbe_attach(device_t dev) /* Keep track of optics */ pci_device_id = pci_get_device(dev); switch (pci_device_id) { - case IXGBE_DEV_ID_82598_CX4_DUAL_PORT : - case IXGBE_DEV_ID_82598EB_CX4 : + case IXGBE_DEV_ID_82598_CX4_DUAL_PORT: + case IXGBE_DEV_ID_82598EB_CX4: adapter->optics = IFM_10G_CX4; break; - case IXGBE_DEV_ID_82598 : - case IXGBE_DEV_ID_82598AF_DUAL_PORT : - case IXGBE_DEV_ID_82598AF_SINGLE_PORT : - case IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM : - case IXGBE_DEV_ID_82598EB_SFP_LOM : - case IXGBE_DEV_ID_82598AT : + case IXGBE_DEV_ID_82598: + case IXGBE_DEV_ID_82598AF_DUAL_PORT: + case IXGBE_DEV_ID_82598AF_SINGLE_PORT: + case IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM: + case IXGBE_DEV_ID_82598EB_SFP_LOM: + case IXGBE_DEV_ID_82598AT: adapter->optics = IFM_10G_SR; break; - case IXGBE_DEV_ID_82598AT2 : + case IXGBE_DEV_ID_82598AT2: adapter->optics = IFM_10G_T; break; - case IXGBE_DEV_ID_82598EB_XF_LR : + case IXGBE_DEV_ID_82598EB_XF_LR: adapter->optics = IFM_10G_LR; break; - case IXGBE_DEV_ID_82598_DA_DUAL_PORT : - adapter->optics = IFM_10G_TWINAX; - break; - case IXGBE_DEV_ID_82599_SFP : + case IXGBE_DEV_ID_82599_SFP: adapter->optics = IFM_10G_SR; ixgbe_num_segs = IXGBE_82599_SCATTER; break; - case IXGBE_DEV_ID_82599_KX4 : + case IXGBE_DEV_ID_82598_DA_DUAL_PORT : + adapter->optics = IFM_10G_TWINAX; + break; + case IXGBE_DEV_ID_82599_KX4: case IXGBE_DEV_ID_82599_KX4_MEZZ: - case IXGBE_DEV_ID_82599_CX4 : + case IXGBE_DEV_ID_82599_CX4: adapter->optics = IFM_10G_CX4; ixgbe_num_segs = IXGBE_82599_SCATTER; break; - case IXGBE_DEV_ID_82599_XAUI_LOM : - case IXGBE_DEV_ID_82599_COMBO_BACKPLANE : + case IXGBE_DEV_ID_82599_XAUI_LOM: + case IXGBE_DEV_ID_82599_COMBO_BACKPLANE: ixgbe_num_segs = IXGBE_82599_SCATTER; break; case IXGBE_DEV_ID_82599_T3_LOM: @@ -1134,11 +1134,19 @@ ixgbe_init_locked(struct adapter *adapte callout_reset(&adapter->timer, hz, ixgbe_local_timer, adapter); /* Set up MSI/X routing */ - if (ixgbe_enable_msix) + if (ixgbe_enable_msix) { ixgbe_configure_ivars(adapter); - else { /* Simple settings for Legacy/MSI */ + /* Set up auto-mask */ + if (hw->mac.type == ixgbe_mac_82598EB) + IXGBE_WRITE_REG(hw, IXGBE_EIAM, IXGBE_EICS_RTX_QUEUE); + else { + IXGBE_WRITE_REG(hw, IXGBE_EIAM_EX(0), 0xFFFFFFFF); + IXGBE_WRITE_REG(hw, IXGBE_EIAM_EX(1), 0xFFFFFFFF); + } + } else { /* Simple settings for Legacy/MSI */ ixgbe_set_ivar(adapter, 0, 0, 0); ixgbe_set_ivar(adapter, 0, 0, 1); + IXGBE_WRITE_REG(hw, IXGBE_EIAM, IXGBE_EICS_RTX_QUEUE); } #ifdef IXGBE_FDIR @@ -2198,13 +2206,14 @@ ixgbe_setup_msix(struct adapter *adapter /* Figure out a reasonable auto config value */ queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus; - if (ixgbe_num_queues == 0) - ixgbe_num_queues = queues; + if (ixgbe_num_queues != 0) + queues = ixgbe_num_queues; + /* ** Want one vector (RX/TX pair) per queue ** plus an additional for Link. */ - want = ixgbe_num_queues + 1; + want = queues + 1; if (msgs >= want) msgs = want; else { @@ -2217,7 +2226,7 @@ ixgbe_setup_msix(struct adapter *adapter if ((msgs) && pci_alloc_msix(dev, &msgs) == 0) { device_printf(adapter->dev, "Using MSIX interrupts with %d vectors\n", msgs); - adapter->num_queues = ixgbe_num_queues; + adapter->num_queues = queues; return (msgs); } msi: @@ -3340,72 +3349,62 @@ static void ixgbe_refresh_mbufs(struct rx_ring *rxr, int limit) { struct adapter *adapter = rxr->adapter; - bus_dma_segment_t seg[2]; + bus_dma_segment_t hseg[1]; + bus_dma_segment_t pseg[1]; struct ixgbe_rx_buf *rxbuf; struct mbuf *mh, *mp; - bus_dmamap_t map; int i, nsegs, error, cleaned; i = rxr->next_to_refresh; cleaned = -1; /* Signify no completions */ while (i != limit) { rxbuf = &rxr->rx_buffers[i]; - - if (rxbuf->m_head == NULL) { + if ((rxbuf->m_head == NULL) && (rxr->hdr_split)) { mh = m_gethdr(M_DONTWAIT, MT_DATA); if (mh == NULL) goto update; - } else /* reuse */ - mh = rxbuf->m_head; - - mh->m_len = MHLEN; - mh->m_flags |= M_PKTHDR; + mh->m_pkthdr.len = mh->m_len = MHLEN; + mh->m_len = MHLEN; + mh->m_flags |= M_PKTHDR; + m_adj(mh, ETHER_ALIGN); + /* Get the memory mapping */ + error = bus_dmamap_load_mbuf_sg(rxr->htag, + rxbuf->hmap, mh, hseg, &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + printf("GET BUF: dmamap load" + " failure - %d\n", error); + m_free(mh); + goto update; + } + rxbuf->m_head = mh; + bus_dmamap_sync(rxr->htag, rxbuf->hmap, + BUS_DMASYNC_PREREAD); + rxr->rx_base[i].read.hdr_addr = + htole64(hseg[0].ds_addr); + } if (rxbuf->m_pack == NULL) { mp = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, adapter->rx_mbuf_sz); if (mp == NULL) goto update; - mp->m_len = adapter->rx_mbuf_sz; - mp->m_flags &= ~M_PKTHDR; - } else { /* reusing */ - mp = rxbuf->m_pack; - mp->m_len = adapter->rx_mbuf_sz; - mp->m_flags &= ~M_PKTHDR; - mp->m_next = NULL; - } - - /* - ** Need to create a chain for the following - ** dmamap call at this point. - */ - mh->m_next = mp; - mh->m_pkthdr.len = mh->m_len + mp->m_len; - - /* Get the memory mapping */ - error = bus_dmamap_load_mbuf_sg(rxr->rxtag, - rxr->spare_map, mh, seg, &nsegs, BUS_DMA_NOWAIT); - if (error != 0) { - printf("GET BUF: dmamap load failure - %d\n", error); - m_free(mh); - goto update; + mp->m_pkthdr.len = mp->m_len = adapter->rx_mbuf_sz; + /* Get the memory mapping */ + error = bus_dmamap_load_mbuf_sg(rxr->ptag, + rxbuf->pmap, mp, pseg, &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + printf("GET BUF: dmamap load" + " failure - %d\n", error); + m_free(mp); + goto update; + } + rxbuf->m_pack = mp; + bus_dmamap_sync(rxr->ptag, rxbuf->pmap, + BUS_DMASYNC_PREREAD); + rxr->rx_base[i].read.pkt_addr = + htole64(pseg[0].ds_addr); } - /* Unload old mapping and update buffer struct */ - if (rxbuf->m_head != NULL) - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - map = rxbuf->map; - rxbuf->map = rxr->spare_map; - rxr->spare_map = map; - rxbuf->m_head = mh; - rxbuf->m_pack = mp; - bus_dmamap_sync(rxr->rxtag, - rxbuf->map, BUS_DMASYNC_PREREAD); - - /* Update descriptor */ - rxr->rx_base[i].read.hdr_addr = htole64(seg[0].ds_addr); - rxr->rx_base[i].read.pkt_addr = htole64(seg[1].ds_addr); - cleaned = i; /* Calculate next index */ if (++i == adapter->num_rx_desc) @@ -3415,12 +3414,11 @@ ixgbe_refresh_mbufs(struct rx_ring *rxr, } update: if (cleaned != -1) /* If we refreshed some, bump tail */ - IXGBE_WRITE_REG(&adapter->hw, IXGBE_RDT(rxr->me), cleaned); - + IXGBE_WRITE_REG(&adapter->hw, + IXGBE_RDT(rxr->me), cleaned); return; } - /********************************************************************* * * Allocate memory for rx_buffer structures. Since we use one @@ -3446,42 +3444,50 @@ ixgbe_allocate_receive_buffers(struct rx goto fail; } - /* - ** The tag is made to accomodate the largest buffer size - ** with packet split (hence the two segments, even though - ** it may not always use this. - */ if ((error = bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */ 1, 0, /* alignment, bounds */ BUS_SPACE_MAXADDR, /* lowaddr */ BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ - MJUM16BYTES, /* maxsize */ - 2, /* nsegments */ - MJUMPAGESIZE, /* maxsegsize */ + MSIZE, /* maxsize */ + 1, /* nsegments */ + MSIZE, /* maxsegsize */ 0, /* flags */ NULL, /* lockfunc */ NULL, /* lockfuncarg */ - &rxr->rxtag))) { + &rxr->htag))) { device_printf(dev, "Unable to create RX DMA tag\n"); goto fail; } - /* Create the spare map (used by getbuf) */ - error = bus_dmamap_create(rxr->rxtag, BUS_DMA_NOWAIT, - &rxr->spare_map); - if (error) { - device_printf(dev, "%s: bus_dmamap_create failed: %d\n", - __func__, error); + if ((error = bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */ + 1, 0, /* alignment, bounds */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + MJUMPAGESIZE, /* maxsize */ + 1, /* nsegments */ + MJUMPAGESIZE, /* maxsegsize */ + 0, /* flags */ + NULL, /* lockfunc */ + NULL, /* lockfuncarg */ + &rxr->ptag))) { + device_printf(dev, "Unable to create RX DMA tag\n"); goto fail; } for (i = 0; i < adapter->num_rx_desc; i++, rxbuf++) { rxbuf = &rxr->rx_buffers[i]; - error = bus_dmamap_create(rxr->rxtag, - BUS_DMA_NOWAIT, &rxbuf->map); + error = bus_dmamap_create(rxr->htag, + BUS_DMA_NOWAIT, &rxbuf->hmap); + if (error) { + device_printf(dev, "Unable to create RX head map\n"); + goto fail; + } + error = bus_dmamap_create(rxr->ptag, + BUS_DMA_NOWAIT, &rxbuf->pmap); if (error) { - device_printf(dev, "Unable to create RX DMA map\n"); + device_printf(dev, "Unable to create RX pkt map\n"); goto fail; } } @@ -3550,6 +3556,36 @@ ixgbe_setup_hw_rsc(struct rx_ring *rxr) } +static void +ixgbe_free_receive_ring(struct rx_ring *rxr) +{ + struct adapter *adapter; + struct ixgbe_rx_buf *rxbuf; + int i; + + adapter = rxr->adapter; + for (i = 0; i < adapter->num_rx_desc; i++) { + rxbuf = &rxr->rx_buffers[i]; + if (rxbuf->m_head != NULL) { + bus_dmamap_sync(rxr->htag, rxbuf->hmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->htag, rxbuf->hmap); + rxbuf->m_head->m_flags |= M_PKTHDR; + m_freem(rxbuf->m_head); + } + if (rxbuf->m_pack != NULL) { + bus_dmamap_sync(rxr->ptag, rxbuf->pmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->ptag, rxbuf->pmap); + rxbuf->m_pack->m_flags |= M_PKTHDR; + m_freem(rxbuf->m_pack); + } + rxbuf->m_head = NULL; + rxbuf->m_pack = NULL; + } +} + + /********************************************************************* * * Initialize a receive ring and its buffers. @@ -3562,9 +3598,9 @@ ixgbe_setup_receive_ring(struct rx_ring struct ifnet *ifp; device_t dev; struct ixgbe_rx_buf *rxbuf; - bus_dma_segment_t seg[2]; + bus_dma_segment_t pseg[1], hseg[1]; struct lro_ctrl *lro = &rxr->lro; - int rsize, nsegs, error; + int rsize, nsegs, error = 0; adapter = rxr->adapter; ifp = adapter->ifp; @@ -3576,55 +3612,62 @@ ixgbe_setup_receive_ring(struct rx_ring sizeof(union ixgbe_adv_rx_desc), DBA_ALIGN); bzero((void *)rxr->rx_base, rsize); - /* - ** Free current RX buffer structs and their mbufs - */ - for (int i = 0; i < adapter->num_rx_desc; i++) { - rxbuf = &rxr->rx_buffers[i]; - if (rxbuf->m_head != NULL) { - bus_dmamap_sync(rxr->rxtag, rxbuf->map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - if (rxbuf->m_head) { - rxbuf->m_head->m_next = rxbuf->m_pack; - m_freem(rxbuf->m_head); - } - rxbuf->m_head = NULL; - rxbuf->m_pack = NULL; - } - } + /* Free current RX buffer structs and their mbufs */ + ixgbe_free_receive_ring(rxr); + + /* Configure header split? */ + if (ixgbe_header_split) + rxr->hdr_split = TRUE; /* Now replenish the mbufs */ for (int j = 0; j != adapter->num_rx_desc; ++j) { + struct mbuf *mh, *mp; rxbuf = &rxr->rx_buffers[j]; + /* + ** Dont allocate mbufs if not + ** doing header split, its wasteful + */ + if (rxr->hdr_split == FALSE) + goto skip_head; + + /* First the header */ rxbuf->m_head = m_gethdr(M_DONTWAIT, MT_DATA); if (rxbuf->m_head == NULL) - panic("RX ring hdr initialization failed!\n"); - rxbuf->m_head->m_len = MHLEN; - rxbuf->m_head->m_flags |= M_PKTHDR; - rxbuf->m_head->m_pkthdr.len = rxbuf->m_head->m_len; + goto fail; + m_adj(rxbuf->m_head, ETHER_ALIGN); + mh = rxbuf->m_head; + mh->m_len = mh->m_pkthdr.len = MHLEN; + mh->m_flags |= M_PKTHDR; + /* Get the memory mapping */ + error = bus_dmamap_load_mbuf_sg(rxr->htag, + rxbuf->hmap, rxbuf->m_head, hseg, + &nsegs, BUS_DMA_NOWAIT); + if (error != 0) /* Nothing elegant to do here */ + goto fail; + bus_dmamap_sync(rxr->htag, + rxbuf->hmap, BUS_DMASYNC_PREREAD); + /* Update descriptor */ + rxr->rx_base[j].read.hdr_addr = htole64(hseg[0].ds_addr); +skip_head: + /* Now the payload cluster */ rxbuf->m_pack = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, adapter->rx_mbuf_sz); if (rxbuf->m_pack == NULL) - panic("RX ring pkt initialization failed!\n"); - rxbuf->m_pack->m_len = adapter->rx_mbuf_sz; - rxbuf->m_head->m_next = rxbuf->m_pack; - rxbuf->m_head->m_pkthdr.len += rxbuf->m_pack->m_len; - + goto fail; + mp = rxbuf->m_pack; + mp->m_pkthdr.len = mp->m_len = adapter->rx_mbuf_sz; /* Get the memory mapping */ - error = bus_dmamap_load_mbuf_sg(rxr->rxtag, - rxbuf->map, rxbuf->m_head, seg, + error = bus_dmamap_load_mbuf_sg(rxr->ptag, + rxbuf->pmap, mp, pseg, &nsegs, BUS_DMA_NOWAIT); if (error != 0) - panic("RX ring dma initialization failed!\n"); - bus_dmamap_sync(rxr->rxtag, - rxbuf->map, BUS_DMASYNC_PREREAD); - + goto fail; + bus_dmamap_sync(rxr->ptag, + rxbuf->pmap, BUS_DMASYNC_PREREAD); /* Update descriptor */ - rxr->rx_base[j].read.hdr_addr = htole64(seg[0].ds_addr); - rxr->rx_base[j].read.pkt_addr = htole64(seg[1].ds_addr); + rxr->rx_base[j].read.pkt_addr = htole64(pseg[0].ds_addr); } @@ -3632,10 +3675,8 @@ ixgbe_setup_receive_ring(struct rx_ring rxr->next_to_check = 0; rxr->next_to_refresh = 0; rxr->lro_enabled = FALSE; - - /* Use header split if configured */ - if (ixgbe_header_split) - rxr->hdr_split = TRUE; + rxr->rx_split_packets = 0; + rxr->rx_bytes = 0; bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); @@ -3651,8 +3692,10 @@ ixgbe_setup_receive_ring(struct rx_ring ixgbe_setup_hw_rsc(rxr); else if (ifp->if_capenable & IFCAP_LRO) { int err = tcp_lro_init(lro); - if (err) - panic("LRO Initialization failed!\n"); + if (err) { + device_printf(dev, "LRO Initialization failed!\n"); + goto fail; + } INIT_DEBUGOUT("RX Soft LRO Initialized\n"); rxr->lro_enabled = TRUE; lro->ifp = adapter->ifp; @@ -3660,6 +3703,11 @@ ixgbe_setup_receive_ring(struct rx_ring IXGBE_RX_UNLOCK(rxr); return (0); + +fail: + ixgbe_free_receive_ring(rxr); + IXGBE_RX_UNLOCK(rxr); + return (error); } /********************************************************************* @@ -3686,17 +3734,7 @@ fail: */ for (int i = 0; i < j; ++i) { rxr = &adapter->rx_rings[i]; - for (int n = 0; n < adapter->num_rx_desc; n++) { - struct ixgbe_rx_buf *rxbuf; - rxbuf = &rxr->rx_buffers[n]; - if (rxbuf->m_head != NULL) { - bus_dmamap_sync(rxr->rxtag, rxbuf->map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - m_freem(rxbuf->m_head); - rxbuf->m_head = NULL; - } - } + ixgbe_free_receive_ring(rxr); } return (ENOBUFS); @@ -3766,14 +3804,6 @@ ixgbe_initialize_receive_units(struct ad IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT) & IXGBE_SRRCTL_BSIZEHDR_MASK); srrctl |= IXGBE_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS; - if (adapter->hw.mac.type == ixgbe_mac_82599EB) { - /* PSRTYPE must be initialized in 82599 */ - u32 psrtype = IXGBE_PSRTYPE_TCPHDR | - IXGBE_PSRTYPE_UDPHDR | - IXGBE_PSRTYPE_IPV4HDR | - IXGBE_PSRTYPE_IPV6HDR; - IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(0), psrtype); - } } else srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF; IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(i), srrctl); @@ -3783,6 +3813,15 @@ ixgbe_initialize_receive_units(struct ad IXGBE_WRITE_REG(hw, IXGBE_RDT(i), 0); } + if (adapter->hw.mac.type == ixgbe_mac_82599EB) { + /* PSRTYPE must be initialized in 82599 */ + u32 psrtype = IXGBE_PSRTYPE_TCPHDR | + IXGBE_PSRTYPE_UDPHDR | + IXGBE_PSRTYPE_IPV4HDR | + IXGBE_PSRTYPE_IPV6HDR; + IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(0), psrtype); + } + rxcsum = IXGBE_READ_REG(hw, IXGBE_RXCSUM); /* Setup RSS */ @@ -3861,38 +3900,58 @@ ixgbe_free_receive_structures(struct ada * Free receive ring data structures * **********************************************************************/ -void +static void ixgbe_free_receive_buffers(struct rx_ring *rxr) { - struct adapter *adapter = NULL; - struct ixgbe_rx_buf *rxbuf = NULL; + struct adapter *adapter = rxr->adapter; + struct ixgbe_rx_buf *rxbuf; - INIT_DEBUGOUT("free_receive_buffers: begin"); - adapter = rxr->adapter; + INIT_DEBUGOUT("free_receive_structures: begin"); + + /* Cleanup any existing buffers */ if (rxr->rx_buffers != NULL) { - rxbuf = &rxr->rx_buffers[0]; for (int i = 0; i < adapter->num_rx_desc; i++) { - if (rxbuf->map != NULL) { - bus_dmamap_sync(rxr->rxtag, rxbuf->map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - bus_dmamap_destroy(rxr->rxtag, rxbuf->map); - } + rxbuf = &rxr->rx_buffers[i]; if (rxbuf->m_head != NULL) { + bus_dmamap_sync(rxr->htag, rxbuf->hmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->htag, rxbuf->hmap); + rxbuf->m_head->m_flags |= M_PKTHDR; m_freem(rxbuf->m_head); } + if (rxbuf->m_pack != NULL) { + bus_dmamap_sync(rxr->ptag, rxbuf->pmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->ptag, rxbuf->pmap); + rxbuf->m_pack->m_flags |= M_PKTHDR; + m_freem(rxbuf->m_pack); + } rxbuf->m_head = NULL; - ++rxbuf; + rxbuf->m_pack = NULL; + if (rxbuf->hmap != NULL) { + bus_dmamap_destroy(rxr->htag, rxbuf->hmap); + rxbuf->hmap = NULL; + } + if (rxbuf->pmap != NULL) { + bus_dmamap_destroy(rxr->ptag, rxbuf->pmap); + rxbuf->pmap = NULL; + } + } + if (rxr->rx_buffers != NULL) { + free(rxr->rx_buffers, M_DEVBUF); + rxr->rx_buffers = NULL; } } - if (rxr->rx_buffers != NULL) { - free(rxr->rx_buffers, M_DEVBUF); - rxr->rx_buffers = NULL; + + if (rxr->htag != NULL) { + bus_dma_tag_destroy(rxr->htag); + rxr->htag = NULL; } - if (rxr->rxtag != NULL) { - bus_dma_tag_destroy(rxr->rxtag); - rxr->rxtag = NULL; + if (rxr->ptag != NULL) { + bus_dma_tag_destroy(rxr->ptag); + rxr->ptag = NULL; } + return; } Modified: head/sys/dev/ixgbe/ixgbe.h ============================================================================== --- head/sys/dev/ixgbe/ixgbe.h Tue May 18 23:20:42 2010 (r208281) +++ head/sys/dev/ixgbe/ixgbe.h Wed May 19 00:03:48 2010 (r208282) @@ -238,7 +238,8 @@ struct ixgbe_rx_buf { struct mbuf *m_head; struct mbuf *m_pack; struct mbuf *fmp; - bus_dmamap_t map; + bus_dmamap_t hmap; + bus_dmamap_t pmap; }; /* @@ -323,8 +324,8 @@ struct rx_ring { u32 next_to_check; char mtx_name[16]; struct ixgbe_rx_buf *rx_buffers; - bus_dma_tag_t rxtag; - bus_dmamap_t spare_map; + bus_dma_tag_t htag; + bus_dma_tag_t ptag; u32 bytes; /* Used for AIM calc */ u32 packets; From owner-svn-src-head@FreeBSD.ORG Wed May 19 00:23:11 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2BA211065672; Wed, 19 May 2010 00:23:11 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1B2D18FC13; Wed, 19 May 2010 00:23:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J0NAK8011605; Wed, 19 May 2010 00:23:10 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J0NABd011599; Wed, 19 May 2010 00:23:10 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201005190023.o4J0NABd011599@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 19 May 2010 00:23:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208283 - head/sys/ia64/include X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 00:23:11 -0000 Author: marcel Date: Wed May 19 00:23:10 2010 New Revision: 208283 URL: http://svn.freebsd.org/changeset/base/208283 Log: Switch to C99 exact-width types. Modified: head/sys/ia64/include/ia64_cpu.h head/sys/ia64/include/pmap.h head/sys/ia64/include/runq.h head/sys/ia64/include/sal.h head/sys/ia64/include/vmparam.h Modified: head/sys/ia64/include/ia64_cpu.h ============================================================================== --- head/sys/ia64/include/ia64_cpu.h Wed May 19 00:03:48 2010 (r208282) +++ head/sys/ia64/include/ia64_cpu.h Wed May 19 00:23:10 2010 (r208283) @@ -192,13 +192,13 @@ ia64_mf_a(void) * Flush Cache. */ static __inline void -ia64_fc(u_int64_t va) +ia64_fc(uint64_t va) { __asm __volatile("fc %0" :: "r"(va)); } static __inline void -ia64_fc_i(u_int64_t va) +ia64_fc_i(uint64_t va) { __asm __volatile("fc.i %0" :: "r"(va)); } @@ -215,10 +215,10 @@ ia64_sync_i(void) /* * Calculate address in VHPT for va. */ -static __inline u_int64_t -ia64_thash(u_int64_t va) +static __inline uint64_t +ia64_thash(uint64_t va) { - u_int64_t result; + uint64_t result; __asm __volatile("thash %0=%1" : "=r" (result) : "r" (va)); return result; } @@ -226,10 +226,10 @@ ia64_thash(u_int64_t va) /* * Calculate VHPT tag for va. */ -static __inline u_int64_t -ia64_ttag(u_int64_t va) +static __inline uint64_t +ia64_ttag(uint64_t va) { - u_int64_t result; + uint64_t result; __asm __volatile("ttag %0=%1" : "=r" (result) : "r" (va)); return result; } @@ -237,10 +237,10 @@ ia64_ttag(u_int64_t va) /* * Convert virtual address to physical. */ -static __inline u_int64_t -ia64_tpa(u_int64_t va) +static __inline uint64_t +ia64_tpa(uint64_t va) { - u_int64_t result; + uint64_t result; __asm __volatile("tpa %0=%1" : "=r" (result) : "r" (va)); return result; } @@ -249,7 +249,7 @@ ia64_tpa(u_int64_t va) * Generate a ptc.e instruction. */ static __inline void -ia64_ptc_e(u_int64_t v) +ia64_ptc_e(uint64_t v) { __asm __volatile("ptc.e %0;; srlz.i;;" :: "r"(v)); } @@ -258,7 +258,7 @@ ia64_ptc_e(u_int64_t v) * Generate a ptc.g instruction. */ static __inline void -ia64_ptc_g(u_int64_t va, u_int64_t log2size) +ia64_ptc_g(uint64_t va, uint64_t log2size) { __asm __volatile("ptc.g %0,%1;; srlz.i;;" :: "r"(va), "r"(log2size)); } @@ -267,7 +267,7 @@ ia64_ptc_g(u_int64_t va, u_int64_t log2s * Generate a ptc.ga instruction. */ static __inline void -ia64_ptc_ga(u_int64_t va, u_int64_t log2size) +ia64_ptc_ga(uint64_t va, uint64_t log2size) { __asm __volatile("ptc.ga %0,%1;; srlz.i;;" :: "r"(va), "r"(log2size)); } @@ -276,7 +276,7 @@ ia64_ptc_ga(u_int64_t va, u_int64_t log2 * Generate a ptc.l instruction. */ static __inline void -ia64_ptc_l(u_int64_t va, u_int64_t log2size) +ia64_ptc_l(uint64_t va, uint64_t log2size) { __asm __volatile("ptc.l %0,%1;; srlz.i;;" :: "r"(va), "r"(log2size)); } @@ -352,10 +352,10 @@ ia64_st8(uint64_t *p, uint64_t v) /* * Read the value of psr. */ -static __inline u_int64_t +static __inline uint64_t ia64_get_psr(void) { - u_int64_t result; + uint64_t result; __asm __volatile("mov %0=psr;;" : "=r" (result)); return result; } @@ -366,16 +366,16 @@ ia64_get_psr(void) #define IA64_AR(name) \ \ -static __inline u_int64_t \ +static __inline uint64_t \ ia64_get_##name(void) \ { \ - u_int64_t result; \ + uint64_t result; \ __asm __volatile("mov %0=ar." #name : "=r" (result)); \ return result; \ } \ \ static __inline void \ -ia64_set_##name(u_int64_t v) \ +ia64_set_##name(uint64_t v) \ { \ __asm __volatile("mov ar." #name "=%0;;" :: "r" (v)); \ } @@ -422,16 +422,16 @@ IA64_AR(ec) #define IA64_CR(name) \ \ -static __inline u_int64_t \ +static __inline uint64_t \ ia64_get_##name(void) \ { \ - u_int64_t result; \ + uint64_t result; \ __asm __volatile("mov %0=cr." #name : "=r" (result)); \ return result; \ } \ \ static __inline void \ -ia64_set_##name(u_int64_t v) \ +ia64_set_##name(uint64_t v) \ { \ __asm __volatile("mov cr." #name "=%0;;" :: "r" (v)); \ } @@ -472,7 +472,7 @@ IA64_CR(lrr1) * Write a region register. */ static __inline void -ia64_set_rr(u_int64_t rrbase, u_int64_t v) +ia64_set_rr(uint64_t rrbase, uint64_t v) { __asm __volatile("mov rr[%0]=%1" :: "r"(rrbase), "r"(v) : "memory"); @@ -481,10 +481,10 @@ ia64_set_rr(u_int64_t rrbase, u_int64_t /* * Read a CPUID register. */ -static __inline u_int64_t +static __inline uint64_t ia64_get_cpuid(int i) { - u_int64_t result; + uint64_t result; __asm __volatile("mov %0=cpuid[%1]" : "=r" (result) : "r"(i)); return result; Modified: head/sys/ia64/include/pmap.h ============================================================================== --- head/sys/ia64/include/pmap.h Wed May 19 00:03:48 2010 (r208282) +++ head/sys/ia64/include/pmap.h Wed May 19 00:23:10 2010 (r208283) @@ -75,7 +75,7 @@ struct md_page { struct pmap { struct mtx pm_mtx; TAILQ_HEAD(,pv_entry) pm_pvlist; /* list of mappings in pmap */ - u_int32_t pm_rid[5]; /* base RID for pmap */ + uint32_t pm_rid[5]; /* base RID for pmap */ struct pmap_statistics pm_stats; /* pmap statistics */ uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ u_int pm_retries; Modified: head/sys/ia64/include/runq.h ============================================================================== --- head/sys/ia64/include/runq.h Wed May 19 00:03:48 2010 (r208282) +++ head/sys/ia64/include/runq.h Wed May 19 00:23:10 2010 (r208283) @@ -41,12 +41,12 @@ /* * Type of run queue status word. */ -typedef u_int64_t rqb_word_t; +typedef uint64_t rqb_word_t; -static __inline u_int64_t -__popcnt(u_int64_t bits) +static __inline uint64_t +__popcnt(uint64_t bits) { - u_int64_t result; + uint64_t result; __asm __volatile("popcnt %0=%1" : "=r" (result) : "r" (bits)); return result; Modified: head/sys/ia64/include/sal.h ============================================================================== --- head/sys/ia64/include/sal.h Wed May 19 00:03:48 2010 (r208282) +++ head/sys/ia64/include/sal.h Wed May 19 00:23:10 2010 (r208283) @@ -32,68 +32,68 @@ struct sal_system_table { char sal_signature[4]; #define SAL_SIGNATURE "SST_" - u_int32_t sal_length; - u_int8_t sal_rev[2]; - u_int16_t sal_entry_count; - u_int8_t sal_checksum; - u_int8_t sal_reserved1[7]; - u_int8_t sal_a_version[2]; - u_int8_t sal_b_version[2]; + uint32_t sal_length; + uint8_t sal_rev[2]; + uint16_t sal_entry_count; + uint8_t sal_checksum; + uint8_t sal_reserved1[7]; + uint8_t sal_a_version[2]; + uint8_t sal_b_version[2]; char sal_oem_id[32]; char sal_product_id[32]; - u_int8_t sal_reserved2[8]; + uint8_t sal_reserved2[8]; }; struct sal_entrypoint_descriptor { - u_int8_t sale_type; /* == 0 */ - u_int8_t sale_reserved1[7]; - u_int64_t sale_pal_proc; - u_int64_t sale_sal_proc; - u_int64_t sale_sal_gp; - u_int8_t sale_reserved2[16]; + uint8_t sale_type; /* == 0 */ + uint8_t sale_reserved1[7]; + uint64_t sale_pal_proc; + uint64_t sale_sal_proc; + uint64_t sale_sal_gp; + uint8_t sale_reserved2[16]; }; struct sal_memory_descriptor { - u_int8_t sale_type; /* == 1 */ - u_int8_t sale_need_virtual; - u_int8_t sale_current_attribute; - u_int8_t sale_access_rights; - u_int8_t sale_supported_attributes; - u_int8_t sale_reserved1; - u_int8_t sale_memory_type[2]; - u_int64_t sale_physical_address; - u_int32_t sale_length; - u_int8_t sale_reserved2[12]; + uint8_t sale_type; /* == 1 */ + uint8_t sale_need_virtual; + uint8_t sale_current_attribute; + uint8_t sale_access_rights; + uint8_t sale_supported_attributes; + uint8_t sale_reserved1; + uint8_t sale_memory_type[2]; + uint64_t sale_physical_address; + uint32_t sale_length; + uint8_t sale_reserved2[12]; }; struct sal_platform_descriptor { - u_int8_t sale_type; /* == 2 */ - u_int8_t sale_features; - u_int8_t sale_reserved[14]; + uint8_t sale_type; /* == 2 */ + uint8_t sale_features; + uint8_t sale_reserved[14]; }; struct sal_tr_descriptor { - u_int8_t sale_type; /* == 3 */ - u_int8_t sale_register_type; - u_int8_t sale_register_number; - u_int8_t sale_reserved1[5]; - u_int64_t sale_virtual_address; - u_int64_t sale_page_size; - u_int8_t sale_reserved2[8]; + uint8_t sale_type; /* == 3 */ + uint8_t sale_register_type; + uint8_t sale_register_number; + uint8_t sale_reserved1[5]; + uint64_t sale_virtual_address; + uint64_t sale_page_size; + uint8_t sale_reserved2[8]; }; struct sal_ptc_cache_descriptor { - u_int8_t sale_type; /* == 4 */ - u_int8_t sale_reserved[3]; - u_int32_t sale_domains; - u_int64_t sale_address; + uint8_t sale_type; /* == 4 */ + uint8_t sale_reserved[3]; + uint32_t sale_domains; + uint64_t sale_address; }; struct sal_ap_wakeup_descriptor { - u_int8_t sale_type; /* == 5 */ - u_int8_t sale_mechanism; - u_int8_t sale_reserved[6]; - u_int64_t sale_vector; + uint8_t sale_type; /* == 5 */ + uint8_t sale_mechanism; + uint8_t sale_reserved[6]; + uint64_t sale_vector; }; /* @@ -128,12 +128,11 @@ struct sal_ap_wakeup_descriptor { struct ia64_sal_result { int64_t sal_status; - u_int64_t sal_result[3]; + uint64_t sal_result[3]; }; -typedef struct ia64_sal_result sal_entry_t - (u_int64_t, u_int64_t, u_int64_t, u_int64_t, - u_int64_t, u_int64_t, u_int64_t, u_int64_t); +typedef struct ia64_sal_result sal_entry_t(uint64_t, uint64_t, uint64_t, + uint64_t, uint64_t, uint64_t, uint64_t, uint64_t); extern sal_entry_t *ia64_sal_entry; Modified: head/sys/ia64/include/vmparam.h ============================================================================== --- head/sys/ia64/include/vmparam.h Wed May 19 00:03:48 2010 (r208282) +++ head/sys/ia64/include/vmparam.h Wed May 19 00:23:10 2010 (r208283) @@ -129,7 +129,7 @@ /* * Manipulating region bits of an address. */ -#define IA64_RR_BASE(n) (((u_int64_t) (n)) << 61) +#define IA64_RR_BASE(n) (((uint64_t) (n)) << 61) #define IA64_RR_MASK(x) ((x) & ((1L << 61) - 1)) #define IA64_PHYS_TO_RR7(x) ((x) | IA64_RR_BASE(7)) From owner-svn-src-head@FreeBSD.ORG Wed May 19 00:35:47 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D539D1065678; Wed, 19 May 2010 00:35:47 +0000 (UTC) (envelope-from alfred@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C5C038FC16; Wed, 19 May 2010 00:35:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J0Zlxh014394; Wed, 19 May 2010 00:35:47 GMT (envelope-from alfred@svn.freebsd.org) Received: (from alfred@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J0Zl8F014392; Wed, 19 May 2010 00:35:47 GMT (envelope-from alfred@svn.freebsd.org) Message-Id: <201005190035.o4J0Zl8F014392@svn.freebsd.org> From: Alfred Perlstein Date: Wed, 19 May 2010 00:35:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208284 - head/sys/netinet6 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 00:35:47 -0000 Author: alfred Date: Wed May 19 00:35:47 2010 New Revision: 208284 URL: http://svn.freebsd.org/changeset/base/208284 Log: Fix our version of IPv6 address representation. We do not respect rules 3 and 4 in the required list: 1. omit leading zeros 2. "::" used to their maximum extent whenever possible 3. "::" used where shortens address the most 4. "::" used in the former part in case of a tie breaker 5. do not shorten one 16 bit 0 field 6. use lower case http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04.html Submitted by: Kalluru Abhiram @ Juniper Networks Obtained from: Juniper Networks Reviewed by: hrs, dougb Modified: head/sys/netinet6/in6.c Modified: head/sys/netinet6/in6.c ============================================================================== --- head/sys/netinet6/in6.c Wed May 19 00:23:10 2010 (r208283) +++ head/sys/netinet6/in6.c Wed May 19 00:35:47 2010 (r208284) @@ -1898,7 +1898,7 @@ static char digits[] = "0123456789abcdef char * ip6_sprintf(char *ip6buf, const struct in6_addr *addr) { - int i; + int i, cnt = 0, maxcnt = 0, idx = 0, index = 0; char *cp; const u_int16_t *a = (const u_int16_t *)addr; const u_int8_t *d; @@ -1907,6 +1907,23 @@ ip6_sprintf(char *ip6buf, const struct i cp = ip6buf; for (i = 0; i < 8; i++) { + if (*(a + i) == 0) { + cnt++; + if (cnt == 1) + idx = i; + } + else if (maxcnt < cnt) { + maxcnt = cnt; + index = idx; + cnt = 0; + } + } + if (maxcnt < cnt) { + maxcnt = cnt; + index = idx; + } + + for (i = 0; i < 8; i++) { if (dcolon == 1) { if (*a == 0) { if (i == 7) @@ -1917,7 +1934,7 @@ ip6_sprintf(char *ip6buf, const struct i dcolon = 2; } if (*a == 0) { - if (dcolon == 0 && *(a + 1) == 0) { + if (dcolon == 0 && *(a + 1) == 0 && i == index) { if (i == 0) *cp++ = ':'; *cp++ = ':'; From owner-svn-src-head@FreeBSD.ORG Wed May 19 01:37:47 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6B1161065672; Wed, 19 May 2010 01:37:47 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5BB108FC18; Wed, 19 May 2010 01:37:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J1blXX027915; Wed, 19 May 2010 01:37:47 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J1blDg027913; Wed, 19 May 2010 01:37:47 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005190137.o4J1blDg027913@svn.freebsd.org> From: Nathan Whitehorn Date: Wed, 19 May 2010 01:37:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208285 - head/sys/powerpc/powermac X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 01:37:47 -0000 Author: nwhitehorn Date: Wed May 19 01:37:47 2010 New Revision: 208285 URL: http://svn.freebsd.org/changeset/base/208285 Log: Correct a typo. Pointy hat to: me Modified: head/sys/powerpc/powermac/cpcht.c Modified: head/sys/powerpc/powermac/cpcht.c ============================================================================== --- head/sys/powerpc/powermac/cpcht.c Wed May 19 00:35:47 2010 (r208284) +++ head/sys/powerpc/powermac/cpcht.c Wed May 19 01:37:47 2010 (r208285) @@ -622,7 +622,7 @@ struct openpic_cpcht_softc { static driver_t openpic_cpcht_driver = { "htpic", openpic_cpcht_methods, - sizeof(struct openpic_softc), + sizeof(struct openpic_cpcht_softc), }; DRIVER_MODULE(openpic, unin, openpic_cpcht_driver, openpic_devclass, 0, 0); From owner-svn-src-head@FreeBSD.ORG Wed May 19 06:18:02 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5B6D31065679; Wed, 19 May 2010 06:18:02 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 482FA8FC1F; Wed, 19 May 2010 06:18:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J6I2jT089758; Wed, 19 May 2010 06:18:02 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J6I24C089755; Wed, 19 May 2010 06:18:02 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201005190618.o4J6I24C089755@svn.freebsd.org> From: Jeff Roberson Date: Wed, 19 May 2010 06:18:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208287 - head/sys/ufs/ffs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 06:18:02 -0000 Author: jeff Date: Wed May 19 06:18:01 2010 New Revision: 208287 URL: http://svn.freebsd.org/changeset/base/208287 Log: - Don't immediately re-run softdepflush if we didn't make any progress on the last iteration. This can lead to a deadlock when we have worklist items that cannot be immediately satisfied. Reported by: uqs, Dimitry Andric - Remove some unnecessary debugging code and place some other under SUJ_DEBUG. - Examine the journal state in softdep_slowdown(). - Re-format some comments so I may more easily add flag descriptions. Modified: head/sys/ufs/ffs/ffs_softdep.c head/sys/ufs/ffs/softdep.h Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Wed May 19 04:00:42 2010 (r208286) +++ head/sys/ufs/ffs/ffs_softdep.c Wed May 19 06:18:01 2010 (r208287) @@ -51,7 +51,6 @@ __FBSDID("$FreeBSD$"); #ifndef DEBUG #define DEBUG #endif -#define SUJ_DEBUG #include #include @@ -1200,6 +1199,7 @@ softdep_flush(void) struct ufsmount *ump; struct thread *td; int remaining; + int progress; int vfslocked; td = curthread; @@ -1224,7 +1224,7 @@ softdep_flush(void) } FREE_LOCK(&lk); VFS_UNLOCK_GIANT(vfslocked); - remaining = 0; + remaining = progress = 0; mtx_lock(&mountlist_mtx); for (mp = TAILQ_FIRST(&mountlist); mp != NULL; mp = nmp) { nmp = TAILQ_NEXT(mp, mnt_list); @@ -1233,7 +1233,7 @@ softdep_flush(void) if (vfs_busy(mp, MBF_NOWAIT | MBF_MNTLSTLOCK)) continue; vfslocked = VFS_LOCK_GIANT(mp); - softdep_process_worklist(mp, 0); + progress += softdep_process_worklist(mp, 0); ump = VFSTOUFS(mp); remaining += ump->softdep_on_worklist - ump->softdep_on_worklist_inprogress; @@ -1243,7 +1243,7 @@ softdep_flush(void) vfs_unbusy(mp); } mtx_unlock(&mountlist_mtx); - if (remaining) + if (remaining && progress) continue; ACQUIRE_LOCK(&lk); if (!req_pending) @@ -1449,7 +1449,7 @@ process_worklist_item(mp, flags) struct mount *mp; int flags; { - struct worklist *wk, *wkXXX; + struct worklist *wk; struct ufsmount *ump; struct vnode *vp; int matchcnt = 0; @@ -1472,11 +1472,8 @@ process_worklist_item(mp, flags) vp = NULL; ump = VFSTOUFS(mp); LIST_FOREACH(wk, &ump->softdep_workitem_pending, wk_list) { - if (wk->wk_state & INPROGRESS) { - wkXXX = wk; + if (wk->wk_state & INPROGRESS) continue; - } - wkXXX = wk; /* Record the last valid wk pointer. */ if ((flags & LK_NOWAIT) == 0 || wk->wk_type != D_DIRREM) break; wk->wk_state |= INPROGRESS; @@ -2364,7 +2361,7 @@ remove_from_journal(wk) mtx_assert(&lk, MA_OWNED); ump = VFSTOUFS(wk->wk_mp); -#ifdef DEBUG /* XXX Expensive, temporary. */ +#ifdef SUJ_DEBUG { struct worklist *wkn; @@ -2401,16 +2398,15 @@ journal_space(ump, thresh) struct jblocks *jblocks; int avail; + jblocks = ump->softdep_jblocks; + if (jblocks == NULL) + return (1); /* * We use a tighter restriction here to prevent request_cleanup() * running in threads from running into locks we currently hold. */ if (num_inodedep > (max_softdeps / 10) * 9) return (0); - - jblocks = ump->softdep_jblocks; - if (jblocks == NULL) - return (1); if (thresh) thresh = jblocks->jb_min; else @@ -2727,7 +2723,7 @@ softdep_process_journal(mp, flags) break; printf("softdep: Out of journal space!\n"); softdep_speedup(); - msleep(jblocks, &lk, PRIBIO, "jblocks", 1); + msleep(jblocks, &lk, PRIBIO, "jblocks", hz); } FREE_LOCK(&lk); jseg = malloc(sizeof(*jseg), M_JSEG, M_SOFTDEP_FLAGS); @@ -10870,18 +10866,29 @@ int softdep_slowdown(vp) struct vnode *vp; { + struct ufsmount *ump; + int jlow; int max_softdeps_hard; ACQUIRE_LOCK(&lk); + jlow = 0; + /* + * Check for journal space if needed. + */ + if (DOINGSUJ(vp)) { + ump = VFSTOUFS(vp->v_mount); + if (journal_space(ump, 0) == 0) + jlow = 1; + } max_softdeps_hard = max_softdeps * 11 / 10; if (num_dirrem < max_softdeps_hard / 2 && num_inodedep < max_softdeps_hard && VFSTOUFS(vp->v_mount)->um_numindirdeps < maxindirdeps && - num_freeblkdep < max_softdeps_hard) { + num_freeblkdep < max_softdeps_hard && jlow == 0) { FREE_LOCK(&lk); return (0); } - if (VFSTOUFS(vp->v_mount)->um_numindirdeps >= maxindirdeps) + if (VFSTOUFS(vp->v_mount)->um_numindirdeps >= maxindirdeps || jlow) softdep_speedup(); stat_sync_limit_hit += 1; FREE_LOCK(&lk); Modified: head/sys/ufs/ffs/softdep.h ============================================================================== --- head/sys/ufs/ffs/softdep.h Wed May 19 04:00:42 2010 (r208286) +++ head/sys/ufs/ffs/softdep.h Wed May 19 06:18:01 2010 (r208287) @@ -46,51 +46,65 @@ * copy of the data. A particular data dependency is eliminated when * it is ALLCOMPLETE: that is ATTACHED, DEPCOMPLETE, and COMPLETE. * - * ATTACHED means that the data is not currently being written to - * disk. UNDONE means that the data has been rolled back to a safe + * The ATTACHED flag means that the data is not currently being written + * to disk. + * + * The UNDONE flag means that the data has been rolled back to a safe * state for writing to the disk. When the I/O completes, the data is * restored to its current form and the state reverts to ATTACHED. * The data must be locked throughout the rollback, I/O, and roll * forward so that the rolled back information is never visible to - * user processes. The COMPLETE flag indicates that the item has been - * written. For example, a dependency that requires that an inode be - * written will be marked COMPLETE after the inode has been written - * to disk. The DEPCOMPLETE flag indicates the completion of any other + * user processes. + * + * The COMPLETE flag indicates that the item has been written. For example, + * a dependency that requires that an inode be written will be marked + * COMPLETE after the inode has been written to disk. + * + * The DEPCOMPLETE flag indicates the completion of any other * dependencies such as the writing of a cylinder group map has been * completed. A dependency structure may be freed only when both it * and its dependencies have completed and any rollbacks that are in * progress have finished as indicated by the set of ALLCOMPLETE flags - * all being set. The two MKDIR flags indicate additional dependencies - * that must be done when creating a new directory. MKDIR_BODY is - * cleared when the directory data block containing the "." and ".." - * entries has been written. MKDIR_PARENT is cleared when the parent - * inode with the increased link count for ".." has been written. When - * both MKDIR flags have been cleared, the DEPCOMPLETE flag is set to - * indicate that the directory dependencies have been completed. The - * writing of the directory inode itself sets the COMPLETE flag which - * then allows the directory entry for the new directory to be written - * to disk. The RMDIR flag marks a dirrem structure as representing - * the removal of a directory rather than a file. When the removal - * dependencies are completed, additional work needs to be done - * (truncation of the "." and ".." entries, an additional decrement - * of the associated inode, and a decrement of the parent inode). The - * DIRCHG flag marks a diradd structure as representing the changing + * all being set. + * + * The two MKDIR flags indicate additional dependencies that must be done + * when creating a new directory. MKDIR_BODY is cleared when the directory + * data block containing the "." and ".." entries has been written. + * MKDIR_PARENT is cleared when the parent inode with the increased link + * count for ".." has been written. When both MKDIR flags have been + * cleared, the DEPCOMPLETE flag is set to indicate that the directory + * dependencies have been completed. The writing of the directory inode + * itself sets the COMPLETE flag which then allows the directory entry for + * the new directory to be written to disk. The RMDIR flag marks a dirrem + * structure as representing the removal of a directory rather than a + * file. When the removal dependencies are completed, additional work needs + * to be done* (an additional decrement of the associated inode, and a + * decrement of the parent inode). + * + * The DIRCHG flag marks a diradd structure as representing the changing * of an existing entry rather than the addition of a new one. When * the update is complete the dirrem associated with the inode for * the old name must be added to the worklist to do the necessary - * reference count decrement. The GOINGAWAY flag indicates that the - * data structure is frozen from further change until its dependencies - * have been completed and its resources freed after which it will be - * discarded. The IOSTARTED flag prevents multiple calls to the I/O - * start routine from doing multiple rollbacks. The SPACECOUNTED flag - * says that the files space has been accounted to the pending free - * space count. The NEWBLOCK flag marks pagedep structures that have - * just been allocated, so must be claimed by the inode before all - * dependencies are complete. The INPROGRESS flag marks worklist - * structures that are still on the worklist, but are being considered - * for action by some process. The UFS1FMT flag indicates that the - * inode being processed is a ufs1 format. The EXTDATA flag indicates - * that the allocdirect describes an extended-attributes dependency. + * reference count decrement. + * + * The GOINGAWAY flag indicates that the data structure is frozen from + * further change until its dependencies have been completed and its + * resources freed after which it will be discarded. + * + * The IOSTARTED flag prevents multiple calls to the I/O start routine from + * doing multiple rollbacks. + * + * The NEWBLOCK flag marks pagedep structures that have just been allocated, + * so must be claimed by the inode before all dependencies are complete. + * + * The INPROGRESS flag marks worklist structures that are still on the + * worklist, but are being considered for action by some process. + * + * The UFS1FMT flag indicates that the inode being processed is a ufs1 format. + * + * The EXTDATA flag indicates that the allocdirect describes an + * extended-attributes dependency. + * * The ONWORKLIST flag shows whether the structure is currently linked * onto a worklist. */ From owner-svn-src-head@FreeBSD.ORG Wed May 19 08:52:52 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3973C1065672; Wed, 19 May 2010 08:52:52 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 278358FC08; Wed, 19 May 2010 08:52:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J8qpr2023948; Wed, 19 May 2010 08:52:51 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J8qpob023944; Wed, 19 May 2010 08:52:51 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005190852.o4J8qpob023944@svn.freebsd.org> From: Ulrich Spoerlein Date: Wed, 19 May 2010 08:52:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208289 - head/usr.sbin/apmd X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 08:52:52 -0000 Author: uqs Date: Wed May 19 08:52:51 2010 New Revision: 208289 URL: http://svn.freebsd.org/changeset/base/208289 Log: - Fix terminating argument to execl(3), sizeof(NULL) != sizeof(char *) might be true on some systems [1] - Rewrite gotos to use return directly - Some spelling fixes - Reduce unneeded/non-standard Makefile settings Requested by: bde, imp [1] Explanation provided by: bde [1] Reviewed by: imp Modified: head/usr.sbin/apmd/Makefile head/usr.sbin/apmd/README head/usr.sbin/apmd/apmd.c Modified: head/usr.sbin/apmd/Makefile ============================================================================== --- head/usr.sbin/apmd/Makefile Wed May 19 06:49:52 2010 (r208288) +++ head/usr.sbin/apmd/Makefile Wed May 19 08:52:51 2010 (r208289) @@ -10,12 +10,7 @@ WARNS?= 3 DPADD= ${LIBL} LDADD= -ll -YFLAGS+=-v -CFLAGS+=-I. -I${.CURDIR} #-DYY_STACK_USED -# for debug: -#CFLAGS+= -g -DDEBUG - -CLEANFILES= y.output +CFLAGS+= -I${.CURDIR} test: ./apmd -d -f etc/apmd.conf -n Modified: head/usr.sbin/apmd/README ============================================================================== --- head/usr.sbin/apmd/README Wed May 19 06:49:52 2010 (r208288) +++ head/usr.sbin/apmd/README Wed May 19 08:52:51 2010 (r208289) @@ -92,7 +92,7 @@ apm_event SUSPENDREQ { exec "zzz"; } -Will cause apmd to recieve the APM event SUSPENDREQ (which may be +Will cause apmd to receive the APM event SUSPENDREQ (which may be posted by an LCD close), run the sync command 3 times and wait for a while, then execute zzz (apm -z) to put the system in the suspend state. @@ -130,7 +130,7 @@ Other events will not be sent to apmd. 4.3 command line syntax ----------------------- -In the example above, the three lines begining with `exec' are commands +In the example above, the three lines beginning with `exec' are commands for the event. Each line should be terminated with a semicolon. The command list for the event should be enclosed by `{' and `}'. apmd(8) uses /bin/sh for double-quotation enclosed command execution, just as Modified: head/usr.sbin/apmd/apmd.c ============================================================================== --- head/usr.sbin/apmd/apmd.c Wed May 19 06:49:52 2010 (r208288) +++ head/usr.sbin/apmd/apmd.c Wed May 19 08:52:51 2010 (r208289) @@ -115,13 +115,13 @@ event_cmd_exec_act(void *this) switch ((pid = fork())) { case -1: warn("cannot fork"); - goto out; + break; case 0: /* child process */ signal(SIGHUP, SIG_DFL); signal(SIGCHLD, SIG_DFL); signal(SIGTERM, SIG_DFL); - execl(_PATH_BSHELL, "sh", "-c", p->line, NULL); + execl(_PATH_BSHELL, "sh", "-c", p->line, (char *)NULL); _exit(127); default: /* parent process */ @@ -130,7 +130,6 @@ event_cmd_exec_act(void *this) } while (pid == -1 && errno == EINTR); break; } - out: return status; } void @@ -165,19 +164,17 @@ struct event_cmd_op event_cmd_exec_ops = }; /* - * reject commad + * reject command */ int event_cmd_reject_act(void *this __unused) { - int rc = -1; + int rc = 0; if (ioctl(apmctl_fd, APMIO_REJECTLASTREQ, NULL)) { syslog(LOG_NOTICE, "fail to reject\n"); - goto out; + rc = -1; } - rc = 0; - out: return rc; } struct event_cmd_op event_cmd_reject_ops = { @@ -466,7 +463,7 @@ wait_child(void) int proc_signal(int fd) { - int rc = -1; + int rc = 0; int sig; while (read(fd, &sig, sizeof sig) == sizeof sig) { @@ -479,7 +476,7 @@ proc_signal(int fd) case SIGTERM: syslog(LOG_NOTICE, "going down on signal %d", sig); rc = -1; - goto out; + return rc; case SIGCHLD: wait_child(); break; @@ -488,8 +485,6 @@ proc_signal(int fd) break; } } - rc = 0; - out: return rc; } void @@ -630,14 +625,12 @@ event_loop(void) if (FD_ISSET(signal_fd[0], &rfds)) { if (proc_signal(signal_fd[0]) < 0) - goto out; + return; } if (FD_ISSET(apmctl_fd, &rfds)) proc_apmevent(apmctl_fd); } -out: - return; } int From owner-svn-src-head@FreeBSD.ORG Wed May 19 08:52:59 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D2D2C10657B1; Wed, 19 May 2010 08:52:59 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C112B8FC26; Wed, 19 May 2010 08:52:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J8qxnG024016; Wed, 19 May 2010 08:52:59 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J8qxIK024014; Wed, 19 May 2010 08:52:59 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005190852.o4J8qxIK024014@svn.freebsd.org> From: Ulrich Spoerlein Date: Wed, 19 May 2010 08:52:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208290 - head/usr.sbin/apm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 08:52:59 -0000 Author: uqs Date: Wed May 19 08:52:59 2010 New Revision: 208290 URL: http://svn.freebsd.org/changeset/base/208290 Log: Garbage collect unused variable, missed in r200840 Found by: clang static analyzer Modified: head/usr.sbin/apm/apm.c Modified: head/usr.sbin/apm/apm.c ============================================================================== --- head/usr.sbin/apm/apm.c Wed May 19 08:52:51 2010 (r208289) +++ head/usr.sbin/apm/apm.c Wed May 19 08:52:59 2010 (r208290) @@ -384,17 +384,12 @@ main(int argc, char *argv[]) int dosleep = 0, all_info = 1, apm_status = 0, batt_status = 0; int display = -1, batt_life = 0, ac_status = 0, standby = 0; int batt_time = 0, delta = 0, enable = -1, haltcpu = -1; - char *cmdname; int bioscall_available = 0; size_t cmos_wall_len = sizeof(cmos_wall); if (sysctlbyname("machdep.wall_cmos_clock", &cmos_wall, &cmos_wall_len, NULL, 0) == -1) err(1, "sysctlbyname(machdep.wall_cmos_clock)"); - if ((cmdname = strrchr(argv[0], '/')) != NULL) - cmdname++; - else - cmdname = argv[0]; while ((c = getopt(argc, argv, "abe:h:lRr:stzd:Z")) != -1) { switch (c) { From owner-svn-src-head@FreeBSD.ORG Wed May 19 08:57:54 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DF821065678; Wed, 19 May 2010 08:57:54 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 67F9F8FC24; Wed, 19 May 2010 08:57:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J8vshW025193; Wed, 19 May 2010 08:57:54 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J8vrXk025135; Wed, 19 May 2010 08:57:53 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005190857.o4J8vrXk025135@svn.freebsd.org> From: Ulrich Spoerlein Date: Wed, 19 May 2010 08:57:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208291 - in head: lib/libarchive lib/libc/gen lib/libftpio lib/librpcsec_gss sbin/mount_hpfs share/man/man4 share/man/man4/man4.powerpc share/man/man9 tools/tools/ether_reflect usr.bin... X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 08:57:54 -0000 Author: uqs Date: Wed May 19 08:57:53 2010 New Revision: 208291 URL: http://svn.freebsd.org/changeset/base/208291 Log: mdoc: consistently spell our email addresses Reviewed by: ru Modified: head/lib/libarchive/archive_read_disk.3 head/lib/libc/gen/isgreater.3 head/lib/libc/gen/sem_timedwait.3 head/lib/libc/gen/setproctitle.3 head/lib/libc/gen/tcgetsid.3 head/lib/libftpio/ftpio.3 head/lib/librpcsec_gss/rpc_gss_get_error.3 head/lib/librpcsec_gss/rpc_gss_get_mech_info.3 head/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 head/lib/librpcsec_gss/rpc_gss_get_principal_name.3 head/lib/librpcsec_gss/rpc_gss_get_versions.3 head/lib/librpcsec_gss/rpc_gss_getcred.3 head/lib/librpcsec_gss/rpc_gss_is_installed.3 head/lib/librpcsec_gss/rpc_gss_max_data_length.3 head/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 head/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 head/lib/librpcsec_gss/rpc_gss_qop_to_num.3 head/lib/librpcsec_gss/rpc_gss_seccreate.3 head/lib/librpcsec_gss/rpc_gss_set_callback.3 head/lib/librpcsec_gss/rpc_gss_set_defaults.3 head/lib/librpcsec_gss/rpc_gss_set_svc_name.3 head/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 head/lib/librpcsec_gss/rpcsec_gss.3 head/sbin/mount_hpfs/mount_hpfs.8 head/share/man/man4/ksyms.4 head/share/man/man4/malo.4 head/share/man/man4/man4.powerpc/bm.4 head/share/man/man4/md.4 head/share/man/man4/ng_ccatm.4 head/share/man/man4/smp.4 head/share/man/man4/snd_emu10kx.4 head/share/man/man4/tx.4 head/share/man/man4/u3g.4 head/share/man/man4/uath.4 head/share/man/man4/usb.4 head/share/man/man4/usb2_template.4 head/share/man/man9/cr_seeothergids.9 head/share/man/man9/cr_seeotheruids.9 head/share/man/man9/p_candebug.9 head/share/man/man9/p_cansee.9 head/share/man/man9/prison_check.9 head/share/man/man9/usbdi.9 head/share/man/man9/watchdog.9 head/tools/tools/ether_reflect/ether_reflect.1 head/usr.bin/csup/cpasswd.1 head/usr.bin/csup/csup.1 head/usr.bin/mkuzip/mkuzip.8 head/usr.sbin/bsnmpd/modules/snmp_hostres/snmp_hostres.3 head/usr.sbin/bsnmpd/modules/snmp_netgraph/snmp_netgraph.3 head/usr.sbin/clear_locks/clear_locks.8 head/usr.sbin/gssd/gssd.8 head/usr.sbin/jail/jail.8 head/usr.sbin/mixer/mixer.8 head/usr.sbin/mptable/mptable.1 head/usr.sbin/nscd/nscd.8 head/usr.sbin/nscd/nscd.conf.5 head/usr.sbin/snapinfo/snapinfo.8 Modified: head/lib/libarchive/archive_read_disk.3 ============================================================================== --- head/lib/libarchive/archive_read_disk.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/libarchive/archive_read_disk.3 Wed May 19 08:57:53 2010 (r208291) @@ -276,7 +276,7 @@ and first appeared in The .Nm libarchive library was written by -.An Tim Kientzle Aq kientzle@freebsd.org . +.An Tim Kientzle Aq kientzle@FreeBSD.org . .Sh BUGS The .Dq standard Modified: head/lib/libc/gen/isgreater.3 ============================================================================== --- head/lib/libc/gen/isgreater.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/libc/gen/isgreater.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2003 David Schultz +.\" Copyright (c) 2003 David Schultz .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: head/lib/libc/gen/sem_timedwait.3 ============================================================================== --- head/lib/libc/gen/sem_timedwait.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/libc/gen/sem_timedwait.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2008, David Xu +.\" Copyright (c) 2008, David Xu .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: head/lib/libc/gen/setproctitle.3 ============================================================================== --- head/lib/libc/gen/setproctitle.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/libc/gen/setproctitle.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,4 +1,4 @@ -.\" Copyright (c) 1995 Peter Wemm +.\" Copyright (c) 1995 Peter Wemm .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: head/lib/libc/gen/tcgetsid.3 ============================================================================== --- head/lib/libc/gen/tcgetsid.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/libc/gen/tcgetsid.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2008 David Xu +.\" Copyright (c) 2008 David Xu .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: head/lib/libftpio/ftpio.3 ============================================================================== --- head/lib/libftpio/ftpio.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/libftpio/ftpio.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,4 +1,4 @@ -.\" Copyright (c) 1996 Jordan Hubbard (jkh@FreeBSD.org) +.\" Copyright (c) 1996 Jordan Hubbard .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: head/lib/librpcsec_gss/rpc_gss_get_error.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_get_error.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_get_error.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_get_mech_info.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_get_mech_info.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_get_mech_info.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_get_principal_name.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_get_principal_name.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_get_principal_name.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_get_versions.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_get_versions.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_get_versions.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_getcred.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_getcred.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_getcred.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_is_installed.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_is_installed.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_is_installed.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_max_data_length.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_max_data_length.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_max_data_length.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_qop_to_num.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_qop_to_num.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_qop_to_num.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_seccreate.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_seccreate.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_seccreate.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_set_callback.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_set_callback.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_set_callback.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_set_defaults.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_set_defaults.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_set_defaults.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_set_svc_name.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_set_svc_name.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_set_svc_name.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 ============================================================================== --- head/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/lib/librpcsec_gss/rpcsec_gss.3 ============================================================================== --- head/lib/librpcsec_gss/rpcsec_gss.3 Wed May 19 08:52:59 2010 (r208290) +++ head/lib/librpcsec_gss/rpcsec_gss.3 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/sbin/mount_hpfs/mount_hpfs.8 ============================================================================== --- head/sbin/mount_hpfs/mount_hpfs.8 Wed May 19 08:52:59 2010 (r208290) +++ head/sbin/mount_hpfs/mount_hpfs.8 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" .\" Copyright (c) 1993,1994 Christopher G. Demetriou -.\" Copyright (c) 1999 Semen Ustimenko (semenu@FreeBSD.org) +.\" Copyright (c) 1999 Semen Ustimenko .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: head/share/man/man4/ksyms.4 ============================================================================== --- head/share/man/man4/ksyms.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/ksyms.4 Wed May 19 08:57:53 2010 (r208291) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2008-2009 Stacey Son +.\" Copyright (c) 2008-2009 Stacey Son .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -135,7 +135,7 @@ The .Nm driver was written by .An Stacey Son -.Aq sson@freebsd.org . +.Aq sson@FreeBSD.org . .Sh BUGS Because files can be dynamically linked into the kernel at any time the symbol information can vary. When you open the Modified: head/share/man/man4/malo.4 ============================================================================== --- head/share/man/man4/malo.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/malo.4 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2008 Weongyo Jeong +.\" Copyright (c) 2008 Weongyo Jeong .\" All rights reserved. .\"" .\" Redistribution and use in source and binary forms, with or without Modified: head/share/man/man4/man4.powerpc/bm.4 ============================================================================== --- head/share/man/man4/man4.powerpc/bm.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/man4.powerpc/bm.4 Wed May 19 08:57:53 2010 (r208291) @@ -83,7 +83,7 @@ The .Nm driver was written by .An Nathan Whitehorn -.Aq nwhitehorn@freebsd.org +.Aq nwhitehorn@FreeBSD.org based on work by .An Peter Grehan -.Aq grehan@freebsd.org . +.Aq grehan@FreeBSD.org . Modified: head/share/man/man4/md.4 ============================================================================== --- head/share/man/man4/md.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/md.4 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" ---------------------------------------------------------------------------- .\" "THE BEER-WARE LICENSE" (Revision 42): -.\" wrote this file. As long as you retain this notice you +.\" wrote this file. As long as you retain this notice you .\" can do whatever you want with this stuff. If we meet some day, and you think .\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp .\" ---------------------------------------------------------------------------- Modified: head/share/man/man4/ng_ccatm.4 ============================================================================== --- head/share/man/man4/ng_ccatm.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/ng_ccatm.4 Wed May 19 08:57:53 2010 (r208291) @@ -6,7 +6,7 @@ .\" Hartmut Brandt. .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/share/man/man4/smp.4 ============================================================================== --- head/share/man/man4/smp.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/smp.4 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" Copyright (c) 1997 -.\" Steve Passe . All rights reserved. +.\" Steve Passe . All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/share/man/man4/snd_emu10kx.4 ============================================================================== --- head/share/man/man4/snd_emu10kx.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/snd_emu10kx.4 Wed May 19 08:57:53 2010 (r208291) @@ -276,11 +276,11 @@ device driver first appeared in The PCM part of the driver is based on the .Xr snd_emu10k1 4 SB Live!\& driver by -.An "Cameron Grant" Aq cg@freebsd.org . +.An Cameron Grant Aq cg@FreeBSD.org . The MIDI interface is based on the .Xr snd_emu10k1 4 MIDI interface code by -.An "Mathew Kanner" Aq matk@freebsd.org . +.An Mathew Kanner Aq matk@FreeBSD.org . The .Nm device driver and this manual page were written by Modified: head/share/man/man4/tx.4 ============================================================================== --- head/share/man/man4/tx.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/tx.4 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 1998-2001 Semen Ustimenko (semenu@FreeBSD.org) +.\" Copyright (c) 1998-2001 Semen Ustimenko .\" .\" All rights reserved. .\" Modified: head/share/man/man4/u3g.4 ============================================================================== --- head/share/man/man4/u3g.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/u3g.4 Wed May 19 08:57:53 2010 (r208291) @@ -121,5 +121,5 @@ The driver was written by .An Andrea Guzzo Aq aguzzo@anywi.com and -.An Nick Hibma Aq n_hibma@freebsd.org . +.An Nick Hibma Aq n_hibma@FreeBSD.org . Hardware for testing was provided by AnyWi Technologies, Leiden, NL. Modified: head/share/man/man4/uath.4 ============================================================================== --- head/share/man/man4/uath.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/uath.4 Wed May 19 08:57:53 2010 (r208291) @@ -177,9 +177,9 @@ driver first appeared in The .Nm driver was written by -.An Weongyo Jeong Aq weongyo@freebsd.org +.An Weongyo Jeong Aq weongyo@FreeBSD.org and -.An Sam Leffler Aq sam@freebsd.org . +.An Sam Leffler Aq sam@FreeBSD.org . It is distantly related to a driver written by .An Damien Bergamini Aq damien@openbsd.org . .Sh CAVEATS Modified: head/share/man/man4/usb.4 ============================================================================== --- head/share/man/man4/usb.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/usb.4 Wed May 19 08:57:53 2010 (r208291) @@ -176,4 +176,4 @@ module has been inspired by the NetBSD U Lennart Augustsson. The .Nm module was written by -.An Hans Petter Selasky Aq hselasky@freebsd.org . +.An Hans Petter Selasky Aq hselasky@FreeBSD.org . Modified: head/share/man/man4/usb2_template.4 ============================================================================== --- head/share/man/man4/usb2_template.4 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man4/usb2_template.4 Wed May 19 08:57:53 2010 (r208291) @@ -81,4 +81,4 @@ module complies with the USB 2.0 standar The .Nm module was written by -.An Hans Petter Selasky Aq hselasky@freebsd.org . +.An Hans Petter Selasky Aq hselasky@FreeBSD.org . Modified: head/share/man/man9/cr_seeothergids.9 ============================================================================== --- head/share/man/man9/cr_seeothergids.9 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man9/cr_seeothergids.9 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2003 Joseph Koshy +.\" Copyright (c) 2003 Joseph Koshy .\" .\" All rights reserved. .\" Modified: head/share/man/man9/cr_seeotheruids.9 ============================================================================== --- head/share/man/man9/cr_seeotheruids.9 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man9/cr_seeotheruids.9 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2003 Joseph Koshy +.\" Copyright (c) 2003 Joseph Koshy .\" .\" All rights reserved. .\" Modified: head/share/man/man9/p_candebug.9 ============================================================================== --- head/share/man/man9/p_candebug.9 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man9/p_candebug.9 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2003 Joseph Koshy +.\" Copyright (c) 2003 Joseph Koshy .\" .\" All rights reserved. .\" Modified: head/share/man/man9/p_cansee.9 ============================================================================== --- head/share/man/man9/p_cansee.9 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man9/p_cansee.9 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2003 Joseph Koshy +.\" Copyright (c) 2003 Joseph Koshy .\" Copyright (c) 2006 Ceri Davies .\" .\" All rights reserved. Modified: head/share/man/man9/prison_check.9 ============================================================================== --- head/share/man/man9/prison_check.9 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man9/prison_check.9 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2003 Joseph Koshy +.\" Copyright (c) 2003 Joseph Koshy .\" .\" All rights reserved. .\" Modified: head/share/man/man9/usbdi.9 ============================================================================== --- head/share/man/man9/usbdi.9 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man9/usbdi.9 Wed May 19 08:57:53 2010 (r208291) @@ -634,4 +634,4 @@ module has been inspired by the NetBSD U Lennart Augustsson. The .Nm usb module was written by -.An Hans Petter Selasky Aq hselasky@freebsd.org . +.An Hans Petter Selasky Aq hselasky@FreeBSD.org . Modified: head/share/man/man9/watchdog.9 ============================================================================== --- head/share/man/man9/watchdog.9 Wed May 19 08:52:59 2010 (r208290) +++ head/share/man/man9/watchdog.9 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2004 Poul-Henning Kamp .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: head/tools/tools/ether_reflect/ether_reflect.1 ============================================================================== --- head/tools/tools/ether_reflect/ether_reflect.1 Wed May 19 08:52:59 2010 (r208290) +++ head/tools/tools/ether_reflect/ether_reflect.1 Wed May 19 08:57:53 2010 (r208291) @@ -105,4 +105,4 @@ This manual page was written by .An George V. Neville-Neil Aq gnn@FreeBSD.org . .Sh BUGS -Should be reported to the author or to net@freebsd.org. +Should be reported to the author or to net@FreeBSD.org. Modified: head/usr.bin/csup/cpasswd.1 ============================================================================== --- head/usr.bin/csup/cpasswd.1 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.bin/csup/cpasswd.1 Wed May 19 08:57:53 2010 (r208291) @@ -50,7 +50,7 @@ and a server name. is the name the client uses to gain access to the server. By convention, e-mail addresses are used for all client names, e.g., -.Ql BillyJoe@FreeBSD.ORG . +.Ql BillyJoe@FreeBSD.org . Client names are case-insensitive. .Pp .Ar ServerName Modified: head/usr.bin/csup/csup.1 ============================================================================== --- head/usr.bin/csup/csup.1 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.bin/csup/csup.1 Wed May 19 08:57:53 2010 (r208291) @@ -845,7 +845,7 @@ case-insensitive. .Ar ClientName is the name the client uses to gain access to the server. By convention, e-mail addresses are used for all client names, e.g., -.Ql BillyJoe@FreeBSD.ORG . +.Ql BillyJoe@FreeBSD.org . Client names are case-insensitive. .Pp .Ar Password Modified: head/usr.bin/mkuzip/mkuzip.8 ============================================================================== --- head/usr.bin/mkuzip/mkuzip.8 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.bin/mkuzip/mkuzip.8 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" ---------------------------------------------------------------------------- .\" "THE BEER-WARE LICENSE" (Revision 42): -.\" wrote this file. As long as you retain this notice you +.\" wrote this file. As long as you retain this notice you .\" can do whatever you want with this stuff. If we meet some day, and you think .\" this stuff is worth it, you can buy me a beer in return. Maxim Sobolev .\" ---------------------------------------------------------------------------- Modified: head/usr.sbin/bsnmpd/modules/snmp_hostres/snmp_hostres.3 ============================================================================== --- head/usr.sbin/bsnmpd/modules/snmp_hostres/snmp_hostres.3 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/bsnmpd/modules/snmp_hostres/snmp_hostres.3 Wed May 19 08:57:53 2010 (r208291) @@ -3,7 +3,7 @@ .\" The FreeBSD Project. .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/usr.sbin/bsnmpd/modules/snmp_netgraph/snmp_netgraph.3 ============================================================================== --- head/usr.sbin/bsnmpd/modules/snmp_netgraph/snmp_netgraph.3 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/bsnmpd/modules/snmp_netgraph/snmp_netgraph.3 Wed May 19 08:57:53 2010 (r208291) @@ -3,7 +3,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution of this software and documentation and use in source and .\" binary forms, with or without modification, are permitted provided that @@ -433,4 +433,4 @@ This is the MIB that is implemented by t .Xr gensnmptree 1 , .Xr snmpmod 3 .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/usr.sbin/clear_locks/clear_locks.8 ============================================================================== --- head/usr.sbin/clear_locks/clear_locks.8 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/clear_locks/clear_locks.8 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/usr.sbin/gssd/gssd.8 ============================================================================== --- head/usr.sbin/gssd/gssd.8 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/gssd/gssd.8 Wed May 19 08:57:53 2010 (r208291) @@ -1,6 +1,6 @@ .\" Copyright (c) 2008 Isilon Inc http://www.isilon.com/ .\" Authors: Doug Rabson -.\" Developed with Red Inc: Alfred Perlstein +.\" Developed with Red Inc: Alfred Perlstein .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/usr.sbin/jail/jail.8 ============================================================================== --- head/usr.sbin/jail/jail.8 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/jail/jail.8 Wed May 19 08:57:53 2010 (r208291) @@ -27,7 +27,7 @@ .\" .\" ---------------------------------------------------------------------------- .\" "THE BEER-WARE LICENSE" (Revision 42): -.\" wrote this file. As long as you retain this notice you +.\" wrote this file. As long as you retain this notice you .\" can do whatever you want with this stuff. If we meet some day, and you think .\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp .\" ---------------------------------------------------------------------------- Modified: head/usr.sbin/mixer/mixer.8 ============================================================================== --- head/usr.sbin/mixer/mixer.8 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/mixer/mixer.8 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" Copyright (c) 1997 -.\" Mike Pritchard . All rights reserved. +.\" Mike Pritchard . All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/usr.sbin/mptable/mptable.1 ============================================================================== --- head/usr.sbin/mptable/mptable.1 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/mptable/mptable.1 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" Copyright (c) 1996 -.\" Steve Passe . All rights reserved. +.\" Steve Passe . All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: head/usr.sbin/nscd/nscd.8 ============================================================================== --- head/usr.sbin/nscd/nscd.8 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/nscd/nscd.8 Wed May 19 08:57:53 2010 (r208291) @@ -159,7 +159,7 @@ The default configuration file. .Xr nscd.conf 5 , .Xr nsswitch.conf 5 .Sh AUTHORS -.An Michael Bushkov Aq bushman@freebsd.org +.An Michael Bushkov Aq bushman@FreeBSD.org .Sh BUGS Please send bug reports and suggestions to -.Aq bushman@freebsd.org . +.Aq bushman@FreeBSD.org . Modified: head/usr.sbin/nscd/nscd.conf.5 ============================================================================== --- head/usr.sbin/nscd/nscd.conf.5 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/nscd/nscd.conf.5 Wed May 19 08:57:53 2010 (r208291) @@ -142,7 +142,7 @@ symbol at the beginning of the line for .Xr nscd 8 .Sh AUTHORS .An Michael Bushkov -.Aq bushman@freebsd.org +.Aq bushman@FreeBSD.org .Sh BUGS Please send bug reports and suggestions to -.Aq bushman@freebsd.org . +.Aq bushman@FreeBSD.org . Modified: head/usr.sbin/snapinfo/snapinfo.8 ============================================================================== --- head/usr.sbin/snapinfo/snapinfo.8 Wed May 19 08:52:59 2010 (r208290) +++ head/usr.sbin/snapinfo/snapinfo.8 Wed May 19 08:57:53 2010 (r208291) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2005 Mark Santcroos +.\" Copyright (c) 2005 Mark Santcroos .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without From owner-svn-src-head@FreeBSD.ORG Wed May 19 09:32:11 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93A1C106564A; Wed, 19 May 2010 09:32:11 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6991C8FC18; Wed, 19 May 2010 09:32:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4J9WBKo032722; Wed, 19 May 2010 09:32:11 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4J9WBx0032720; Wed, 19 May 2010 09:32:11 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201005190932.o4J9WBx0032720@svn.freebsd.org> From: Andriy Gapon Date: Wed, 19 May 2010 09:32:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208293 - head/sys/ufs/ffs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 09:32:11 -0000 Author: avg Date: Wed May 19 09:32:11 2010 New Revision: 208293 URL: http://svn.freebsd.org/changeset/base/208293 Log: ffs_mount: accept and drop userland-only options that can be passed from loader(8) In r193192 loader(8) has grown an ability to pass root mount options from fstab via vfs.root.mountfrom.options. Unfortunately, some options that can be present in fstab are for userland only and lead to root mounting failure when seen by kernel. Rather than teaching loader about FFS-specific options that should be filtered out, ffs_mount recognizes those options as valid, but ignores and deletes[1] them. [1] is suggested by jh. PR: kern/141050 Reported by: many Reviewed by: jh, bde MFC after: 4 days Modified: head/sys/ufs/ffs/ffs_vfsops.c Modified: head/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- head/sys/ufs/ffs/ffs_vfsops.c Wed May 19 09:30:41 2010 (r208292) +++ head/sys/ufs/ffs/ffs_vfsops.c Wed May 19 09:32:11 2010 (r208293) @@ -124,10 +124,16 @@ static struct buf_ops ffs_ops = { #endif }; +/* + * Note that userquota and groupquota options are not currently used + * by UFS/FFS code and generally mount(8) does not pass those options + * from userland, but they can be passed by loader(8) via + * vfs.root.mountfrom.options. + */ static const char *ffs_opts[] = { "acls", "async", "noatime", "noclusterr", - "noclusterw", "noexec", "export", "force", "from", "multilabel", - "nfsv4acls", "snapshot", "nosuid", "suiddir", "nosymfollow", "sync", - "union", NULL }; + "noclusterw", "noexec", "export", "force", "from", "groupquota", + "multilabel", "nfsv4acls", "snapshot", "nosuid", "suiddir", "nosymfollow", + "sync", "union", "userquota", NULL }; static int ffs_mount(struct mount *mp) @@ -157,6 +163,9 @@ ffs_mount(struct mount *mp) UMA_ALIGN_PTR, 0); } + vfs_deleteopt(mp->mnt_optnew, "groupquota"); + vfs_deleteopt(mp->mnt_optnew, "userquota"); + fspec = vfs_getopts(mp->mnt_optnew, "from", &error); if (error) return (error); From owner-svn-src-head@FreeBSD.ORG Wed May 19 15:06:09 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 70D17106566C; Wed, 19 May 2010 15:06:09 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 60B6F8FC17; Wed, 19 May 2010 15:06:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4JF698M007710; Wed, 19 May 2010 15:06:09 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4JF69SL007708; Wed, 19 May 2010 15:06:09 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201005191506.o4JF69SL007708@svn.freebsd.org> From: Attilio Rao Date: Wed, 19 May 2010 15:06:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208300 - head/sys/netgraph X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 15:06:09 -0000 Author: attilio Date: Wed May 19 15:06:09 2010 New Revision: 208300 URL: http://svn.freebsd.org/changeset/base/208300 Log: Fix a race between ngs_rcvmsg() and soclose() which closes the control socket while it is still in use. priv->ctlsock is checked at the top of the function but without any lock held, which means the control socket state may certainly change. Add a similar protection to ngs_shutdown() even if a race is unlikely to be experienced there. Sponsored by: Sandvine Incorporated Obtained from: Nima Misaghian @ Sandvine Incorporated MFC after: 10 days Modified: head/sys/netgraph/ng_socket.c Modified: head/sys/netgraph/ng_socket.c ============================================================================== --- head/sys/netgraph/ng_socket.c Wed May 19 14:50:07 2010 (r208299) +++ head/sys/netgraph/ng_socket.c Wed May 19 15:06:09 2010 (r208300) @@ -855,7 +855,7 @@ static int ngs_rcvmsg(node_p node, item_p item, hook_p lasthook) { struct ngsock *const priv = NG_NODE_PRIVATE(node); - struct ngpcb *const pcbp = priv->ctlsock; + struct ngpcb *pcbp; struct socket *so; struct sockaddr_ng addr; struct ng_mesg *msg; @@ -868,15 +868,27 @@ ngs_rcvmsg(node_p node, item_p item, hoo NG_FREE_ITEM(item); /* + * Grab priv->mtx here to prevent destroying of control socket + * after checking that priv->ctlsock is not NULL. + */ + mtx_lock(&priv->mtx); + pcbp = priv->ctlsock; + + /* * Only allow mesgs to be passed if we have the control socket. * Data sockets can only support the generic messages. */ if (pcbp == NULL) { + mtx_unlock(&priv->mtx); TRAP_ERROR; NG_FREE_MSG(msg); return (EINVAL); } so = pcbp->ng_socket; + SOCKBUF_LOCK(&so->so_rcv); + + /* As long as the race is handled, priv->mtx may be unlocked now. */ + mtx_unlock(&priv->mtx); #ifdef TRACE_MESSAGES printf("[%x]:---------->[socket]: c=<%d>cmd=%x(%s) f=%x #%d\n", @@ -899,6 +911,8 @@ ngs_rcvmsg(node_p node, item_p item, hoo default: error = EINVAL; /* unknown command */ } + SOCKBUF_UNLOCK(&so->so_rcv); + /* Free the message and return. */ NG_FREE_MSG(msg); return (error); @@ -911,6 +925,7 @@ ngs_rcvmsg(node_p node, item_p item, hoo addrlen = snprintf((char *)&addr.sg_data, sizeof(addr.sg_data), "[%x]:", retaddr); if (addrlen < 0 || addrlen > sizeof(addr.sg_data)) { + SOCKBUF_UNLOCK(&so->so_rcv); printf("%s: snprintf([%x]) failed - %d\n", __func__, retaddr, addrlen); NG_FREE_MSG(msg); @@ -928,17 +943,20 @@ ngs_rcvmsg(node_p node, item_p item, hoo NG_FREE_MSG(msg); if (m == NULL) { + SOCKBUF_UNLOCK(&so->so_rcv); TRAP_ERROR; return (ENOBUFS); } /* Send it up to the socket. */ - if (sbappendaddr(&so->so_rcv, (struct sockaddr *)&addr, m, NULL) == 0) { + if (sbappendaddr_locked(&so->so_rcv, (struct sockaddr *)&addr, m, + NULL) == 0) { + SOCKBUF_UNLOCK(&so->so_rcv); TRAP_ERROR; m_freem(m); return (ENOBUFS); } - sorwakeup(so); + sorwakeup_locked(so); return (error); } @@ -1020,8 +1038,11 @@ static int ngs_shutdown(node_p node) { struct ngsock *const priv = NG_NODE_PRIVATE(node); - struct ngpcb *const dpcbp = priv->datasock; - struct ngpcb *const pcbp = priv->ctlsock; + struct ngpcb *dpcbp, *pcbp; + + mtx_lock(&priv->mtx); + dpcbp = priv->datasock; + pcbp = priv->ctlsock; if (dpcbp != NULL) soisdisconnected(dpcbp->ng_socket); @@ -1029,7 +1050,6 @@ ngs_shutdown(node_p node) if (pcbp != NULL) soisdisconnected(pcbp->ng_socket); - mtx_lock(&priv->mtx); priv->node = NULL; NG_NODE_SET_PRIVATE(node, NULL); ng_socket_free_priv(priv); From owner-svn-src-head@FreeBSD.ORG Wed May 19 19:03:20 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F8CB1065672; Wed, 19 May 2010 19:03:20 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3EE9D8FC1C; Wed, 19 May 2010 19:03:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4JJ3KTG060321; Wed, 19 May 2010 19:03:20 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4JJ3KCO060309; Wed, 19 May 2010 19:03:20 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201005191903.o4JJ3KCO060309@svn.freebsd.org> From: Doug Barton Date: Wed, 19 May 2010 19:03:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208307 - head/etc/rc.d X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 19:03:20 -0000 Author: dougb Date: Wed May 19 19:03:19 2010 New Revision: 208307 URL: http://svn.freebsd.org/changeset/base/208307 Log: This change does the following for the scripts that run up through FILESYSTEMS (the default early_late_divider): 1. Move sysctl to run first 2. Move as many BEFOREs to REQUIREs as possible. 3. Minor effect, move hostid_save from right before mdconfig to right after. A lot of the early scripts make use of sysctl one way or another so running this first makes a lot of sense given that system-critical values are often placed in sysctl.conf. My original purpose for working on this was that while doing some debugging on other stuff I noticed that the order of execution was different in the first pass through the early scripts and the second. In practice that doesn't matter because the scripts are not executed the second time. However this _can_ result in problems if the difference in the rcorder moves a script from the late section to the early section in the second pass (which would mean the script would not get executed). So, I wanted to make the order of execution of the scripts in the early section more deterministic. In the course of debugging the ordering problems I noticed that moving the BEFOREs to REQUIREs prevented the changes in order from the first pass to the second pass without having to make any substantial changes. (Of course it's no secret that I think BEFORE should be avoided as much as possible, but this is a good example of why.) Reviewed by: silence on freebsd-rc@ MFC after: 8.1-RELEASE Modified: head/etc/rc.d/SERVERS head/etc/rc.d/ddb head/etc/rc.d/dumpon head/etc/rc.d/hostid head/etc/rc.d/hostid_save head/etc/rc.d/initrandom head/etc/rc.d/mdconfig head/etc/rc.d/mountcritlocal head/etc/rc.d/savecore head/etc/rc.d/sysctl head/etc/rc.d/zvol Modified: head/etc/rc.d/SERVERS ============================================================================== --- head/etc/rc.d/SERVERS Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/SERVERS Wed May 19 19:03:19 2010 (r208307) @@ -4,7 +4,7 @@ # # PROVIDE: SERVERS -# REQUIRE: mountcritremote abi ldconfig +# REQUIRE: mountcritremote abi ldconfig savecore # This is a dummy dependency, for early-start servers relying on # some basic configuration. Modified: head/etc/rc.d/ddb ============================================================================== --- head/etc/rc.d/ddb Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/ddb Wed May 19 19:03:19 2010 (r208307) @@ -5,7 +5,7 @@ # PROVIDE: ddb # REQUIRE: dumpon -# BEFORE: disks savecore initrandom +# BEFORE: disks # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/dumpon ============================================================================== --- head/etc/rc.d/dumpon Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/dumpon Wed May 19 19:03:19 2010 (r208307) @@ -4,7 +4,8 @@ # # PROVIDE: dumpon -# BEFORE: disks savecore initrandom +# REQUIRE: zvol +# BEFORE: disks # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/hostid ============================================================================== --- head/etc/rc.d/hostid Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/hostid Wed May 19 19:03:19 2010 (r208307) @@ -28,7 +28,7 @@ # # PROVIDE: hostid -# BEFORE: fsck +# REQUIRE: sysctl # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/hostid_save ============================================================================== --- head/etc/rc.d/hostid_save Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/hostid_save Wed May 19 19:03:19 2010 (r208307) @@ -5,7 +5,6 @@ # PROVIDE: hostid_save # REQUIRE: root -# BEFORE: mountcritlocal # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/initrandom ============================================================================== --- head/etc/rc.d/initrandom Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/initrandom Wed May 19 19:03:19 2010 (r208307) @@ -4,6 +4,7 @@ # # PROVIDE: initrandom +# REQUIRE: dumpon ddb # BEFORE: disks # KEYWORD: nojail Modified: head/etc/rc.d/mdconfig ============================================================================== --- head/etc/rc.d/mdconfig Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/mdconfig Wed May 19 19:03:19 2010 (r208307) @@ -28,8 +28,7 @@ # # PROVIDE: mdconfig -# REQUIRE: localswap -# BEFORE: mountcritlocal +# REQUIRE: localswap root . /etc/rc.subr Modified: head/etc/rc.d/mountcritlocal ============================================================================== --- head/etc/rc.d/mountcritlocal Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/mountcritlocal Wed May 19 19:03:19 2010 (r208307) @@ -4,7 +4,7 @@ # # PROVIDE: mountcritlocal -# REQUIRE: root +# REQUIRE: root hostid_save mdconfig # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/savecore ============================================================================== --- head/etc/rc.d/savecore Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/savecore Wed May 19 19:03:19 2010 (r208307) @@ -4,8 +4,7 @@ # # PROVIDE: savecore -# REQUIRE: syslogd -# BEFORE: SERVERS +# REQUIRE: dumpon ddb syslogd # KEYWORD: nojail . /etc/rc.subr Modified: head/etc/rc.d/sysctl ============================================================================== --- head/etc/rc.d/sysctl Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/sysctl Wed May 19 19:03:19 2010 (r208307) @@ -4,8 +4,6 @@ # # PROVIDE: sysctl -# REQUIRE: root -# BEFORE: FILESYSTEMS . /etc/rc.subr Modified: head/etc/rc.d/zvol ============================================================================== --- head/etc/rc.d/zvol Wed May 19 17:31:36 2010 (r208306) +++ head/etc/rc.d/zvol Wed May 19 19:03:19 2010 (r208307) @@ -5,7 +5,6 @@ # PROVIDE: zvol # REQUIRE: hostid -# BEFORE: fsck # KEYWORD: nojail . /etc/rc.subr From owner-svn-src-head@FreeBSD.ORG Wed May 19 19:44:01 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DB081106564A; Wed, 19 May 2010 19:44:00 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CAADC8FC1C; Wed, 19 May 2010 19:44:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4JJi0v9069684; Wed, 19 May 2010 19:44:00 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4JJi06Q069679; Wed, 19 May 2010 19:44:00 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005191944.o4JJi06Q069679@svn.freebsd.org> From: Andrew Gallatin Date: Wed, 19 May 2010 19:44:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208309 - head/sys/dev/mxge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 19:44:01 -0000 Author: gallatin Date: Wed May 19 19:44:00 2010 New Revision: 208309 URL: http://svn.freebsd.org/changeset/base/208309 Log: Update mxge firmware to latest available from Myricom. Modified: head/sys/dev/mxge/eth_z8e.h head/sys/dev/mxge/ethp_z8e.h head/sys/dev/mxge/rss_eth_z8e.h head/sys/dev/mxge/rss_ethp_z8e.h Modified: head/sys/dev/mxge/eth_z8e.h ============================================================================== --- head/sys/dev/mxge/eth_z8e.h Wed May 19 19:43:49 2010 (r208308) +++ head/sys/dev/mxge/eth_z8e.h Wed May 19 19:44:00 2010 (r208309) @@ -1,6 +1,6 @@ /******************************************************************************* -Copyright (c) 2006-2009, Myricom Inc. +Copyright (c) 2006-2010, Myricom Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,7255 +28,7287 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ ***************************************************************************/ -static unsigned int eth_z8e_uncompressed_length = 366788 ; -static unsigned int eth_z8e_length = 115959 ; -static unsigned char eth_z8e[115959 + 1] = - "\x78\x9c\xec\xbd\x7f\x7c\x54\xd5\xb5\x37\xbc\x32\x19\x60\x12\x23" - "\x13\x31\xd2\x29\xa5\x3a\x5a\xb4\xd1\x0b\x12\x15\x5b\xb4\xa0\x51" - "\xc0\x82\x0d\x10\x15\x6d\x54\x34\xa0\x81\x06\x8d\x18\x21\xc0\x00" - "\x21\x33\x0c\x70\x9d\x44\x7e\x44\x8d\x18\x21\x90\x44\x62\x9b\xdb" - "\x52\x4d\x2c\x2a\xd8\x50\x63\x49\xef\x43\xef\x85\x0c\xb7\x2f\xbe" - "\x6f\x6e\x5f\xbc\x1d\xd2\x88\x29\x4f\x80\x91\x0c\x64\x48\x66\xce" - "\x7e\xbf\x6b\xef\x73\x92\x99\x61\x82\x72\x7b\x3f\xcf\xfb\x4f\xf9" - "\x7c\xc2\x9c\xb3\x7f\xac\xbd\xf6\xda\x6b\xad\xbd\xf6\xde\x6b\xaf" - "\x43\xf4\x77\xfc\x33\x7d\xe4\xf8\x7b\xaa\xff\xe3\xdf\x3f\xfe\xfd" - "\xe3\xdf\x3f\xfe\xfd\xe3\xdf\x3f\xfe\xfd\xe3\xdf\xff\x3f\xff\xce" - "\x9a\xcc\xf4\xfb\x72\xa2\x1e\xb7\xc5\xe6\xa3\x0b\xf6\x37\x5f\x17" - "\x21\x24\x27\xf8\xc8\x62\xe3\x5f\xfd\x8f\x5e\x43\xba\xa9\x9c\x2c" - "\x37\xa4\x52\xca\x94\x1d\x44\x15\x23\x45\xd7\xeb\x5b\x85\x7f\xdd" - "\x56\xd1\x35\xf5\x1d\xa2\x96\x31\x44\xaf\x8f\x14\x01\xc0\x99\xeb" - "\xa3\xa7\x2b\x18\xce\x3a\xbc\x73\xfe\xfa\x91\xc2\x8f\xf4\x22\x1f" - "\xe5\xa6\x70\xfa\xda\x91\x80\x95\x46\xe4\xde\x2a\x82\x11\x70\x2d" - "\x5c\x9f\x61\x4e\xbd\x5e\xe2\x53\x17\x03\x87\x61\xec\x05\x8c\xf5" - "\x97\x80\x91\x62\xe0\x15\x30\x51\x02\xc3\xeb\x76\x93\x2d\xe0\x6e" - "\xbe\x06\x75\x03\xe8\x53\x3a\xd7\xdd\x82\x32\xc2\x4d\x89\x2d\x8e" - "\x10\xd9\x6f\xa0\x84\x13\x94\x5c\x8b\x5f\x13\x7e\xdf\xe0\xfe\xae" - "\x53\xf5\xc6\x30\x0c\xd4\x4d\xe8\x71\x27\x65\xf4\xd7\x05\x6c\x7b" - "\x09\x99\x51\x76\x51\xc0\xd4\x6c\x52\x65\x53\x93\xf4\xb2\x26\x94" - "\x9d\x6b\x94\x55\x79\xa6\x19\x7a\xde\x15\xc8\x73\x44\xe7\x99\x5f" - "\xd3\xf3\x52\x90\x57\x11\x83\x9f\xd9\xdb\x1b\xa2\x13\x94\xb4\x1b" - "\xb8\xd8\x0f\x60\x54\xb8\x8e\x5e\xfe\x2a\x94\x6f\x89\x86\x45\xa4" - "\xe7\x8d\x40\x9e\x2f\x3a\xef\x77\x19\x7a\xde\xb7\x90\x17\x8a\xce" - "\x4b\x30\xea\xd9\x7a\xdc\xc9\xb6\x38\xfd\xe4\xf6\x13\x54\xdb\xdc" - "\x87\xe4\x49\x28\xe3\xe2\x32\x73\xec\x2e\xe2\xb1\xe2\xbc\x03\x35" - "\xfd\xed\x73\x99\x79\x06\x1c\x1f\xea\x47\xd0\x14\xb4\x4c\x2e\x36" - "\xea\x4f\xb5\x33\x0c\x92\x34\x64\x38\x3e\x4a\x9a\xce\x70\xf8\x1d" - "\xcf\xa3\xb9\xdf\xfa\xb3\x9d\xfb\x17\x39\xe6\x44\x66\x80\x1d\x62" - "\x21\x1a\x8a\xbf\x61\x16\x83\x07\x96\xda\x84\xe6\xfc\x36\x99\x45" - "\x59\x4d\xa6\xe6\x16\xe4\x75\x04\xc9\x3e\x8a\x9c\xed\x74\x85\x0d" - "\xf8\xd1\xe6\x55\x64\x71\x16\x8a\xa0\xd7\xd1\x45\xad\xfe\x2e\x72" - "\xfa\x45\xa7\x37\x74\x8e\x4a\xce\x91\xc5\x1b\x3a\x45\x25\x2f\x91" - "\xad\xa5\xf8\x0b\x8a\xc7\x5f\x9a\x49\x90\x73\x34\xd7\xed\xa0\xd6" - "\xaa\x0e\x72\x56\x45\xd7\x75\x7e\x97\x6c\x87\xf1\x8e\xb1\xb3\x32" - "\x1e\x2d\xf6\x10\x85\x92\x6b\x32\x8b\xdf\x22\xb3\xf3\x7a\x32\x1d" - "\xce\x6b\x36\x70\xf1\x31\x2e\xeb\x4f\x92\x65\xd7\x42\xf0\xd0\x49" - "\xc6\xb7\x3e\xf3\xbd\x55\x41\xd3\x01\x5b\x16\x1d\xb0\x1d\xa3\x16" - "\xdb\x64\x6a\x71\x4c\xa5\xcd\x27\x29\xe5\x40\x70\x12\xb5\x98\x1f" - "\x80\x8c\x4d\x25\x6f\x17\x9e\xed\x61\x94\x09\x90\x7d\x39\x81\x3f" - "\xae\x38\x52\xf1\x1c\x59\x7c\x0a\x26\xe8\x7b\xc5\xb1\x4f\x8b\x88" - "\x98\xbe\xfc\x1e\xaf\x1f\x4b\xbf\x4d\x36\xe0\xd7\x09\x5c\xee\x6a" - "\xa7\x94\x6b\xc6\xd8\x28\x03\x38\x0f\xf3\x56\x86\xc8\x5c\x4c\x49" - "\x83\xc8\x56\x9a\xe6\x96\x32\xde\xb5\x73\xab\xe8\x64\x1e\xed\x5e" - "\x9d\x03\x39\x4d\xc9\x42\xdb\x5d\xdc\xde\x66\xc8\xba\xb3\x96\xcc" - "\xdd\x2b\x72\x12\xaa\xb7\x8a\x0e\xe4\xe5\x1b\x79\xe0\xa7\x0e\xe4" - "\x77\x8e\x4f\xa3\x54\x6f\x28\x93\x3e\xe9\xed\x34\x33\x8c\xe1\x01" - "\x4a\x60\x78\x56\x07\x25\xa2\x3f\x43\x80\xcf\x5d\xd5\x48\xff\x1e" - "\xca\xa1\x7e\xbd\x8f\x5e\x9d\xc7\xf5\xc5\xb7\x9e\x0c\x68\xdf\x7a" - "\xf2\x9c\xf6\xe6\x93\xdd\xe2\xcd\x27\xcf\x86\xdf\x7c\xf2\x2b\xe7" - "\x4a\xb2\x84\xbf\xf5\xa4\xbf\xb5\x50\x8e\x41\x6a\x6b\x21\xc6\x20" - "\x4c\x96\x35\xa7\x28\xf5\xe9\x97\x30\xf6\xa1\xcf\x69\xcd\x22\xb2" - "\x69\x49\x3f\x0f\x7a\x43\x9f\xd1\xd3\xc5\x24\xb4\xa4\x5f\x58\xe2" - "\xf5\xaf\x3b\xb9\xde\xa5\x64\xc8\x82\x3e\x5d\x69\xf7\x99\xaa\x27" - "\x72\xbb\xfe\xa4\x06\x17\xfe\xd6\xe3\xcf\x83\xbf\x8d\x22\xb9\x7e" - "\x23\x68\xe5\x1c\xbe\x36\x81\x76\xf6\x12\x8d\xd7\x28\xe1\x24\x5d" - "\x39\x09\xf8\xa7\x0e\x42\xb7\xd1\x5a\xd9\x6f\xe7\x7d\xdf\x45\x25" - "\x3d\x3d\xf9\xc4\xba\x89\xf5\x12\xeb\x29\xb4\xe3\x41\x3b\x0e\x29" - "\x8b\x5b\x45\x40\x24\xff\x76\x1e\xd2\x3b\x03\xab\xf3\x13\xfc\xab" - "\xf3\x4d\xdd\xc9\xbf\x7d\x16\x65\x76\xa3\x4c\x83\x4e\xc3\x4e\x86" - "\x05\x99\xf0\x5f\x19\xa2\x44\xc0\x2c\xfc\xe8\x7c\x9b\x79\xc7\x56" - "\x71\x0c\xe5\x8e\xf6\xc3\x02\x6c\xc0\x01\xfd\xaf\xec\x34\xd2\x40" - "\xeb\x8e\x4d\x28\xc7\xf5\xbd\xc1\x4c\xd6\xdf\x3e\x6f\x41\x27\x59" - "\x43\x94\x2c\xfa\x54\x7b\x28\xd3\xc9\x7a\xf6\xca\x20\x0d\xed\x71" - "\x53\x36\xc3\xe6\x7a\xde\xae\x4e\x42\xbd\x67\x85\x33\x1f\xfa\x8d" - "\x66\xf5\x88\xfc\x04\xe8\xf4\x8e\x03\xa8\xaf\xda\x1e\x9e\x6d\xe0" - "\xc8\x6d\xf0\x58\x4b\x3c\xc1\x0f\x07\x0a\x82\x74\x65\x25\x25\xa2" - "\xde\x23\x0c\x8f\x61\x81\x0f\x7c\xe8\xeb\xb3\x07\x0a\xfc\xa4\x89" - "\x28\x98\x3e\x1d\x5e\x4d\x14\x3c\xa4\x0b\xc0\x63\xfe\x6b\x41\x9d" - "\x2b\x6b\x24\xbc\x87\x3f\xd2\x18\x5e\x90\xcc\x76\x89\xef\x63\x0c" - "\xa3\x87\x75\x0c\x60\x36\x2f\xbf\x9f\xba\xc8\x6a\xf1\x3b\xf3\x13" - "\x5b\x8b\x89\xb8\xfe\x7b\x25\x9d\x43\x44\x77\x4e\x22\xf3\x1c\xe7" - "\x7b\x43\x67\x51\x66\xf8\xdf\x44\x77\x7e\xe2\x95\x5d\x64\x66\x9c" - "\x51\xdf\xc1\x78\x46\x8e\xe5\xc3\xd3\x1e\x9b\x4c\x8f\x4d\x9d\x31" - "\x75\x32\xcd\xbc\x6f\xca\x64\xca\xb8\x6b\x5c\xc6\x1d\x3f\x9c\x78" - "\x07\x65\xff\xf4\xe1\xc9\x94\x3d\x6b\x32\x3d\x82\xbf\xec\x47\xa6" - "\x3d\x3c\x75\xda\x23\x93\x29\xe7\x81\x19\x78\x9b\x32\xf9\xb6\x8c" - "\x1f\x8f\xcb\x9e\x32\x63\x1a\x3d\x34\xe7\xf6\x8c\xdb\x6f\xa7\xfb" - "\xa6\x65\xdd\x96\x91\xa1\xff\xde\x96\xc1\x45\x9e\x98\x38\xed\x91" - "\x71\xd9\x4b\x5e\x2c\x7a\x71\xdc\xac\x19\x53\x62\xe6\xd9\xf4\xf0" - "\x79\x8d\xe9\x1b\x10\x67\xa6\x93\x06\x7d\xb1\x13\xe3\x8e\xbf\xae" - "\xe6\x92\x76\xc8\x7d\xea\x7f\xec\xe4\xf1\x92\x7a\xd5\xca\x73\x95" - "\xb9\xc7\x6d\x6d\x03\xdd\xfc\x4c\x37\xcc\x67\x28\x73\xcd\x39\xe4" - "\xdd\xac\xcf\x1b\x43\x90\x1f\x8c\xce\xbf\xea\x10\xf2\xc7\xb7\xda" - "\x89\xbc\xf8\x03\xad\x03\xd0\x7f\xa0\xa9\x9f\xba\x9d\x39\x43\xc0" - "\xd3\x09\x68\xa3\x03\xf2\x78\xa4\xc7\x9d\x3a\x21\x42\xce\x3b\x30" - "\x26\x47\xec\xab\x28\xf1\x34\xa5\x5e\xd9\x5a\x94\x49\x3c\x36\xde" - "\x22\x1d\xc6\xb9\x7e\x18\xc9\x12\x06\xc6\x1b\x70\x8e\xea\x70\x8a" - "\x23\x74\x82\x8f\xe1\x6c\x46\x9e\x0e\xeb\xa1\x56\xe8\x06\xe8\xee" - "\x07\x35\x67\x3a\x89\xe4\x9a\xe9\x5a\x5f\xba\x9c\x0f\x50\x6f\x8f" - "\xc1\xcb\x28\x1f\x68\x29\x44\xb9\x5d\xd3\x13\x30\xf6\x09\x98\xa7" - "\xd0\x17\x6b\x33\x78\x3a\xa0\x95\x35\x94\x8b\x9e\x1c\x52\x69\x57" - "\x01\x06\xde\xcb\x1a\x5e\x15\x4e\xa4\xad\x92\x69\x09\x9c\x86\x71" - "\x4e\x64\x79\x14\xab\x65\x7a\x22\xd2\x97\x01\xbf\xb6\x30\xd7\x3f" - "\x23\xeb\x0f\x43\xda\xa3\x28\xfb\xaa\x96\xdc\xf0\x1a\xf8\x86\xd3" - "\x60\x23\x8c\x4c\x03\xbc\xd7\x35\x91\x43\xc2\x12\xca\xc1\x73\x45" - "\xf3\xaa\x2e\x3a\x51\x48\x26\x1f\xf2\x34\x27\x60\xf6\xf5\xb7\x3f" - "\x86\xeb\xa2\x2d\x73\x4f\x5f\x3e\xe6\xb7\xab\xd2\x79\x2e\x0c\x33" - "\x3e\x67\xfa\xcb\xa4\x71\x9b\x2c\xd3\x18\x8b\x09\x18\xa7\xa4\x1e" - "\xf7\x55\x35\x31\xe3\xb4\x17\x70\x5e\x05\xdd\xdb\x00\x23\x55\xeb" - "\xce\xe7\x7e\xbd\x0a\xb8\x26\x1d\xae\x01\x23\xa0\xf8\xe0\x2a\x5f" - "\x0c\x1f\xfc\x27\x60\x4f\x1e\xc8\x1f\x41\x31\xf9\xfb\x91\x7f\xbf" - "\x9e\x0f\xd9\x1a\x61\x8f\xce\x1f\x31\x09\xf9\x0f\xa0\xfd\x00\x64" - "\x27\xd1\x47\xa9\x75\x3b\xd9\xf6\x1b\x28\x9f\x1d\x53\xbe\x00\xe5" - "\x1f\xc4\xd8\x06\x58\xaf\x73\xf9\x6a\x9d\x57\x51\xde\x82\xf2\xae" - "\x98\xf6\x77\xa0\xfc\x23\x11\xf8\xc5\xf4\xff\xea\x7c\xe4\xe7\x30" - "\x6f\xe1\x37\x0f\x65\x86\xb1\xbc\xb2\xae\x38\x50\xc0\xb6\xe2\x88" - "\x23\x31\xed\x33\x2d\x9f\xd7\x0c\x1a\x75\x33\x8d\x52\xeb\x74\x3b" - "\xe4\x98\xc2\xe1\x6a\x73\x4c\x1b\x63\x50\x67\x29\xf8\xe7\x55\x83" - "\x37\xe2\xd4\x99\x18\x53\x27\x47\xf2\x96\x6a\x47\x1f\x63\x55\x47" - "\xd7\x43\x91\x30\xb8\x6f\xb0\x8d\xae\x2e\x8e\xe9\x7b\x0e\xda\x5d" - "\xbd\x49\xc9\xf9\x15\xe0\x89\xdb\x91\x36\x03\x30\xdf\x60\x3e\x62" - "\x5e\xf7\xfa\x83\xd0\x93\xd3\x53\xd4\x7c\x7f\xf5\xe7\xd6\x62\xe2" - "\xe7\x71\xfc\xcc\xb0\x45\x5f\x96\x2e\x03\x57\x7f\x8e\x5f\x4e\x6f" - "\xe1\x74\x96\x3d\xd1\xf7\x13\x4d\xc1\x4c\x4b\x80\x8c\x9a\xf0\x1e" - "\xd6\xdb\xb8\x0f\xef\x09\xc0\xff\x35\xe8\x60\xf0\xec\x74\xe6\xc7" - "\x09\x48\xbf\x4b\xcf\xbf\x8d\xcb\xe3\xf9\x36\xfd\x99\xf9\xf6\x35" - "\x9d\x6f\x21\x07\xd7\xdc\x2c\xdb\x96\xb2\xa0\xea\x6b\x8a\xef\xa7" - "\x20\xef\x1a\xfc\xce\xc0\x2f\xe3\xf5\x10\xda\xfe\xdc\x79\x8e\x6c" - "\xce\x30\x6c\x0e\xf5\xfe\x47\xfc\x3e\x8c\xdf\x0f\xf0\xfb\x08\x7e" - "\x6b\x59\x6e\xfd\x2b\xf2\x29\x86\x67\xba\x34\x25\xab\xc3\xd4\x18" - "\xa6\x95\xeb\xf2\xa3\xe4\xf7\xcc\x40\x9a\x50\x69\x26\x45\x73\x3d" - "\xad\x6f\x3a\xb7\x9f\x0d\xf8\x05\xdc\xbe\x2e\xf7\x43\xd4\x38\xa9" - "\x32\x9a\xaa\x67\x56\xe3\xad\xa7\xa9\x72\x09\x91\x6d\xe2\x37\xb3" - "\x24\x20\x04\x7e\xc7\x32\x5d\x7d\x74\x4d\x06\x68\x62\xc6\x3b\xeb" - "\x3e\x93\x2c\x2f\xe1\x5e\x5d\x15\x31\xde\xb0\xc5\xaf\x29\x88\x1e" - "\xef\xd4\x3a\xa6\x19\x8f\xb7\x81\x2f\xe3\x0e\x7e\xe6\x39\x6d\xa8" - "\xc1\x33\xe0\xed\x2e\xe8\xc7\x40\x62\x31\xf3\xdd\x35\x0d\x3e\xfa" - "\x65\xb9\xb4\x83\xca\x1a\xb6\x72\x7e\x00\x7a\x86\x79\x23\xb1\x90" - "\xe5\xe5\x9a\x23\x46\xbe\xcc\x4b\xfa\xad\x8f\xe1\x27\x16\xc8\xbc" - "\x2e\x1f\xd8\xc5\xc8\x63\xdc\x58\x8e\x13\x8b\x38\x6f\xa4\x65\x00" - "\x6e\x4d\xbe\x0e\x37\x91\xed\x07\xb6\x03\x30\x1f\x77\xa2\xcc\x58" - "\x1f\x5d\x99\x33\xd8\x9a\x4b\x78\x6a\x72\xc6\x11\x99\x6e\x71\xd1" - "\x10\x6f\xe8\x28\xcd\x0e\x89\xf0\x38\x17\x25\x79\x43\xbb\x09\x0c" - "\x72\x95\x37\x74\x8c\x6e\x21\xba\xde\x1b\xaa\xc0\x7c\x5b\xc7\xf9" - "\x9f\xa4\x53\x42\x02\x7e\x9d\x37\xb9\x4c\x09\xde\xd0\x7a\x1a\xe3" - "\x32\xe3\xb7\x80\x1e\x18\x22\x7a\xbc\xa1\x2c\x94\xcb\xa3\xd9\x61" - "\x71\x66\xea\x10\xf1\x97\xdc\x30\xa5\x66\x6d\x10\x4e\x6f\x08\xb6" - "\x6f\xe8\x10\xd2\x35\x31\x3b\x7c\x01\x7f\x3d\x42\xf3\xd4\xe4\xcf" - "\x0e\x9f\x11\x53\x36\x7c\x82\xf7\xbf\x08\x61\x22\xe1\x0d\x4d\xa2" - "\xd6\x40\x00\xe5\x9c\x42\x94\xd6\xe4\x3c\x7d\xce\x44\x7d\x98\x3b" - "\xb5\xd2\x9a\x7c\xf4\xd1\xd1\x87\xfe\x61\x5e\x59\xd1\xb7\x1a\xbf" - "\x65\x35\xcb\xe5\xbb\xa7\xc6\x23\x2c\x35\x8e\x5b\xb1\x90\xe0\x3e" - "\x78\x43\x1d\x94\x0b\x53\x78\xf6\x4a\xbf\x60\xfc\x87\xaf\xe5\x75" - "\xc4\x24\x82\xee\xb3\xce\x5e\xe9\x14\xc8\xb3\x88\xa4\x1a\x87\x37" - "\xd4\x45\x68\xc3\x03\x78\x1b\x24\x3c\x4f\x4d\x3d\xca\xfa\xb9\x5c" - "\x24\x1c\x86\xc1\x65\x67\x87\xc9\x8a\xf2\xf5\x7d\x49\x35\x95\xf8" - "\xdb\x8b\xbf\x4e\xd4\xed\x15\xee\xb4\x4f\x05\xe6\x39\xe1\xa9\xb5" - "\x88\xe4\x5a\x5b\x0f\xec\x76\x49\xcb\x30\x0d\x13\xa5\xb5\x18\x7f" - "\x9a\x0a\xde\x02\xbe\xb5\x13\x25\xbe\x65\xb5\x3f\xec\x91\xfd\xa8" - "\xfd\x81\xea\x47\xed\x9d\x9c\xde\x8d\x39\x1e\xcf\x39\xdd\x2a\xef" - "\xa7\xa8\x37\x47\xd6\xf3\xd4\xe6\x08\x4b\x6d\x7e\x10\x32\x03\xba" - "\xba\x98\x8e\xa0\xab\x8b\x69\x09\xf8\x39\x5e\xc7\x46\x12\x49\xb5" - "\xf9\x7d\x49\xb5\x0e\xd4\x2f\xeb\x93\x73\x6f\x6d\x65\x8f\x82\xfd" - "\x26\xe0\xcc\x05\x5f\x26\x02\x46\x25\x60\xd5\xf7\xb9\xed\x34\x7b" - "\xa5\x08\xce\x0e\xad\x0d\xe5\xae\xa4\xc4\xb1\xe4\x02\xbe\xfb\x41" - "\xa3\x3c\xf4\xb3\x05\xbf\x53\x91\x4f\x57\xa3\xad\x4f\x00\xb7\x92" - "\xdb\x43\x3b\xf5\x80\xf9\x0e\x60\xe5\x31\x4e\x17\xdc\x94\x8a\xf7" - "\xbd\x17\x14\x7e\x6d\x9a\xa7\x36\xa8\x59\x6a\x3b\x0d\x1e\x62\xfe" - "\x51\x74\xab\xa0\x59\x01\x11\xf2\x86\x76\x10\x78\x2c\xb5\x35\x70" - "\x8c\xf3\x61\xeb\xef\xc6\x38\x33\x4f\xad\xc7\x6f\x1d\x31\xff\xb4" - "\x16\x2e\xe3\xb2\x9f\x30\x0f\xcd\x2a\x0c\xac\x1d\x47\x85\x09\x78" - "\x77\xe6\x86\x2c\xf4\x74\xa1\xd9\x15\xf6\xd4\x1e\x6c\x2d\xe4\x71" - "\x39\x8a\x3a\x5c\xaf\x80\xac\x09\xb0\x77\x13\x44\xc8\xea\xf0\x9b" - "\xaf\xcc\x77\x8a\xd6\x40\x16\xca\x16\x12\xf7\x87\xf9\x88\xcb\xcf" - "\xec\x12\xbe\xb0\xe5\x6d\x07\xf7\x4d\x0c\x77\xd1\xe1\xae\x3b\x89" - "\xd7\x1c\x87\xbb\xea\x98\x4f\x35\x61\x79\x7b\x3a\x78\xb4\x6f\x66" - "\x97\x6b\xc8\xd3\xe7\x28\x01\x69\xe1\xc3\xf9\xbb\x91\xdf\x82\x72" - "\x87\x24\xdf\xce\x3a\x17\xb2\x86\x2c\xb5\x7b\x43\x9e\xb7\x73\x66" - "\x9d\xeb\x13\x87\xf3\x2b\xe8\xa9\x2e\x17\x68\xb5\x9b\x66\x9e\x0a" - "\x25\xb6\x16\xe6\xa1\x4c\x0f\xd2\xeb\x24\xff\xcf\x3c\xd5\x2d\x66" - "\xbd\x24\xce\xcc\x3a\xf7\x17\x31\x33\x5f\x7c\x92\xeb\xa0\xe1\x57" - "\xac\x15\x1a\xcb\xc5\xa1\x8e\xdd\x74\xc5\x31\x1f\xb1\x4c\x64\xcd" - "\xd7\xc4\xcc\x53\x67\xc4\xd3\x2f\x31\x6d\x26\xd1\xe1\x7c\xc8\x8f" - "\xa3\x82\xe9\xdd\x76\x38\xbf\x09\xed\x4f\x05\x5c\xa7\xf0\x3a\x76" - "\xa0\x6c\xb3\xf5\xa9\x53\xa9\x74\xa8\xa3\x82\x42\x49\xb5\x7b\xc3" - "\xa5\xb5\x07\xb5\xa4\xda\x4e\xad\xb4\x36\x28\x92\xde\x9e\x1e\x2a" - "\x7d\x3b\x27\x9c\xf4\x36\x78\xe0\xed\x83\x18\xa7\x24\x1e\xf3\x5e" - "\xac\xc1\xf1\xfe\xaf\xbd\x3c\xfe\x9e\xb7\xdb\xd0\xd7\x20\xf4\x9d" - "\x50\xbc\xff\x76\x1b\xaf\xa3\x51\x37\xd8\x97\xf4\x76\x27\xca\x05" - "\x95\x7c\xed\xb2\x30\x5f\xca\xf9\xa6\x6c\xd7\x30\xcc\x0f\x89\x7d" - "\x49\xbb\x6c\xf8\x4b\xc7\xdf\x44\xa4\x79\x00\xff\x2a\xc9\x53\x9e" - "\x5d\x1e\x71\x4f\x39\x6c\xc7\x73\xcc\x93\x4e\x91\xb4\xab\x7e\x76" - "\x78\xa2\x13\x74\x84\xac\xec\xf2\x68\xa5\xbb\x2a\x01\xef\x60\x50" - "\xf2\xff\xae\xff\xc5\xf0\xfb\x56\xa7\xf3\x1a\xdb\x8c\xfc\x36\x51" - "\x56\xf7\x60\x0f\xf3\xab\xa5\x6e\xba\x66\xa9\xab\x17\x9e\xba\x9c" - "\x9f\x6c\x10\xfe\xb0\xa7\xce\xa1\x79\xea\xf2\x43\x43\x61\x97\x3a" - "\x9a\x88\x75\x54\xe8\x77\x02\x74\xf8\x03\x68\x52\x27\x79\xc0\xeb" - "\x80\x1c\xac\x1c\xe5\x3a\xdc\x05\x7e\x28\xfc\xb5\xd4\x4f\xad\x81" - "\xa3\x92\xae\x22\xa9\x6e\x3a\xf3\x15\x8f\xf1\xd3\x85\xe4\x12\xa5" - "\x75\x39\x5a\x69\x5d\x7e\xb8\x14\x70\x93\xd0\x4e\xf2\xcf\x4f\x06" - "\xa5\xcc\xfe\x1c\x3c\xdb\x84\x3a\x7f\x20\xc5\xe7\x3f\xef\x1c\x4c" - "\x4f\xb2\xbe\x62\x1d\x35\x3b\x14\x64\xbe\xf9\x92\x75\x9b\xd2\x55" - "\x94\x6b\xe8\x2a\xd6\x53\x6c\xeb\xb3\xae\xd2\x74\x5d\xa5\xe9\xba" - "\x4a\xbe\x5b\xa0\x6f\x3c\x35\x0e\xd6\x49\xb3\x1d\x4a\xd7\xcc\x0e" - "\x67\x08\xf0\x47\x0a\x60\x38\xd4\x78\xa0\x4c\x59\xcd\x06\x59\x5e" - "\xd2\xa9\xa6\x5e\x83\xce\xc1\xdf\x5e\x4d\xe9\x9c\xa0\xae\x73\x4c" - "\x86\xce\x09\x63\xfe\x82\x5c\x69\xf1\x74\x8e\xa6\xeb\x9c\xb0\x50" - "\x3a\x47\xd3\x75\x0e\xa7\x87\x75\x9d\x13\x8e\xa3\x73\x20\xd3\xdc" - "\xdf\x44\x5d\xd7\xb8\x58\xd7\x70\x7f\xc1\x6f\xf9\x9a\xd2\x35\x1e" - "\xd8\xf9\x26\xd6\x35\x61\xd4\xd1\x0c\x5d\xd3\x23\xeb\xd7\xb3\xbe" - "\xe9\xfb\x67\x82\x0e\xb5\x13\xeb\x19\xa9\x53\x42\xd7\x87\x58\xa7" - "\x80\x7e\xf7\xc6\xea\x14\xc0\xdb\x8b\xe7\x54\x5d\x57\x75\x5a\xd7" - "\x8a\x10\x74\xca\xc1\xd9\x8e\x00\xc6\xfa\x73\xac\x75\xa1\xbb\x1d" - "\x45\x2e\xaf\x23\x44\xd0\x05\x41\xd1\xea\x22\xe0\x08\x1e\x0e\x43" - "\x5f\x10\x41\x36\xa7\x87\x20\xe7\xe0\xf3\x9c\xd6\xc2\xcf\x28\x0c" - "\x79\x9d\xd9\xd5\xed\x7d\x3a\x90\x9e\x3a\xf3\x94\xf0\x83\x3e\xbe" - "\xa7\x0b\x5d\xd0\x31\xe9\xfe\xc3\x5d\xfb\x29\xab\x43\x68\x59\xf3" - "\x7c\x76\xc8\x41\xce\xcc\x45\xcd\xd6\xa7\x5f\x4a\x85\xac\x89\x66" - "\xe8\xc6\xff\x6b\xe6\xa9\x54\xeb\xdc\x0e\xba\x36\x6b\xbe\xd0\xc2" - "\x90\x35\xf4\xf7\x20\xfa\xdd\x06\xdc\x3b\x21\x77\x41\xc8\xda\xf4" - "\x50\x8c\xac\x89\xe4\xb7\xff\x15\xcf\x76\x45\xbf\xb7\x83\x90\xb5" - "\x36\x4d\xce\x69\x1d\x72\x7d\x85\x76\xe4\xde\x13\xe4\xad\x4d\x2b" - "\x55\xf2\xa6\x09\x25\x6f\x1a\xd3\xcf\xa4\xcb\x1b\xc6\x02\x72\x63" - "\xc3\x5f\x3a\xfe\xe2\xcb\x5b\x61\x8c\xbc\xbd\xa4\xcb\x5b\x92\x92" - "\x37\x8c\x6b\x62\x78\xb5\x92\x39\x6e\x83\xd7\x61\xfd\x32\x97\x5c" - "\x37\x5d\xb0\xed\x28\xf9\x47\xca\x1d\xe6\x97\x3a\x07\x64\x2e\x1f" - "\x32\x07\x78\xc2\xcf\xfa\x13\xfc\xf9\x5f\x3c\xe7\xcd\x2a\x14\xff" - "\x95\x1b\x1e\xe5\x82\x4c\x39\xa0\xd3\xfe\x02\x7d\xfa\x5f\x4f\x07" - "\xa8\x06\x32\x35\x1d\xb2\x94\x03\x99\xca\x87\x6c\xb1\x4c\x75\x86" - "\x57\x33\xcc\x9f\x77\xf6\xc3\x90\x73\x66\xb4\x4c\xa9\x9d\xeb\xf8" - "\xfb\x7f\x3d\xee\x6b\xa1\x19\x3f\x6c\x62\x7b\x05\xcf\x9d\x3e\xfa" - "\xa8\x5c\x7f\x0e\xf8\x68\xfb\x46\x69\xeb\x40\x16\x0b\x4b\xe8\x9a" - "\x93\x74\x5d\x3d\xf8\x9e\xf0\x9c\x82\xe7\xdd\xb3\x6f\xfe\x04\x36" - "\xc5\x97\x1e\xb4\xdd\xc3\xf2\x28\xdc\x13\xb0\xb6\xa0\x4c\xf0\xa3" - "\x45\xf4\xa4\xa7\x88\xe4\xc6\x6b\x45\x9f\x8d\xf7\x98\xac\x78\x1f" - "\x0e\x1a\x8c\xc1\xef\x88\x1d\xe7\x29\x0d\x7f\xb6\x1d\x6e\xcd\xc5" - "\xf6\x15\x9e\x33\xc4\x0a\x5b\xf2\xe6\xe5\x34\xd6\x1a\x20\x4b\xb5" - "\x5b\xcb\xb1\xae\x4d\xe5\xbd\x96\x34\x7e\x16\xee\xea\x86\xea\xf3" - "\x64\x66\x3b\x52\x4b\x42\x7b\x0e\xab\x10\x4b\xd3\xa9\x7a\x09\xf4" - "\x84\x9b\x6c\xd5\x6e\xd1\x10\xee\x61\x3a\xd4\xe4\x18\xb8\x30\x6e" - "\xc0\xf3\xbb\xc0\xb3\xe9\xd1\x95\x99\xf4\x07\x07\xc5\xdd\xa3\xec" - "\x71\x5f\xd7\xdf\xff\x41\xf2\x43\x06\x4d\xe2\xe7\xdb\x47\x1b\x74" - "\x1a\x64\x3f\xcb\xcc\xf3\x75\x78\xb9\xf0\x6f\x79\x8e\x98\x16\x36" - "\x67\x48\xfc\x15\x74\x74\x95\x84\xe9\xbb\xb3\x57\x5e\x27\xbc\x5d" - "\xa2\xd9\xeb\x38\x45\xd5\xc8\x2f\x29\x16\x9a\x96\xd4\x08\xde\x6d" - "\x08\x75\x2f\x17\xa1\x1d\xd2\xee\xb5\xbb\x7c\x74\xb7\x5d\x8d\x45" - "\x6d\x9b\x5c\xd7\x59\x1a\x42\x80\x75\x15\xc3\x3a\x8c\xfa\xe1\xd2" - "\x46\xd8\xa7\xf6\x7a\x1f\xb5\xc8\x33\x03\xc8\x73\x5b\xe1\x2a\xfa" - "\xce\x49\xb2\xfb\xa4\x6d\xef\x69\x4c\x63\xbd\x80\xb4\x54\xa4\x75" - "\x89\xd2\x46\x1b\xca\x63\x7d\xdc\xe0\x53\xb6\xae\xbd\xcb\x28\x87" - "\xe7\x66\x7e\x8e\xe2\x21\x79\xaa\x41\x18\x2f\xfb\xc0\x61\x48\x82" - "\xce\x56\xc6\xbf\x54\xfc\x65\xc6\xcf\x1e\xd0\xeb\x6f\xe7\xc0\xee" - "\x22\xe7\x1a\x1a\x8d\xf1\x01\x7e\xd7\xcf\x77\x3a\xc4\x09\xe1\xb6" - "\x07\x77\xad\x0a\x62\x5d\x70\x7d\x81\x8f\x5e\xee\x18\xdc\x7e\x86" - "\xdd\x73\x5e\x74\x6e\x59\xde\x4f\xcb\xe3\xb3\x57\x6a\x82\x9f\x59" - "\x2f\x55\x23\x9d\xe9\x06\x38\x7b\x0c\x9a\x0d\x3e\x2e\x8d\xa9\x6a" - "\x1d\x78\x43\x9a\x70\x0b\x6a\xbe\x96\xcf\x0f\x6e\xb8\x46\xd1\xe1" - "\xed\xce\x6e\xe8\x13\xde\x1f\xad\x06\xbd\x97\xda\x44\xb0\xc7\x7d" - "\x03\xec\xff\x5b\xca\xf5\xbd\x98\x80\x37\x34\x8d\x75\x4c\xdc\xf9" - "\x8b\xcf\x67\x06\xe0\x7f\x6f\x42\xeb\x68\xe8\x23\xa9\xa3\x9a\xc6" - "\x94\x28\xbc\x83\x0c\xb7\xb9\xe4\x2c\x75\x20\x7f\x69\x40\x74\x0a" - "\x4f\x93\x8d\xd7\x1a\xcd\xcb\x7b\x39\xed\x4e\xf0\xb6\x68\x5e\xc2" - "\x38\x7d\xef\xce\xe6\x6b\x7b\xe9\x04\xd6\x79\x58\xe3\xf9\xd5\xbe" - "\xcc\xf7\xec\x07\x8a\x48\xdf\xeb\xb9\xa1\xc6\x47\x63\x73\x0c\xbc" - "\xd8\xde\x00\x7d\x99\xd6\x6d\x6c\x77\xf0\x9e\xfb\xd2\x62\x11\x64" - "\xfb\x03\x65\x0f\x19\x7d\xe0\xfe\xe9\xfd\xf2\x45\xf6\x0b\x38\xf8" - "\xb1\x66\x96\x34\x58\xba\x92\x2c\x76\x45\x6b\x0b\xf7\x97\xfb\xc2" - "\x7d\x96\x7d\x91\xba\x16\x73\x45\xe8\x4e\xac\xc1\x64\x3a\x60\x7d" - "\x0f\xeb\x9f\x5b\x02\x8a\xa7\x6e\xa8\x89\xe5\xa3\xfe\x71\xb4\xd4" - "\xd6\x3b\x2f\xd0\xb5\x4e\x4d\xb4\x03\xe6\x3e\xd0\x29\x91\x7f\x35" - "\xb6\xb9\x83\xcc\xbf\x1f\xfa\x78\x6e\xf6\x16\x9f\x63\x5b\x9b\xcb" - "\x5e\x8d\xb2\x1d\x28\xf3\x2f\x7a\xd9\x7f\x51\xe7\x2d\xf2\x77\x18" - "\xff\x62\x3e\x7b\x07\x78\x34\xfb\xe5\xbc\xff\x5b\x9f\xf1\x2e\xf0" - "\x8e\x5f\x87\x28\xfd\xd0\x17\x1f\x97\xba\x7a\x9e\xd7\xc2\xe7\x45" - "\x17\xda\xf9\x16\xf3\x94\x73\x25\x7d\x1b\x7c\x79\xbc\x64\x0d\x5d" - "\xcd\xfc\x24\x92\x1a\x47\x2b\xba\x8f\x49\x11\x6e\xd8\xa1\xd0\xaa" - "\x85\xcb\xe9\x3b\x90\xa3\xb4\x93\x34\xe6\xfa\xdc\x62\x3b\x70\x25" - "\xda\x72\x9a\x48\xea\xa0\xa4\x46\x9b\x37\xf4\x05\x55\x9f\xe6\xfd" - "\x96\x31\x99\x06\x2f\xe2\x39\xeb\x52\xfa\x02\xf3\x4d\xba\xda\x2f" - "\x18\xb3\x8f\xf7\xd7\xdb\x69\x4c\x1d\xf7\x17\x7f\x09\x48\x7b\x43" - "\x9c\x17\x73\x85\x9c\xdb\x76\xd9\x7c\x34\xe6\x08\x7e\xd3\xe5\x9f" - "\x9b\xe6\xe9\xef\x36\x94\x5b\x2f\xce\x6b\x5c\x26\x1d\x69\x55\xc2" - "\x9d\xc0\x32\xd1\x84\xb6\x0f\xfa\x68\xf2\x44\x35\x36\x63\x2a\x18" - "\xd6\x20\x38\xd8\x30\xb6\xc4\xbc\x79\x82\x6e\xbc\xcd\x5e\x92\x00" - "\x3c\x6e\x1c\x22\xe5\x02\xb0\xaa\x4d\x4a\x6f\x6b\xc0\x75\xa7\x5b" - "\xcb\x87\x8e\xce\xd7\xca\xf6\x65\xca\x67\x3d\x4f\xe8\xf3\x69\x7c" - "\xf8\x4d\x63\x9a\x47\x31\x8f\xdf\xb8\x51\xc1\x69\xb2\x35\x8f\x3a" - "\xc9\xef\x9b\xf8\x3d\x60\xf9\x38\xd3\x5b\x99\x89\xf6\x4f\x72\xbb" - "\x1b\xd5\x3e\xc0\x8d\x9b\xba\xd1\x46\x8f\xfb\xc6\x8d\x3e\x1a\x97" - "\xa7\xce\x1a\x3e\xce\x1c\x44\xf6\x52\x59\x76\x58\xe6\x94\x4c\x7f" - "\x7f\xe6\xe1\x1a\x96\xbf\x5d\x96\x6e\xcb\xae\x74\x5d\x6f\xf0\xde" - "\x4a\x4a\x3b\x7d\x3f\xeb\xb0\x4d\xf2\xb7\x49\x98\x6e\xec\x7a\x57" - "\xf3\x9b\xf8\x3c\x48\xa9\xaf\xef\x67\x5d\xfc\x77\x13\x14\xe0\x4d" - "\x19\xf8\x9b\xa4\xbf\x4f\xc7\xdf\x5c\xfc\xed\xc6\xfb\x24\x49\xbb" - "\xed\x79\x09\x3e\xe4\x75\xc3\x7e\xe7\x77\x1f\xdd\x94\x2e\xb6\x8f" - "\x31\x09\x8b\x7a\xae\xfe\x36\xef\x25\xdc\x34\x07\x63\x70\x4c\x8d" - "\x05\xc3\xa1\x04\xe0\xc6\x74\x17\xce\x4a\x11\x6c\x29\x09\x00\xef" - "\x9b\xd6\xb7\x54\x06\xc8\x7e\x13\xf7\xff\x26\x0f\xf7\x29\x00\xfa" - "\xf3\xef\xd2\x4a\xe1\x3f\x50\x15\x22\x3e\x97\x02\x2c\xc8\xff\xcf" - "\xa6\xaa\x7d\x89\xa6\x4c\x86\xa7\xf3\x84\x30\xfa\xaf\x74\xda\xc7" - "\x99\x3c\x96\x80\xf5\x19\xfa\x6e\x3d\x4d\xdf\xbf\x46\x24\xef\xcb" - "\x3c\x90\x4f\xb4\x03\x7a\x04\x73\x8d\xdc\x2f\x87\x5e\x62\x98\x98" - "\xff\x6f\x9c\x64\x9c\xa3\x6c\x42\xfe\x66\xe4\x61\xee\xf1\x1f\xce" - "\x0f\x12\xc3\x0a\x73\xff\x50\x7f\xbf\xe6\x37\x63\xae\xc6\x98\x7f" - "\x9c\x59\x52\x08\x3d\xd3\xaf\xb7\x6e\x6a\x5a\x73\x4a\x04\x8d\xfe" - "\xf1\x59\x65\x8f\xfb\xfb\xe0\xff\x45\xf3\x06\xe5\xff\x7e\x9c\xd3" - "\x17\x1d\x18\xa3\xc6\x4c\x03\x5d\xa2\xc7\x2c\x3d\x5f\x8d\xd7\xf7" - "\xab\xa2\xc7\x2b\x1d\x3d\xf9\x7e\x07\xfe\x42\x78\x4e\x51\xef\x91" - "\x7f\xdf\x3f\x12\xf1\x0e\xee\x48\x9f\x03\x7c\x30\xff\x8f\xc9\x51" - "\xe3\xc0\xe9\xe8\x07\xf3\xc8\x57\x64\xe1\xfd\x39\x3e\xa7\xe4\x74" - "\xe6\x67\x4e\xd7\x60\xcf\xa0\x3f\x7e\xe4\xa7\xb2\xac\x6e\xd1\x28" - "\x2a\xdf\xbb\x1e\x3c\xb7\xaa\x97\xf1\xbf\x4f\xee\x29\xae\xf5\x78" - "\x98\x4f\x51\x27\x60\x0d\x79\x60\x57\xa6\x67\x19\x74\x45\xbd\x09" - "\x9c\xcf\x3c\x89\xf4\x3c\xd0\xa5\x46\x9e\x43\x62\xed\x17\xdf\xd6" - "\x48\xf7\xf4\xdb\x64\x96\x5d\x1e\xd6\x47\x5d\x74\x73\x05\x74\x16" - "\xc6\x76\xdf\x44\x35\xd7\xdc\xfc\x06\xbf\x43\x57\x1e\xc7\x73\xf9" - "\x61\xe8\xa4\xde\xb2\x06\x57\x9f\x89\x86\xf5\x9a\x28\x33\x54\xf6" - "\xe5\xee\x50\x72\xfd\x46\x6f\xe7\x1e\x6a\x0d\xbd\x4f\xf6\xe7\x24" - "\x8c\x52\x2f\x7a\xee\x5c\x29\xc2\xef\xf5\xd6\x9b\xbd\xa1\x33\xcd" - "\x98\x9b\xaf\x3b\x49\x37\x4b\x7a\xbc\xd2\x8e\x59\xff\x69\x09\x5b" - "\xa7\xcf\x97\x9e\xcd\x0b\x45\x68\xf3\x09\x11\x80\x7d\x97\xbc\xa9" - "\x97\xc6\x6e\x5b\x45\x19\x55\xbd\x34\x66\x67\x2f\xa5\x8b\x2f\xd3" - "\x4d\x55\xb0\xdb\x9e\x3e\x97\x4a\xd0\x09\x39\xc3\x0b\xc9\xb2\x73" - "\x15\x49\x1e\x09\x97\xc2\x7e\x0b\xc1\x7e\x3b\x93\xce\xba\xb1\xdf" - "\x7e\xeb\x93\xb6\x71\xe3\x7a\xc5\x47\x8d\xeb\xaf\xcc\xa7\x84\x94" - "\x79\x94\x0a\xfc\x9c\xa7\x29\xfd\x8f\x29\x1d\xb0\x1d\xd1\x67\x9f" - "\xde\x5f\xd0\xee\x98\x35\x9f\x86\xc9\xbe\x42\x5f\x8b\xd2\x7d\x13" - "\x07\x9d\x87\x4d\xcc\x53\x01\x96\x1b\xee\xc3\x71\x3e\x2b\xdd\x33" - "\x2a\x68\x5e\x5a\x25\x82\x9c\x5e\x74\xbd\x08\x22\xfd\x20\xb7\xdd" - "\x80\xf4\x1e\xf7\xcd\x7e\x9f\xa9\x6a\xee\x60\x3c\x8a\x75\x92\xae" - "\x57\x6e\x79\x49\x98\x5c\xcc\xa3\x07\xd7\x84\x60\x7f\x9f\x66\x99" - "\xbd\xa5\x70\x76\x81\x08\xd9\x17\xf3\xb9\xf5\x2d\xf3\xf8\x4c\x9d" - "\xcf\xd2\xde\x85\x6d\xf3\x75\xe7\xe8\x3c\x5f\xf0\x7a\xc1\x5a\x00" - "\x98\x65\xbb\x0e\x0a\xac\xd3\xbf\xa9\x1d\xcf\xbe\x1c\xaf\x4b\xbf" - "\x91\x5b\x76\xfb\xe8\x27\x66\xc6\x9d\xcf\x4c\x59\x77\xc2\xde\xba" - "\x1a\x78\x75\x06\x40\x07\xe4\x63\xfe\xff\x71\x9b\x7e\xee\x29\xfd" - "\x51\x90\x86\xf9\x7f\xc6\x68\x4e\x2b\xba\x9e\x6c\x45\x76\x31\x98" - "\x4d\x63\x96\x3e\x22\x26\xfa\x56\x8f\xfb\x9f\xd2\x0c\x38\x98\xa7" - "\x7e\xd9\x6d\x7a\xf4\x51\xa4\xa5\x1b\x70\x50\xe6\x1a\xbc\x4f\xec" - "\x2f\xa3\xea\x4c\x8f\xa8\xf3\x68\xb7\xe9\x96\x5f\x22\x6d\x6e\x4c" - "\x9d\x82\x98\x3a\xc5\x11\x75\x5c\x7a\x3b\xe5\x31\x75\x6a\x62\xea" - "\x34\xc4\xc1\xad\x25\xa6\xce\xd1\x98\x3a\x1d\x71\x70\x0b\x46\xd7" - "\x19\x6b\x89\xae\x33\xd6\x16\x41\x4b\xf6\xd7\xc8\x40\xda\xd8\x98" - "\x3a\x93\x62\xea\x64\x19\xef\x83\xf9\xe4\x2c\xdd\x41\x36\xf0\x66" - "\x27\x8f\xe7\xeb\x18\x9f\xee\x37\x9f\xef\xd1\xeb\x7a\x2e\xee\xd7" - "\xd8\xaa\x98\xf6\x76\xc7\xb4\xd7\x74\x71\xbf\xc6\x1e\x89\xa9\xe3" - "\x8b\xa9\xe3\x8f\xa8\x53\xa3\xda\x19\x67\x8e\xae\x33\x2e\x2d\xba" - "\xce\xb8\x31\x17\xf3\xd5\xb8\x89\x31\x75\xa6\xc7\xd4\xc9\xf9\x1a" - "\x5a\xf0\x3c\xae\x7c\xa7\x46\xb2\xad\x7c\x3f\x6c\x84\x71\x9f\xb2" - "\x4f\xc0\x16\xb4\xb1\xab\x37\x38\x84\xcf\x3f\x78\xbe\x3a\xe0\x08" - "\x62\x6e\x19\x87\xf5\xcf\x1d\x76\x63\xce\x62\x7f\x09\x96\x69\x65" - "\x63\x8f\xf3\x0c\x66\x8b\x72\x3b\x86\x2f\x15\xb7\x75\x60\x34\xcf" - "\x53\xe3\x02\xfd\x36\xb1\xf2\x2f\x22\x05\xe7\xd6\x19\x0c\x87\xdb" - "\xaf\x56\x7e\x18\x09\x6c\x93\x1f\x70\x70\x9d\x5b\xd3\x23\xec\x68" - "\x6e\x3f\xb0\x67\x55\xd0\x1c\x8d\xc7\xad\x96\x4b\xe0\x91\x02\xdb" - "\xc8\xd2\x5a\x45\xc4\x67\xcc\x87\xab\x60\x03\xc1\xee\x67\xdc\xda" - "\xe9\xd6\x72\x69\x93\x2d\xee\x25\x7e\xf6\x16\xdf\x2d\xcf\xa0\x95" - "\x4d\x7a\xeb\xc1\x16\xb4\xcf\xb6\x7b\x4b\xe1\x59\xea\x96\xf3\x2f" - "\xdb\x6e\xb7\x9e\x3b\x50\xec\x67\xbc\x9a\x0d\xff\x0c\x1f\xdd\x1a" - "\x90\xb6\x86\xa7\x49\x9e\x8f\xf3\x99\xd1\x81\xc0\x44\x2e\x03\xfe" - "\x1f\x77\xc8\xe8\x2f\xe6\x7a\xf0\xc0\xad\x55\x97\xa2\x99\x1a\xc3" - "\xf1\xa3\xa3\x79\x72\x08\x78\x65\x7c\x46\xf4\xb8\x8f\xcf\x8c\x1e" - "\xf7\xf1\xd9\xd1\x3c\x69\x02\x4f\x8e\xcf\x8b\xa9\x53\x14\x53\x67" - "\x7d\x44\x9d\x72\xbd\x9d\xca\x98\x3a\xf5\x31\x75\xf6\x46\xbc\xa3" - "\x8f\xe3\x0f\xf6\xaf\x7d\xa4\xef\xcf\xf8\xb6\x88\x77\x53\x85\xd4" - "\x9f\xe3\xbb\x8c\x34\xde\x43\xda\xb9\x55\xf9\x9e\x28\x78\x19\x96" - "\x18\x79\x47\xf9\x8c\xd1\xd1\x38\x64\x8c\x8d\xc6\x21\xa3\x5f\xfe" - "\xb7\xa8\xb5\xdb\xef\x4f\xd0\x6d\x69\x92\x87\x20\x23\x98\xb3\x67" - "\xf3\x3b\x60\x55\xa2\x3c\xe8\x90\x51\x10\x03\xaf\x38\x06\xde\xc6" - "\x88\xf7\x54\xbc\x57\x45\xf4\x21\x35\xd1\x26\xfd\xf8\x60\xbf\x65" - "\xec\x31\xd2\x79\x4d\x09\x7c\x3b\x9d\x72\xae\xc9\x64\x9f\xaa\x11" - "\xed\x94\x51\xcb\xeb\x4f\x1d\x66\xa4\xfc\x93\xde\xaf\x40\x34\x1e" - "\xb7\x99\xa3\xf1\xb8\x2d\x2d\xa2\x5f\x01\xeb\x5a\x7a\xc8\x1a\x7a" - "\xf8\x71\xb6\x7d\xd8\x17\x4e\xfa\x36\xad\x81\xcd\x76\x8e\x52\xd9" - "\xa7\xec\x44\x11\x25\x7a\x1d\x9d\x58\xcb\x35\xba\x06\xe5\xa7\xe4" - "\xa6\x54\xdd\x2f\xcf\x0e\xf8\x45\x06\x3f\x6a\x65\x4d\xa9\x5a\xe9" - "\xde\xb1\x48\x83\xfe\x1b\x4f\xca\xce\xfd\xc8\x21\x9c\x39\x95\xa0" - "\x27\xd6\x45\xb7\x2f\xd3\xd7\x11\x63\xd8\x37\x0a\xba\xa7\x13\x73" - "\x7c\x8a\x3a\x1b\xbf\xad\x29\x82\xaf\x03\xf6\x55\xf7\x8a\x76\xba" - "\x7d\x2d\xdb\x00\x2c\xa3\xec\x63\x75\x20\xe4\x27\x5e\x7b\x7b\x43" - "\x27\xa5\xed\x86\x7c\x97\x5e\x37\x18\x51\xd7\xaf\xaf\x8d\x79\x1e" - "\x35\x8f\x0f\x91\xf9\x40\xc0\x4f\x80\x93\xa6\xec\xbd\xdb\xd7\x1e" - "\x80\xbc\xf6\xb8\x6f\x1f\x6b\xd4\xe1\x75\x34\xd7\xb1\x16\x91\xf9" - "\xd6\x62\x32\x37\xaf\x6a\x97\xb0\xf5\xb1\xef\x84\x2d\xdd\xe5\x2d" - "\xee\x24\x6f\xa0\x8d\xf7\xba\xcc\xca\x4f\xe5\x76\x57\x62\x90\x2c" - "\xdd\xa5\x4d\xb0\x2b\x6f\x77\x85\x4b\x9b\x78\xbd\x64\xf7\xd1\x6d" - "\x75\xac\x6f\x22\x69\x37\x6d\x5a\xf6\xc3\xb3\x67\x8e\xfb\xe9\xc3" - "\x33\xe6\x4c\xbb\xdb\x3e\x67\xd1\x0b\x0b\xf2\xc6\xbd\xb8\xac\xc8" - "\xbe\x62\xc9\xa2\xa2\x45\x8b\x7f\x66\xcf\x70\xdc\xe8\xb0\xcf\x2f" - "\x52\xbf\xe9\x05\xf3\x97\x16\x4d\xe6\xc7\xb1\xf6\xc2\x25\x0b\x96" - "\xcb\xc7\x9b\x93\x29\x1a\xc8\xa2\xa2\x05\x4b\xec\x37\xe6\x8d\xb5" - "\x3f\x30\x7f\x51\xc1\xb2\x25\x0b\xe2\xc2\xba\xdb\xbe\x64\xc1\x92" - "\x05\xf3\xf3\xec\x93\xed\x19\x0c\x39\x12\x5c\xc4\x78\x66\x18\xf3" - "\x18\xcf\x5f\x5b\xdc\xe2\x88\x3e\x9f\xf9\x14\xff\xdc\x31\xe7\xe2" - "\xb9\xec\x8e\xfc\x68\x9e\xbb\xc3\x11\xcd\x73\x77\x78\x2e\x9e\xcb" - "\xee\x88\x99\xff\xee\x88\x99\xff\xee\x68\xba\x78\x2e\xbb\x23\x66" - "\xfe\xbb\x23\x66\xfe\xbb\xa3\x7f\xfe\x03\x2f\xf9\xd6\x49\xbd\x30" - "\x21\x66\xfe\x9b\x10\x33\xff\x4d\x18\x13\xf3\x3e\x21\xe2\xfd\x6a" - "\xbc\x4f\x8d\x9c\x1f\xf1\x3e\xc7\x90\xcf\x01\xfd\x32\x21\xdf\x28" - "\xc3\xba\x1e\xba\xb9\x43\x2f\xeb\x8a\x28\xdb\xa9\x97\xad\xe8\x97" - "\x3f\x3e\xfb\x46\xba\x5a\xaf\x4f\xb8\xc0\x3a\x9d\xfd\xd0\x78\x6e" - "\x82\x7c\x5c\x77\x9a\x26\xbc\xc4\xb0\x98\x87\xd9\x2f\x51\xbc\xf9" - "\x64\x4f\xf5\x08\xb2\x70\x9d\xea\xd7\xc8\x2c\xdc\xb7\x6f\xc4\x2f" - "\x21\x2d\x05\x7f\xd0\x29\x13\x60\xff\xee\x18\xab\xe6\x8b\x3b\x33" - "\xa5\xcd\x8f\x3a\x0a\xfe\x9d\x72\x5d\x03\x38\x36\xd4\xb1\x6c\x51" - "\x73\x71\x07\x9e\x53\x98\xa7\x51\xdf\x2c\x4c\xb7\xff\x07\x7e\x09" - "\x69\xa9\xf8\x4b\xeb\x71\xdf\x99\x69\xc0\xe3\x33\xf2\x78\xf2\x1f" - "\x6b\xe7\xf6\xaf\x07\x4d\x64\xdd\xe2\xd6\xda\xbc\x1a\xdb\xd6\x77" - "\x16\xa9\xbd\x85\x86\x1a\xe1\xfe\x24\xa7\x1a\xe9\xf1\xd7\x49\x77" - "\xc2\xfe\xbb\x33\x5f\xed\xb7\xdc\x89\xf1\xff\x49\x85\xda\x3b\x6d" - "\xa8\x81\xbe\xed\x3d\x41\x3f\x78\x14\xbf\x7d\xf8\xbd\xcb\x80\xdf" - "\x2c\xd7\xdb\x77\x1e\x15\xee\x84\x47\x18\x6e\x4c\x7a\x17\xf4\x5b" - "\xaf\x35\xe4\xca\xb9\x38\xef\x07\x58\xc3\x24\x3e\x1c\x27\xdd\x0e" - "\x9b\xa1\xd7\x47\x3f\x98\xc3\xf8\x46\xa4\x4f\x14\xee\xe1\x73\xb8" - "\xbc\x8f\xdb\x43\x9d\xc1\x6c\x6d\xc3\xef\x54\xf9\x89\xff\x60\x7d" - "\x4c\x3f\x2e\x9c\xa0\x1f\x26\xa8\x7e\xfc\xf0\xa9\x98\xb6\xab\xe2" - "\xf7\xe3\x07\x7b\xd0\x8f\x0b\x83\xf4\xe3\x88\xa4\xad\x09\x7d\x31" - "\x5d\x94\xc7\xf6\xcf\x05\x49\xf7\xa8\xf4\x1f\x9a\x75\x5b\x28\x80" - "\x75\x58\x2a\xf2\x64\xdd\x47\x8a\x07\xc6\x4d\x2f\x37\xd6\x5a\x49" - "\xd9\x17\xb7\xf9\xc3\xa9\xc2\x3d\xec\x11\x1f\xfd\xb0\x58\xc2\x19" - "\x48\x9f\xab\x70\x01\x9d\x4c\x4c\x27\xf4\x07\xf5\x06\x1b\x6f\x63" - "\x5d\xa2\xf6\x42\x7e\x08\xf9\xff\xc1\x3c\x63\x2f\x73\x69\xb1\xf0" - "\x1b\x74\x44\xde\xc1\x98\xbc\x60\x44\x5e\x47\x54\xde\x9a\xfe\xf4" - "\x90\x91\xfe\xcd\xc6\x69\xe2\xd8\x98\x71\xc2\xf8\x4c\xdc\x1f\xdd" - "\xef\x89\x93\x54\xff\x30\x46\x17\xd1\x7a\x62\x0e\xc6\xa8\x2f\xfe" - "\x18\x4d\x2c\x8a\xcf\x6b\x13\xe5\x3e\x9a\x18\x41\xf1\xe0\xd5\x63" - "\xec\xfa\x24\x0f\xea\xe3\x74\xf1\xf8\x4c\x3c\x64\x8c\xcf\x37\xeb" - "\xe3\x5d\xa9\x31\x7d\x0c\x9f\xa0\xbb\x36\xa9\xbe\xde\xf5\x79\x34" - "\xec\xbb\xd2\xe3\xf3\xe2\x5d\x99\xe8\x67\x38\x7e\x3f\xef\x9a\x3b" - "\x38\x2f\xde\xe5\x40\x7f\xc2\x17\xf3\xe2\x5d\xca\x87\x49\xe7\xc1" - "\x98\xbc\xdd\xc2\x1d\xb7\x9d\x16\x67\x88\xed\xdc\xbb\xf8\x2c\xc5" - "\x16\x91\x7e\x2c\x9a\xff\xd0\x07\xae\xc7\xf4\x0b\x29\x3d\xcb\xe3" - "\x70\xc2\x4e\xa6\xaf\xe3\xc9\x1e\xf7\xdd\x93\x62\x68\x75\xe6\x04" - "\xdd\xbd\xbf\xdb\x94\x50\xa7\xe8\xf5\xa3\xb5\xd1\x38\xdd\x9d\x13" - "\x9f\x5e\x77\x17\x82\x5e\x67\xe2\xd3\xeb\xee\x8d\x83\xd3\xeb\x6e" - "\x1e\xff\x33\x17\xd3\xeb\xee\xe6\x48\x7a\xc1\xd6\x95\xfd\xfb\x9e" - "\x0d\xbc\xd1\x97\x2b\xaa\xb9\xaf\x61\x4a\xb5\x82\x57\x54\x9d\x2e" - "\xae\x13\xb0\x06\x15\x9f\xc0\x86\xb4\x9c\xa6\xbb\x8f\x19\xf2\x3f" - "\xbc\x92\x86\x89\xbe\x27\xd9\xa7\x28\x81\xeb\x79\x1d\x67\x9a\xbd" - "\xa1\x0c\xe2\xf5\x47\x74\xbb\x3f\x9a\x18\x5f\x17\xfc\x28\x1b\x34" - "\x7d\x2d\x4e\x7a\xbe\xf2\x27\xfb\x51\x4d\xb4\x8e\xf8\x91\x2b\x7a" - "\x8c\x40\x37\xd4\xa3\x81\x3b\x38\x97\xfc\xbb\xf4\x98\xfd\xc8\x7f" - "\xf1\x98\x4d\x7a\x55\x8d\xd7\xa4\x97\xa2\xf1\x9b\x64\x89\x3f\x5e" - "\x93\xec\x83\x8f\xd7\xa4\x49\x83\x8f\xd7\xa4\x1c\x1e\x2f\x1f\x4d" - "\x2a\x8f\x9e\x37\x26\x15\x46\xf7\x77\x92\x94\x61\x61\x1a\x7a\x35" - "\xbf\x7f\xd3\x7e\x1b\x7f\xac\xe3\x78\xac\xaa\x4b\x08\xbc\x9c\x70" - "\x3d\xe3\x78\xb9\x30\x06\x85\x0d\x1a\x96\xaf\x8a\x7f\xde\xca\x6b" - "\xdc\xd6\x4a\x22\x3e\x47\xb6\x5f\xcb\xb6\xfb\xe4\x05\x9a\x89\xda" - "\xf0\x6c\x3a\x41\xf7\xde\xa6\x99\x4c\xc5\x7c\xe6\x29\x7d\xb7\xe5" - "\x1e\xc2\xe4\xe2\xc8\xb1\xe0\xb3\x4f\x5e\x9b\x6e\x56\x6b\xa7\xbf" - "\x9c\xa0\x7b\x86\xa8\x71\xb9\xf7\xaa\x68\x3a\x4e\xae\x89\x3f\x2e" - "\x93\xf7\x62\x5c\xfe\x12\x7f\x5c\x26\x1f\x1d\x7c\x5c\x26\xfb\x31" - "\x2e\x7f\xb9\x58\x8e\xee\xb1\xe8\x72\xb4\x8e\xeb\xd8\x17\xf3\x7a" - "\xfc\x9e\x95\x5c\x06\xcf\x90\x91\x7b\xe6\x73\xfe\xb8\x2e\x43\x8e" - "\x64\x9d\x49\x80\x25\xdb\xd7\xcb\x4c\xd4\x61\x44\xc2\x9d\x67\xed" - "\x8a\x27\x27\xf7\xf0\x1d\xf2\x84\x5b\x0b\xc9\x02\x1a\xe6\xec\x60" - "\x18\x4b\x88\x00\xe3\x30\x97\xe3\x74\xac\xf0\x23\xe4\xe4\x9e\x7a" - "\xa3\x1c\xeb\x3a\xbd\x6c\x8d\xe8\xc9\xe7\x9d\x80\xd8\x36\xf5\xfe" - "\x0f\x93\xf3\x08\x97\xe7\x72\x31\x65\x82\x4a\x1e\xef\x9d\x14\x2d" - "\x8f\xf7\xa6\x46\xf3\xe7\x64\x49\x27\x0d\x7a\x0e\xcf\x79\xc0\xe1" - "\x1b\xf3\xd7\xa5\x65\xf3\xde\x8d\x31\xb2\x09\x1e\xc8\x1c\xa7\x78" - "\x20\xf3\xca\x68\x5c\xef\xad\x8b\xcf\x03\xf7\x36\x0d\xce\x03\xf7" - "\xb6\x0d\xce\x03\xf7\x06\x98\x07\x7c\x94\x39\x36\x5a\x36\x33\x53" - "\xa2\xfb\x8e\x76\xa5\x6c\xd2\x55\x97\x23\x9b\xb0\x85\xae\x1e\x4c" - "\x0e\x59\xa6\xd8\x87\xa4\xba\xd7\x38\xeb\xf8\x46\x34\xb3\x40\xae" - "\x18\xbf\x66\xde\x53\x82\x8e\x9f\xc8\x34\xdc\x29\xef\x06\x66\x1e" - "\x8d\xa4\xe3\x66\x75\x7f\xcd\x79\x82\xee\x7b\x9c\xcf\x95\x15\x3d" - "\xef\xbf\x3e\xba\xff\x99\x81\xf8\xf4\xbc\x2f\x05\xf4\x74\xc6\xa7" - "\xe7\x7d\xe9\x83\xd3\xf3\xbe\xa9\x7c\x37\xe8\x62\x99\xba\x6f\xae" - "\x7d\xb9\xb4\x51\x64\x9d\xd3\x74\xdf\x07\xdf\x6c\x7e\xba\xaf\x22" - "\x7a\x7e\xba\xaf\xf8\xf2\xe7\xa7\xfb\xda\xe2\xcf\x4f\xf7\xf9\xe3" - "\xcf\x4f\xf7\x5b\x94\x3c\xdc\x9f\x19\x2d\x0f\xf7\xdb\xa3\x79\x22" - "\x33\xf0\x3f\x37\x3f\xdd\x5f\x1e\x23\x03\x5b\x4e\xd0\x94\xab\x60" - "\x53\xb8\xd4\xb8\x4d\xf9\x2c\x06\xc7\xdd\xf1\xc7\xed\xfe\x16\x8c" - "\xdb\x96\xf8\xe3\x76\xbf\x6f\xf0\x71\xbb\x3f\x84\x71\xdb\x72\xf1" - "\xb8\x4d\x49\xbb\x7c\x9b\x62\xca\xf4\xe8\x31\x9b\x92\x71\xf9\x63" - "\x36\x65\x63\xfc\x31\x9b\x52\x17\x7f\xcc\xa6\x34\xa9\x31\x9b\x12" - "\x88\x1e\xb3\x29\x47\xa3\xc7\x0c\x74\xfb\x3b\xc7\x0c\xe3\x53\xa7" - "\xfc\x13\xa6\x3e\x8a\x75\xfb\xb0\x1e\xf7\xd4\x2c\x1f\x4d\x4b\x53" - "\x6b\xeb\x69\x6a\xee\x50\x63\xf8\x1e\xca\x64\x5e\x3c\x0f\x4c\xcd" - "\xd7\xd3\x7e\x7a\xf1\x38\x4c\x5d\x0f\x1d\xdd\xd5\x52\x2c\xcf\xb6" - "\xd4\x18\x32\xcd\x51\xae\x79\x15\x9f\x4f\x4d\x95\xfe\xeb\x18\x63" - "\xe1\x0d\x86\x88\xf5\x3a\xca\x07\x18\x0e\xdf\x89\x8c\x81\x75\xe4" - "\x72\xe6\xf8\xc1\x7d\x6a\x1a\xea\x9a\x4b\x6e\x07\xbc\x69\x5f\x28" - "\x5e\x9d\x16\x6b\xff\x56\x23\x6f\x9f\xe2\xd3\x1f\x6f\x88\xc6\x61" - "\xda\x9c\xf8\x7c\x3a\xad\x00\x7d\xa8\x8e\xcf\xa7\xd3\x3c\x83\xf3" - "\xe9\x34\x8c\x3f\x55\x47\xac\x7d\x46\x3c\x1d\xf2\xc5\xac\x7d\xa6" - "\x1d\xb4\x06\x14\xef\x48\x9b\xa8\xb4\xa1\x0e\x38\xc7\xda\x7f\x18" - "\x9b\x07\x5e\xd0\x71\x5e\x10\x5d\xff\x81\x41\xec\xbf\x07\xd8\xfe" - "\x7b\x2f\x3e\xce\x0f\x5c\xc2\xfe\x7b\x80\xed\xbf\xf7\x2e\x96\xad" - "\x07\x74\xfb\x2f\xde\x1a\xef\x81\x8d\xf1\xc7\xff\x81\x98\xf1\xa7" - "\x9c\x22\xac\x87\x65\xfd\xe8\x72\x87\x22\xcb\xb1\x6f\x12\x97\x65" - "\x1e\x89\x53\x36\x18\x0b\x33\x7e\xb9\x1f\xdb\x2f\xe2\x3d\xf6\xa5" - "\x8a\xcb\x7b\x3f\xce\x52\xf2\xf8\xe3\xba\x68\x79\xfc\x71\x5e\xb4" - "\x3c\x3e\x10\x33\x76\x3f\x5e\x1f\x9d\x0f\xfe\xf9\x1f\xd3\xb1\x3f" - "\x0e\xc4\xf0\xc0\x27\x27\x68\xfa\x4b\x8a\x07\xa6\xff\x31\x1a\x8f" - "\xe9\x29\xf1\x79\x60\xfa\x18\xf4\xff\x93\xf8\x3c\x30\x3d\x73\x70" - "\x1e\x98\xce\x3e\x3e\x9f\x44\xf2\xed\x23\xc5\x99\xc3\x62\xca\xb8" - "\xe2\xeb\xbc\xe9\x95\xf1\xf7\x08\xa6\x37\x28\x1a\x4f\xef\x8c\xa6" - "\xf1\xf4\x83\xd1\x34\x44\x5f\xfe\x7e\x1a\xf6\xc7\x26\xe8\x71\xcf" - "\x88\x95\x7f\xef\x09\x9a\xa1\xcb\xff\x83\x8d\xd1\x38\xce\x98\xa3" - "\x70\x89\xb7\x2f\x32\x83\xd7\xbf\xde\xf8\xb4\x9c\xb1\x31\x7e\x9f" - "\x67\xd4\x61\x0e\xf2\x6a\x17\xc9\xd2\x8c\x26\xa4\x3f\xc2\xfb\xa1" - "\xbc\x1f\xb2\x13\xe9\x8f\x84\xc8\x22\xe7\xab\xfe\x79\x69\x86\x8f" - "\x7d\x51\x98\xfe\xcc\xbf\xd6\xd1\x94\xcd\x73\x10\xe3\x95\x5b\x2c" - "\xfd\x16\xac\xeb\x99\xd7\x6f\x60\x5e\x7f\x50\xda\x7f\x7c\xce\xc2" - "\x7e\x84\x56\x07\x65\x7b\x03\x21\x32\xf8\x9d\xcb\x47\xc3\x7e\x70" - "\x12\xcb\x05\x97\x37\xca\xaa\x7d\x33\x57\x0c\x7f\x3f\x98\x17\x7f" - "\x8c\x1f\x2c\x1e\x9c\x77\x1e\xac\x54\xe3\xfc\xe0\xa1\xe8\x71\x7e" - "\xb0\x41\x73\x0f\x9f\xc3\x7d\xf5\x81\xce\x97\x33\xc6\x45\x76\xe1" - "\x1f\x54\xdf\xaf\x7b\xb2\xad\xb0\x84\xae\x3d\x49\x3f\x99\x20\xdb" - "\x33\x89\xa0\x75\x6d\x02\xb5\x48\x1d\xf0\x93\x52\x89\x27\xca\xe4" - "\x86\xc8\x24\xd6\x3d\xdf\xc6\x79\xd5\x6e\x11\x44\xb9\x23\x7c\x26" - "\xc0\x77\x8a\xc1\x0b\x57\xb7\xd3\x4f\x66\x46\xd5\x37\x13\x79\x15" - "\x0c\x4f\xb5\x94\xc7\x9f\xac\x37\xf6\x74\xd7\xe3\x3d\xfe\xbe\xef" - "\x4f\xea\x0d\xdf\x07\xe5\x33\xf6\x93\x41\xcf\x2f\x19\x27\xbe\x37" - "\xc3\x38\x5d\x5a\x0f\xfc\x24\x64\xf0\xaf\xf2\xb5\xcc\x4a\x19\xf0" - "\xe5\xcb\xb2\x21\xaf\xf9\x12\x7b\x83\x11\x72\x90\x35\x35\x12\x8e" - "\x8a\xcf\x91\x95\x63\xf8\xe3\xe1\x39\xef\x6b\x60\xe9\xf8\x64\x6d" - "\x8c\xc1\xa7\x0a\x76\x4a\x91\x0e\xa3\xfe\x52\x30\x78\xcc\x15\xcf" - "\x32\x3f\x64\x35\x5f\x6a\xcf\x2f\xd1\x46\xd9\xaf\x5f\xc4\x5b\x59" - "\xd2\x5e\x62\x18\x97\xc6\x71\x66\x46\xd4\xda\x42\x9e\xdd\xf3\xd9" - "\xd6\xcc\xb0\x92\xfb\x99\x31\x7b\x84\x33\xb3\xa4\x3f\x95\x2e\xf7" - "\x4f\x87\x62\xe5\x60\x66\x81\x31\x47\xc7\xa4\xaf\x37\xe4\x1e\xeb" - "\x5a\x86\x1b\xb3\xcf\x3a\xb3\x4e\xc9\xc2\xcc\x90\x96\x14\xb9\x5e" - "\x9b\x29\xed\x3f\x63\xbf\x14\xf9\x75\x31\xf5\x62\xf6\xff\x66\x66" - "\x89\xc1\xf7\xe9\x53\x30\xbe\x01\x3e\xdb\x52\x31\x0a\x66\x8d\x8d" - "\xd9\xaf\xf0\x6f\x96\x77\xd0\xff\x0c\xb8\xb3\x74\xbd\x37\xbb\x36" - "\xba\xbd\x59\x59\xce\x53\x97\xea\xff\xac\x41\xfa\x3f\x6b\xa0\xff" - "\x8b\x25\xdc\x98\xbd\xc4\x59\xb2\xff\xe1\x8b\xf4\xdf\xac\x26\xe8" - "\x2f\x83\x6e\xb0\xb9\x67\x5f\x63\xd8\xea\xbc\x7f\x30\xb8\xad\x3e" - "\x6b\x60\xff\x4f\xd6\x9b\x35\xb0\xff\xe7\x8f\x67\xab\xfb\x48\x9e" - "\xad\x46\xb5\x3d\x7b\xa2\xb5\x2a\x5e\x5f\x66\x0f\xb2\xff\x37\x5b" - "\xdf\xff\x9b\xdd\x1c\xad\xcf\x66\xbb\xa2\xc7\x70\x56\xcc\x18\xce" - "\xae\x89\x1e\xc3\x59\x59\xff\xdd\x79\x0d\xef\x94\x98\x98\x68\x4a" - "\x4c\x30\x25\x24\x22\x1b\x5d\xa4\x61\x89\xe6\xc4\x21\xf8\x1b\xaa" - "\xff\x0e\x33\x25\x9a\xcc\xf8\x1b\xa2\xff\x0e\x8d\x79\x1f\xc6\x75" - "\xf1\x67\xd6\x7f\x87\xc4\xbc\x0f\xfd\x9a\xfc\x61\x7a\xbb\x46\xfb" - "\xe6\x98\xf7\x21\x5f\x93\x3f\xf4\xef\xac\x4f\x17\xbd\x47\xfb\xa1" - "\xcd\x58\xbc\x7c\x7e\xc1\xa2\x3c\x79\x5e\xbc\xc0\x3e\xff\xd9\x67" - "\x17\x2c\x5d\x6a\x2f\x7a\xd1\x7e\xff\x7d\x0f\xdf\x7e\xb7\x5d\x1d" - "\x3b\x17\x4c\xbe\x31\x2f\x99\x66\xae\x58\xc2\x19\x33\x1f\x99\x91" - "\x63\xcf\xbe\xff\xbe\xe8\x4c\x03\x8c\x3c\x5e\xbe\x14\x94\x08\xf9" - "\xcb\x2c\x1d\x49\xb4\x71\xa4\xd4\x3d\x1d\xec\xe7\xab\xf6\x3c\x1e" - "\xbb\xea\x10\xb8\x5f\xf4\x3a\x45\xf3\x0d\x7c\xa6\xff\xd0\x1f\xb8" - "\x13\xe3\x6a\x5c\x54\xb8\x90\xef\xaf\x3c\x74\x5c\xfc\xce\x4f\xf6" - "\x07\xc9\xd4\x4e\x4f\x5e\xdf\x32\x1d\x65\xf1\xee\xed\x08\x91\xdd" - "\x49\x96\x13\xf4\xe8\xa7\xc8\x4b\x10\xf7\x68\x48\x0b\xe8\xbe\xd0" - "\x73\xfe\x43\xa6\xfd\xce\x65\x94\xb3\x9e\xa0\x87\x37\x88\xdf\x09" - "\xf9\xce\xf7\x84\x54\xb9\x87\x1f\xd7\xdc\x0f\xd9\x58\x37\x54\xbd" - "\x46\xe6\x9d\xaf\x11\xbd\x35\x82\x2c\x6f\x8d\xe4\x58\x1d\x0f\x67" - "\x19\x67\xa1\xa5\x78\xf7\xd1\x93\x76\x6e\x9b\xcb\x6a\xa6\x87\xee" - "\x97\xe5\x47\x44\x95\x2f\x1e\x38\x8b\x7d\x38\xcb\x84\x72\xb3\xbf" - "\x20\x6b\x30\xb9\xde\xe5\x2d\x76\x91\x35\x2c\xbe\xba\x75\x3a\x25" - "\xb4\xc2\x12\x5e\x19\x12\xa1\xe6\x25\x27\xb9\xfd\x3f\x5a\x57\x8a" - "\xaf\xbc\xd0\xd6\x33\xbb\x9c\x62\xf3\x29\x32\x43\xae\x13\x9a\x97" - "\xb0\x9f\xc2\xc3\x0d\x3b\x2f\x90\x19\x34\x18\x7d\x92\x1e\xf1\x15" - "\xcf\x14\x61\xe7\x4c\x32\xff\x9b\x83\x7d\x0e\x1b\xaf\xdd\xfc\x27" - "\x32\xff\xaa\xd7\x65\xea\x15\x36\x2a\x2e\x12\x9d\x82\x63\xf8\x04" - "\x44\x90\xfd\xfc\x0f\xcd\x0b\x73\x99\xe1\x3d\x4e\x1b\xb5\x16\x05" - "\x68\xcd\x31\x11\xf4\xfc\x49\xdd\x0f\x38\xdc\x15\x60\x1f\x46\xcb" - "\x9a\x99\x94\x78\x22\x87\x4c\x87\xf3\x2b\xc9\x3b\x37\x40\xc5\xc7" - "\x44\xe7\xa1\x79\x5f\x50\x6b\x7e\x03\xe5\xb6\x91\xe9\x50\xc7\xe7" - "\x24\xe3\xd0\x94\x7d\x59\x53\x72\x8e\x6c\x6b\x16\x71\xda\x39\x5a" - "\xb5\x86\xae\x5c\xf5\x19\x59\xbd\x9d\x6d\x68\xe7\x14\x3d\x71\x94" - "\x12\x00\xcf\xb4\xfa\x73\xb2\xad\x7e\x9c\x7d\x7d\x33\xa9\xaa\x84" - "\x6c\xc2\x99\x9e\xd2\xeb\x4c\x4f\xed\x15\xe9\x23\x7a\x9c\xe9\x69" - "\xad\x85\x28\xdf\xb1\x9f\x86\xb7\x51\xda\xef\x4e\xb6\x99\x2a\xcf" - "\xd2\x68\xfb\x2c\x1e\xff\x47\x8e\x55\x9d\x45\xf9\xb2\xfd\xd9\x1a" - "\xea\x46\xd6\x09\x25\xed\xcf\xf7\xe6\x04\x49\x03\xac\xca\x5e\x1a" - "\x5d\xd5\x4b\x36\xad\x74\x7f\x36\xd3\xa2\xaf\xac\xc1\x05\x5d\x38" - "\xec\xbd\x67\xf6\x9a\xbd\x87\xba\xe8\x70\xa0\x97\x5a\xe9\xcf\xe4" - "\x75\x7c\xd9\xfc\xab\x67\xf6\x0e\xd1\xc0\xfc\xcd\xab\x3a\x00\x5f" - "\xf1\x8c\xf3\x30\xdf\x57\x76\xd1\x96\x12\x4a\x29\x5c\x45\xc3\x4e" - "\x22\x5d\xad\xe9\x77\x79\xbc\xa1\x2f\x9b\x57\x49\x3f\xdc\x27\xed" - "\x25\x87\x29\xb1\x35\x50\xc9\xfe\x9e\xa6\x70\xf2\x97\x35\xde\xc0" - "\x11\xf2\x16\xfe\xa5\x59\xb3\x7c\xe9\xd9\xa8\x91\xe5\xd7\xe7\x8f" - "\x98\xbc\xe6\xf3\xe4\xcd\x09\xd0\x27\x68\x5b\x94\x7d\xc9\x7b\x0f" - "\x99\xad\x81\x20\xdf\x73\xca\x10\xdd\xb6\xe4\x2d\x4b\x68\xec\xce" - "\xb3\x34\x66\xc7\x59\x4a\x17\x3d\xe9\x26\xf6\xad\xe5\xfb\xa9\x3b" - "\xf0\x9b\xd2\x41\x16\xf4\x57\xf9\x61\x27\xe9\x3e\xb6\x7d\xe9\x54" - "\xdd\x3b\xe0\x63\xdb\xdb\x3d\xe0\x63\x0b\x5e\xca\x66\x3f\xdb\x76" - "\x7a\xd8\xc2\xfc\xbc\xe5\x34\x99\xd7\x9d\x26\xba\xd5\x65\x22\xfb" - "\x33\x7c\xaf\xe2\xd1\x0f\xbc\x79\xa7\xe4\x73\x3b\x3d\x5a\x80\xdf" - "\x14\xfc\x25\x20\x5d\xee\x67\x77\xe8\x7c\x8b\x34\x13\xd2\x1e\xc5" - "\x6f\x22\x7e\x67\x3a\xab\x84\x1f\x6d\xb4\x75\x9b\x28\x99\xf9\x57" - "\xf7\xe7\x6d\xeb\x71\x3f\x0a\xfb\xe7\xb9\x02\x83\x8f\x95\x4e\x7f" - "\x38\xfb\x93\x13\xa7\x38\x2e\x94\x5f\xe2\xd3\x97\x9f\xc0\x31\xa2" - "\xf4\x74\xc6\xe1\xd7\xdc\x2e\xda\x2f\xc7\xaf\x15\x7f\x2c\x97\x63" - "\x8c\xba\xdd\x7d\xf9\xdc\xe6\x3b\x48\x17\x46\x3a\xfa\x6b\xe6\xbc" - "\xdf\x9c\x38\x65\x52\x65\xd2\x4d\x80\x19\xd4\xe1\x43\xd6\x1f\x0a" - "\xb0\x4c\x77\x9b\xac\xe2\x40\xde\x04\xaa\x1a\x29\x8e\xec\xd8\x2a" - "\x5a\x94\xac\x3d\x8a\xb6\x9f\x37\xe2\xe8\xb4\x6c\x44\xde\x01\xac" - "\x62\x99\x2e\x2d\xf3\xd8\x7f\xec\x31\x8e\x1b\x35\x26\xb2\x0f\xc2" - "\x3d\x9b\xef\xf7\x5a\xdf\x2d\x69\x1e\x22\x4c\xd9\xc1\x56\x5f\x17" - "\xfd\xaa\xb7\x73\x88\xf3\x8f\x64\xf2\x86\xda\x69\x7c\x1a\xd9\xd8" - "\xfe\xab\xde\x2a\x7c\xf8\xed\x64\x7f\x4e\xf0\xc9\x77\x4f\xd2\x63" - "\x8f\xfe\x53\x1a\xa5\xfd\xbb\x83\x74\x7d\xf4\xd8\x0b\x03\xfa\xe8" - "\x89\x73\x87\x3b\xf6\x46\xe8\xa2\x27\xde\xb9\x58\x17\x3d\x5e\xab" - "\x74\x91\x08\x29\xdd\x13\xf6\xe9\xe9\x9b\x62\xd2\x75\xbf\x90\xc7" - "\x5f\x8a\x49\x0f\xea\xe9\x4f\xc5\xa4\xfb\x55\x7a\xce\x0e\x43\xd7" - "\xb5\x32\x1e\x2b\x58\xd7\xe5\xac\x65\x5d\xd7\x9a\xa7\xeb\x3a\xe9" - "\x63\x98\xb3\x40\xbc\xed\x22\xbe\xb3\x84\xe7\xc9\x8c\xbf\xf8\x1d" - "\x19\xb8\x27\x9d\xa0\x9f\x86\x39\xad\xfc\xcf\x64\xc6\x9f\xd4\x73" - "\xc2\xfd\x50\x2e\xeb\x39\xd6\x71\xec\x77\xb2\x7d\xa4\x68\xdb\xbe" - "\x55\x1c\xad\xda\x2a\x0e\xf5\xb8\x7f\x5a\x60\xe8\xbb\x57\x90\xb6" - "\x11\x69\xaf\x20\x9f\xf5\x1e\xd3\xe4\x70\xce\x5e\x8e\xe3\xd0\x01" - "\x1e\x1b\x6d\x4d\xa0\xc2\xcd\xe0\x79\xbe\x5f\xb8\x1e\xf4\xf5\x16" - "\xf1\xbd\xd5\x30\xc9\x78\x4a\xa6\x0c\xe8\xa8\x0e\x96\xb7\x91\xeb" - "\x20\x5f\x5e\xc7\x17\x54\x12\x10\x27\xf9\x9e\x1d\xe3\x90\xbb\xf2" - "\x41\x8e\x11\x94\xd0\x02\xeb\x82\xfd\xc0\xd9\x5f\x05\x7a\xd7\x5c" - "\x0e\x9c\x54\x8c\x94\x9f\x62\xfd\x5f\xad\xdf\x63\x7a\xd2\xce\xf1" - "\xc7\xda\xe9\xa7\x13\xb1\xbe\x0b\x72\xdf\xac\x61\x17\xf1\xbd\x17" - "\xc8\x28\xaf\xf1\xf2\xb7\xe3\xaf\xdc\xb8\xfb\xc2\xb1\xe8\x50\xc6" - "\xdb\x16\x24\xc6\xd9\x47\x3f\x5d\x7f\xb8\x78\x2f\xd7\x4f\x67\xda" - "\x08\xb7\xd3\x80\x91\x20\xef\xce\xb8\xc9\xc2\x77\x67\x7c\x94\x23" - "\x63\x08\x8a\xe4\x06\xd7\xe1\xb9\x7e\x62\x3d\xef\xed\x04\x8c\xe2" - "\x76\x05\x03\xb0\x04\xf4\x7e\x54\x9e\x0e\xff\xca\x35\xe2\xab\x76" - "\x7a\x2c\xc0\xe3\xc5\xf7\x20\xf9\x7c\x0d\x74\x49\x61\xdf\x78\x65" - "\x7b\xfe\x74\x4d\xf5\x9f\x89\xf4\xbb\x9c\xe0\xb7\x9f\x16\xf3\x3d" - "\x25\xbe\xbf\x29\xef\x6e\x9a\x26\x90\x58\x91\x9e\xd2\x7f\x7f\xf3" - "\xff\xc0\xdd\x4d\xd0\xdf\xb6\xd3\x24\x1a\x80\x7f\x31\xdf\xdf\x04" - "\xfe\xc7\x98\x0f\xf5\x3e\xb9\xde\x78\x82\x69\xfe\x58\x0b\xa7\x61" - "\xad\x78\xd0\x18\x7f\xee\x2f\xf7\x05\x79\xf5\xca\x26\x14\x47\x7c" - "\xf4\xb8\x8b\xf3\x91\x56\xc1\xe5\xc7\x43\x8f\x79\xf3\xc2\xf4\xde" - "\x89\xb0\x69\xcb\x2a\x32\x2b\x9d\xf6\xc4\x5b\x5c\x5f\xe9\xb4\x27" - "\xb2\x07\x74\xda\x13\xd3\x94\x4e\x53\x34\x56\x3a\xed\x89\xbb\x94" - "\x4e\x7b\xe2\x36\x79\x0e\x06\x9d\xc6\x79\xac\xd7\x0c\x9d\xb6\x63" - "\xa4\x38\xc8\xba\xa3\xc7\xfd\x84\xdd\xd0\x6d\x9b\x90\xc6\xba\x83" - "\x71\x54\x7a\x2a\xc7\x21\xfe\xdf\x74\x52\x7e\x06\xfc\x9c\xcf\xf7" - "\x15\x3a\xf5\x67\x8c\xcb\x13\xaf\x2a\x1d\xf7\x44\xd1\x80\x8e\x7b" - "\x3c\x38\x50\x97\x75\xdc\x13\xa5\x4a\xc7\xa9\xf4\xea\x27\x58\xc7" - "\xe5\x38\x98\x06\x3a\x7c\x13\xef\xd9\xe9\xe5\x99\x8e\xae\x48\x1d" - "\x17\x2d\x5f\x4f\x1c\x32\x74\x1c\xeb\x36\xbc\xc3\x06\x49\x3e\x28" - "\xe5\x0d\xe5\x2a\x40\x73\x43\xee\x78\x0c\xb8\xcf\x1c\x67\x8c\xe9" - "\x36\xe5\x14\x0d\xd3\xef\x0a\xe9\xfd\x7e\xd2\x66\xf8\x3a\xfa\xe8" - "\x09\x7b\x3c\xbb\xd9\xb0\xd3\xc0\x8f\xd7\x85\x39\x4e\x87\x0b\x73" - "\x69\xa5\x70\xb5\x86\x8e\xd2\xd3\x45\x64\xd2\x12\x9f\x3f\xce\x63" - "\x8b\x75\xc6\x50\xfe\x65\xdd\x83\x39\xf4\xa9\xdc\x00\x0d\xc5\xda" - "\xfc\xf8\x16\x13\xf2\x1c\xf4\xa3\x88\xbc\x95\xdc\x4e\x44\xbd\x71" - "\x11\x79\x32\x1e\xe5\xb8\xd3\x1c\x63\xee\xc9\xcc\xc1\xd6\xfe\x97" - "\x89\xcb\xdf\x06\xc7\x65\xee\x90\xc1\x71\x99\x2b\xed\x80\x71\x5d" - "\x94\x80\xb5\xd9\x55\xa7\xe9\x49\xb9\x1f\x23\xe3\xde\xac\x8b\xd7" - "\xce\xdc\x87\xf4\xfc\x21\x11\xf9\x91\x6d\xbd\x14\xa7\x7e\x64\x7b" - "\xaf\x7e\x0d\xfc\xc6\xaf\x81\xff\x1f\x5f\x03\xff\x2b\xd6\x81\xa0" - "\x9d\x55\x33\x45\x97\xbb\x35\x24\x65\xf0\x20\xdf\xd7\x3b\x49\x4f" - "\x7d\x5b\xdf\xf3\x39\xee\xbc\x5e\xae\x05\xe5\xbd\xad\xcd\xc8\xe7" - "\x7b\xf9\xac\x9f\xa7\x62\x04\xd5\x19\x75\x7f\x9d\x99\xb1\xb8\x0d" - "\x0f\x19\xb8\xc9\xfc\x17\x62\x71\x43\xfe\xb8\x88\xfc\x4d\x03\xe3" - "\xfe\xd4\x25\xfd\xeb\xbd\x95\x24\x63\x70\x1e\xc0\xf2\x05\x73\x32" - "\xc7\xfd\xd3\xf7\x67\x9e\xea\x80\x9e\xcf\x88\xf0\xdb\xed\x82\x6e" - "\xbf\x8e\xe3\x2f\xb0\xed\xbb\x45\xad\x87\xbf\x85\xf9\x64\x04\xdf" - "\xd7\xe1\xbb\x3b\xb9\xe1\x6c\xd3\x81\x62\x96\xa1\xa7\xed\x46\xdd" - "\xc1\xf6\x81\xb8\x5d\xbd\x4d\xf6\x81\x0d\xa0\xce\x1c\xa3\x0e\xc3" - "\x66\x3f\x4a\xcc\x03\xd7\xc9\x3b\xaf\xa1\x2e\xd6\xbb\xdf\x82\x9d" - "\x3c\x42\xb5\x33\x8f\xf4\x76\x3c\xa8\x33\xe8\x5d\xf5\x4b\xf7\xef" - "\xe9\x96\xcb\xef\x1f\xe9\xfd\xcb\xa5\xaf\xe9\xdf\x25\xda\xcd\x9d" - "\x74\xf9\xed\xa6\x1a\xed\x3a\x2e\x9f\xae\xb9\xbb\xbf\x39\x5d\x33" - "\x74\xba\xe6\xfa\xbe\x86\xae\x71\xda\x99\x97\xf6\xcd\xdb\xb1\xeb" - "\xed\xcc\x9b\x1e\xaf\x1d\x92\xff\x06\xbd\xd7\x65\x31\x62\x60\x72" - "\x3c\x58\x15\xef\x6e\x5e\x79\x64\xac\x5f\x15\x27\x76\x5e\x9d\x11" - "\xeb\x57\x8f\x45\x8b\xb9\x65\xde\xa7\xb9\x35\x6c\x8f\x08\xcd\x47" - "\xf3\x5a\x38\xbe\xea\xd4\x35\xea\xce\xb8\x5e\xa7\xed\x52\x31\x86" - "\x39\xce\x96\x10\x39\x74\xa0\x52\xfa\x03\x60\x1e\x9a\x7f\x15\xdf" - "\x0f\x50\xe7\x99\xf3\x47\x2b\x99\x9c\x3f\x1a\xb0\xf3\x07\x87\xd1" - "\x94\x59\x57\x92\x31\x64\x30\x9f\x7f\xd4\x9f\xeb\xa3\x17\xe6\x70" - "\xfd\x70\xd9\xc7\xd9\xe2\x8c\x4d\x8f\xf3\xf7\xec\xbe\x88\x38\x84" - "\x98\xbb\x9f\xf9\x9b\x7e\x37\x01\x34\x70\x81\x96\xf3\x2b\x0c\x1a" - "\x18\xe9\x48\xab\x37\x68\x00\x7b\x25\xc5\x5b\x13\xe2\xbb\x43\x01" - "\x75\x4f\x7c\xfe\x61\x51\xda\x94\xa1\x60\x3f\xa3\xce\x19\x92\x3f" - "\xce\x0e\xac\xb6\x99\x8c\xfa\x63\xec\xce\x0b\xcc\xc3\xfe\xa4\xa6" - "\x0c\xc0\x0a\x18\xf0\x05\xe3\x25\x06\xca\x55\x4b\xbf\xa4\x67\x30" - "\xfe\xb9\x2a\xbe\x23\xda\x90\xb8\x9b\x28\x51\x03\xfe\xe8\x83\xc9" - "\x5b\x18\x60\x3b\xb5\x2b\x8c\xfe\xb3\xae\xdb\xb3\xd8\x67\xe6\x32" - "\xd2\x76\x38\x93\x6e\x52\x31\x14\x9f\x79\x41\x3b\xc3\x31\x71\x24" - "\x5e\x29\xe8\xf3\x5e\xc6\xc9\x87\x5f\xff\xea\x74\x9a\x7d\x8e\x74" - "\x5a\x3c\xf3\xa8\x86\x74\x6d\xe9\x00\x0e\x3b\xe5\x1d\x8f\x67\x2a" - "\x0d\x1c\x34\x6e\xbf\xc7\x66\x82\x2d\xc6\xed\x76\xca\xbb\x96\x68" - "\x7b\x3c\xc7\xb4\xe3\xd8\x18\x2b\xd2\x89\x71\x40\x9d\x43\x06\xbd" - "\xf5\x3a\x46\x1b\xc5\x9a\x6c\x5b\xd1\x46\xd1\xf9\x00\xec\xc1\x67" - "\x42\x17\xd3\xf9\xd9\xd4\x08\x3a\x27\x32\x5f\xf1\x1e\x0b\xf0\xff" - "\x35\xd3\x9b\xcf\x35\xec\xcb\xd9\xae\x7a\xf6\xbe\x03\x01\xe9\x77" - "\x92\xc2\x70\x35\xd0\x9f\x61\x00\xee\x15\x8a\xc6\xcf\xe6\xf4\xd3" - "\x18\x6d\x0b\x8c\xc5\x3a\x75\x27\x85\x7d\xdf\xa1\x3b\x9e\x75\xf4" - "\xb7\xc3\xb8\x3a\x6d\x26\x4d\xd8\x38\x66\xa6\x9f\x71\x2d\xb2\x8b" - "\x20\xdb\x95\xd2\x8f\x09\x7d\xdd\x53\xd2\x66\x86\x6d\x69\x92\x6d" - "\x75\xa7\xb3\x7d\x6f\x91\xcf\x68\x6b\x10\xfe\x7e\x95\xe3\x52\x1a" - "\xfd\x42\x5f\x2c\xcc\x5b\xc0\x1d\xf6\x5f\xde\x7e\xc9\x2f\xcb\x79" - "\x9c\xf2\x6a\x39\xcd\x28\x87\xf7\x65\x5c\xce\x78\x47\x1e\xf8\x2b" - "\xef\x4e\xf4\x2b\x99\xf1\xf4\x3b\x65\xec\x17\xf4\x39\xaf\x8d\x61" - "\xf4\xb8\xf3\x32\xa3\xfa\xd9\x97\x63\x36\xf8\x8e\xcf\x88\x5a\xec" - "\x41\xa9\x3b\x15\x6d\xf3\x0a\x0c\x99\xe4\xfa\x4a\xc6\xf2\x5c\x91" - "\xbc\x18\x70\x0e\xf0\x41\xd1\xf5\x64\x31\xdb\x39\x96\x66\xde\x3c" - "\x15\x07\x3c\x6f\x77\xec\x78\x71\x1e\xc7\x9d\xd4\x69\xc8\xf2\x94" - "\xda\x4e\x79\x35\xdc\x37\xf0\x5a\xe0\x52\xf3\x25\xc7\x84\xe4\x58" - "\x9e\xaf\x2b\x39\x02\x5d\x16\x7e\xfb\x75\x75\xbf\x27\xa0\xe2\x2b" - "\x2e\xf8\xae\x30\xd5\xca\xf1\x62\xbf\x3c\x19\x47\x43\xde\xfd\x5e" - "\xc0\x3e\x6e\x62\x78\x61\xad\xbc\x67\xa6\xfb\xec\xf9\x5b\x0a\x43" - "\x32\x0e\x9f\xb3\x88\xef\xc2\x86\x78\x4d\x26\x7d\xd2\x0e\x14\x85" - "\xe8\x91\x20\xd3\x76\x41\x01\xdf\x71\x0f\x48\x5a\x2c\x70\x18\xf7" - "\xda\x39\xce\x24\xc7\x29\x1d\x1f\xa2\x44\xb6\x29\xec\x4e\x8e\x49" - "\xb0\x30\x9b\x6d\x12\x45\x53\xf0\xbd\x49\x1c\x51\xbc\xbc\xe0\x53" - "\xbe\xc7\xae\xce\x97\xda\xc1\xdf\x89\x5f\xb6\xd3\x82\xff\x54\xfb" - "\x32\x86\xac\x2d\x7c\x88\xcf\x98\x7c\x3a\x0c\xb4\x85\xf9\x7f\xfe" - "\xd4\x8b\xe5\x62\xc1\xa7\xc6\x1a\x83\xef\xc5\xa9\xf3\xaa\x01\x78" - "\x3e\x5a\x20\xf7\xa5\x07\x74\xd3\xef\x01\x6b\x61\xc6\xc5\x32\xb3" - "\x70\xaa\xc1\xcb\x85\x37\xf0\xdd\xea\x05\x16\x6e\x7f\x30\x9d\x29" - "\x9c\x8f\xf3\x38\x59\x4e\xd8\x29\xf1\xeb\xee\x4b\x0c\x9c\x7f\x2d" - "\xac\x37\xfa\x60\xd0\x44\xf5\xe1\x67\x09\xdd\xc9\x0d\xf5\x03\x7d" - "\xff\x99\xf2\x37\x1b\xc8\xbf\x2b\x82\x36\xfc\x3e\x51\xf1\xdd\x42" - "\xac\x29\x9e\x6d\x51\xbc\xa8\xd2\x44\x72\xd3\x1d\x1c\x03\x56\xe1" - "\xb8\x88\x0c\x7e\xef\x71\xff\x6c\x8c\x8f\xce\x1c\x52\xe7\x50\x3f" - "\x43\xff\x17\xba\x54\xbd\x85\x87\x18\x97\xb8\xfd\x8c\xc6\xb1\x81" - "\xe7\x58\x15\xeb\xe0\x67\x8d\x8c\xaf\xfd\x26\x1e\xe3\x9f\xad\xe1" - "\x76\x65\xdc\x83\xbe\xfc\x21\x81\xbe\x74\xea\xee\xcb\x87\xfc\xa4" - "\x9b\xd0\x0e\xf4\xdf\xe9\x7a\xbd\xcd\x3a\x03\x57\xc6\x0d\xb6\xa2" - "\xa5\x47\x2c\x8a\x4f\x5f\x6e\x57\xc6\x63\xca\x1f\x86\x3f\x0b\xfe" - "\x86\x7e\xd3\xf9\x18\x76\x6d\xa7\xbf\xf4\x23\x9b\xb6\x5c\x1c\xe4" - "\xf8\x5f\x58\x17\x74\x6e\x01\xff\x0e\x5f\xdb\x4c\xc3\x03\x4f\x99" - "\x72\x57\x52\x26\xd6\xb6\x24\xce\x8b\x89\x3b\x35\xfc\x2e\x17\x13" - "\x38\xee\x35\xde\x33\xf4\xf7\xb1\xfc\xde\xbd\x5c\xcc\xed\x71\xe7" - "\xe7\x18\x67\x77\x2a\x66\x4d\x7e\x7e\x7f\x9c\x9f\xc4\x27\xf9\x9e" - "\x0f\xc7\x84\xd2\x44\xe2\xf3\x9d\xdc\x6e\x2e\xcf\x1d\x68\x0f\xe5" - "\x30\xff\xcf\x93\x31\x72\xfc\x89\xb7\x8c\xc0\x5f\xfc\x38\x1b\xa8" - "\xc3\x78\x75\x27\x7d\x64\x33\x70\x1d\x1e\xc8\x34\x7d\x43\xdc\x02" - "\x06\x6e\x48\x3f\xb8\x45\xa5\x87\x38\x46\x21\xfb\x20\xf6\xb8\x17" - "\xa5\x19\xb8\x1a\x38\x70\x7b\x7c\xaf\x52\x24\x37\xec\xe5\x98\x30" - "\xdc\x9e\x7f\x75\x3e\x97\xcd\x34\xf0\xfd\xa6\xbc\x5c\x52\x25\x04" - "\xcf\x2d\x7c\x9e\x64\x1f\x45\xd4\x1a\x60\x9d\xb2\xa8\xe2\x40\x55" - "\x80\xe3\x7f\x7e\x8c\x36\xf6\x75\x8b\x7c\xd2\xfa\xf2\xe3\x8e\x31" - "\xd7\x41\xf9\x23\x52\x3f\x94\x35\xec\xd3\xc4\x74\x8e\x01\xfc\x31" - "\xc7\x5d\x85\xad\x09\xb9\x5d\x14\x6a\x29\xee\xe4\xbb\x90\xd0\x39" - "\x8b\x38\x4e\xe8\x5e\xb6\x35\xb0\x4e\xe1\xf8\x15\x89\xac\x9b\x9a" - "\x97\x4f\x60\x18\x61\xb3\x83\xcc\x2d\x8e\x6f\x16\x4f\xdf\x47\xcf" - "\x4d\x50\xb2\xf3\xdc\x04\x63\x9e\xc5\x73\x66\xf4\xb9\xf4\x73\xe9" - "\xb1\x3a\xf7\x99\x17\x5f\x2c\xca\x5d\xb2\x80\x7f\xd2\x6f\x5c\x76" - "\x73\x72\xe4\xda\x99\xf5\xb0\x8a\x63\xf0\x5c\x0e\xef\x53\xbd\x3e" - "\xc2\x38\x67\x7d\xae\xd2\xd8\x2b\xd3\xfd\xb9\xef\x65\x9b\x9a\x6d" - "\x4f\xe4\xed\xf9\xb4\x98\x45\x87\x12\x8e\x5b\xc8\x14\xdb\xde\xc2" - "\xf9\x45\xf3\x0b\xee\xe6\x13\x95\xe4\x78\xed\x1c\x8c\x6e\xe7\x79" - "\xea\x6f\x47\xe9\xc1\x80\x89\xcb\x95\xf6\x66\x8a\xa4\x76\x9f\xba" - "\x4b\xfb\xfc\x18\x63\x0f\x64\x10\x3f\xb8\x60\xb8\x6c\x7f\x39\x8f" - "\x8b\x73\x0d\x99\x7e\xb3\xaa\xcd\xc4\x36\x4a\x09\x9e\x79\x6d\x28" - "\xed\x22\x3d\x9e\xd0\xef\xce\xb6\x61\x9e\x79\xde\x21\x4a\x1b\xa0" - "\x7f\x9e\x2f\x1c\x6c\x7e\x8a\xf4\x21\x60\x9f\xb3\x0e\x7a\xbe\x7c" - "\xd0\xf3\x7e\xcf\xc7\xf3\x94\x9e\x79\xfe\x8b\x16\x1b\xf1\xb8\xbf" - "\xdc\x4e\xcf\x1f\x37\xdb\x30\x97\x8c\xa2\x5f\xe0\xf9\x0b\xae\xcb" - "\x79\x51\xe3\xfc\xdd\x53\x35\x66\x70\x21\xb8\x31\x41\xa8\x7f\x64" - "\xd6\x1f\x12\xf1\x67\x12\x09\xf2\x34\x2c\x11\x14\x1e\x36\xd4\x4c" - "\xd6\xe1\x29\x96\xeb\xae\x1d\x6d\xbb\xf7\x9e\x49\x13\x9d\x25\xc5" - "\x90\xde\x50\xd0\x2a\x22\xe3\x5f\xb5\x7b\x1e\xbd\xd9\x45\xd2\x1f" - "\xa2\xb4\xdd\x13\x0f\xd7\x4d\x6e\x51\xc8\x77\x8f\xb5\xe4\x0b\x0d" - "\xce\x65\x64\x7a\xaf\xd7\x67\xe2\x18\xec\x6c\x83\x70\x8c\xfe\x76" - "\x2a\x78\xe9\x13\xa4\xa1\xff\x0e\xe1\xb9\xd0\xa0\xce\x3b\x0b\x1a" - "\xb5\xb2\x0b\x0d\x03\xf0\xcd\xc4\xf0\x9d\x6f\x91\xa9\xae\xa4\xd3" - "\xe4\x35\xdf\x43\x5e\x7b\x80\x3e\xc1\x73\x5c\x5a\xa2\x4d\xc1\x71" - "\x5f\x01\xa3\xda\xad\x79\x9c\x17\xc8\xa4\xdf\x1f\x34\x9d\xa6\x82" - "\xbf\x35\x0c\x52\x8f\xef\xeb\x76\x27\x7f\xf8\x5f\x3d\xee\x17\x30" - "\xfe\x99\x75\xfa\x9c\x07\xdd\xfc\x02\xf8\xff\x79\x39\xdf\x21\xff" - "\xf3\x6e\x19\xf3\xf7\x85\xe9\x46\x99\xf8\xf3\x1e\xef\xa9\x8a\x66" - "\x1e\x57\x71\xfe\x6f\x9d\x7c\x37\x61\x10\x3f\x86\x61\x5e\xc7\xed" - "\x7c\x8e\x34\x64\x78\x90\x52\x9c\xe7\x44\x5f\xd8\x4d\x69\x60\x77" - "\x53\x18\x6b\xcb\xd0\x79\x91\x73\xb8\xeb\xac\x8c\x4d\xc9\xfa\xe3" - "\xdd\x85\xbf\x37\x79\x83\x67\x9a\xbd\xeb\x35\x6a\x85\xfd\xe1\xad" - "\x3a\xd3\xac\x62\x58\x86\xe9\x30\xfd\x99\x0e\x3b\xfe\x1f\x97\xdc" - "\x0b\xaa\x12\x2e\xa6\x73\xdf\x79\x31\xc7\x6b\xfe\xbf\x89\xbf\x21" - "\xc2\xba\x10\x74\xb7\x9f\xa6\xc5\x57\xfd\x0e\x70\xde\xfb\x2f\xc0" - "\x92\x31\xaf\x26\xd3\x27\x78\xee\x71\x2f\x1e\x6d\xe8\xc9\xb8\xb1" - "\x42\x12\x9a\x37\x59\x1d\x4f\x99\x34\xe8\x5c\x8e\x4d\x06\x5d\x3b" - "\x81\xfb\x85\xf7\x0c\x7e\xc7\xef\x58\xfe\xb5\xae\x6d\xde\x61\x0d" - "\x3d\xc5\x3a\x38\x87\xf5\x2b\xd2\xe7\x54\x9f\x97\x3a\x39\x5b\x7f" - "\xcf\xd2\xdf\xa7\xeb\xef\x53\xf5\xf7\x4c\xfd\x7d\x12\xbf\x2b\xdd" - "\xbd\xb8\xa1\x7f\x5e\x31\x0d\x3b\x82\xf7\x66\x63\x2c\x80\xcf\x95" - "\x56\xc7\x1a\x39\x07\xe8\x78\x4c\xd0\xf1\xca\xd0\xdf\x0d\x7c\xbe" - "\x6b\x0d\xad\xf9\x1f\xc2\xe7\xc5\xcc\x68\x7c\x5e\xcc\x8e\xc0\x87" - "\xac\x8e\xcc\x6f\x82\x4f\xaa\x95\x63\xdd\xff\x1d\xf8\x30\x2e\x9c" - "\x86\xf6\x8f\xc4\xe0\xe3\x33\xf0\x89\xcb\x6f\xcb\x45\x27\xcf\x7f" - "\x4b\xbf\x2d\x63\xf4\x0e\xe3\xb9\xad\xba\xd7\x88\x33\x57\x38\xfa" - "\x52\x71\xe6\x20\x0b\x36\x94\x41\xff\x5f\xec\xd2\xe7\xf9\x26\x65" - "\x0f\x16\xce\x31\x7c\x7f\xd0\xd7\xfa\x2d\xaa\xaf\xbb\xd7\x73\xac" - "\xb5\x95\xf4\x1d\xa7\x43\x74\x62\x7d\xf3\xd7\x16\xbb\x3f\x4a\x06" - "\x0a\x8a\x96\x2e\x7d\xe1\x6e\x7b\xc1\xfc\xc5\x0b\xec\x37\xe6\xd9" - "\x97\xe6\x2f\x5a\x58\xb4\x20\xfa\x3c\x3c\x55\xff\xee\x88\xf4\xf3" - "\x67\x9b\x9b\x65\x80\xf9\x9f\xf5\xb6\xf2\xcd\x7c\xe9\x1a\xe1\x2e" - "\x74\xb1\xae\xdf\xf9\x1a\x99\xf9\x0c\x06\xf8\x74\x18\x3a\x5e\xc5" - "\xd6\xa7\x04\xd6\xf1\x48\x87\x0d\xf7\x42\x71\x44\x3a\xca\xbe\x94" - "\x6a\xa4\x31\x7c\x5d\x37\x0d\x6b\xa7\xc2\x46\x6e\x33\x2e\x0d\xcf" - "\x8b\x1a\xcc\xaf\x09\x58\x6f\xf1\xda\x57\x70\xdc\x24\xbe\x3f\x87" - "\x7a\x02\xf8\xc8\x33\x45\xfe\xb6\x8d\xb2\xed\x05\xe3\xb8\x0c\x75" - "\xea\x90\x66\xde\x8c\xb2\x58\x2f\x74\x72\x3d\xa4\x6f\xe2\x38\x06" - "\x48\xb7\xe8\xf1\xa0\x38\xad\x96\xe3\x0c\x20\x2d\x35\x22\xed\x03" - "\x8e\x61\x8e\x34\xbb\x0e\xef\x0f\x4c\x67\xbc\x67\xea\x7b\x0a\x5c" - "\xe6\x3f\xf5\x76\xa3\x62\x12\xf0\x47\x28\x6e\xbf\x35\xc3\x3e\xe7" - "\x91\x1f\x4c\xbe\xe7\xd9\x17\x17\x2f\x4c\x26\x49\xf6\x74\x4c\x97" - "\x19\xb7\x3b\x6e\xbe\xdb\x5e\xb8\x60\xc1\x12\xfb\x8a\x05\x8b\x8b" - "\xec\xf3\x57\xcc\x5f\x99\x4c\x0b\x5f\x5c\xf2\x2c\xdf\x92\xe7\x61" - "\x59\x9a\xfb\xec\xc2\x9f\xb1\xd3\x82\x2a\x9d\x1c\x35\x8f\xcf\x61" - "\xdd\xa6\xc7\x95\x38\xb8\x85\x6d\x8d\xa4\xdf\xa6\xe3\x99\xe3\x2d" - "\xd9\xf0\xdb\x82\xbf\x26\xfc\xed\xc5\xdf\x51\xfc\x1d\x39\x49\x2b" - "\xf8\xdb\x01\x7b\x7a\xdc\x4b\xd6\x1b\xf6\xc4\x00\x0f\x2d\xa9\x34" - "\x78\x08\xf3\xff\x1e\x35\xbf\x2d\x39\xd8\x1a\x92\xf2\xd3\xcf\x53" - "\x5b\xce\x0f\xf0\x14\xc7\x8b\x6c\x65\x9f\x9c\xe5\xc8\x07\x0f\xf3" - "\x3a\x1d\x34\x4f\x62\xba\x9d\xa0\x65\xfb\xab\xb7\x8a\x43\x1c\xeb" - "\x04\xbf\x2d\xe0\x97\x43\x2a\xbe\xc8\xd2\xa9\x28\x77\x3d\xda\x68" - "\x52\x6d\xe8\xef\x23\xc5\x41\xde\xc7\x68\xd7\xdf\xd5\x9a\x7f\xd9" - "\xa3\xfc\xcc\xbf\xfa\x59\x98\x95\xfd\x1b\xd5\xda\xd1\xc8\x5b\x7a" - "\x4a\x6f\xa3\x19\xb4\x70\xed\x74\x4b\x9b\x5b\xae\xb1\x78\x0f\xcd" - "\x9a\x70\xaf\x00\x3e\x67\xb4\xc4\x27\x55\xfc\x42\x57\x2f\x74\xc4" - "\x1d\x77\x78\x1d\xb2\x7c\x02\xef\xb1\xcd\x2a\x14\x1a\xc7\x94\xd6" - "\x12\x9f\x6f\xe3\x7a\xc2\xf2\xdb\x74\x6d\xf3\x95\x99\xca\x16\xe0" - "\xb8\x71\x4b\x0f\xea\x30\x83\x4c\xdb\x93\xb4\x64\xa5\x5a\xaf\xad" - "\xd0\xbf\x37\xb0\xf4\xa8\xe1\x2b\x07\x19\x4d\xc7\x7b\x87\xa1\x03" - "\x7c\xb4\xb4\x41\xf7\x6b\x6a\x56\xfd\x2f\x1a\xad\xbf\xef\xd5\x71" - "\x4c\xe0\x58\x16\xc0\xff\x08\x8f\x1d\xd6\xbe\x7b\xf1\x7c\x14\xf4" - "\x39\xa4\xe8\x53\x24\x6d\x40\xd8\x35\x9c\x7f\x94\xbf\xd9\x81\xbc" - "\xa3\x2a\x4e\xc4\xd2\x39\xdc\xe7\x01\xdf\xc7\xaa\x4c\xe0\xfa\x28" - "\x9f\x19\x42\x96\xf6\x7a\xcf\xb3\x7c\x2e\xcd\x06\xbc\x06\x43\xef" - "\xb0\x9e\xc9\x0d\x43\x4e\xa5\xdd\x5d\xb4\xd1\xd0\x37\x03\x7c\x50" - "\x54\x13\x4f\x97\xc4\x1b\x77\x7d\x6c\x92\x84\xfb\xa5\x0e\xe0\xd4" - "\x20\xc7\x80\xe3\x69\x9e\xef\xb7\xef\xfb\x94\x8e\x2c\x0a\xf4\xaf" - "\x45\x74\x3c\x38\x4e\xb7\x8f\x71\xeb\x95\xe7\xb8\xba\xde\x58\x36" - "\xda\xd0\x1b\x06\x1c\x6b\x82\xd0\xac\x0e\xfc\xe7\x69\xac\xe4\x3d" - "\x64\x9e\x2f\xa5\x3d\x02\x38\xc3\xcf\xa9\x3b\x4c\x5a\x69\x23\x78" - "\xb7\xe8\x28\x74\x8c\x59\xda\x9c\xee\x97\x7a\x06\x74\xd1\xb2\xc2" - "\x48\x98\xc2\xd2\x58\xc9\x70\x59\x1f\xb1\x4d\x92\x1b\x36\x73\x1c" - "\x91\x4a\x7d\x7e\x81\x0e\x5e\x56\x63\xe0\x0a\x1a\x1e\x34\xf0\xd5" - "\xbf\x95\x74\xd0\x47\xcb\x80\x7b\x1f\xfb\xf2\xb6\xa8\xf1\x5c\x21" - "\xf5\x0d\xf2\x76\xa3\xee\x31\x1f\xbd\x94\xa1\xcb\xd0\x21\xd4\xdf" - "\x7d\xa0\x64\x2a\xca\x2c\x0b\xea\xfe\xa8\x47\x30\xbe\x47\x07\x78" - "\x7f\xc9\xa9\x88\xfd\x80\xa3\x6a\x0c\xef\x71\xb5\xd3\xf2\x89\x11" - "\xe9\xfa\xd8\x1e\xc8\x46\xfa\x29\xb5\xb6\x6e\xcc\x51\xf5\x97\x2b" - "\xdf\x5d\x1d\x47\xd6\x05\x7c\xdf\x8a\x65\x5c\xd2\x5e\x8e\xf1\xf2" - "\x42\x63\xbe\x00\xac\x3d\x92\xe6\x23\x45\x13\xd3\x49\xc5\x6b\x58" - "\x32\x52\xd1\x69\x79\x65\x14\xed\x79\xde\x44\x3b\x4c\xa7\xe1\x6b" - "\x85\x36\x3c\x90\x20\x72\x57\x9a\x89\xe5\x85\x65\x9c\xcf\x5e\xc0" - "\x1f\xd2\xae\x52\x74\x5b\xde\x66\xd0\xcd\x18\x3b\xa6\x93\x8f\x96" - "\x4f\x67\xda\x46\xf7\x71\xd8\x91\x76\xa3\xef\xa0\x29\xef\x07\xe3" - "\xbd\x4b\x97\x8b\x43\xcd\xa3\xd8\x17\x60\xc9\x57\x07\xcc\x3f\xa0" - "\x03\x8e\x09\xa4\x68\xbb\x62\xa2\x8f\x0a\x2b\x23\xd6\x0d\x07\x99" - "\xbe\x2c\x2b\xc0\xb3\x42\x8f\x9d\x74\x50\xf9\xa3\x2c\xe1\x98\xb4" - "\x15\x52\x96\x97\xcb\x18\x17\x1c\x77\xf5\x08\xd3\x88\xf5\x22\xcb" - "\x12\xcb\x00\xcb\x93\xa2\xd1\x8a\x8a\x08\x1a\xb5\x30\x7d\x74\x3a" - "\xed\x89\xd1\xe5\x0b\xec\x05\x93\x95\x2e\xb6\xa7\xdf\x98\x37\x5e" - "\x06\x2a\xb1\x3f\x30\xe5\x6e\x7b\xf6\xe4\x1b\x1d\xf9\x63\x67\xa9" - "\x9f\x29\xd9\x59\xfc\x9b\x1c\xbd\xee\xb2\xa3\x9d\x50\xf4\xda\x6d" - "\x8d\x47\xe9\x0f\x47\x9a\x2f\x61\xa8\x8c\x1b\xc8\x71\x43\xb7\x2c" - "\x26\x0a\x03\xef\xcd\x27\x31\xa6\x96\xc6\x09\x1c\xa7\x76\x36\xd6" - "\x8c\xb3\xce\x89\x0b\xd5\xc8\xdb\x89\xf4\xe1\x85\x1c\xeb\xfe\x2f" - "\x42\x4b\x6a\x9c\xc0\x6b\x7b\x51\x5a\x1b\xf4\x27\xb5\x7b\xf0\x97" - "\xed\x4f\xfa\xd0\x3f\xed\x66\xa7\x00\xdc\x02\xa3\x5f\xbc\x07\x00" - "\x3a\x4d\x98\xed\x10\x61\xa6\x51\xae\x83\xe3\x49\x03\x76\x22\xef" - "\x01\x38\xd0\xff\x82\x23\x6a\x7d\xe9\x00\xff\x2f\x99\xa0\xeb\xb2" - "\x6c\xbc\x73\xfc\x8b\x6c\x39\xae\x6e\x9b\x8c\x43\xad\xad\xbb\xe5" - "\x61\xac\x07\xb2\x0d\x98\x80\x35\x54\x3f\xc7\x96\xf0\xbe\xa9\x5f" - "\xa4\x56\xf6\xfe\x58\x6b\x82\x8a\xeb\x07\x19\x77\x55\x9b\xb4\x9c" - "\x7e\xbf\x07\xe4\x0d\x5f\x9b\xca\x7e\x11\x39\xe0\x3d\x17\x97\x31" - "\xf2\xb6\xb8\x35\xdf\x16\x93\x16\xc4\x38\xa6\x2a\xfb\xb9\x8b\xf5" - "\x27\xd6\x96\x2b\xfb\xf7\xff\xe5\x7c\x68\x22\x97\x5a\xcf\xac\x94" - "\xfb\x3e\x67\xdd\x66\x82\xce\xee\xba\x21\x4d\xae\x51\x82\x9a\x3b" - "\x81\x94\x2f\xea\xca\x87\x0c\x1d\xcb\xe7\x49\xd6\xb5\xc2\xcf\x7b" - "\x89\xd6\x90\xf0\xcb\x98\xe9\x3c\x77\xd0\x49\xf2\x16\xf7\xb8\x38" - "\x56\xab\xb4\x81\xd0\xae\x9a\x37\xc2\x6a\xde\x40\xfb\xfe\xc4\x5b" - "\xe6\x61\x7e\x48\x38\x49\x2b\xed\x8c\x3f\xd3\x86\xf7\xab\x35\xd0" - "\xca\xcb\xf3\x24\xd3\x27\xf9\x37\xbb\xd9\xa7\x81\xfb\x6a\x0d\xa1" - "\xcf\x91\xfd\x32\x69\xbe\xcd\x6e\xf4\xcb\x84\x7e\x39\x4e\xb1\xcc" - "\x04\xd9\xd7\x04\xf2\x36\x52\xc6\x23\x96\xeb\xe7\x55\x99\x91\x7d" - "\x64\xfd\xaf\xfa\xb0\x6a\x7e\xbc\x3e\x0a\x13\xf7\x91\x69\xb0\xea" - "\x4e\x5d\xde\x24\x9e\xac\x3f\xba\x68\x65\x60\xf8\x5a\xf6\xf1\x68" - "\x9c\x00\xfd\x36\x85\xc7\x10\xf3\x67\x39\xe3\x19\x6f\xbc\x18\x9e" - "\x82\xb5\x1a\x36\xb4\x6b\x1e\x70\x39\x14\x9f\xde\xab\x4e\x5d\x9a" - "\xde\xab\x3e\xe5\xfa\x8c\x07\xfb\xbc\x58\x43\x58\xac\x83\x6f\xb1" - "\x5e\xf3\xc4\x6b\x77\xf8\xda\x1a\xc6\x2b\x6e\x9e\x60\x79\xd1\x75" - "\x10\xf8\x50\x40\x4e\x04\xeb\xa4\x1e\xf7\xea\xfe\xfd\x2f\x6b\x82" - "\x3d\x51\xea\x07\x93\x28\x8f\x07\xc3\xba\xb6\x9c\x7d\x4c\xa6\xa0" - "\xfd\xb8\xf9\x1a\x7f\x87\xc1\xd3\x68\xd7\xd6\xfd\xd3\x0d\xd6\x04" - "\xba\xd7\x9f\xf8\x4f\xc9\x56\x47\x68\x0c\xd3\x10\x30\x1d\x90\xe3" - "\x65\xbc\x4e\x55\x7b\x17\xab\x61\xff\x6f\x94\xeb\x52\x7f\x52\xa3" - "\x5d\xc5\x0a\x5b\x8d\xf9\xef\xf5\xfe\x3d\xdc\x1e\x77\xb1\xd9\x47" - "\x1d\xa3\x95\x5c\x7e\x67\x9b\x28\xfb\xb0\x49\x73\x5b\x85\x7d\x95" - "\x15\x76\x64\xf1\x0e\x4d\x70\x5c\xfe\x0f\x9b\x06\xf8\x44\xf9\xbf" - "\x18\x7c\x82\xfa\x53\xe3\xf3\x40\xf1\x82\x4b\xf3\x40\xb1\xdc\x9b" - "\x65\xba\xab\xb5\x4a\xf1\x46\xc3\x4e\x11\xeb\xbe\xb3\xcd\x5e\x22" - "\xdb\xb7\xab\xb6\x99\x26\x99\x7c\x2e\x91\x05\xba\xb8\x50\x76\xaf" - "\xa1\x07\x98\x5f\xac\x61\xfe\x66\x01\x49\x9e\x46\x1e\xec\x9f\xc2" - "\x74\xb5\x5f\xfa\x91\x43\x7e\x77\xcf\xbd\xa2\xc1\xef\xcc\xdf\xce" - "\xfe\xaa\x81\xa4\xc6\x2a\x94\x09\xfa\xe8\x13\x19\x93\x14\x73\x70" - "\x05\x60\x54\x56\x8c\xc0\x1c\xad\xfc\xb6\x52\x58\xa6\x39\xc6\x0f" - "\xcb\x35\xd2\xd2\x80\x37\xc7\xfb\xc1\x7a\x67\x4d\x46\xff\xbc\xe4" - "\xce\x84\xae\x10\xd2\x4f\x07\xf3\xd2\xe8\x6e\xd0\xee\x0d\x93\x56" - "\x7f\x7e\xbc\x8d\xb8\xcf\xe7\xd7\x8d\xaa\x7f\xf9\x56\x32\xff\xab" - "\xed\x19\x2a\xbc\x9d\xd2\xd6\xfe\xc0\x4c\xff\x7b\x22\x99\x98\x0e" - "\x3e\x5a\x93\xa9\x68\xb7\xc6\x65\x8c\x8f\x8f\x56\xcb\x7d\x51\xde" - "\x6b\x9c\x1d\x12\x17\xd4\x7e\xe8\x1a\xe8\xbf\xe7\x6c\x2a\xdf\x71" - "\xd1\xf9\x3f\xdb\xf3\xf6\x45\x4b\xed\x79\x2f\xae\x58\x7c\xfd\xf5" - "\x51\x6b\x25\xb3\xbc\xc3\xe2\x5e\xb3\x47\xcd\xa7\x6b\x3a\x0d\xbc" - "\xd9\x2e\xc1\x3b\xfa\xbf\xe2\xa2\x7d\xcb\xac\x5c\xdd\x4d\x39\x37" - "\x83\x06\x9e\x6f\xa3\xac\xdb\x22\x5e\xef\xa0\xac\xdb\xef\xc8\x7d" - "\x78\xc1\xfc\xbc\x95\x11\xa9\x77\x46\xee\xeb\x6d\xd9\x86\xb6\x13" - "\x47\xdd\x0f\x5d\x91\x30\x6b\x35\xcf\x2d\x25\x9f\x97\x84\xc4\x97" - "\xd0\xd7\x13\x21\x63\xb9\x87\x8b\x42\x74\x18\xba\x4c\x7c\x87\x75" - "\xf8\x30\x75\x37\x0f\xf6\x14\x78\xcb\x8a\xbe\xfb\x61\xd7\x9d\xe3" - "\xfd\x99\x13\xe4\x4c\x68\xad\xe4\x98\xbc\x1f\x06\x95\x8d\x51\xd2" - "\x84\xf4\xab\xf0\xfb\x05\x7e\x87\xe2\xf7\x6f\xf6\xc5\x58\xf7\xb0" - "\x2f\xf4\x72\xf6\x85\x2e\x91\xbe\x1e\xb7\x06\x5c\x74\xeb\x12\xb6" - "\xd9\x4b\x8a\xd8\x06\xf1\x91\x93\xbf\x8b\x47\x5c\x16\x69\xfb\xed" - "\xcf\x51\x06\xff\x0a\x79\x86\x54\xd2\x24\x4a\x3f\x0c\x8a\xed\x39" - "\xfc\x8d\xab\x31\x68\xf3\xfa\xc4\x84\xe3\x94\x68\x1b\xd6\xd3\xe3" - "\x76\xb2\xff\xd3\x51\xa6\xd3\x60\xdf\xd0\x64\x3a\xc7\xda\x87\x03" - "\xb6\x61\x19\x49\xfb\x56\xb7\xe7\x76\xca\x79\xc1\x59\x14\x61\xd3" - "\xf1\x99\x60\xb2\xb2\x4f\x44\x58\xd9\xa7\xce\x0a\x43\x0e\xf0\x5c" - "\x63\xf0\x69\x54\x7c\xb4\xc5\x45\x0b\x96\x2c\xc8\xb3\xdf\xb8\x34" - "\x99\x22\xa2\xa3\xe5\x2f\x58\x6c\x5f\xb2\xe0\xa5\x65\x0b\x96\xca" - "\xc8\x66\x9c\x1b\x35\xe7\xa7\x89\xe4\x0f\xc6\x1a\xf7\x76\xec\xa3" - "\x98\xbe\xae\x21\x1c\x53\x4b\x94\x7d\xc0\xb6\x4b\x97\x5a\x6f\x5c" - "\x38\x18\xbd\xde\x58\x5b\xa9\xec\xbc\x0f\x3b\xd5\x5a\x67\xed\x38" - "\x7e\x6f\x27\x57\xc3\x40\xfc\x6e\xd7\x7c\xd0\xd2\xa4\xe8\x66\xf1" - "\xf5\xb8\x5d\x39\x06\xdd\x7c\xb4\xd6\xa7\xdb\x52\x5d\x52\x7f\x60" - "\x8e\x85\xfe\x8b\x9a\x5f\xd5\xb7\x33\x5d\xac\x7f\x13\xe5\x7e\x6f" - "\xd2\x87\x1c\x03\xc3\xc4\x30\xd1\x9e\x0f\xe3\xd3\x09\xbd\xc9\xfa" - "\xcd\x63\xc0\x43\x9b\xd3\xb9\x3d\x7d\x1d\xf4\xad\x93\xb4\xd6\x2e" - "\xf5\xa3\xe7\xc3\x2e\xd6\x29\x7c\x76\xaa\x95\x02\x8e\x3c\xcb\x5b" - "\xeb\x63\x1b\x53\xc6\x90\x07\x2c\xde\xa7\x85\x9e\x0b\xf1\x77\x56" - "\x39\x4d\xc5\xf6\x72\xee\xe6\xbd\x61\xb4\xd5\xd1\xe3\x5e\x6b\x1b" - "\xf0\x4d\x5f\xeb\x63\xbb\x93\xe1\xfa\xc8\x75\x8c\xe1\xa9\xd8\x65" - "\x6b\x27\x81\x77\xa6\x0e\xd8\x4f\x6b\x5d\x11\xeb\x32\xc6\x47\xe2" - "\x19\x00\x2e\x32\x4e\xa6\xf2\x1d\x94\xfd\x66\xfd\x59\xa1\xf7\xdd" - "\xe8\x0f\xe0\x41\xff\x39\x33\x8c\xb3\x67\x9f\xde\x6f\xc6\x8f\x71" - "\x8f\xc4\x59\xc7\x77\x2f\xe3\x8b\x7a\x2d\x11\xb2\xcd\xfb\x32\x43" - "\x90\xd6\x36\xe0\x93\xec\xb2\xc7\xea\x8d\x17\x17\xdb\x0b\x16\x2d" - "\x7e\x3e\x77\xc5\xfc\xe7\x17\xe4\x2e\x2b\x1c\x6b\x5f\xb6\xf8\x99" - "\x82\x17\x9f\x7d\x9e\xb9\x66\x69\xd1\xb2\x67\x9f\xb7\xb3\x66\xc9" - "\x9d\x9a\x95\x95\x7b\xff\xa3\x8f\x3c\x9e\x4c\xf7\xcf\x47\x1a\x56" - "\xfe\x59\x19\x63\x55\xd6\xc3\xd3\xa6\x3c\x96\x3b\x65\xf6\xa3\xb3" - "\xe6\xc8\x4b\x0b\xfd\xf9\x53\x17\xc7\x2f\x10\xc5\x87\xa9\xe0\xa5" - "\x0e\x8c\xef\x90\x76\xda\x30\x57\xc5\xbb\x76\x6f\x8c\x8e\x77\xed" - "\xc6\x5a\xd6\xdd\x8c\xbf\x63\x44\xeb\x53\xf1\x87\x75\xea\x86\x6c" - "\xc5\x5f\x49\x33\x7a\xdc\xee\xbd\x03\xfc\xb5\x41\xc6\x54\x62\x5f" - "\x0e\xb5\x3f\xeb\x86\xfe\x77\xb6\x45\xe6\x0d\xac\x27\xdd\xfe\xfe" - "\xf5\x64\xbf\x4e\x59\x37\xda\x58\x5b\x22\xcd\x8f\x75\x65\x12\xaf" - "\x2b\xd5\x7e\xd2\x86\xa7\x24\x4f\x0d\x2a\xdf\x16\x32\xd6\x95\x2c" - "\xdb\x7c\x56\xac\xd6\x1f\xeb\x72\x22\x65\x5c\xc6\x58\xd4\x65\x9c" - "\xeb\xc9\xfd\x3b\xcb\x85\x3d\xbc\xa7\x0d\xfb\xb8\x03\xb6\x02\xe6" - "\xaf\x1e\x21\x92\x2e\xe8\x7b\x1d\xeb\x2a\x79\x8f\x9b\xed\x66\x9d" - "\x9f\x86\x9f\xa4\x75\x9f\x09\xf7\xda\x2e\xb5\xa6\x74\x7f\x97\xf5" - "\xba\x58\x37\xea\xfe\xd9\x61\x19\x8f\x0e\x3a\x7d\xdd\xa1\x01\x9e" - "\xdd\x30\x97\x79\x61\x60\x2d\xbb\x2e\x4a\xff\x77\xcb\x6f\x35\xae" - "\x0b\x19\xf7\xf5\x8b\xae\x27\x93\xf9\xfa\x72\xaa\x30\x09\xcc\x47" - "\xeb\x76\x73\x1b\x4c\x4f\x1f\xb9\x0f\xa2\xac\x79\x80\x7e\xeb\x33" - "\xfa\xe9\xa7\xef\xb3\x18\x7b\x2c\x0a\xef\x0d\x4f\x0d\x46\xab\xf8" - "\x74\x5a\xef\xfa\x5a\x3a\xb9\x69\x08\xcb\xa4\x41\xaf\x8b\x69\xb5" - "\xbe\xe5\x62\x5a\x6d\xb8\x26\x82\x56\x93\x2f\xa6\xd5\xfa\x60\xc4" - "\xb9\x8f\xbe\x8f\xb2\xe1\x29\xa6\x19\xf3\x18\xfa\xbd\x1b\x7c\xb6" - "\x6e\x80\x7e\x1b\xd2\x2f\xa6\xdf\x86\x49\xf1\xe9\xb7\xbe\xed\x86" - "\x68\x38\xa5\xf1\xe6\x8d\xe1\x6b\x4d\xfa\x7d\x9e\x0d\x8d\x2d\xa3" - "\xe5\x9a\x34\xf8\xba\x49\xcb\x7f\xdd\x8d\x3f\xfc\xf2\x3a\x62\xc0" - "\x16\x17\x3a\xaf\x6e\x68\x68\xc1\x9a\x97\xf7\x95\x2e\x31\x17\x1d" - "\x33\xf6\x3c\xf0\xdc\xc6\x6b\xe7\xd9\xe1\x7b\x05\xa7\x33\x3d\xf9" - "\x5b\x51\xe0\xf7\x36\x65\x97\xfe\x33\xf5\xef\xb9\xdc\x34\x83\x12" - "\xd7\x92\xfd\x40\xd5\xed\x9c\x6e\x03\x0f\x49\xdf\x27\xf9\x2d\xd5" - "\x41\x60\xe6\x86\x33\x69\x10\xb8\xfd\xfc\x3f\xd8\x9d\xd6\x18\x7d" - "\x94\x3f\x7f\x71\xde\x8b\x0b\x17\x7e\xbd\x2a\x8a\xf4\x1f\x2b\x77" - "\x6b\xfc\x3d\xa3\xa1\x3d\xeb\x9e\x5b\x85\x36\xd9\xfe\xb7\xa8\x79" - "\xf3\x9f\xa1\xff\x7e\xd6\xa4\x6c\xc9\x27\x3b\xd5\x3d\xde\x97\x27" - "\x44\xe8\x67\xf0\xc8\xcb\x99\xc2\xfd\xcf\xc5\x03\x63\xfc\x72\xca" - "\xc5\x63\xfc\xb2\x3d\xfe\x18\xbf\x3c\x55\x5b\xce\xf7\x2a\x5e\xc6" - "\xfa\x67\xb1\xb4\x35\xf9\x9d\xcf\xcb\xb1\x66\xee\xc4\x7a\xb9\x6b" - "\xf6\xca\xe6\x7b\x73\x57\x26\xb0\x3f\xb8\xfc\x76\x46\xe8\xbc\xe8" - "\xe0\x33\x6b\x3e\x1f\xe3\x6f\x67\xf0\x37\x73\xf8\x1b\xaa\xb2\x0c" - "\x9e\xb7\x9c\x20\xb9\x76\x44\xbe\xbd\xfa\x84\xfc\xc6\x2f\x6c\x85" - "\x97\x6b\x0c\xdb\xda\x8a\xe9\x8d\xef\x17\x6f\x56\xe3\xd1\xc6\x63" - "\xc1\xed\xe5\xae\x6c\x56\x6d\x9c\xe7\xef\x63\x91\x55\xd9\x10\x2f" - "\xb7\x5d\x72\xef\x3e\xa9\xbd\x70\xd0\x98\xf2\x6e\xd7\xb0\xd7\x55" - "\xec\x69\xf6\x69\xf4\x1b\x3e\x75\xec\x5f\xd7\xe3\xf6\x64\xc4\xfa" - "\xe7\x29\x1f\x13\xcf\x74\xc3\xb7\x07\xcf\x73\xfa\xd7\x03\xfc\xbd" - "\x15\xac\xe3\xec\x25\x6b\x87\x9e\x26\xcf\x35\xd5\x83\xec\xa1\x1b" - "\xf7\x89\x75\x1f\xb8\x61\x80\x51\xd9\xef\x17\x84\x77\xd6\x17\x03" - "\xbe\x7d\x9e\x3d\x86\x6f\x98\xf4\x07\xc4\xdc\xcb\xdf\x74\x39\x41" - "\x9e\xcf\xe4\x37\x64\x6e\xe0\xfd\x6f\x4f\xa0\x45\xfa\x25\x7a\x7c" - "\x91\xb8\xe8\x78\xd4\xf2\x1e\x2d\xe7\x47\xe2\xe2\x98\xbf\x6c\xd1" - "\x78\xc7\xc2\x45\xf6\x67\xf3\x17\x15\xe6\x2e\x92\x31\x60\x65\x78" - "\xd9\xa2\x95\x85\x7c\x22\x71\x73\x72\xcc\x1c\xa6\xfb\x10\xf6\xfb" - "\x4a\x49\x3f\xc2\xd2\xc7\x41\x0f\x93\xf2\x23\x2c\xcb\x52\xf3\x7a" - "\x69\xde\xc5\x3e\x33\xa5\xfd\xfe\x5f\xe0\xab\xd4\x0a\x15\x7b\x5e" - "\xf7\xb3\x61\xbe\x2b\xad\x8c\x53\x67\x77\xbf\xcf\x18\xfb\x2e\xf5" - "\xe5\xc8\xfb\x1e\x32\x4e\xf8\x6b\x3c\x6e\xa5\xe4\x75\x4c\xe3\x58" - "\xa7\x3a\x3f\x97\x1e\x33\xf8\xd9\xf0\x37\x64\x58\x7c\xdf\x64\x7c" - "\x30\xd2\xd7\xa8\xec\x3e\xcc\x79\xb6\xfe\x7e\xac\x36\x11\xe3\x1e" - "\x30\x35\x03\x8f\x32\x7b\x2c\x1e\xc0\xef\x7a\xa4\x4f\x1c\xf0\xe5" - "\x32\xfa\x59\x96\x85\xe7\x8b\x6c\xd5\xfb\xa6\x65\xc1\x28\x5d\xba" - "\xa0\x28\x99\xa6\xcc\x2f\x28\x60\xb9\x9e\xbf\xa0\x60\xd9\x92\x17" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Wed May 19 19:52:42 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 35F9C106566B; Wed, 19 May 2010 19:52:42 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0D55E8FC15; Wed, 19 May 2010 19:52:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4JJqf6O071721; Wed, 19 May 2010 19:52:41 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4JJqfSL071718; Wed, 19 May 2010 19:52:41 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005191952.o4JJqfSL071718@svn.freebsd.org> From: John Baldwin Date: Wed, 19 May 2010 19:52:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208311 - in head/sys: amd64/include i386/include X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 19:52:42 -0000 Author: jhb Date: Wed May 19 19:52:41 2010 New Revision: 208311 URL: http://svn.freebsd.org/changeset/base/208311 Log: Add constants for the optional EOI suppression support in local APICs and EOI registers in I/O APICs. Modified: head/sys/amd64/include/apicreg.h head/sys/i386/include/apicreg.h Modified: head/sys/amd64/include/apicreg.h ============================================================================== --- head/sys/amd64/include/apicreg.h Wed May 19 19:45:17 2010 (r208310) +++ head/sys/amd64/include/apicreg.h Wed May 19 19:52:41 2010 (r208311) @@ -234,6 +234,7 @@ typedef struct IOAPIC ioapic_t; #define APIC_VER_VERSION 0x000000ff #define APIC_VER_MAXLVT 0x00ff0000 #define MAXLVTSHIFT 16 +#define APIC_VER_EOI_SUPPRESSION 0x01000000 /* fields in LDR */ #define APIC_LDR_RESERVED 0x00ffffff @@ -254,6 +255,7 @@ typedef struct IOAPIC ioapic_t; #define APIC_SVR_FOCUS 0x00000200 # define APIC_SVR_FEN 0x00000000 # define APIC_SVR_FDIS 0x00000200 +#define APIC_SVR_EOI_SUPPRESSION 0x00001000 /* fields in TPR */ #define APIC_TPR_PRIO 0x000000ff @@ -364,6 +366,7 @@ typedef struct IOAPIC ioapic_t; /* window register offset */ #define IOAPIC_WINDOW 0x10 +#define IOAPIC_EOIR 0x40 /* indexes into IO APIC */ #define IOAPIC_ID 0x00 Modified: head/sys/i386/include/apicreg.h ============================================================================== --- head/sys/i386/include/apicreg.h Wed May 19 19:45:17 2010 (r208310) +++ head/sys/i386/include/apicreg.h Wed May 19 19:52:41 2010 (r208311) @@ -234,6 +234,7 @@ typedef struct IOAPIC ioapic_t; #define APIC_VER_VERSION 0x000000ff #define APIC_VER_MAXLVT 0x00ff0000 #define MAXLVTSHIFT 16 +#define APIC_VER_EOI_SUPPRESSION 0x01000000 /* fields in LDR */ #define APIC_LDR_RESERVED 0x00ffffff @@ -254,6 +255,7 @@ typedef struct IOAPIC ioapic_t; #define APIC_SVR_FOCUS 0x00000200 # define APIC_SVR_FEN 0x00000000 # define APIC_SVR_FDIS 0x00000200 +#define APIC_SVR_EOI_SUPPRESSION 0x00001000 /* fields in TPR */ #define APIC_TPR_PRIO 0x000000ff @@ -364,6 +366,7 @@ typedef struct IOAPIC ioapic_t; /* window register offset */ #define IOAPIC_WINDOW 0x10 +#define IOAPIC_EOIR 0x40 /* indexes into IO APIC */ #define IOAPIC_ID 0x00 From owner-svn-src-head@FreeBSD.ORG Wed May 19 20:00:15 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 72BA91065675; Wed, 19 May 2010 20:00:15 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 635EA8FC1B; Wed, 19 May 2010 20:00:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4JK0Fgi073444; Wed, 19 May 2010 20:00:15 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4JK0FkM073442; Wed, 19 May 2010 20:00:15 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005192000.o4JK0FkM073442@svn.freebsd.org> From: Andrew Gallatin Date: Wed, 19 May 2010 20:00:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208312 - head/sys/dev/mxge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 20:00:15 -0000 Author: gallatin Date: Wed May 19 20:00:15 2010 New Revision: 208312 URL: http://svn.freebsd.org/changeset/base/208312 Log: Correctly identify some twinax cables, which report a media type of 1. Modified: head/sys/dev/mxge/if_mxge.c Modified: head/sys/dev/mxge/if_mxge.c ============================================================================== --- head/sys/dev/mxge/if_mxge.c Wed May 19 19:52:41 2010 (r208311) +++ head/sys/dev/mxge/if_mxge.c Wed May 19 20:00:15 2010 (r208312) @@ -2778,7 +2778,8 @@ static struct mxge_media_type mxge_sfp_m {0, (1 << 7), "Reserved"}, {IFM_10G_LRM, (1 << 6), "10GBASE-LRM"}, {IFM_10G_LR, (1 << 5), "10GBASE-LR"}, - {IFM_10G_SR, (1 << 4), "10GBASE-SR"} + {IFM_10G_SR, (1 << 4), "10GBASE-SR"}, + {IFM_10G_TWINAX,(1 << 0), "10GBASE-Twinax"} }; static void From owner-svn-src-head@FreeBSD.ORG Wed May 19 23:56:28 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A499B1065675; Wed, 19 May 2010 23:56:28 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 926208FC15; Wed, 19 May 2010 23:56:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4JNuRux026464; Wed, 19 May 2010 23:56:27 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4JNuRNu026456; Wed, 19 May 2010 23:56:27 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005192356.o4JNuRNu026456@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 19 May 2010 23:56:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208320 - in head: etc etc/periodic/weekly gnu/usr.bin share/man share/mk usr.bin usr.sbin X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2010 23:56:28 -0000 Author: jkim Date: Wed May 19 23:56:26 2010 New Revision: 208320 URL: http://svn.freebsd.org/changeset/base/208320 Log: Add a new build option, MAN_UTILS. This option lets you control building utilities and related support files for manual pages, which were previously controlled by MAN. For POLA, the default depends on MAN, i.e., WITHOUT_MAN implies WITHOUT_MAN_UTILS and WITH_MAN implies WITH_MAN_UTILS. This patch is slightly improved by me from: PR: misc/145212 Modified: head/etc/Makefile head/etc/periodic/weekly/Makefile head/gnu/usr.bin/Makefile head/share/man/Makefile head/share/mk/bsd.own.mk head/usr.bin/Makefile head/usr.sbin/Makefile Modified: head/etc/Makefile ============================================================================== --- head/etc/Makefile Wed May 19 22:36:46 2010 (r208319) +++ head/etc/Makefile Wed May 19 23:56:26 2010 (r208320) @@ -64,7 +64,7 @@ BIN1+= hosts.lpd printcap BIN1+= ${.CURDIR}/../usr.bin/mail/misc/mail.rc .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" BIN1+= ${.CURDIR}/../gnu/usr.bin/man/manpath/manpath.config .endif Modified: head/etc/periodic/weekly/Makefile ============================================================================== --- head/etc/periodic/weekly/Makefile Wed May 19 22:36:46 2010 (r208319) +++ head/etc/periodic/weekly/Makefile Wed May 19 23:56:26 2010 (r208320) @@ -11,7 +11,7 @@ FILES= 340.noid \ FILES+= 310.locate .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" FILES+= 320.whatis 330.catman .endif Modified: head/gnu/usr.bin/Makefile ============================================================================== --- head/gnu/usr.bin/Makefile Wed May 19 22:36:46 2010 (r208319) +++ head/gnu/usr.bin/Makefile Wed May 19 23:56:26 2010 (r208320) @@ -39,7 +39,7 @@ _grep= grep _texinfo= texinfo .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" _man= man .endif Modified: head/share/man/Makefile ============================================================================== --- head/share/man/Makefile Wed May 19 22:36:46 2010 (r208319) +++ head/share/man/Makefile Wed May 19 23:56:26 2010 (r208320) @@ -9,10 +9,12 @@ SUBDIR= man1 man3 man4 man5 man6 man7 ma MAKEWHATIS?= makewhatis makedb: +.if ${MK_MAN_UTILS} != "no" ${MAKEWHATIS} ${DESTDIR}${BINDIR}/man .if ${MK_OPENSSL} != "no" ${MAKEWHATIS} ${DESTDIR}${BINDIR}/openssl/man .endif +.endif .include "${.CURDIR}/../Makefile.inc" .include Modified: head/share/mk/bsd.own.mk ============================================================================== --- head/share/mk/bsd.own.mk Wed May 19 22:36:46 2010 (r208319) +++ head/share/mk/bsd.own.mk Wed May 19 23:56:26 2010 (r208320) @@ -524,7 +524,8 @@ MK_${var}_SUPPORT:= yes # MK_* options whose default value depends on another option. # .for vv in \ - GSSAPI/KERBEROS + GSSAPI/KERBEROS \ + MAN_UTILS/MAN .if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H}) .error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set. .endif Modified: head/usr.bin/Makefile ============================================================================== --- head/usr.bin/Makefile Wed May 19 22:36:46 2010 (r208319) +++ head/usr.bin/Makefile Wed May 19 23:56:26 2010 (r208320) @@ -120,7 +120,7 @@ SUBDIR= alias \ m4 \ ${_mail} \ ${_make} \ - makewhatis \ + ${_makewhatis} \ mesg \ minigzip \ ministat \ @@ -256,7 +256,7 @@ _at= at _atm= atm .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" _catman= catman .endif @@ -309,6 +309,10 @@ _msgs= msgs _make= make .endif +.if ${MK_MAN_UTILS} != "no" +_makewhatis= makewhatis +.endif + .if ${MK_NETCAT} != "no" _nc= nc .endif Modified: head/usr.sbin/Makefile ============================================================================== --- head/usr.sbin/Makefile Wed May 19 22:36:46 2010 (r208319) +++ head/usr.sbin/Makefile Wed May 19 23:56:26 2010 (r208320) @@ -90,7 +90,7 @@ SUBDIR= ${_ac} \ mailwrapper \ makefs \ ${_makemap} \ - manctl \ + ${_manctl} \ memcontrol \ mergemaster \ mfiutil \ @@ -322,6 +322,10 @@ _nscd= nscd _lpr= lpr .endif +.if ${MK_MAN_UTILS} != "no" +_manctl= manctl +.endif + .if ${MK_NETGRAPH} != "no" _flowctl= flowctl _lmcconfig= lmcconfig From owner-svn-src-head@FreeBSD.ORG Thu May 20 00:07:21 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E862F106564A; Thu, 20 May 2010 00:07:21 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D7ADA8FC14; Thu, 20 May 2010 00:07:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K07LCD028965; Thu, 20 May 2010 00:07:21 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K07LI8028963; Thu, 20 May 2010 00:07:21 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005200007.o4K07LI8028963@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 20 May 2010 00:07:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208322 - head/tools/build/options X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 00:07:22 -0000 Author: jkim Date: Thu May 20 00:07:21 2010 New Revision: 208322 URL: http://svn.freebsd.org/changeset/base/208322 Log: Add an option file for WITHOUT_MAN_UTILS to regenerate src.conf(5). Added: head/tools/build/options/WITHOUT_MAN_UTILS (contents, props changed) Added: head/tools/build/options/WITHOUT_MAN_UTILS ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITHOUT_MAN_UTILS Thu May 20 00:07:21 2010 (r208322) @@ -0,0 +1,9 @@ +.\" $FreeBSD$ +Set to not build utilities for manual pages, +.Xr apropos 1 , +.Xr catman 1 , +.Xr makewhatis 1 , +.Xr man 1 , +.Xr whatis 1 , +.Xr manctl 8 , +and related support files. From owner-svn-src-head@FreeBSD.ORG Thu May 20 00:10:11 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BA9F9106566C; Thu, 20 May 2010 00:10:11 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AA2A78FC1B; Thu, 20 May 2010 00:10:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K0AB3f029618; Thu, 20 May 2010 00:10:11 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K0ABNi029616; Thu, 20 May 2010 00:10:11 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005200010.o4K0ABNi029616@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 20 May 2010 00:10:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208323 - head/share/man/man5 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 00:10:11 -0000 Author: jkim Date: Thu May 20 00:10:11 2010 New Revision: 208323 URL: http://svn.freebsd.org/changeset/base/208323 Log: Regen for r208321. Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Thu May 20 00:07:21 2010 (r208322) +++ head/share/man/man5/src.conf.5 Thu May 20 00:10:11 2010 (r208323) @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 188848 2009-02-20 11:09:55Z mtm .\" $FreeBSD$ -.Dd March 26, 2010 +.Dd May 19, 2010 .Dt SRC.CONF 5 .Os .Sh NAME @@ -556,6 +556,24 @@ and related support files. .It Va WITHOUT_MAN .\" from FreeBSD: head/tools/build/options/WITHOUT_MAN 156932 2006-03-21 07:50:50Z ru Set to not build manual pages. +When set, it also enforces the following options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_MAN_UTILS +(can be overridden with +.Va WITH_MAN_UTILS ) +.El +.It Va WITHOUT_MAN_UTILS +.\" from FreeBSD: head/tools/build/options/WITHOUT_MAN_UTILS 208322 2010-05-20 00:07:21Z jkim +Set to not build utilities for manual pages, +.Xr apropos 1 , +.Xr catman 1 , +.Xr makewhatis 1 , +.Xr man 1 , +.Xr whatis 1 , +.Xr manctl 8 , +and related support files. .It Va WITHOUT_NCP .\" from FreeBSD: head/tools/build/options/WITHOUT_NCP 156932 2006-03-21 07:50:50Z ru Set to not build programs, libraries, and kernel modules From owner-svn-src-head@FreeBSD.ORG Thu May 20 00:13:02 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3EC981065674; Thu, 20 May 2010 00:13:02 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2E52B8FC08; Thu, 20 May 2010 00:13:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K0D12B030286; Thu, 20 May 2010 00:13:01 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K0D1Jo030284; Thu, 20 May 2010 00:13:01 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005200013.o4K0D1Jo030284@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 20 May 2010 00:13:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208324 - head X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 00:13:02 -0000 Author: jkim Date: Thu May 20 00:13:01 2010 New Revision: 208324 URL: http://svn.freebsd.org/changeset/base/208324 Log: Remove makewhatis(1) from bootstrap tools. We no longer support source upgrades from versions prior to 6.0 on head. Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Thu May 20 00:10:11 2010 (r208323) +++ head/Makefile.inc1 Thu May 20 00:13:01 2010 (r208324) @@ -969,7 +969,6 @@ bootstrap-tools: ${_groff} \ ${_ar} \ usr.bin/lorder \ - usr.bin/makewhatis \ ${_mklocale} \ usr.bin/rpcgen \ ${_sed} \ From owner-svn-src-head@FreeBSD.ORG Thu May 20 00:20:41 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from [127.0.0.1] (unknown [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id EC2451065672; Thu, 20 May 2010 00:20:40 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: src-committers@FreeBSD.org Date: Wed, 19 May 2010 20:20:30 -0400 User-Agent: KMail/1.6.2 References: <201005200010.o4K0ABNi029616@svn.freebsd.org> In-Reply-To: <201005200010.o4K0ABNi029616@svn.freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201005192020.32270.jkim@FreeBSD.org> Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org Subject: Re: svn commit: r208323 - head/share/man/man5 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 00:20:41 -0000 On Wednesday 19 May 2010 08:10 pm, Jung-uk Kim wrote: > Author: jkim > Date: Thu May 20 00:10:11 2010 > New Revision: 208323 > URL: http://svn.freebsd.org/changeset/base/208323 > > Log: > Regen for r208321. > > Modified: > head/share/man/man5/src.conf.5 Sorry, it's actually regen for r208322. thompsa@ beat me. :-) Jung-uk Kim From owner-svn-src-head@FreeBSD.ORG Thu May 20 05:03:03 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 161EB1065670; Thu, 20 May 2010 05:03:03 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 059828FC17; Thu, 20 May 2010 05:03:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K532hp093970; Thu, 20 May 2010 05:03:02 GMT (envelope-from maxim@svn.freebsd.org) Received: (from maxim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K532oV093968; Thu, 20 May 2010 05:03:02 GMT (envelope-from maxim@svn.freebsd.org) Message-Id: <201005200503.o4K532oV093968@svn.freebsd.org> From: Maxim Konovalov Date: Thu, 20 May 2010 05:03:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208327 - head/share/misc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 05:03:03 -0000 Author: maxim Date: Thu May 20 05:03:02 2010 New Revision: 208327 URL: http://svn.freebsd.org/changeset/base/208327 Log: o OpenBSD 4.7 added. Modified: head/share/misc/bsd-family-tree Modified: head/share/misc/bsd-family-tree ============================================================================== --- head/share/misc/bsd-family-tree Thu May 20 00:31:51 2010 (r208326) +++ head/share/misc/bsd-family-tree Thu May 20 05:03:02 2010 (r208327) @@ -236,6 +236,7 @@ FreeBSD 5.2 | | | 8.0 | | | | | | | FreeBSD | | | | | V 7.3 | | | | + | | | OpenBSD 4.7 | | | | | | FreeBSD 9 -current | NetBSD -current OpenBSD -current | | | | | | @@ -512,6 +513,7 @@ DragonFly 2.4.0 2009-09-16 [DFB] OpenBSD 4.6 2009-10-18 [OBD] FreeBSD 8.0 2009-11-26 [FBD] FreeBSD 7.3 2010-03-23 [FBD] +OpenBSD 4.7 2010-05-19 [OBD] Bibliography ------------------------ From owner-svn-src-head@FreeBSD.ORG Thu May 20 05:53:29 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6B7E31065675; Thu, 20 May 2010 05:53:29 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id D9C338FC08; Thu, 20 May 2010 05:53:28 +0000 (UTC) Received: by gwb11 with SMTP id 11so2570854gwb.13 for ; Wed, 19 May 2010 22:53:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Iqz4GobDR+G8QnokdPWXYWaBzJ+7xx3ZaY7IaJVlHfY=; b=iPs2upS3QT/uDKjYhC5AMRV9QVXrjx4KAPxGBXj91kUF9/KW8GT8TT505SeW7vixD3 Zn/SjoUZpPbOpujcpguQFmM6FxgMBSXs+qeCBdQ/l3sYSNUvubAiXU6JY+36r3bVz7R8 0k6DYQIe8X53BwS4E/R63zVaPzfNamtbEb7ko= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=uicGQTvr/88MukkUeS+Q7yCZgWoY1G15erPyKWjeicYZv4xCY/B5iRmcO+AgCC17tq dK9CSxzVmeK50m+GtvcwPN75XZ0GW45AcfVLDvdRIELLdlsbpnHEc7DcBgmeoK34UJBc DSaOnDOvJ8VeeYy11diZzBswtLgZSA3tRwbJ4= MIME-Version: 1.0 Received: by 10.101.29.16 with SMTP id g16mr11853952anj.245.1274334807381; Wed, 19 May 2010 22:53:27 -0700 (PDT) Received: by 10.100.208.9 with HTTP; Wed, 19 May 2010 22:53:27 -0700 (PDT) In-Reply-To: <201005200503.o4K532oV093968@svn.freebsd.org> References: <201005200503.o4K532oV093968@svn.freebsd.org> Date: Thu, 20 May 2010 09:53:27 +0400 Message-ID: From: pluknet To: Maxim Konovalov Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208327 - head/share/misc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 05:53:29 -0000 On 20 May 2010 09:03, Maxim Konovalov wrote: > Author: maxim > Date: Thu May 20 05:03:02 2010 > New Revision: 208327 > URL: http://svn.freebsd.org/changeset/base/208327 > > Log: > =A0o OpenBSD 4.7 added. > > Modified: > =A0head/share/misc/bsd-family-tree Matthew's 2.6.0 technically tagged on 2010-03-28. http://gitweb.dragonflybsd.org/dragonfly.git/tag/4f39cf4b1fe60d4fbec4b908fa= fb7f075fd3d866 Would you like to add this as well? Index: share/misc/bsd-family-tree =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- share/misc/bsd-family-tree (revision 208329) +++ share/misc/bsd-family-tree (working copy) @@ -235,7 +235,7 @@ *--FreeBSD | | | | | | 8.0 | | | | | | | FreeBSD | | | | - | V 7.3 | | | | + | V 7.3 | | | DragonFly = 2.6.0 | | | OpenBSD 4.7 | | | | | | FreeBSD 9 -current | NetBSD -current OpenBSD -current | @@ -513,6 +513,7 @@ OpenBSD 4.6 2009-10-18 [OBD] FreeBSD 8.0 2009-11-26 [FBD] FreeBSD 7.3 2010-03-23 [FBD] +DragonFly 2.6.0 2010-03-28 [DFB] OpenBSD 4.7 2010-05-19 [OBD] Bibliography --=20 wbr, pluknet From owner-svn-src-head@FreeBSD.ORG Thu May 20 06:05:41 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4439A1065676; Thu, 20 May 2010 06:05:41 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1AF578FC13; Thu, 20 May 2010 06:05:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K65ecM007941; Thu, 20 May 2010 06:05:40 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K65etb007938; Thu, 20 May 2010 06:05:40 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201005200605.o4K65etb007938@svn.freebsd.org> From: Kirk McKusick Date: Thu, 20 May 2010 06:05:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208330 - head/sbin/fsck_ffs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 06:05:41 -0000 Author: mckusick Date: Thu May 20 06:05:40 2010 New Revision: 208330 URL: http://svn.freebsd.org/changeset/base/208330 Log: Add support to background fsck to delete zero-length directories. Modified: head/sbin/fsck_ffs/pass2.c head/sbin/fsck_ffs/pass4.c Modified: head/sbin/fsck_ffs/pass2.c ============================================================================== --- head/sbin/fsck_ffs/pass2.c Thu May 20 05:38:54 2010 (r208329) +++ head/sbin/fsck_ffs/pass2.c Thu May 20 06:05:40 2010 (r208330) @@ -274,6 +274,7 @@ static int pass2check(struct inodesc *idesc) { struct direct *dirp = idesc->id_dirp; + char dirname[MAXPATHLEN + 1]; struct inoinfo *inp; int n, entrysize, ret = 0; union dinode *dp; @@ -436,9 +437,37 @@ again: errmsg = "DUP/BAD"; else if (!preen && !usedsoftdep) errmsg = "ZERO LENGTH DIRECTORY"; - else { + else if (cursnapshot == 0) { n = 1; break; + } else { + getpathname(dirname, idesc->id_number, + dirp->d_ino); + pwarn("ZERO LENGTH DIRECTORY %s I=%d", + dirname, dirp->d_ino); + /* + * We need to: + * setcwd(idesc->id_parent); + * rmdir(dirp->d_name); + */ + cmd.value = idesc->id_number; + if (sysctlbyname("vfs.ffs.setcwd", 0, 0, + &cmd, sizeof cmd) == -1) { + /* kernel lacks support */ + printf(" (IGNORED)\n"); + n = 1; + break; + } + if (rmdir(dirp->d_name) == -1) { + printf(" (REMOVAL FAILED: %s)\n", + strerror(errno)); + n = 1; + break; + } + /* ".." reference to parent is removed */ + inoinfo(idesc->id_number)->ino_linkcnt--; + printf(" (REMOVED)\n"); + break; } fileerror(idesc->id_number, dirp->d_ino, errmsg); if ((n = reply("REMOVE")) == 1) Modified: head/sbin/fsck_ffs/pass4.c ============================================================================== --- head/sbin/fsck_ffs/pass4.c Thu May 20 05:38:54 2010 (r208329) +++ head/sbin/fsck_ffs/pass4.c Thu May 20 06:05:40 2010 (r208330) @@ -97,6 +97,9 @@ pass4(void) break; case DCLEAR: + /* if on snapshot, already cleared */ + if (cursnapshot != 0) + break; dp = ginode(inumber); if (DIP(dp, di_size) == 0) { clri(&idesc, "ZERO LENGTH", 1); From owner-svn-src-head@FreeBSD.ORG Thu May 20 06:16:13 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE84D1065674; Thu, 20 May 2010 06:16:13 +0000 (UTC) (envelope-from phk@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AEDBB8FC08; Thu, 20 May 2010 06:16:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K6GDFD010284; Thu, 20 May 2010 06:16:13 GMT (envelope-from phk@svn.freebsd.org) Received: (from phk@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K6GDN8010282; Thu, 20 May 2010 06:16:13 GMT (envelope-from phk@svn.freebsd.org) Message-Id: <201005200616.o4K6GDN8010282@svn.freebsd.org> From: Poul-Henning Kamp Date: Thu, 20 May 2010 06:16:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208331 - head/sys/sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 06:16:13 -0000 Author: phk Date: Thu May 20 06:16:13 2010 New Revision: 208331 URL: http://svn.freebsd.org/changeset/base/208331 Log: Fix some way-past-brucification complaints from FlexeLint. Modified: head/sys/sys/endian.h Modified: head/sys/sys/endian.h ============================================================================== --- head/sys/sys/endian.h Thu May 20 06:05:40 2010 (r208330) +++ head/sys/sys/endian.h Thu May 20 06:16:13 2010 (r208331) @@ -33,6 +33,11 @@ #include #include +#ifndef _UINT8_T_DECLARED +typedef __uint8_t uint8_t; +#define _UINT8_T_DECLARED +#endif + #ifndef _UINT16_T_DECLARED typedef __uint16_t uint16_t; #define _UINT16_T_DECLARED @@ -94,7 +99,7 @@ typedef __uint64_t uint64_t; static __inline uint16_t be16dec(const void *pp) { - unsigned char const *p = (unsigned char const *)pp; + uint8_t const *p = (uint8_t const *)pp; return ((p[0] << 8) | p[1]); } @@ -102,15 +107,15 @@ be16dec(const void *pp) static __inline uint32_t be32dec(const void *pp) { - unsigned char const *p = (unsigned char const *)pp; + uint8_t const *p = (uint8_t const *)pp; - return ((p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]); + return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]); } static __inline uint64_t be64dec(const void *pp) { - unsigned char const *p = (unsigned char const *)pp; + uint8_t const *p = (uint8_t const *)pp; return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4)); } @@ -118,7 +123,7 @@ be64dec(const void *pp) static __inline uint16_t le16dec(const void *pp) { - unsigned char const *p = (unsigned char const *)pp; + uint8_t const *p = (uint8_t const *)pp; return ((p[1] << 8) | p[0]); } @@ -126,15 +131,15 @@ le16dec(const void *pp) static __inline uint32_t le32dec(const void *pp) { - unsigned char const *p = (unsigned char const *)pp; + uint8_t const *p = (uint8_t const *)pp; - return ((p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]); + return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]); } static __inline uint64_t le64dec(const void *pp) { - unsigned char const *p = (unsigned char const *)pp; + uint8_t const *p = (uint8_t const *)pp; return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p)); } @@ -142,7 +147,7 @@ le64dec(const void *pp) static __inline void be16enc(void *pp, uint16_t u) { - unsigned char *p = (unsigned char *)pp; + uint8_t *p = (uint8_t *)pp; p[0] = (u >> 8) & 0xff; p[1] = u & 0xff; @@ -151,7 +156,7 @@ be16enc(void *pp, uint16_t u) static __inline void be32enc(void *pp, uint32_t u) { - unsigned char *p = (unsigned char *)pp; + uint8_t *p = (uint8_t *)pp; p[0] = (u >> 24) & 0xff; p[1] = (u >> 16) & 0xff; @@ -162,16 +167,16 @@ be32enc(void *pp, uint32_t u) static __inline void be64enc(void *pp, uint64_t u) { - unsigned char *p = (unsigned char *)pp; + uint8_t *p = (uint8_t *)pp; - be32enc(p, u >> 32); - be32enc(p + 4, u & 0xffffffff); + be32enc(p, (uint32_t)(u >> 32)); + be32enc(p + 4, (uint32_t)(u & 0xffffffffU)); } static __inline void le16enc(void *pp, uint16_t u) { - unsigned char *p = (unsigned char *)pp; + uint8_t *p = (uint8_t *)pp; p[0] = u & 0xff; p[1] = (u >> 8) & 0xff; @@ -180,7 +185,7 @@ le16enc(void *pp, uint16_t u) static __inline void le32enc(void *pp, uint32_t u) { - unsigned char *p = (unsigned char *)pp; + uint8_t *p = (uint8_t *)pp; p[0] = u & 0xff; p[1] = (u >> 8) & 0xff; @@ -191,10 +196,10 @@ le32enc(void *pp, uint32_t u) static __inline void le64enc(void *pp, uint64_t u) { - unsigned char *p = (unsigned char *)pp; + uint8_t *p = (uint8_t *)pp; - le32enc(p, u & 0xffffffff); - le32enc(p + 4, u >> 32); + le32enc(p, (uint32_t)(u & 0xffffffffU)); + le32enc(p + 4, (uint32_t)(u >> 32)); } #endif /* _SYS_ENDIAN_H_ */ From owner-svn-src-head@FreeBSD.ORG Thu May 20 06:18:03 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 836061065673; Thu, 20 May 2010 06:18:03 +0000 (UTC) (envelope-from phk@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 72C948FC14; Thu, 20 May 2010 06:18:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K6I3uQ010716; Thu, 20 May 2010 06:18:03 GMT (envelope-from phk@svn.freebsd.org) Received: (from phk@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K6I3G3010713; Thu, 20 May 2010 06:18:03 GMT (envelope-from phk@svn.freebsd.org) Message-Id: <201005200618.o4K6I3G3010713@svn.freebsd.org> From: Poul-Henning Kamp Date: Thu, 20 May 2010 06:18:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208332 - in head/sys: amd64/include i386/include X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 06:18:03 -0000 Author: phk Date: Thu May 20 06:18:03 2010 New Revision: 208332 URL: http://svn.freebsd.org/changeset/base/208332 Log: Rename an argument from "exp" to "expect" since the former makes FlexeLint uneasy, in case anybody think it might be exp(3) in libm. This also makes it consistent with other archs. Modified: head/sys/amd64/include/atomic.h head/sys/i386/include/atomic.h Modified: head/sys/amd64/include/atomic.h ============================================================================== --- head/sys/amd64/include/atomic.h Thu May 20 06:16:13 2010 (r208331) +++ head/sys/amd64/include/atomic.h Thu May 20 06:18:03 2010 (r208332) @@ -76,8 +76,8 @@ void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v); \ void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v) -int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src); -int atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src); +int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src); +int atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src); u_int atomic_fetchadd_int(volatile u_int *p, u_int v); u_long atomic_fetchadd_long(volatile u_long *p, u_long v); @@ -124,13 +124,13 @@ struct __hack /* * Atomic compare and set, used by the mutex functions * - * if (*dst == exp) *dst = src (all 32 bit words) + * if (*dst == expect) *dst = src (all 32 bit words) * * Returns 0 on failure, non-zero on success */ static __inline int -atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src) +atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) { u_char res; @@ -143,7 +143,7 @@ atomic_cmpset_int(volatile u_int *dst, u : "=a" (res), /* 0 */ "=m" (*dst) /* 1 */ : "r" (src), /* 2 */ - "a" (exp), /* 3 */ + "a" (expect), /* 3 */ "m" (*dst) /* 4 */ : "memory"); @@ -151,7 +151,7 @@ atomic_cmpset_int(volatile u_int *dst, u } static __inline int -atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src) +atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src) { u_char res; @@ -164,7 +164,7 @@ atomic_cmpset_long(volatile u_long *dst, : "=a" (res), /* 0 */ "=m" (*dst) /* 1 */ : "r" (src), /* 2 */ - "a" (exp), /* 3 */ + "a" (expect), /* 3 */ "m" (*dst) /* 4 */ : "memory"); Modified: head/sys/i386/include/atomic.h ============================================================================== --- head/sys/i386/include/atomic.h Thu May 20 06:16:13 2010 (r208331) +++ head/sys/i386/include/atomic.h Thu May 20 06:18:03 2010 (r208332) @@ -76,7 +76,7 @@ void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v); \ void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v) -int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src); +int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src); u_int atomic_fetchadd_int(volatile u_int *p, u_int v); #define ATOMIC_STORE_LOAD(TYPE, LOP, SOP) \ @@ -122,7 +122,7 @@ struct __hack /* * Atomic compare and set, used by the mutex functions * - * if (*dst == exp) *dst = src (all 32 bit words) + * if (*dst == expect) *dst = src (all 32 bit words) * * Returns 0 on failure, non-zero on success */ @@ -130,7 +130,7 @@ struct __hack #ifdef CPU_DISABLE_CMPXCHG static __inline int -atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src) +atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) { u_char res; @@ -147,7 +147,7 @@ atomic_cmpset_int(volatile u_int *dst, u : "=q" (res), /* 0 */ "=m" (*dst) /* 1 */ : "r" (src), /* 2 */ - "r" (exp), /* 3 */ + "r" (expect), /* 3 */ "m" (*dst) /* 4 */ : "memory"); @@ -157,7 +157,7 @@ atomic_cmpset_int(volatile u_int *dst, u #else /* !CPU_DISABLE_CMPXCHG */ static __inline int -atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src) +atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) { u_char res; @@ -170,7 +170,7 @@ atomic_cmpset_int(volatile u_int *dst, u : "=a" (res), /* 0 */ "=m" (*dst) /* 1 */ : "r" (src), /* 2 */ - "a" (exp), /* 3 */ + "a" (expect), /* 3 */ "m" (*dst) /* 4 */ : "memory"); @@ -292,10 +292,10 @@ ATOMIC_STORE_LOAD(long, "cmpxchgl %0,%1" #ifndef WANT_FUNCTIONS static __inline int -atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src) +atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src) { - return (atomic_cmpset_int((volatile u_int *)dst, (u_int)exp, + return (atomic_cmpset_int((volatile u_int *)dst, (u_int)expect, (u_int)src)); } From owner-svn-src-head@FreeBSD.ORG Thu May 20 06:51:02 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5DFE1106564A; Thu, 20 May 2010 06:51:02 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 35C498FC14; Thu, 20 May 2010 06:51:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K6p2To018120; Thu, 20 May 2010 06:51:02 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K6p2tB018118; Thu, 20 May 2010 06:51:02 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005200651.o4K6p2tB018118@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 20 May 2010 06:51:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208333 - head X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 06:51:02 -0000 Author: jkim Date: Thu May 20 06:51:01 2010 New Revision: 208333 URL: http://svn.freebsd.org/changeset/base/208333 Log: Revert r208324. We still need it for installworld as $PATH is overriden. Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Thu May 20 06:18:03 2010 (r208332) +++ head/Makefile.inc1 Thu May 20 06:51:01 2010 (r208333) @@ -969,6 +969,7 @@ bootstrap-tools: ${_groff} \ ${_ar} \ usr.bin/lorder \ + usr.bin/makewhatis \ ${_mklocale} \ usr.bin/rpcgen \ ${_sed} \ From owner-svn-src-head@FreeBSD.ORG Thu May 20 08:07:25 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EA427106566C; Thu, 20 May 2010 08:07:25 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A41068FC1B; Thu, 20 May 2010 08:07:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K87Piw034943; Thu, 20 May 2010 08:07:25 GMT (envelope-from maxim@svn.freebsd.org) Received: (from maxim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K87PRe034941; Thu, 20 May 2010 08:07:25 GMT (envelope-from maxim@svn.freebsd.org) Message-Id: <201005200807.o4K87PRe034941@svn.freebsd.org> From: Maxim Konovalov Date: Thu, 20 May 2010 08:07:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208336 - head/share/misc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 08:07:26 -0000 Author: maxim Date: Thu May 20 08:07:25 2010 New Revision: 208336 URL: http://svn.freebsd.org/changeset/base/208336 Log: o DragonFly 2.6.0 added. Submitted by: pluknet Modified: head/share/misc/bsd-family-tree Modified: head/share/misc/bsd-family-tree ============================================================================== --- head/share/misc/bsd-family-tree Thu May 20 08:03:08 2010 (r208335) +++ head/share/misc/bsd-family-tree Thu May 20 08:07:25 2010 (r208336) @@ -235,7 +235,7 @@ FreeBSD 5.2 | | *--FreeBSD | | | | | | 8.0 | | | | | | | FreeBSD | | | | - | V 7.3 | | | | + | V 7.3 | | | DragonFly 2.6.0 | | | OpenBSD 4.7 | | | | | | FreeBSD 9 -current | NetBSD -current OpenBSD -current | @@ -513,6 +513,7 @@ DragonFly 2.4.0 2009-09-16 [DFB] OpenBSD 4.6 2009-10-18 [OBD] FreeBSD 8.0 2009-11-26 [FBD] FreeBSD 7.3 2010-03-23 [FBD] +DragonFly 2.6.0 2010-03-28 [DFB] OpenBSD 4.7 2010-05-19 [OBD] Bibliography From owner-svn-src-head@FreeBSD.ORG Thu May 20 08:07:46 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F3FE10657A2; Thu, 20 May 2010 08:07:46 +0000 (UTC) (envelope-from maxim.konovalov@gmail.com) Received: from mp2.macomnet.net (cl-2958.ham-01.de.sixxs.net [IPv6:2001:6f8:900:b8d::2]) by mx1.freebsd.org (Postfix) with ESMTP id B51EC8FC1D; Thu, 20 May 2010 08:07:45 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mp2.macomnet.net (8.14.3/8.14.3) with ESMTP id o4K87hHq074247; Thu, 20 May 2010 12:07:43 +0400 (MSD) (envelope-from maxim.konovalov@gmail.com) Date: Thu, 20 May 2010 12:07:43 +0400 (MSD) From: Maxim Konovalov To: pluknet In-Reply-To: Message-ID: <20100520120720.R13435@mp2.macomnet.net> References: <201005200503.o4K532oV093968@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=KOI8-R Content-Transfer-Encoding: 8BIT Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG Subject: Re: svn commit: r208327 - head/share/misc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 08:07:46 -0000 On Thu, 20 May 2010, 09:53+0400, pluknet wrote: > On 20 May 2010 09:03, Maxim Konovalov wrote: > > Author: maxim > > Date: Thu May 20 05:03:02 2010 > > New Revision: 208327 > > URL: http://svn.freebsd.org/changeset/base/208327 > > > > Log: > > šo OpenBSD 4.7 added. > > > > Modified: > > šhead/share/misc/bsd-family-tree > > Matthew's 2.6.0 technically tagged on 2010-03-28. > http://gitweb.dragonflybsd.org/dragonfly.git/tag/4f39cf4b1fe60d4fbec4b908fafb7f075fd3d866 > Would you like to add this as well? > Added. Thanks! -- Maxim Konovalov From owner-svn-src-head@FreeBSD.ORG Thu May 20 08:15:06 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C89F4106564A; Thu, 20 May 2010 08:15:06 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9F6AF8FC1E; Thu, 20 May 2010 08:15:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K8F6TC036662; Thu, 20 May 2010 08:15:06 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K8F6FT036656; Thu, 20 May 2010 08:15:06 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201005200815.o4K8F6FT036656@svn.freebsd.org> From: Doug Barton Date: Thu, 20 May 2010 08:15:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208337 - in head/contrib/bind9: . lib/dns X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 08:15:06 -0000 Author: dougb Date: Thu May 20 08:15:06 2010 New Revision: 208337 URL: http://svn.freebsd.org/changeset/base/208337 Log: Upgrade to 9.6.2-P2, which addresses the following; Named could return SERVFAIL for negative responses from unsigned zones. Modified: head/contrib/bind9/CHANGES head/contrib/bind9/lib/dns/api head/contrib/bind9/lib/dns/validator.c head/contrib/bind9/version Directory Properties: head/contrib/bind9/ (props changed) Modified: head/contrib/bind9/CHANGES ============================================================================== --- head/contrib/bind9/CHANGES Thu May 20 08:07:25 2010 (r208336) +++ head/contrib/bind9/CHANGES Thu May 20 08:15:06 2010 (r208337) @@ -1,3 +1,8 @@ + --- 9.6.2-P2 released --- + +2876. [bug] Named could return SERVFAIL for negative responses + from unsigned zones. [RT #21131] + --- 9.6.2-P1 released --- 2852. [bug] Handle broken DNSSEC trust chains better. [RT #15619] Modified: head/contrib/bind9/lib/dns/api ============================================================================== --- head/contrib/bind9/lib/dns/api Thu May 20 08:07:25 2010 (r208336) +++ head/contrib/bind9/lib/dns/api Thu May 20 08:15:06 2010 (r208337) @@ -1,3 +1,3 @@ LIBINTERFACE = 56 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 1 Modified: head/contrib/bind9/lib/dns/validator.c ============================================================================== --- head/contrib/bind9/lib/dns/validator.c Thu May 20 08:07:25 2010 (r208336) +++ head/contrib/bind9/lib/dns/validator.c Thu May 20 08:15:06 2010 (r208337) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: validator.c,v 1.164.12.11.8.2 2010/02/25 10:57:12 tbox Exp $ */ +/* $Id: validator.c,v 1.164.12.11.8.3 2010/04/21 04:29:01 marka Exp $ */ #include @@ -2961,7 +2961,7 @@ nsecvalidate(dns_validator_t *val, isc_b } findnsec3proofs(val); - if (val->authcount == val->authfail) + if (val->authfail != 0 && val->authcount == val->authfail) return (DNS_R_BROKENCHAIN); validator_log(val, ISC_LOG_DEBUG(3), "nonexistence proof(s) not found"); Modified: head/contrib/bind9/version ============================================================================== --- head/contrib/bind9/version Thu May 20 08:07:25 2010 (r208336) +++ head/contrib/bind9/version Thu May 20 08:15:06 2010 (r208337) @@ -1,4 +1,4 @@ -# $Id: version,v 1.43.12.8.2.3 2010/03/04 00:08:28 marka Exp $ +# $Id: version,v 1.43.12.8.2.4 2010/05/10 02:07:03 marka Exp $ # # This file must follow /bin/sh rules. It is imported directly via # configure. @@ -7,4 +7,4 @@ MAJORVER=9 MINORVER=6 PATCHVER=2 RELEASETYPE=-P -RELEASEVER=1 +RELEASEVER=2 From owner-svn-src-head@FreeBSD.ORG Thu May 20 08:51:01 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A1EF106566B; Thu, 20 May 2010 08:51:01 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6AA1B8FC15; Thu, 20 May 2010 08:51:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K8p1Za044741; Thu, 20 May 2010 08:51:01 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K8p1rj044739; Thu, 20 May 2010 08:51:01 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005200851.o4K8p1rj044739@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 20 May 2010 08:51:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208340 - head/sys/vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 08:51:01 -0000 Author: kib Date: Thu May 20 08:51:01 2010 New Revision: 208340 URL: http://svn.freebsd.org/changeset/base/208340 Log: When waiting for the busy page, do not unlock the object unless unlock cannot be avoided. Reviewed by: alc MFC after: 1 week Modified: head/sys/vm/vm_fault.c Modified: head/sys/vm/vm_fault.c ============================================================================== --- head/sys/vm/vm_fault.c Thu May 20 08:43:31 2010 (r208339) +++ head/sys/vm/vm_fault.c Thu May 20 08:51:01 2010 (r208340) @@ -340,9 +340,13 @@ RetryFault:; vm_page_flag_set(fs.m, PG_REFERENCED); vm_page_unlock_queues(); vm_page_unlock(fs.m); - VM_OBJECT_UNLOCK(fs.object); if (fs.object != fs.first_object) { - VM_OBJECT_LOCK(fs.first_object); + if (!VM_OBJECT_TRYLOCK( + fs.first_object)) { + VM_OBJECT_UNLOCK(fs.object); + VM_OBJECT_LOCK(fs.first_object); + VM_OBJECT_LOCK(fs.object); + } vm_page_lock(fs.first_m); vm_page_free(fs.first_m); vm_page_unlock(fs.first_m); @@ -351,7 +355,6 @@ RetryFault:; fs.first_m = NULL; } unlock_map(&fs); - VM_OBJECT_LOCK(fs.object); if (fs.m == vm_page_lookup(fs.object, fs.pindex)) { vm_page_sleep_if_busy(fs.m, TRUE, From owner-svn-src-head@FreeBSD.ORG Thu May 20 08:56:50 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61AA71065678; Thu, 20 May 2010 08:56:50 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 516ED8FC17; Thu, 20 May 2010 08:56:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K8uocw046072; Thu, 20 May 2010 08:56:50 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K8uo19046070; Thu, 20 May 2010 08:56:50 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005200856.o4K8uo19046070@svn.freebsd.org> From: Marius Strobl Date: Thu, 20 May 2010 08:56:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208341 - head/lib/libmagic X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 08:56:50 -0000 Author: marius Date: Thu May 20 08:56:50 2010 New Revision: 208341 URL: http://svn.freebsd.org/changeset/base/208341 Log: Update to a config.h created by a file 5.03 configure script. This causes file.1 to contain the correct version number and SIZEOF_LONG_LONG to be defined as appropriate, which is crucial for 64-bit big-endian ELF files to be handled correctly on big-endian systems. PR: 146387 Reviewed by: delphij MFC after: 3 days Modified: head/lib/libmagic/config.h Modified: head/lib/libmagic/config.h ============================================================================== --- head/lib/libmagic/config.h Thu May 20 08:51:01 2010 (r208340) +++ head/lib/libmagic/config.h Thu May 20 08:56:50 2010 (r208341) @@ -1,18 +1,18 @@ /* $FreeBSD$ */ /* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.in by autoheader. */ +/* config.h.in. Generated from configure.ac by autoheader. */ -/* Use the builtin ELF recognition code */ +/* Define in built-in ELF support is used */ #define BUILTIN_ELF 1 -/* Recognize ELF core files */ +/* Define for ELF core file support */ #define ELFCORE 1 /* Define to 1 if you have the `asprintf' function. */ #define HAVE_ASPRINTF 1 -/* */ +/* HAVE_DAYLIGHT */ /* #undef HAVE_DAYLIGHT */ /* Define to 1 if you have the header file. */ @@ -51,9 +51,6 @@ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 -/* */ -#define HAVE_LONG_LONG 1 - /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 @@ -69,9 +66,6 @@ /* Define to 1 if you have the `mmap' function. */ #define HAVE_MMAP 1 -/* Define to 1 if you have the `snprintf' function. */ -#define HAVE_SNPRINTF 1 - /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 @@ -102,13 +96,12 @@ /* Define to 1 if you have the `strtoul' function. */ #define HAVE_STRTOUL 1 +/* HAVE_STRUCT_OPTION */ +#define HAVE_STRUCT_OPTION 1 + /* Define to 1 if `st_rdev' is member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_RDEV 1 -/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use - `HAVE_STRUCT_STAT_ST_RDEV' instead. */ -#define HAVE_ST_RDEV 1 - /* Define to 1 if `tm_gmtoff' is member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 @@ -133,7 +126,7 @@ /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 -/* */ +/* HAVE_TM_ISDST */ #define HAVE_TM_ISDST 1 /* HAVE_TM_ZONE */ @@ -169,9 +162,6 @@ /* Define to 1 if you have the `vasprintf' function. */ #define HAVE_VASPRINTF 1 -/* Define to 1 if you have the `vsnprintf' function. */ -#define HAVE_VSNPRINTF 1 - /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 @@ -199,34 +189,22 @@ #define PACKAGE "file" /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" +#define PACKAGE_BUGREPORT "christos@astron.com" /* Define to the full name of this package. */ -#define PACKAGE_NAME "" +#define PACKAGE_NAME "file" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" +#define PACKAGE_STRING "file 5.03" /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" +#define PACKAGE_TARNAME "file" /* Define to the version of this package. */ -#define PACKAGE_VERSION VERSION - -/* */ -#define SIZEOF_INT64_T 8 +#define PACKAGE_VERSION "5.03" -/* */ -#define SIZEOF_UINT16_T 2 - -/* */ -#define SIZEOF_UINT32_T 4 - -/* */ -#define SIZEOF_UINT64_T 8 - -/* */ -#define SIZEOF_UINT8_T 1 +/* The size of `long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -235,7 +213,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "5.00" +#define VERSION "5.03" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ @@ -247,8 +225,49 @@ #endif #endif +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +/* #undef _LARGEFILE_SOURCE */ + /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ + +/* Define to a type if does not define. */ +/* #undef mbstate_t */ + +/* Define to `long int' if does not define. */ +/* #undef off_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + + +#ifndef HAVE_UINT8_T +typedef unsigned char uint8_t; +#endif +#ifndef HAVE_UINT16_T +typedef unsigned short uint16_t; +#endif +#ifndef HAVE_UINT32_T +typedef unsigned int uint32_t; +#endif +#ifndef HAVE_INT32_T +typedef int int32_t; +#endif +#ifndef HAVE_UINT64_T +#if SIZEOF_LONG_LONG == 8 +typedef unsigned long long uint64_t; +#else +typedef unsigned long uint64_t; +#endif +#endif +#ifndef HAVE_INT64_T +#if SIZEOF_LONG_LONG == 8 +typedef long long int64_t; +#else +typedef long int64_t; +#endif +#endif + From owner-svn-src-head@FreeBSD.ORG Thu May 20 09:00:11 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D20BF106567A; Thu, 20 May 2010 09:00:11 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C289E8FC14; Thu, 20 May 2010 09:00:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4K90BQE046860; Thu, 20 May 2010 09:00:11 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4K90BjN046858; Thu, 20 May 2010 09:00:11 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005200900.o4K90BjN046858@svn.freebsd.org> From: Marius Strobl Date: Thu, 20 May 2010 09:00:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208342 - head/lib/libmagic X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 09:00:11 -0000 Author: marius Date: Thu May 20 09:00:11 2010 New Revision: 208342 URL: http://svn.freebsd.org/changeset/base/208342 Log: With r208341 in place WARNS can be increased. Modified: head/lib/libmagic/Makefile Modified: head/lib/libmagic/Makefile ============================================================================== --- head/lib/libmagic/Makefile Thu May 20 08:56:50 2010 (r208341) +++ head/lib/libmagic/Makefile Thu May 20 09:00:11 2010 (r208342) @@ -20,7 +20,7 @@ MAGICPATH?= /usr/share/misc CFLAGS+= -DMAGIC='"${MAGICPATH}/magic"' -DHAVE_CONFIG_H CFLAGS+= -I${.CURDIR} -I${CONTRDIR} -WARNS?= 1 +WARNS?= 3 CLEANFILES+= magic magic.mgc From owner-svn-src-head@FreeBSD.ORG Thu May 20 10:51:22 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D3E54106564A; Thu, 20 May 2010 10:51:22 +0000 (UTC) (envelope-from osa@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C27908FC0A; Thu, 20 May 2010 10:51:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KApMfI073008; Thu, 20 May 2010 10:51:22 GMT (envelope-from osa@svn.freebsd.org) Received: (from osa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KApMkP073007; Thu, 20 May 2010 10:51:22 GMT (envelope-from osa@svn.freebsd.org) Message-Id: <201005201051.o4KApMkP073007@svn.freebsd.org> From: "Sergey A. Osokin" Date: Thu, 20 May 2010 10:51:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208347 - head/usr.bin/calendar/calendars/ru_RU.KOI8-R X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 10:51:23 -0000 Author: osa (ports committer) Date: Thu May 20 10:51:22 2010 New Revision: 208347 URL: http://svn.freebsd.org/changeset/base/208347 Log: Add new memory days for Russian Federation. Fix date and description. Obtained from: http://pda.lenta.ru/news/2010/05/19/baptism/ http://www.garant.ru/doc/busref/spr_prazdn/ Thanks to: maxim Modified: head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.common (contents, props changed) Modified: head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.common ============================================================================== --- head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.common Thu May 20 09:41:13 2010 (r208346) +++ head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.common Thu May 20 10:51:22 2010 (r208347) @@ -18,6 +18,7 @@ LANG=ru_RU.KOI8-R 10 ÆÅ× äÅÎØ ÄÉÐÌÏÍÁÔÉÞÅÓËÏÇÏ ÒÁÂÏÔÎÉËÁ 1 ÍÁÒ ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ÇÒÁÖÄÁÎÓËÏÊ ÏÂÏÒÏÎÙ 03/SunSecond äÅÎØ ÒÁÂÏÔÎÉËÏ× ÇÅÏÄÅÚÉÉ É ËÁÒÔÏÇÒÁÆÉÉ +11 ÍÁÒ äÅÎØ ÒÁÂÏÔÎÉËÁ ÏÒÇÁÎÏ× ÎÁÒËÏËÏÎÔÒÏÌÑ 18 ÍÁÒ äÅÎØ ÎÁÌÏÇÏ×ÏÊ ÐÏÌÉÃÉÉ 03/SunThird äÅÎØ ÒÁÂÏÔÎÉËÏ× ÔÏÒÇÏ×ÌÉ, ÂÙÔÏ×ÏÇÏ ÏÂÓÌÕÖÉ×ÁÎÉÑ ÎÁÓÅÌÅÎÉÑ É ÖÉÌÉÝÎÏ-ËÏÍÍÕÎÁÌØÎÏÇÏ ÈÏÚÑÊÓÔ×Á 27 ÍÁÒ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÔÅÁÔÒÁ @@ -33,22 +34,28 @@ LANG=ru_RU.KOI8-R 17 ÍÁÊ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÔÅÌÅËÏÍÍÕÎÉËÁÃÉÊ 18 ÍÁÊ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÍÕÚÅÅ× 24 ÍÁÊ äÅÎØ ÓÌÁ×ÑÎÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔÉ É ËÕÌØÔÕÒÙ +26 ÍÁÊ äÅÎØ ÒÏÓÓÉÊÓËÏÇÏ ÐÒÅÄÐÒÉÎÉÍÁÔÅÌØÓÔ×Á 27 ÍÁÊ ïÂÝÅÒÏÓÓÉÊÓËÉÊ ÄÅÎØ ÂÉÂÌÉÏÔÅË 28 ÍÁÊ äÅÎØ ÐÏÇÒÁÎÉÞÎÉËÁ +30 ÍÁÊ äÅÎØ ÐÏÖÁÒÎÏÊ ÏÈÒÁÎÙ +31 ÍÁÊ äÅÎØ òÏÓÓÉÊÓËÏÊ áÄ×ÏËÁÔÕÒÙ 05/SunLast äÅÎØ ÈÉÍÉËÁ 1 ÉÀÎ äÅÎØ ÚÁÝÉÔÙ ÄÅÔÅÊ + 5 ÉÀÎ äÅÎØ ÜËÏÌÏÇÁ 6 ÉÀÎ ðÕÛËÉÎÓËÉÊ ÄÅÎØ 8 ÉÀÎ äÅÎØ ÓÏÃÉÁÌØÎÏÇÏ ÒÁÂÏÔÎÉËÁ 06/SunSecond äÅÎØ ÒÁÂÏÔÎÉËÏ× ÌÅÇËÏÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ 06/SunThird äÅÎØ ÍÅÄÉÃÉÎÓËÏÇÏ ÒÁÂÏÔÎÉËÁ 22 ÉÀÎ äÅÎØ ÐÁÍÑÔÉ É ÓËÏÒÂÉ (îÁÞÁÌÏ ÷ÅÌÉËÏÊ ïÔÅÞÅÓÔ×ÅÎÎÏÊ ÷ÏÊÎÙ, 1941 ÇÏÄ) 27 ÉÀÎ äÅÎØ ÍÏÌÏÄÅÖÉ +29 ÉÀÎ äÅÎØ ÐÁÒÔÉÚÁÎ É ÐÏÄÐÏÌØÝÉËÏ× 06/SatLast äÅÎØ ÉÚÏÂÒÅÔÁÔÅÌÑ É ÒÁÃÉÏÎÁÌÉÚÁÔÏÒÁ 07/SunFirst äÅÎØ ÒÁÂÏÔÎÉËÏ× ÍÏÒÓËÏÇÏ É ÒÅÞÎÏÇÏ ÆÌÏÔÁ 07/SunSecond äÅÎØ ÒÙÂÁËÁ 07/SunSecond äÅÎØ ÒÏÓÓÉÊÓËÏÊ ÐÏÞÔÙ 07/SunThird äÅÎØ ÍÅÔÁÌÌÕÒÇÁ 07/SunLast äÅÎØ ÷ÏÅÎÎÏ-íÏÒÓËÏÇÏ æÌÏÔÁ +28 ÉÀÌ äÅÎØ ËÒÅÝÅÎÉÑ òÕÓÉ 6 Á×Ç äÅÎØ ÖÅÌÅÚÎÏÄÏÒÏÖÎÙÈ ×ÏÊÓË 08/SunFirst äÅÎØ ÖÅÌÅÚÎÏÄÏÒÏÖÎÉËÁ 12 Á×Ç äÅÎØ ×ÏÅÎÎÏ-×ÏÚÄÕÛÎÙÈ ÓÉÌ @@ -59,12 +66,16 @@ LANG=ru_RU.KOI8-R 08/SunLast äÅÎØ ÛÁÈÔÅÒÁ 1 ÓÅÎ äÅÎØ ÚÎÁÎÉÊ 2 ÓÅÎ äÅÎØ ÒÏÓÓÉÊÓËÏÊ Ç×ÁÒÄÉÉ + 3 ÓÅÎ äÅÎØ ÓÏÌÉÄÁÒÎÏÓÔÉ × ÂÏÒØÂÅ Ó ÔÅÒÒÏÒÉÚÍÏÍ + 4 ÓÅÎ äÅÎØ ÓÐÅÃÉÁÌÉÓÔÁ ÐÏ ÑÄÅÒÎÏÍÕ ÏÂÅÓÐÅÞÅÎÉÀ 09/SunFirst äÅÎØ ÒÁÂÏÔÎÉËÏ× ÎÅÆÔÑÎÏÊ É ÇÁÚÏ×ÏÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ 09/SunSecond äÅÎØ ÔÁÎËÉÓÔÁ 09/SunThird äÅÎØ ÒÁÂÏÔÎÉËÏ× ÌÅÓÁ +28 ÓÅÎ äÅÎØ ÒÁÂÏÔÎÉËÁ ÁÔÏÍÎÏÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ 09/SunLast äÅÎØ ÍÁÛÉÎÏÓÔÒÏÉÔÅÌÑ 1 ÏËÔ äÅÎØ ÐÏÖÉÌÙÈ ÌÀÄÅÊ - 4 ÏËÔ äÅÎØ ×ÏÅÎÎÏ-ËÏÓÍÉÞÅÓËÉÈ ÓÉÌ + 1 ÏËÔ äÅÎØ ÓÕÈÏÐÕÔÎÙÈ ×ÏÊÓË + 4 ÏËÔ äÅÎØ ËÏÓÍÉÞÅÓËÉÈ ×ÏÊÓË 5 ÏËÔ äÅÎØ ÕÞÉÔÅÌÑ 14 ÏËÔ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÓÔÁÎÄÁÒÔÉÚÁÃÉÉ 10/SunSecond äÅÎØ ÒÁÂÏÔÎÉËÏ× ÓÅÌØÓËÏÇÏ ÈÏÚÑÊÓÔ×Á É ÐÅÒÅÒÁÂÁÔÙ×ÁÀÝÅÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ @@ -73,15 +84,19 @@ LANG=ru_RU.KOI8-R 25 ÏËÔ äÅÎØ ÔÁÍÏÖÅÎÎÉËÁ 30 ÏËÔ äÅÎØ ÐÁÍÑÔÉ ÖÅÒÔ× ÐÏÌÉÔÉÞÅÓËÉÈ ÒÅÐÒÅÓÓÉÊ 10/SunLast äÅÎØ ÒÁÂÏÔÎÉËÏ× Á×ÔÏÍÏÂÉÌØÎÏÇÏ ÔÒÁÎÓÐÏÒÔÁ + 7 ÎÏÑ äÅÎØ ÏËÔÑÂÒØÓËÏÊ ÒÅ×ÏÌÀÃÉÉ 1917 ÇÏÄÁ 9 ÎÏÑ ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ËÁÞÅÓÔ×Á 10 ÎÏÑ äÅÎØ ÍÉÌÉÃÉÉ 16 ÎÏÑ äÅÎØ ÍÏÒÓËÏÊ ÐÅÈÏÔÙ 17 ÎÏÑ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÓÔÕÄÅÎÔÏ× -11/SunThird äÅÎØ ÒÁËÅÔÎÙÈ ×ÏÊÓË É ÁÒÔÉÌÌÅÒÉÉ +19 ÎÏÑ äÅÎØ ÒÁËÅÔÎÙÈ ×ÏÊÓË É ÁÒÔÉÌÌÅÒÉÉ 21 ÎÏÑ äÅÎØ ÒÁÂÏÔÎÉËÏ× ÎÁÌÏÇÏ×ÙÈ ÏÒÇÁÎÏ× 26 ÎÏÑ ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ÉÎÆÏÒÍÁÃÉÉ 11/SunLast äÅÎØ ÍÁÔÅÒÉ 1 ÄÅË ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ÂÏÒØÂÙ ÓÏ óðéäÏÍ + 3 ÄÅË äÅÎØ ÀÒÉÓÔÁ + 9 ÄÅË äÅÎØ çÅÒÏÅ× ïÔÅÞÅÓÔ×Á +12 ÄÅË äÅÎØ ëÏÎÓÔÉÔÕÃÉÉ 17 ÄÅË äÅÎØ ÒÁËÅÔÎÙÈ ×ÏÊÓË ÓÔÒÁÔÅÇÉÞÅÓËÏÇÏ ÎÁÚÎÁÞÅÎÉÑ 20 ÄÅË äÅÎØ ÒÁÂÏÔÎÉËÁ ÏÒÇÁÎÏ× ÂÅÚÏÐÁÓÎÏÓÔÉ 22 ÄÅË äÅÎØ ÜÎÅÒÇÅÔÉËÁ From owner-svn-src-head@FreeBSD.ORG Thu May 20 12:44:06 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C6D191065672; Thu, 20 May 2010 12:44:06 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B3A828FC17; Thu, 20 May 2010 12:44:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KCi62Y097694; Thu, 20 May 2010 12:44:06 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KCi6SF097693; Thu, 20 May 2010 12:44:06 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005201244.o4KCi6SF097693@svn.freebsd.org> From: Marius Strobl Date: Thu, 20 May 2010 12:44:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208348 - in head/sys/cam: ata scsi X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 12:44:06 -0000 Author: marius Date: Thu May 20 12:44:06 2010 New Revision: 208348 URL: http://svn.freebsd.org/changeset/base/208348 Log: Remove unnecessary headers which were inherited from cam_xpt.c without reason. Reviewed by: mav MFC after: 3 days Modified: head/sys/cam/ata/ata_xpt.c head/sys/cam/scsi/scsi_xpt.c Modified: head/sys/cam/ata/ata_xpt.c ============================================================================== --- head/sys/cam/ata/ata_xpt.c Thu May 20 10:51:22 2010 (r208347) +++ head/sys/cam/ata/ata_xpt.c Thu May 20 12:44:06 2010 (r208348) @@ -44,10 +44,6 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef PC98 -#include /* geometry translation */ -#endif - #include #include #include Modified: head/sys/cam/scsi/scsi_xpt.c ============================================================================== --- head/sys/cam/scsi/scsi_xpt.c Thu May 20 10:51:22 2010 (r208347) +++ head/sys/cam/scsi/scsi_xpt.c Thu May 20 12:44:06 2010 (r208348) @@ -47,10 +47,6 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef PC98 -#include /* geometry translation */ -#endif - #include #include #include From owner-svn-src-head@FreeBSD.ORG Thu May 20 12:46:19 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A3A83106564A; Thu, 20 May 2010 12:46:19 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9028A8FC21; Thu, 20 May 2010 12:46:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KCkJGb098235; Thu, 20 May 2010 12:46:19 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KCkJe8098227; Thu, 20 May 2010 12:46:19 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005201246.o4KCkJe8098227@svn.freebsd.org> From: Marius Strobl Date: Thu, 20 May 2010 12:46:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208349 - in head/sys: cam/ata conf dev/ata pc98/include pc98/pc98 sparc64/include sparc64/sparc64 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 12:46:19 -0000 Author: marius Date: Thu May 20 12:46:19 2010 New Revision: 208349 URL: http://svn.freebsd.org/changeset/base/208349 Log: Change ad_firmware_geom_adjust() to operate on a struct disk * only and hook it up to ada(4) also. While at it, rename *ad_firmware_geom_adjust() to *ata_disk_firmware_geom_adjust() etc now that these are no longer limited to ad(4). Reviewed by: mav MFC after: 3 days Modified: head/sys/cam/ata/ata_da.c head/sys/conf/files.sparc64 head/sys/dev/ata/ata-disk.c head/sys/pc98/include/md_var.h head/sys/pc98/pc98/pc98_machdep.c head/sys/sparc64/include/md_var.h head/sys/sparc64/sparc64/ata_machdep.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Thu May 20 12:44:06 2010 (r208348) +++ head/sys/cam/ata/ata_da.c Thu May 20 12:46:19 2010 (r208349) @@ -58,6 +58,8 @@ __FBSDID("$FreeBSD$"); #include +#include /* geometry translation */ + #ifdef _KERNEL #define ATA_MAX_28BIT_LBA 268435455UL @@ -178,6 +180,13 @@ static void adashutdown(void *arg, int #define ADA_DEFAULT_SEND_ORDERED 1 #endif +/* + * Most platforms map firmware geometry to actual, but some don't. If + * not overridden, default to nothing. + */ +#ifndef ata_disk_firmware_geom_adjust +#define ata_disk_firmware_geom_adjust(disk) +#endif static int ada_retry_count = ADA_DEFAULT_RETRY; static int ada_default_timeout = ADA_DEFAULT_TIMEOUT; @@ -737,9 +746,9 @@ adaregister(struct cam_periph *periph, v ata_logical_sector_offset(&cgd->ident_data)) % softc->disk->d_stripesize; } - /* XXX: these are not actually "firmware" values, so they may be wrong */ softc->disk->d_fwsectors = softc->params.secs_per_track; softc->disk->d_fwheads = softc->params.heads; + ata_disk_firmware_geom_adjust(softc->disk); disk_create(softc->disk, DISK_VERSION); mtx_lock(periph->sim->mtx); Modified: head/sys/conf/files.sparc64 ============================================================================== --- head/sys/conf/files.sparc64 Thu May 20 12:44:06 2010 (r208348) +++ head/sys/conf/files.sparc64 Thu May 20 12:46:19 2010 (r208349) @@ -84,7 +84,7 @@ sparc64/pci/schizo.c optional pci sparc64/sbus/dma_sbus.c optional sbus sparc64/sbus/sbus.c optional sbus sparc64/sbus/lsi64854.c optional sbus -sparc64/sparc64/ata_machdep.c optional atadisk +sparc64/sparc64/ata_machdep.c optional ada | atadisk | da sparc64/sparc64/autoconf.c standard sparc64/sparc64/bus_machdep.c standard sparc64/sparc64/cache.c standard Modified: head/sys/dev/ata/ata-disk.c ============================================================================== --- head/sys/dev/ata/ata-disk.c Thu May 20 12:44:06 2010 (r208348) +++ head/sys/dev/ata/ata-disk.c Thu May 20 12:46:19 2010 (r208349) @@ -67,8 +67,8 @@ static dumper_t ad_dump; * Most platforms map firmware geom to actual, but some don't. If * not overridden, default to nothing. */ -#ifndef ad_firmware_geom_adjust -#define ad_firmware_geom_adjust(dev, disk) +#ifndef ata_disk_firmware_geom_adjust +#define ata_disk_firmware_geom_adjust(disk) #endif /* local vars */ @@ -142,9 +142,9 @@ ad_attach(device_t dev) adp->disk->d_flags |= DISKFLAG_CANDELETE; strlcpy(adp->disk->d_ident, atadev->param.serial, sizeof(adp->disk->d_ident)); + ata_disk_firmware_geom_adjust(adp->disk); disk_create(adp->disk, DISK_VERSION); device_add_child(dev, "subdisk", device_get_unit(dev)); - ad_firmware_geom_adjust(dev, adp->disk); bus_generic_attach(dev); callout_init(&atadev->spindown_timer, 1); Modified: head/sys/pc98/include/md_var.h ============================================================================== --- head/sys/pc98/include/md_var.h Thu May 20 12:44:06 2010 (r208348) +++ head/sys/pc98/include/md_var.h Thu May 20 12:46:19 2010 (r208349) @@ -41,13 +41,11 @@ extern int need_post_dma_flush; /* * The ad driver maps the IDE disk's actual geometry to the firmware's * notion of geometry. However, PC98 machines need to do something - * different sometimes, so override the hook so we can do so. We have to - * have a knowledge that a device_t is a struct device * here to avoid - * including too many things from this file. + * different sometimes, so override the hook so we can do so. */ struct disk; -struct device; -void pc98_ad_firmware_geom_adjust(struct device *, struct disk *); -#define ad_firmware_geom_adjust(dev, dsk) pc98_ad_firmware_geom_adjust(dev, dsk) +void pc98_ata_disk_firmware_geom_adjust(struct disk *); +#define ata_disk_firmware_geom_adjust(disk) \ + pc98_ata_disk_firmware_geom_adjust(disk) #endif /* !_PC98_INCLUDE_MD_VAR_H_ */ Modified: head/sys/pc98/pc98/pc98_machdep.c ============================================================================== --- head/sys/pc98/pc98/pc98_machdep.c Thu May 20 12:44:06 2010 (r208348) +++ head/sys/pc98/pc98/pc98_machdep.c Thu May 20 12:46:19 2010 (r208349) @@ -211,7 +211,7 @@ scsi_da_bios_params(struct ccb_calc_geom /* IDE BIOS compatible mode. */ static void -pc98_ad_geom_adjust_idebios(struct disk *disk) +pc98_ata_disk_geom_adjust_idebios(struct disk *disk) { if (disk->d_mediasize < MEDIASIZE_4_3G) { @@ -236,7 +236,7 @@ pc98_ad_geom_adjust_idebios(struct disk /* SCSI BIOS compatible mode. */ static void -pc98_ad_geom_adjust_scsibios(struct disk *disk) +pc98_ata_disk_geom_adjust_scsibios(struct disk *disk) { if (disk->d_mediasize < MEDIASIZE_8G) { @@ -261,13 +261,13 @@ pc98_ad_geom_adjust_scsibios(struct disk /* Compatible with the revision 1.28. */ static void -pc98_ad_geom_adjust_cyl16bit(struct disk *disk) +pc98_ata_disk_geom_adjust_cyl16bit(struct disk *disk) { off_t totsec = disk->d_mediasize / disk->d_sectorsize; off_t cyl = totsec / disk->d_fwsectors / disk->d_fwheads; - + /* - * It is impossible to have more than 65535 cylendars, so if + * It is impossible to have more than 65535 cylinders, so if * we have more then try to adjust. This is lame, but it is * only POC. */ @@ -289,7 +289,7 @@ pc98_ad_geom_adjust_cyl16bit(struct disk } void -pc98_ad_firmware_geom_adjust(device_t dev, struct disk *disk) +pc98_ata_disk_firmware_geom_adjust(struct disk *disk) { u_int oldsectors, oldheads; @@ -298,13 +298,13 @@ pc98_ad_firmware_geom_adjust(device_t de switch (ad_geom_method) { case AD_GEOM_ADJUST_COMPATIDE: - pc98_ad_geom_adjust_idebios(disk); + pc98_ata_disk_geom_adjust_idebios(disk); break; case AD_GEOM_ADJUST_COMPATSCSI: - pc98_ad_geom_adjust_scsibios(disk); + pc98_ata_disk_geom_adjust_scsibios(disk); break; case AD_GEOM_ADJUST_COMPATCYL16: - pc98_ad_geom_adjust_cyl16bit(disk); + pc98_ata_disk_geom_adjust_cyl16bit(disk); break; default: /* Do nothing. */ @@ -313,9 +313,9 @@ pc98_ad_firmware_geom_adjust(device_t de if (bootverbose && (oldsectors != disk->d_fwsectors || oldheads != disk->d_fwheads)) - device_printf(dev, - "geometry adjusted from [%dH/%dS] to [%dH/%dS]\n", + printf( + "%s%d: geometry adjusted from [%dH/%dS] to [%dH/%dS]\n", + disk->d_name, disk->d_unit, oldheads, oldsectors, disk->d_fwheads, disk->d_fwsectors); - } Modified: head/sys/sparc64/include/md_var.h ============================================================================== --- head/sys/sparc64/include/md_var.h Thu May 20 12:44:06 2010 (r208348) +++ head/sys/sparc64/include/md_var.h Thu May 20 12:46:19 2010 (r208349) @@ -66,13 +66,10 @@ extern cpu_block_zero_t *cpu_block_zero; * Given that the Sun disk label only uses 16-bit fields for cylinders, * heads and sectors we might need to adjust the geometry of large IDE * disks. - * We have to have a knowledge that a device_t is a struct device * here - * to avoid including too many things from this file. */ struct disk; -struct device; -void sparc64_ad_firmware_geom_adjust(struct device *dev, struct disk *disk); -#define ad_firmware_geom_adjust(dev, dsk) \ - sparc64_ad_firmware_geom_adjust(dev, dsk) +void sparc64_ata_disk_firmware_geom_adjust(struct disk *disk); +#define ata_disk_firmware_geom_adjust(disk) \ + sparc64_ata_disk_firmware_geom_adjust(disk) #endif /* !_MACHINE_MD_VAR_H_ */ Modified: head/sys/sparc64/sparc64/ata_machdep.c ============================================================================== --- head/sys/sparc64/sparc64/ata_machdep.c Thu May 20 12:44:06 2010 (r208348) +++ head/sys/sparc64/sparc64/ata_machdep.c Thu May 20 12:46:19 2010 (r208349) @@ -32,7 +32,7 @@ __FBSDID("$FreeBSD$"); #include void -sparc64_ad_firmware_geom_adjust(device_t dev, struct disk *disk) +sparc64_ata_disk_firmware_geom_adjust(struct disk *disk) { /* From owner-svn-src-head@FreeBSD.ORG Thu May 20 13:16:42 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 98AA7106564A; Thu, 20 May 2010 13:16:42 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 873BA8FC19; Thu, 20 May 2010 13:16:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KDGgdO005097; Thu, 20 May 2010 13:16:42 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KDGgGs005095; Thu, 20 May 2010 13:16:42 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005201316.o4KDGgGs005095@svn.freebsd.org> From: John Baldwin Date: Thu, 20 May 2010 13:16:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208350 - head/sys/dev/puc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 13:16:42 -0000 Author: jhb Date: Thu May 20 13:16:42 2010 New Revision: 208350 URL: http://svn.freebsd.org/changeset/base/208350 Log: Add support for the Perle Speed4 LE. Submitted by: Douglas K. Rand rand of meridian-enviro com MFC after: 3 days Modified: head/sys/dev/puc/pucdata.c Modified: head/sys/dev/puc/pucdata.c ============================================================================== --- head/sys/dev/puc/pucdata.c Thu May 20 12:46:19 2010 (r208349) +++ head/sys/dev/puc/pucdata.c Thu May 20 13:16:42 2010 (r208350) @@ -661,6 +661,18 @@ const struct puc_cfg puc_pci_devices[] = PUC_PORT_8S, 0x18, 0, 8, }, + /* + * Perle boards use Oxford Semiconductor chips, but they store the + * Oxford Semiconductor device ID as a subvendor device ID and use + * their own device IDs. + */ + + { 0x155f, 0x0331, 0xffff, 0, + "Perle Speed4 LE", + DEFAULT_RCLK * 8, + PUC_PORT_4S, 0x10, 0, 8, + }, + { 0x14d2, 0x8010, 0xffff, 0, "VScom PCI-100L", DEFAULT_RCLK * 8, From owner-svn-src-head@FreeBSD.ORG Thu May 20 16:24:12 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DD215106566B; Thu, 20 May 2010 16:24:12 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CCB638FC16; Thu, 20 May 2010 16:24:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KGOCY3046280; Thu, 20 May 2010 16:24:12 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KGOCgf046278; Thu, 20 May 2010 16:24:12 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005201624.o4KGOCgf046278@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 20 May 2010 16:24:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208353 - head X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 16:24:13 -0000 Author: jkim Date: Thu May 20 16:24:12 2010 New Revision: 208353 URL: http://svn.freebsd.org/changeset/base/208353 Log: We do not have to build makewhatis as a bootstrap tool when it is disabled by WITHOUT_MAN_UTILS. Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Thu May 20 16:21:19 2010 (r208352) +++ head/Makefile.inc1 Thu May 20 16:24:12 2010 (r208353) @@ -961,6 +961,10 @@ _dtrace_tools= cddl/usr.bin/sgsmsg cddl/ lib/libdwarf cddl/usr.bin/ctfconvert cddl/usr.bin/ctfmerge .endif +.if ${MK_MAN_UTILS} != "no" +_makewhatis= usr.bin/makewhatis +.endif + bootstrap-tools: .for _tool in \ ${_dtrace_tools} \ @@ -969,7 +973,7 @@ bootstrap-tools: ${_groff} \ ${_ar} \ usr.bin/lorder \ - usr.bin/makewhatis \ + ${_makewhatis} \ ${_mklocale} \ usr.bin/rpcgen \ ${_sed} \ From owner-svn-src-head@FreeBSD.ORG Thu May 20 17:30:55 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6FEA21065676; Thu, 20 May 2010 17:30:55 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5F8FF8FC1B; Thu, 20 May 2010 17:30:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KHUtEu061295; Thu, 20 May 2010 17:30:55 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KHUtBG061293; Thu, 20 May 2010 17:30:55 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201005201730.o4KHUtBG061293@svn.freebsd.org> From: "Jayachandran C." Date: Thu, 20 May 2010 17:30:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208355 - head/share/misc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 17:30:55 -0000 Author: jchandra Date: Thu May 20 17:30:55 2010 New Revision: 208355 URL: http://svn.freebsd.org/changeset/base/208355 Log: Add jchandra, with rrs as mentor Approved by: rrs (mentor) Modified: head/share/misc/committers-src.dot Modified: head/share/misc/committers-src.dot ============================================================================== --- head/share/misc/committers-src.dot Thu May 20 16:55:32 2010 (r208354) +++ head/share/misc/committers-src.dot Thu May 20 17:30:55 2010 (r208355) @@ -114,6 +114,7 @@ jayanth [label="Jayanth Vijayaraghavan\n jh [label="Jaakko Heinonen\njh@FreeBSD.org\n2009/10/02"] jilles [label="Jilles Tjoelker\njilles@FreeBSD.org\n2009/05/22"] jinmei [label="JINMEI Tatuya\njinmei@FreeBSD.org\n2007/03/17"] +jchandra [label="Jayachandran C.\njchandra@FreeBSD.org\n2010/05/19"] jdp [label="John Polstra\njdp@FreeBSD.org\n????/??/??"] jhb [label="John Baldwin\njhb@FreeBSD.org\n1999/08/23"] jkh [label="Jordan K. Hubbard\njkh@FreeBSD.org\n1993/06/12"] @@ -423,6 +424,7 @@ rpaulo -> avg rpaulo -> bschmidt rrs -> brucec +rrs -> jchandra rrs -> tuexen ru -> ceri From owner-svn-src-head@FreeBSD.ORG Thu May 20 18:22:45 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0C46106566C; Thu, 20 May 2010 18:22:45 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 90BAC8FC14; Thu, 20 May 2010 18:22:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KIMjA6073042; Thu, 20 May 2010 18:22:45 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KIMj3W073040; Thu, 20 May 2010 18:22:45 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201005201822.o4KIMj3W073040@svn.freebsd.org> From: Navdeep Parhar Date: Thu, 20 May 2010 18:22:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208356 - head/sys/dev/cxgb X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 18:22:45 -0000 Author: np Date: Thu May 20 18:22:45 2010 New Revision: 208356 URL: http://svn.freebsd.org/changeset/base/208356 Log: Remove invalid assertion. Holding the adapter lock while changing the LRO settings is sufficient. PR: kern/146759 MFC after: 3 days Modified: head/sys/dev/cxgb/cxgb_main.c Modified: head/sys/dev/cxgb/cxgb_main.c ============================================================================== --- head/sys/dev/cxgb/cxgb_main.c Thu May 20 17:30:55 2010 (r208355) +++ head/sys/dev/cxgb/cxgb_main.c Thu May 20 18:22:45 2010 (r208356) @@ -1979,7 +1979,6 @@ cxgb_set_lro(struct port_info *p, int en struct adapter *adp = p->adapter; struct sge_qset *q; - PORT_LOCK_ASSERT_OWNED(p); for (i = 0; i < p->nqsets; i++) { q = &adp->sge.qs[p->first_qset + i]; q->lro.enabled = (enabled != 0); From owner-svn-src-head@FreeBSD.ORG Thu May 20 18:39:33 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61B5A1065674; Thu, 20 May 2010 18:39:33 +0000 (UTC) (envelope-from wxs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 51ADF8FC0C; Thu, 20 May 2010 18:39:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KIdXvB076725; Thu, 20 May 2010 18:39:33 GMT (envelope-from wxs@svn.freebsd.org) Received: (from wxs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KIdX8u076723; Thu, 20 May 2010 18:39:33 GMT (envelope-from wxs@svn.freebsd.org) Message-Id: <201005201839.o4KIdX8u076723@svn.freebsd.org> From: Wesley Shields Date: Thu, 20 May 2010 18:39:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208357 - head/share/man/man8 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 18:39:33 -0000 Author: wxs (ports committer) Date: Thu May 20 18:39:33 2010 New Revision: 208357 URL: http://svn.freebsd.org/changeset/base/208357 Log: Document NANO_ARCH which is no longer hard coded as of r205980. Approved by: imp@ Modified: head/share/man/man8/nanobsd.8 Modified: head/share/man/man8/nanobsd.8 ============================================================================== --- head/share/man/man8/nanobsd.8 Thu May 20 18:22:45 2010 (r208356) +++ head/share/man/man8/nanobsd.8 Thu May 20 18:39:33 2010 (r208357) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 16, 2009 +.Dd May 20, 2010 .Dt NANOBSD 8 .Os .Sh NAME @@ -203,6 +203,9 @@ Build name (used to construct the workin Path to the source tree used to build the image. .It Va NANO_KERNEL Name of the kernel configuration file used to build the kernel. +.It Va NANO_ARCH +Machine processor architecture to build. Defaults to output of +.Cm uname -p . .It Va NANO_BOOT0CFG Controls the options passed to .Xr boot0cfg 8 ; From owner-svn-src-head@FreeBSD.ORG Thu May 20 20:01:55 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1256C106564A; Thu, 20 May 2010 20:01:55 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 029298FC0C; Thu, 20 May 2010 20:01:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KK1sMg095210; Thu, 20 May 2010 20:01:54 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KK1sPZ095208; Thu, 20 May 2010 20:01:54 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005202001.o4KK1sPZ095208@svn.freebsd.org> From: John Baldwin Date: Thu, 20 May 2010 20:01:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208362 - head/sys/dev/e1000 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 20:01:55 -0000 Author: jhb Date: Thu May 20 20:01:54 2010 New Revision: 208362 URL: http://svn.freebsd.org/changeset/base/208362 Log: Restore part of 200671 which was lost in previous driver changes: - Add interrupt descriptions when using mulitple MSI-X interrupts. Modified: head/sys/dev/e1000/if_igb.c Modified: head/sys/dev/e1000/if_igb.c ============================================================================== --- head/sys/dev/e1000/if_igb.c Thu May 20 19:45:11 2010 (r208361) +++ head/sys/dev/e1000/if_igb.c Thu May 20 20:01:54 2010 (r208362) @@ -2194,6 +2194,7 @@ igb_allocate_msix(struct adapter *adapte device_printf(dev, "Failed to register Queue handler"); return (error); } + bus_describe_intr(dev, que->res, que->tag, "que %d", i); que->msix = vector; if (adapter->hw.mac.type == e1000_82575) que->eims = E1000_EICR_TX_QUEUE0 << i; @@ -2229,6 +2230,7 @@ igb_allocate_msix(struct adapter *adapte device_printf(dev, "Failed to register Link handler"); return (error); } + bus_describe_intr(dev, adapter->res, adapter->tag, "link"); adapter->linkvec = vector; /* Make tasklet for deferred handling */ From owner-svn-src-head@FreeBSD.ORG Thu May 20 20:15:57 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 270BC1065673; Thu, 20 May 2010 20:15:57 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 170C88FC0C; Thu, 20 May 2010 20:15:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KKFupF098300; Thu, 20 May 2010 20:15:56 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KKFudb098298; Thu, 20 May 2010 20:15:56 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005202015.o4KKFudb098298@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 20 May 2010 20:15:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208363 - head X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 20:15:57 -0000 Author: jkim Date: Thu May 20 20:15:56 2010 New Revision: 208363 URL: http://svn.freebsd.org/changeset/base/208363 Log: Revert r208353. It did not work as I expected because WITHOUT_MAN is set for bootstrap-tools target and WITHOUT_MAN_UTILS was implied by default. Pointy hat: jkim Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Thu May 20 20:01:54 2010 (r208362) +++ head/Makefile.inc1 Thu May 20 20:15:56 2010 (r208363) @@ -961,10 +961,6 @@ _dtrace_tools= cddl/usr.bin/sgsmsg cddl/ lib/libdwarf cddl/usr.bin/ctfconvert cddl/usr.bin/ctfmerge .endif -.if ${MK_MAN_UTILS} != "no" -_makewhatis= usr.bin/makewhatis -.endif - bootstrap-tools: .for _tool in \ ${_dtrace_tools} \ @@ -973,7 +969,7 @@ bootstrap-tools: ${_groff} \ ${_ar} \ usr.bin/lorder \ - ${_makewhatis} \ + usr.bin/makewhatis \ ${_mklocale} \ usr.bin/rpcgen \ ${_sed} \ From owner-svn-src-head@FreeBSD.ORG Thu May 20 21:07:58 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C00C1065673; Thu, 20 May 2010 21:07:58 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 60F178FC0C; Thu, 20 May 2010 21:07:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4KL7w5Y009947; Thu, 20 May 2010 21:07:58 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4KL7wtH009945; Thu, 20 May 2010 21:07:58 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005202107.o4KL7wtH009945@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 20 May 2010 21:07:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208364 - head/sys/powerpc/aim X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 21:07:58 -0000 Author: nwhitehorn Date: Thu May 20 21:07:58 2010 New Revision: 208364 URL: http://svn.freebsd.org/changeset/base/208364 Log: Fix a long-standing bug in the PowerPC OFW call function on SMP machines where running ofwdump could cause hangs by forcing all secondary CPUs into a busy wait with interrupts off during the call. Following section 8.4 of the Open Firmware PowerPC processor binding, the firmware is free to overwrite the system interrupt handlers during OF calls, restoring the OS handlers on exit. On single CPU systems, this process is invisible to the operating system. On multiple CPU systems, taking any exception on a secondary CPU while an OF call is in progress ends with that exception vectored into OF, resulting in a slow movement of the entire system into firmware context and a machine hang. MFC after: 3 days Modified: head/sys/powerpc/aim/ofw_machdep.c Modified: head/sys/powerpc/aim/ofw_machdep.c ============================================================================== --- head/sys/powerpc/aim/ofw_machdep.c Thu May 20 20:15:56 2010 (r208363) +++ head/sys/powerpc/aim/ofw_machdep.c Thu May 20 21:07:58 2010 (r208364) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -348,17 +349,18 @@ ofw_quiesce(void) } static int -openfirmware(void *args) +openfirmware_core(void *args) { long oldmsr; int result; u_int srsave[16]; u_int i; - if (pmap_bootstrapped && ofw_real_mode) - args = (void *)pmap_kextract((vm_offset_t)args); - - mtx_lock(&ofw_mutex); + /* + * NOTE: This MUST be called with the OF mutex held. Because the CPU + * holding the lock is not necessarily the CPU running this function, + * we can't put an assert here. + */ __asm __volatile( "\t" "sync\n\t" @@ -412,6 +414,63 @@ openfirmware(void *args) : : "r" (oldmsr) ); + return (result); +} + +#ifdef SMP +struct ofw_rv_args { + void *args; + int retval; + volatile int in_progress; +}; + +static void +ofw_rendezvous_dispatch(void *xargs) +{ + struct ofw_rv_args *rv_args = xargs; + + /* NOTE: Interrupts are disabled here */ + + if (PCPU_GET(cpuid) == 0) { + /* + * Execute all OF calls on CPU 0 + */ + rv_args->retval = openfirmware_core(rv_args->args); + rv_args->in_progress = 0; + } else { + /* + * Spin with interrupts off on other CPUs while OF has + * control of the machine. + */ + while (rv_args->in_progress) + cpu_spinwait(); + } +} +#endif + +static int +openfirmware(void *args) +{ + int result; + #ifdef SMP + struct ofw_rv_args rv_args; + #endif + + if (pmap_bootstrapped && ofw_real_mode) + args = (void *)pmap_kextract((vm_offset_t)args); + + mtx_lock(&ofw_mutex); + + #ifdef SMP + rv_args.args = args; + rv_args.in_progress = 1; + smp_rendezvous(smp_no_rendevous_barrier, ofw_rendezvous_dispatch, + smp_no_rendevous_barrier, &rv_args); + result = rv_args.retval; + #else + result = openfirmware_core(args); + #endif + mtx_unlock(&ofw_mutex); return (result); From owner-svn-src-head@FreeBSD.ORG Thu May 20 21:14:48 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 448ED106564A; Thu, 20 May 2010 21:14:48 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from argol.doit.wisc.edu (argol.doit.wisc.edu [144.92.197.212]) by mx1.freebsd.org (Postfix) with ESMTP id 0D3D58FC17; Thu, 20 May 2010 21:14:47 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII; format=flowed Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) id <0L2Q00F12LO06K00@smtpauth3.wiscmail.wisc.edu>; Thu, 20 May 2010 16:14:24 -0500 (CDT) Received: from comporellon.tachypleus.net ([unknown] [76.210.60.242]) by smtpauth3.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) with ESMTPSA id <0L2Q00CMNLNQOE30@smtpauth3.wiscmail.wisc.edu>; Thu, 20 May 2010 16:14:15 -0500 (CDT) Date: Thu, 20 May 2010 16:14:13 -0500 From: Nathan Whitehorn In-reply-to: <201005202107.o4KL7wtH009945@svn.freebsd.org> To: Nathan Whitehorn Message-id: <4BF5A625.8020209@freebsd.org> X-Spam-Report: AuthenticatedSender=yes, SenderIP=76.210.60.242 X-Spam-PmxInfo: Server=avs-11, Version=5.5.9.395186, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2010.5.20.210315, SenderIP=76.210.60.242 References: <201005202107.o4KL7wtH009945@svn.freebsd.org> User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.9) Gecko/20100407 Thunderbird/3.0.4 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208364 - head/sys/powerpc/aim X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 May 2010 21:14:48 -0000 On 05/20/10 16:07, Nathan Whitehorn wrote: > Author: nwhitehorn > Date: Thu May 20 21:07:58 2010 > New Revision: 208364 > URL: http://svn.freebsd.org/changeset/base/208364 > > Log: > Fix a long-standing bug in the PowerPC OFW call function on SMP machines > where running ofwdump could cause hangs by forcing all secondary CPUs > into a busy wait with interrupts off during the call. > In retrospect, this was poorly phrased. A non-ambiguous version: By forcing all secondary CPUs into a busy wait with interrupts off during Open Firmware calls, fix a long-standing bug in the PowerPC OFW call function on SMP machines where running ofwdump could cause the machine to hang. -Nathan From owner-svn-src-head@FreeBSD.ORG Fri May 21 05:34:19 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B00811065676; Fri, 21 May 2010 05:34:19 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9DBB78FC1B; Fri, 21 May 2010 05:34:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4L5YJB5021630; Fri, 21 May 2010 05:34:19 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4L5YJ6U021625; Fri, 21 May 2010 05:34:19 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201005210534.o4L5YJ6U021625@svn.freebsd.org> From: "Jayachandran C." Date: Fri, 21 May 2010 05:34:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208369 - in head/sys/mips/rmi: . dev/xlr X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 05:34:19 -0000 Author: jchandra Date: Fri May 21 05:34:19 2010 New Revision: 208369 URL: http://svn.freebsd.org/changeset/base/208369 Log: Changes to boot on a subset of threads on an XLR/XLS core. - Adds re-partitioning TLB per core for enabled threads. - Adds hardware thread id to cpuid mapping - updates rge driver packet distribution and message ring handling threads to be started based on hardware thread id. - remove unused early debugging code to set control registers. - coding style fixes Approved by: rrs (mentor) Modified: head/sys/mips/rmi/dev/xlr/rge.c head/sys/mips/rmi/on_chip.c head/sys/mips/rmi/xlr_machdep.c head/sys/mips/rmi/xlrconfig.h Modified: head/sys/mips/rmi/dev/xlr/rge.c ============================================================================== --- head/sys/mips/rmi/dev/xlr/rge.c Fri May 21 04:48:40 2010 (r208368) +++ head/sys/mips/rmi/dev/xlr/rge.c Fri May 21 05:34:19 2010 (r208369) @@ -126,7 +126,7 @@ int mac_debug = 1; do {\ if (mac_debug) {\ printf("[%s@%d|%s]: cpu_%d: " fmt, \ - __FILE__, __LINE__, __FUNCTION__, PCPU_GET(cpuid), ##args);\ + __FILE__, __LINE__, __FUNCTION__, xlr_cpu_id(), ##args);\ }\ } while(0); @@ -404,7 +404,7 @@ init_p2d_allocation(void) uint32_t cpumask; int cpu; - cpumask = PCPU_GET(cpumask) | PCPU_GET(other_cpus); + cpumask = xlr_hw_thread_mask; for (i = 0; i < 32; i++) { if (cpumask & (1 << i)) { @@ -966,7 +966,7 @@ rmi_xlr_config_pde(struct driver_data *p /* uint32_t desc_pack_ctrl = 0; */ uint32_t cpumask; - cpumask = PCPU_GET(cpumask); + cpumask = 0x1; #ifdef SMP /* * rge may be called before SMP start in a BOOTP/NFSROOT @@ -974,7 +974,7 @@ rmi_xlr_config_pde(struct driver_data *p * the SMP is started. */ if (smp_started) - cpumask |= PCPU_GET(other_cpus); + cpumask = xlr_hw_thread_mask; #endif for (i = 0; i < MAXCPU; i++) { @@ -1453,7 +1453,7 @@ mac_xmit(struct mbuf *m, struct rge_soft int stid = priv->txbucket; uint32_t tx_cycles = 0; unsigned long mflags = 0; - int vcpu = PCPU_GET(cpuid); + int vcpu = xlr_cpu_id(); int rv; tx_cycles = mips_rd_count(); Modified: head/sys/mips/rmi/on_chip.c ============================================================================== --- head/sys/mips/rmi/on_chip.c Fri May 21 04:48:40 2010 (r208368) +++ head/sys/mips/rmi/on_chip.c Fri May 21 05:34:19 2010 (r208369) @@ -78,6 +78,7 @@ struct msgring_ithread { u_int i_pending; u_int i_flags; int i_cpu; + int i_core; }; struct msgring_ithread *msgring_ithreads[MAXCPU]; @@ -254,13 +255,13 @@ disable_msgring_int(void *arg) static int msgring_process_fast_intr(void *arg) { - int cpu = PCPU_GET(cpuid); + int core = xlr_core_id(); volatile struct msgring_ithread *it; struct thread *td; /* wakeup an appropriate intr_thread for processing this interrupt */ - it = (volatile struct msgring_ithread *)msgring_ithreads[cpu]; - KASSERT(it != NULL, ("No interrupt thread on cpu %d", cpu)); + it = (volatile struct msgring_ithread *)msgring_ithreads[core]; + KASSERT(it != NULL, ("No interrupt thread on cpu %d", core)); td = it->i_thread; /* @@ -293,10 +294,11 @@ msgring_process(void *arg) /* First bind this thread to the right CPU */ thread_lock(td); + sched_bind(td, ithd->i_cpu); thread_unlock(td); - atomic_store_rel_ptr((volatile uintptr_t *)&msgring_ithreads[ithd->i_cpu], + atomic_store_rel_ptr((volatile uintptr_t *)&msgring_ithreads[ithd->i_core], (uintptr_t)arg); enable_msgring_int(NULL); @@ -327,7 +329,7 @@ msgring_process(void *arg) } static void -create_msgring_thread(int cpu) +create_msgring_thread(int core, int cpu) { struct msgring_ithread *ithd; struct thread *td; @@ -348,12 +350,13 @@ create_msgring_thread(int cpu) ithd->i_thread = td; ithd->i_pending = 0; ithd->i_cpu = cpu; + ithd->i_core = core; thread_lock(td); sched_class(td, PRI_ITHD); sched_add(td, SRQ_INTR); thread_unlock(td); - CTR2(KTR_INTR, "%s: created %s", __func__, ithd_name[cpu]); + CTR2(KTR_INTR, "%s: created %s", __func__, ithd_name[core]); } int @@ -376,7 +379,7 @@ register_msgring_handler(int major, mtx_unlock_spin(&msgrng_lock); if (xlr_test_and_set(&msgring_int_enabled)) { - create_msgring_thread(0); + create_msgring_thread(0, 0); cpu_establish_hardintr("msgring", (driver_filter_t *) msgring_process_fast_intr, NULL, NULL, IRQ_MSGRING, INTR_TYPE_NET | INTR_FAST, &cookie); @@ -429,13 +432,15 @@ on_chip_init(void) static void start_msgring_threads(void *arg) { - uint32_t cpu_mask; - int cpu; + int core, cpu; - cpu_mask = PCPU_GET(cpumask) | PCPU_GET(other_cpus); - for (cpu = 4; cpu < MAXCPU; cpu += 4) - if (cpu_mask & (1<> (4 * core)) & 0xf) { + /* start one thread for an enabled core */ + cpu = xlr_hwtid_to_cpuid[4 * core]; + create_msgring_thread(core, cpu); + } + } } SYSINIT(start_msgring_threads, SI_SUB_SMP, SI_ORDER_MIDDLE, start_msgring_threads, NULL); Modified: head/sys/mips/rmi/xlr_machdep.c ============================================================================== --- head/sys/mips/rmi/xlr_machdep.c Fri May 21 04:48:40 2010 (r208368) +++ head/sys/mips/rmi/xlr_machdep.c Fri May 21 05:34:19 2010 (r208369) @@ -75,13 +75,7 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef XLR_PERFMON -#include -#endif - void mpwait(void); -void enable_msgring_int(void *arg); - unsigned long xlr_io_base = (unsigned long)(DEFAULT_XLR_IO_BASE); /* 4KB static data aread to keep a copy of the bootload env until @@ -100,164 +94,140 @@ uint64_t cpu_mask_info; uint32_t xlr_online_cpumask; uint32_t xlr_core_cpu_mask = 0x1; /* Core 0 thread 0 is always there */ -void -platform_reset(void) -{ - /* FIXME : use proper define */ - u_int32_t *mmio = (u_int32_t *) 0xbef18000; - - printf("Rebooting the system now\n"); - mmio[8] = 0x1; -} +int xlr_shtlb_enabled; +int xlr_ncores; +int xlr_threads_per_core; +uint32_t xlr_hw_thread_mask; +int xlr_cpuid_to_hwtid[MAXCPU]; +int xlr_hwtid_to_cpuid[MAXCPU]; -int xlr_asid_pcpu = 256; /* This the default */ -int xlr_shtlb_enabled = 0; - -/* This function sets up the number of tlb entries available - to the kernel based on the number of threads brought up. - The ASID range also gets divided similarly. - THE NUMBER OF THREADS BROUGHT UP IN EACH CORE MUST BE THE SAME -NOTE: This function will mark all 64TLB entries as available -to the threads brought up in the core. If kernel is brought with say mask -0x33333333, no TLBs will be available to the threads in each core. -*/ static void -setup_tlb_resource(void) +xlr_setup_mmu_split(void) { int mmu_setup; - int value = 0; - uint32_t cpu_map = xlr_boot1_info.cpu_online_map; - uint32_t thr_mask = cpu_map >> (xlr_core_id() << 2); - uint8_t core0 = xlr_boot1_info.cpu_online_map & 0xf; - uint8_t core_thr_mask; - int i = 0, count = 0; + int val = 0; - /* If CPU0 did not enable shared TLB, other cores need to follow */ - if ((xlr_core_id() != 0) && (xlr_shtlb_enabled == 0)) - return; - /* First check if each core is brought up with the same mask */ - for (i = 1; i < 8; i++) { - core_thr_mask = cpu_map >> (i << 2); - core_thr_mask &= 0xf; - if (core_thr_mask && core_thr_mask != core0) { - printf - ("Each core must be brought with same cpu mask\n"); - printf("Cannot enabled shared TLB. "); - printf("Falling back to split TLB mode\n"); - return; - } - } + if (xlr_threads_per_core == 4 && xlr_shtlb_enabled == 0) + return; /* no change from boot setup */ - xlr_shtlb_enabled = 1; - for (i = 0; i < 4; i++) - if (thr_mask & (1 << i)) - count++; - switch (count) { - case 1: - xlr_asid_pcpu = 256; - break; - case 2: - xlr_asid_pcpu = 128; - value = 0x2; - break; - default: - xlr_asid_pcpu = 64; - value = 0x3; - break; + switch (xlr_threads_per_core) { + case 1: + val = 0; break; + case 2: + val = 2; break; + case 4: + val = 3; break; } - + mmu_setup = read_32bit_phnx_ctrl_reg(4, 0); mmu_setup = mmu_setup & ~0x06; - mmu_setup |= (value << 1); + mmu_setup |= (val << 1); /* turn on global mode */ -#ifndef SMP - mmu_setup |= 0x01; -#endif - write_32bit_phnx_ctrl_reg(4, 0, mmu_setup); + if (xlr_shtlb_enabled) + mmu_setup |= 0x01; + write_32bit_phnx_ctrl_reg(4, 0, mmu_setup); } - -/* - * Platform specific register setup for CPUs - * XLR has control registers accessible with MFCR/MTCR instructions, this - * code initialized them from the environment variable xlr.cr of form: - * xlr.cr=reg:val[,reg:val]*, all values in hex. - * To enable shared TLB option use xlr.shtlb=1 - */ -void -platform_cpu_init() +static void +xlr_parse_mmu_options(void) { - char *hw_env; - char *start, *end; - uint32_t reg, val; - int thr_id = xlr_thr_id(); +#ifdef notyet + char *hw_env, *start, *end; +#endif + uint32_t cpu_map; + uint8_t core0_thr_mask, core_thr_mask; + int i, j, k; + + /* First check for the shared TLB setup */ + xlr_shtlb_enabled = 0; +#ifdef notyet + /* + * We don't support sharing TLB per core - TODO + */ + xlr_shtlb_enabled = 0; + if ((hw_env = getenv("xlr.shtlb")) != NULL) { + start = hw_env; + tmp = strtoul(start, &end, 0); + if (start != end) + xlr_shtlb_enabled = (tmp != 0); + else + printf("Bad value for xlr.shtlb [%s]\n", hw_env); + freeenv(hw_env); + } +#endif + /* + * XLR supports splitting the 64 TLB entries across one, two or four + * threads (split mode). XLR also allows the 64 TLB entries to be shared + * across all threads in the core using a global flag (shared TLB mode). + * We will support 1/2/4 threads in split mode or shared mode. + * + */ + xlr_ncores = 1; + cpu_map = xlr_boot1_info.cpu_online_map; + core0_thr_mask = cpu_map & 0xf; + switch (core0_thr_mask) { + case 1: + xlr_threads_per_core = 1; break; + case 3: + xlr_threads_per_core = 2; break; + case 0xf: + xlr_threads_per_core = 4; break; + default: + goto unsupp; + } -/* - * XXX: SMP now need different wired mappings for threads - * we cannot share TLBs. - */ - if (thr_id == 0) { - if ((hw_env = getenv("xlr.shtlb")) != NULL) { - start = hw_env; - reg = strtoul(start, &end, 16); - if (start != end && reg != 0) - setup_tlb_resource(); - } else { - /* By default TLB entries are shared in a core */ - setup_tlb_resource(); + /* Verify other cores CPU masks */ + for (i = 1; i < XLR_MAX_CORES; i++) { + core_thr_mask = (cpu_map >> (i*4)) & 0xf; + if (core_thr_mask) { + if (core_thr_mask != core0_thr_mask) + goto unsupp; + xlr_ncores++; } } - if ((hw_env = getenv("xlr.cr")) == NULL) - return; - start = hw_env; - while (*start != '\0') { - reg = strtoul(start, &end, 16); - if (start == end) { - printf("Invalid value in xlr.cr %s, cannot read a hex value at %d\n", - hw_env, start - hw_env); - goto err_return; - } - if (*end != ':') { - printf("Invalid format in xlr.cr %s, ':' expected at pos %d\n", - hw_env, end - hw_env); - goto err_return; - } - start = end + 1;/* step over ':' */ - val = strtoul(start, &end, 16); - if (start == end) { - printf("Invalid value in xlr.cr %s, cannot read a hex value at pos %d\n", - hw_env, start - hw_env); - goto err_return; + /* setup hardware processor id to cpu id mapping */ + xlr_hw_thread_mask = xlr_boot1_info.cpu_online_map; + for (i = 0; i< MAXCPU; i++) + xlr_cpuid_to_hwtid[i] = + xlr_hwtid_to_cpuid [i] = -1; + for (i = 0, k = 0; i < XLR_MAX_CORES; i++) { + if (((cpu_map >> (i*4)) & 0xf) == 0) + continue; + for (j = 0; j < xlr_threads_per_core; j++) { + xlr_cpuid_to_hwtid[k] = i*4 + j; + xlr_hwtid_to_cpuid[i*4 + j] = k; + k++; } - if (*end != ',' && *end != '\0') { - printf("Invalid format in xlr.cr %s, ',' expected at pos %d\n", - hw_env, end - hw_env); - goto err_return; - } - xlr_mtcr(reg, val); - if (*end == ',') - start = end + 1; /* skip over ',' */ - else - start = end; } - freeenv(hw_env); + + /* setup for the startup core */ + xlr_setup_mmu_split(); return; -err_return: - panic("Invalid xlr.cr setting!"); +unsupp: + printf("ERROR : Unsupported CPU mask [use 1,2 or 4 threads per core].\n" + "\tcore0 thread mask [%lx], boot cpu mask [%lx]\n" + "\tUsing default, 16 TLB entries per CPU, split mode\n", + (u_long)core0_thr_mask, (u_long)cpu_map); + panic("Invalid CPU mask - halting.\n"); return; } - static void xlr_set_boot_flags(void) { char *p; - for (p = getenv("boot_flags"); p && *p != '\0'; p++) { + p = getenv("bootflags"); + if (p == NULL) + p = getenv("boot_flags"); /* old style */ + if (p == NULL) + return; + + for (; p && *p != '\0'; p++) { switch (*p) { case 'd': case 'D': @@ -283,9 +253,7 @@ xlr_set_boot_flags(void) } } - if (p) - freeenv(p); - + freeenv(p); return; } extern uint32_t _end; @@ -307,7 +275,6 @@ mips_init(void) } #endif mips_proc0_init(); - write_c0_register32(MIPS_COP_0_OSSCRATCH, 7, pcpup->pc_curthread); mutex_init(); } @@ -325,11 +292,6 @@ platform_start(__register_t a0 __unused, void (*wakeup) (void *, void *, unsigned int); #endif - /* XXX no zeroing of BSS? */ - - /* Initialize pcpu stuff */ - mips_pcpu0_init(); - /* XXX FIXME the code below is not 64 bit clean */ /* Save boot loader and other stuff from scratch regs */ xlr_boot1_info = *(struct boot1_info *)read_c0_register32(MIPS_COP_0_OSSCRATCH, 0); @@ -343,6 +305,9 @@ platform_start(__register_t a0 __unused, /* TODO: Verify the magic number here */ /* FIXMELATER: xlr_boot1_info.magic_number */ + /* Initialize pcpu stuff */ + mips_pcpu0_init(); + /* initialize console so that we have printf */ boothowto |= (RB_SERIAL | RB_MULTIPLE); /* Use multiple consoles */ @@ -378,6 +343,7 @@ platform_start(__register_t a0 __unused, } xlr_set_boot_flags(); + xlr_parse_mmu_options(); /* get physical memory info from boot loader */ boot_map = (struct xlr_boot1_mem_map *) @@ -437,9 +403,6 @@ platform_start(__register_t a0 __unused, phys_avail[j] = phys_avail[j + 1] = 0; realmem = physmem = btoc(physsz); - /* Store pcpu in scratch 5 */ - write_c0_register32(MIPS_COP_0_OSSCRATCH, 5, pcpup); - /* Set up hz, among others. */ mips_init(); @@ -452,7 +415,7 @@ platform_start(__register_t a0 __unused, for (i = 4; i < MAXCPU; i += 4) { if ((tmp & (0xf << i)) && !(tmp & (0x1 << i))) { /* - * Oopps.. thread 0 is not available. Disable whole + * Oops.. thread 0 is not available. Disable whole * core */ tmp = tmp & ~(0xf << i); @@ -463,15 +426,6 @@ platform_start(__register_t a0 __unused, xlr_boot1_info.cpu_online_map = tmp; /* Wakeup Other cpus, and put them in bsd park code. */ - for (i = 1, j = 1; i < 32; i++) { - /* Allocate stack for all other cpus from fbsd kseg0 memory. */ - if ((1U << i) & xlr_boot1_info.cpu_online_map) { - if ((i & 0x3) == 0) /* store thread0 of each core */ - xlr_core_cpu_mask |= (1 << j); - j++; - } - } - wakeup = ((void (*) (void *, void *, unsigned int)) (unsigned long)(xlr_boot1_info.wakeup)); printf("Waking up CPUs 0x%llx.\n", xlr_boot1_info.cpu_online_map & ~(0x1U)); @@ -492,13 +446,16 @@ platform_start(__register_t a0 __unused, printf("Platform specific startup now completes\n"); } +void +platform_cpu_init() +{ +} + void platform_identify(void) { printf("Board [%d:%d], processor 0x%08x\n", (int)xlr_boot1_info.board_major_version, (int)xlr_boot1_info.board_minor_version, mips_rd_prid()); - - } /* @@ -511,6 +468,15 @@ platform_trap_enter(void) } void +platform_reset(void) +{ + xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_GPIO_OFFSET); + + /* write 1 to GPIO software reset register */ + xlr_write_reg(mmio, 8, 1); +} + +void platform_trap_exit(void) { } @@ -518,20 +484,31 @@ platform_trap_exit(void) #ifdef SMP int xlr_ap_release[MAXCPU]; -int platform_start_ap(int cpuid) +int +platform_start_ap(int cpuid) { - /* - * other cpus are enabled by the boot loader and they will be - * already looping in mpwait, release them - */ - atomic_store_rel_int(&xlr_ap_release[cpuid], 1); - return 0; + int hwid = xlr_cpuid_to_hwtid[cpuid]; + + if (xlr_boot1_info.cpu_online_map & (1< Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40222106566B; Fri, 21 May 2010 08:50:35 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 15AC88FC19; Fri, 21 May 2010 08:50:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4L8oYEE064624; Fri, 21 May 2010 08:50:34 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4L8oYLD064621; Fri, 21 May 2010 08:50:34 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005210850.o4L8oYLD064621@svn.freebsd.org> From: Martin Matuska Date: Fri, 21 May 2010 08:50:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208370 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 08:50:35 -0000 Author: mm Date: Fri May 21 08:50:34 2010 New Revision: 208370 URL: http://svn.freebsd.org/changeset/base/208370 Log: Fix: vdev_reopen() can lead to failed allocations OpenSolaris onnv-revision: 7980:589f37f25048 Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6764914) MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Fri May 21 05:34:19 2010 (r208369) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Fri May 21 08:50:34 2010 (r208370) @@ -781,7 +781,7 @@ top: /* * Don't allocate from faulted devices. */ - if (!vdev_writeable(vd)) + if (!vdev_allocatable(vd)) goto next; /* * Avoid writing single-copy data to a failing vdev Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h Fri May 21 05:34:19 2010 (r208369) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h Fri May 21 08:50:34 2010 (r208370) @@ -85,6 +85,7 @@ extern void vdev_clear(spa_t *spa, vdev_ extern boolean_t vdev_is_dead(vdev_t *vd); extern boolean_t vdev_readable(vdev_t *vd); extern boolean_t vdev_writeable(vdev_t *vd); +extern boolean_t vdev_allocatable(vdev_t *vd); extern boolean_t vdev_accessible(vdev_t *vd, zio_t *zio); extern void vdev_cache_init(vdev_t *vd); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Fri May 21 05:34:19 2010 (r208369) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Fri May 21 08:50:34 2010 (r208370) @@ -1861,6 +1861,19 @@ vdev_writeable(vdev_t *vd) } boolean_t +vdev_allocatable(vdev_t *vd) +{ + /* + * We currently allow allocations from vdevs which maybe in the + * process of reopening (i.e. VDEV_STATE_CLOSED). If the device + * fails to reopen then we'll catch it later when we're holding + * the proper locks. + */ + return (!(vdev_is_dead(vd) && vd->vdev_state != VDEV_STATE_CLOSED) && + !vd->vdev_cant_write); +} + +boolean_t vdev_accessible(vdev_t *vd, zio_t *zio) { ASSERT(zio->io_vd == vd); From owner-svn-src-head@FreeBSD.ORG Fri May 21 08:55:18 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7BC371065672; Fri, 21 May 2010 08:55:18 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6AD5E8FC18; Fri, 21 May 2010 08:55:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4L8tIs6065717; Fri, 21 May 2010 08:55:18 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4L8tIRt065714; Fri, 21 May 2010 08:55:18 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005210855.o4L8tIRt065714@svn.freebsd.org> From: Martin Matuska Date: Fri, 21 May 2010 08:55:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208371 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 08:55:18 -0000 Author: mm Date: Fri May 21 08:55:18 2010 New Revision: 208371 URL: http://svn.freebsd.org/changeset/base/208371 Log: Fix stack overflow in zfs send. OpenSolaris onnv-revision: 8012:8ea30813950f Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6765626) MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c Fri May 21 08:50:34 2010 (r208370) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c Fri May 21 08:55:18 2010 (r208371) @@ -134,6 +134,7 @@ static int traverse_visitbp(struct traverse_data *td, const dnode_phys_t *dnp, arc_buf_t *pbuf, blkptr_t *bp, const zbookmark_t *zb) { + zbookmark_t czb; int err = 0; arc_buf_t *buf = NULL; struct prefetch_data *pd = td->td_pfd; @@ -179,8 +180,6 @@ traverse_visitbp(struct traverse_data *t /* recursively visitbp() blocks below this */ cbp = buf->b_data; for (i = 0; i < epb; i++, cbp++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_object, zb->zb_level - 1, zb->zb_blkid * epb + i); @@ -203,8 +202,6 @@ traverse_visitbp(struct traverse_data *t dnp = buf->b_data; for (i = 0; i < epb && err == 0; i++, dnp++) { for (j = 0; j < dnp->dn_nblkptr; j++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_blkid * epb + i, dnp->dn_nlevels - 1, j); @@ -229,8 +226,6 @@ traverse_visitbp(struct traverse_data *t traverse_zil(td, &osp->os_zil_header); for (j = 0; j < osp->os_meta_dnode.dn_nblkptr; j++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, 0, osp->os_meta_dnode.dn_nlevels - 1, j); err = traverse_visitbp(td, &osp->os_meta_dnode, buf, Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 21 08:50:34 2010 (r208370) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Fri May 21 08:55:18 2010 (r208371) @@ -2367,9 +2367,10 @@ zfs_ioc_rollback(zfs_cmd_t *zc) } if (zfsvfs != NULL) { - char osname[MAXNAMELEN]; + char *osname; int mode; + osname = kmem_alloc(MAXNAMELEN, KM_SLEEP); error = zfs_suspend_fs(zfsvfs, osname, &mode); if (error == 0) { int resume_err; @@ -2381,6 +2382,7 @@ zfs_ioc_rollback(zfs_cmd_t *zc) } else { dmu_objset_close(os); } + kmem_free(osname, MAXNAMELEN); VFS_RELE(zfsvfs->z_vfs); } else { error = dmu_objset_rollback(os); @@ -2552,10 +2554,11 @@ zfs_ioc_recv(zfs_cmd_t *zc) error = dmu_recv_stream(&drc, fp, &off); if (error == 0 && zfsvfs) { - char osname[MAXNAMELEN]; + char *osname; int mode; /* online recv */ + osname = kmem_alloc(MAXNAMELEN, KM_SLEEP); error = zfs_suspend_fs(zfsvfs, osname, &mode); if (error == 0) { int resume_err; @@ -2566,6 +2569,7 @@ zfs_ioc_recv(zfs_cmd_t *zc) } else { dmu_recv_abort_cleanup(&drc); } + kmem_free(osname, MAXNAMELEN); } else if (error == 0) { error = dmu_recv_end(&drc); } @@ -2616,16 +2620,18 @@ zfs_ioc_send(zfs_cmd_t *zc) return (error); if (zc->zc_value[0] != '\0') { - char buf[MAXPATHLEN]; + char *buf; char *cp; - (void) strncpy(buf, zc->zc_name, sizeof (buf)); + buf = kmem_alloc(MAXPATHLEN, KM_SLEEP); + (void) strncpy(buf, zc->zc_name, MAXPATHLEN); cp = strchr(buf, '@'); if (cp) *(cp+1) = 0; - (void) strlcat(buf, zc->zc_value, sizeof (buf)); + (void) strlcat(buf, zc->zc_value, MAXPATHLEN); error = dmu_objset_open(buf, DMU_OST_ANY, DS_MODE_USER | DS_MODE_READONLY, &fromsnap); + kmem_free(buf, MAXPATHLEN); if (error) { dmu_objset_close(tosnap); return (error); From owner-svn-src-head@FreeBSD.ORG Fri May 21 09:35:28 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6814F1065719; Fri, 21 May 2010 09:35:28 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5639C8FC14; Fri, 21 May 2010 09:35:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4L9ZSBw074680; Fri, 21 May 2010 09:35:28 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4L9ZSIu074676; Fri, 21 May 2010 09:35:28 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005210935.o4L9ZSIu074676@svn.freebsd.org> From: Martin Matuska Date: Fri, 21 May 2010 09:35:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208372 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 09:35:28 -0000 Author: mm Date: Fri May 21 09:35:28 2010 New Revision: 208372 URL: http://svn.freebsd.org/changeset/base/208372 Log: Reorder some already introduced locking variables. OpenSolaris onnv revision: 8214:d7abf7c1f1c1 Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6747934) MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Fri May 21 08:55:18 2010 (r208371) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Fri May 21 09:35:28 2010 (r208372) @@ -53,10 +53,11 @@ dnode_cons(void *arg, void *unused, int dnode_t *dn = arg; bzero(dn, sizeof (dnode_t)); - cv_init(&dn->dn_notxholds, NULL, CV_DEFAULT, NULL); rw_init(&dn->dn_struct_rwlock, NULL, RW_DEFAULT, NULL); mutex_init(&dn->dn_mtx, NULL, MUTEX_DEFAULT, NULL); mutex_init(&dn->dn_dbufs_mtx, NULL, MUTEX_DEFAULT, NULL); + cv_init(&dn->dn_notxholds, NULL, CV_DEFAULT, NULL); + refcount_create(&dn->dn_holds); refcount_create(&dn->dn_tx_holds); @@ -82,10 +83,10 @@ dnode_dest(void *arg, void *unused) int i; dnode_t *dn = arg; - cv_destroy(&dn->dn_notxholds); rw_destroy(&dn->dn_struct_rwlock); mutex_destroy(&dn->dn_mtx); mutex_destroy(&dn->dn_dbufs_mtx); + cv_destroy(&dn->dn_notxholds); refcount_destroy(&dn->dn_holds); refcount_destroy(&dn->dn_tx_holds); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c Fri May 21 08:55:18 2010 (r208371) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c Fri May 21 09:35:28 2010 (r208372) @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include #include #include @@ -61,6 +59,7 @@ space_map_create(space_map_t *sm, uint64 bzero(sm, sizeof (*sm)); cv_init(&sm->sm_load_cv, NULL, CV_DEFAULT, NULL); + avl_create(&sm->sm_root, space_map_seg_compare, sizeof (space_seg_t), offsetof(struct space_seg, ss_node)); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Fri May 21 08:55:18 2010 (r208371) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Fri May 21 09:35:28 2010 (r208372) @@ -79,6 +79,7 @@ txg_init(dsl_pool_t *dp, uint64_t txg) rw_init(&tx->tx_suspend, NULL, RW_DEFAULT, NULL); mutex_init(&tx->tx_sync_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&tx->tx_sync_more_cv, NULL, CV_DEFAULT, NULL); cv_init(&tx->tx_sync_done_cv, NULL, CV_DEFAULT, NULL); cv_init(&tx->tx_quiesce_more_cv, NULL, CV_DEFAULT, NULL); @@ -99,14 +100,15 @@ txg_fini(dsl_pool_t *dp) ASSERT(tx->tx_threads == 0); - cv_destroy(&tx->tx_exit_cv); - cv_destroy(&tx->tx_quiesce_done_cv); - cv_destroy(&tx->tx_quiesce_more_cv); - cv_destroy(&tx->tx_sync_done_cv); - cv_destroy(&tx->tx_sync_more_cv); rw_destroy(&tx->tx_suspend); mutex_destroy(&tx->tx_sync_lock); + cv_destroy(&tx->tx_sync_more_cv); + cv_destroy(&tx->tx_sync_done_cv); + cv_destroy(&tx->tx_quiesce_more_cv); + cv_destroy(&tx->tx_quiesce_done_cv); + cv_destroy(&tx->tx_exit_cv); + for (c = 0; c < max_ncpus; c++) { int i; From owner-svn-src-head@FreeBSD.ORG Fri May 21 09:52:49 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0C441065672; Fri, 21 May 2010 09:52:49 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8E8DF8FC1A; Fri, 21 May 2010 09:52:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4L9qnbM078473; Fri, 21 May 2010 09:52:49 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4L9qnXe078468; Fri, 21 May 2010 09:52:49 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005210952.o4L9qnXe078468@svn.freebsd.org> From: Martin Matuska Date: Fri, 21 May 2010 09:52:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208373 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 09:52:49 -0000 Author: mm Date: Fri May 21 09:52:49 2010 New Revision: 208373 URL: http://svn.freebsd.org/changeset/base/208373 Log: Update L2ARC code and fix several bugs. - improve ARC memory consumption (Bug ID 6488341) - ARC/L2ARC metadata accounting (Bug ID 6748019) - L2ARC turbo warmup (Bud ID 6748023) - kstats for ARC content (Bug ID 6748023) - kstats for evicted bytes from ARC by L2ARC state (Bud ID 6871680) - fix panic on i386 systems (Bug ID 6821260) OpenSolaris onnv revisions: 8582:df9361868dbe, 8628:97dcded6e556, 9215:7c4584f76b47, 9274:a10f8bd993c1, 10357:29060492b29d OpenSolaris Bug IDs: 6748019, 6748023, 6748030, 6488341, 6798268, 6821260, 6790261, 6871680 Approved by: pjd, delphij (mentor) Obtained from: OpenSlaris (multiple bug IDs) MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Fri May 21 09:35:28 2010 (r208372) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Fri May 21 09:52:49 2010 (r208373) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -152,14 +152,20 @@ typedef enum arc_reclaim_strategy { /* number of seconds before growing cache again */ static int arc_grow_retry = 60; +/* shift of arc_c for calculating both min and max arc_p */ +static int arc_p_min_shift = 4; + +/* log2(fraction of arc to reclaim) */ +static int arc_shrink_shift = 5; + /* * minimum lifespan of a prefetch block in clock ticks * (initialized in arc_init()) */ static int arc_min_prefetch_lifespan; -extern int zfs_prefetch_disable; static int arc_dead; +extern int zfs_prefetch_disable; /* * The arc has filled available memory and has now warmed up. @@ -173,6 +179,9 @@ uint64_t zfs_arc_max; uint64_t zfs_arc_min; uint64_t zfs_arc_meta_limit = 0; int zfs_mdcomp_disable = 0; +int zfs_arc_grow_retry = 0; +int zfs_arc_shrink_shift = 0; +int zfs_arc_p_min_shift = 0; TUNABLE_QUAD("vfs.zfs.arc_max", &zfs_arc_max); TUNABLE_QUAD("vfs.zfs.arc_min", &zfs_arc_min); @@ -277,6 +286,9 @@ typedef struct arc_stats { kstat_named_t arcstat_recycle_miss; kstat_named_t arcstat_mutex_miss; kstat_named_t arcstat_evict_skip; + kstat_named_t arcstat_evict_l2_cached; + kstat_named_t arcstat_evict_l2_eligible; + kstat_named_t arcstat_evict_l2_ineligible; kstat_named_t arcstat_hash_elements; kstat_named_t arcstat_hash_elements_max; kstat_named_t arcstat_hash_collisions; @@ -288,10 +300,14 @@ typedef struct arc_stats { kstat_named_t arcstat_c_max; kstat_named_t arcstat_size; kstat_named_t arcstat_hdr_size; + kstat_named_t arcstat_data_size; + kstat_named_t arcstat_other_size; kstat_named_t arcstat_l2_hits; kstat_named_t arcstat_l2_misses; kstat_named_t arcstat_l2_feeds; kstat_named_t arcstat_l2_rw_clash; + kstat_named_t arcstat_l2_read_bytes; + kstat_named_t arcstat_l2_write_bytes; kstat_named_t arcstat_l2_writes_sent; kstat_named_t arcstat_l2_writes_done; kstat_named_t arcstat_l2_writes_error; @@ -341,6 +357,9 @@ static arc_stats_t arc_stats = { { "recycle_miss", KSTAT_DATA_UINT64 }, { "mutex_miss", KSTAT_DATA_UINT64 }, { "evict_skip", KSTAT_DATA_UINT64 }, + { "evict_l2_cached", KSTAT_DATA_UINT64 }, + { "evict_l2_eligible", KSTAT_DATA_UINT64 }, + { "evict_l2_ineligible", KSTAT_DATA_UINT64 }, { "hash_elements", KSTAT_DATA_UINT64 }, { "hash_elements_max", KSTAT_DATA_UINT64 }, { "hash_collisions", KSTAT_DATA_UINT64 }, @@ -352,10 +371,14 @@ static arc_stats_t arc_stats = { { "c_max", KSTAT_DATA_UINT64 }, { "size", KSTAT_DATA_UINT64 }, { "hdr_size", KSTAT_DATA_UINT64 }, + { "data_size", KSTAT_DATA_UINT64 }, + { "other_size", KSTAT_DATA_UINT64 }, { "l2_hits", KSTAT_DATA_UINT64 }, { "l2_misses", KSTAT_DATA_UINT64 }, { "l2_feeds", KSTAT_DATA_UINT64 }, { "l2_rw_clash", KSTAT_DATA_UINT64 }, + { "l2_read_bytes", KSTAT_DATA_UINT64 }, + { "l2_write_bytes", KSTAT_DATA_UINT64 }, { "l2_writes_sent", KSTAT_DATA_UINT64 }, { "l2_writes_done", KSTAT_DATA_UINT64 }, { "l2_writes_error", KSTAT_DATA_UINT64 }, @@ -519,6 +542,8 @@ static void arc_access(arc_buf_hdr_t *bu static int arc_evict_needed(arc_buf_contents_t type); static void arc_evict_ghost(arc_state_t *state, spa_t *spa, int64_t bytes); +static boolean_t l2arc_write_eligible(spa_t *spa, arc_buf_hdr_t *ab); + #define GHOST_STATE(state) \ ((state) == arc_mru_ghost || (state) == arc_mfu_ghost || \ (state) == arc_l2c_only) @@ -546,6 +571,7 @@ static void arc_evict_ghost(arc_state_t #define HDR_IN_HASH_TABLE(hdr) ((hdr)->b_flags & ARC_IN_HASH_TABLE) #define HDR_IO_IN_PROGRESS(hdr) ((hdr)->b_flags & ARC_IO_IN_PROGRESS) #define HDR_IO_ERROR(hdr) ((hdr)->b_flags & ARC_IO_ERROR) +#define HDR_PREFETCH(hdr) ((hdr)->b_flags & ARC_PREFETCH) #define HDR_FREED_IN_READ(hdr) ((hdr)->b_flags & ARC_FREED_IN_READ) #define HDR_BUF_AVAILABLE(hdr) ((hdr)->b_flags & ARC_BUF_AVAILABLE) #define HDR_FREE_IN_PROGRESS(hdr) ((hdr)->b_flags & ARC_FREE_IN_PROGRESS) @@ -603,10 +629,10 @@ extern kmem_cache_t *zio_data_buf_cache[ * Level 2 ARC */ -#define L2ARC_WRITE_SIZE (64 * 1024 * 1024) /* initial write max */ -#define L2ARC_HEADROOM 128 /* num of writes */ -#define L2ARC_FEED_SECS 1 /* caching interval */ -#define L2ARC_FEED_SECS_SHIFT 1 /* caching interval shift */ +#define L2ARC_WRITE_SIZE (8 * 1024 * 1024) /* initial write max */ +#define L2ARC_HEADROOM 2 /* num of writes */ +#define L2ARC_FEED_SECS 1 /* caching interval secs */ +#define L2ARC_FEED_MIN_MS 200 /* min caching interval ms */ #define l2arc_writes_sent ARCSTAT(arcstat_l2_writes_sent) #define l2arc_writes_done ARCSTAT(arcstat_l2_writes_done) @@ -618,9 +644,10 @@ uint64_t l2arc_write_max = L2ARC_WRITE_S uint64_t l2arc_write_boost = L2ARC_WRITE_SIZE; /* extra write during warmup */ uint64_t l2arc_headroom = L2ARC_HEADROOM; /* number of dev writes */ uint64_t l2arc_feed_secs = L2ARC_FEED_SECS; /* interval seconds */ -uint64_t l2arc_feed_secs_shift = L2ARC_FEED_SECS_SHIFT; /* interval seconds shift */ +uint64_t l2arc_feed_min_ms = L2ARC_FEED_MIN_MS; /* min interval milliseconds */ boolean_t l2arc_noprefetch = B_FALSE; /* don't cache prefetch bufs */ - +boolean_t l2arc_feed_again = B_TRUE; /* turbo warmup */ +boolean_t l2arc_norw = B_TRUE; /* no reads during writes */ SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_write_max, CTLFLAG_RW, &l2arc_write_max, 0, "max write size"); @@ -630,12 +657,15 @@ SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_he &l2arc_headroom, 0, "number of dev writes"); SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_secs, CTLFLAG_RW, &l2arc_feed_secs, 0, "interval seconds"); -SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_secs_shift, CTLFLAG_RW, - &l2arc_feed_secs_shift, 0, "power of 2 division of feed seconds"); +SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_min_ms, CTLFLAG_RW, + &l2arc_feed_min_ms, 0, "min interval milliseconds"); SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_noprefetch, CTLFLAG_RW, &l2arc_noprefetch, 0, "don't cache prefetch bufs"); - +SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_feed_again, CTLFLAG_RW, + &l2arc_feed_again, 0, "turbo warmup"); +SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_norw, CTLFLAG_RW, + &l2arc_norw, 0, "no reads during writes"); SYSCTL_QUAD(_vfs_zfs, OID_AUTO, anon_size, CTLFLAG_RD, &ARC_anon.arcs_size, 0, "size of anonymous state"); @@ -692,6 +722,7 @@ typedef struct l2arc_dev { uint64_t l2ad_end; /* last addr on device */ uint64_t l2ad_evict; /* last addr eviction reached */ boolean_t l2ad_first; /* first sweep through */ + boolean_t l2ad_writing; /* currently writing */ list_t *l2ad_buflist; /* buffer list */ list_node_t l2ad_node; /* device list node */ } l2arc_dev_t; @@ -722,7 +753,7 @@ typedef struct l2arc_write_callback { struct l2arc_buf_hdr { /* protected by arc_buf_hdr mutex */ l2arc_dev_t *b_dev; /* L2ARC device */ - daddr_t b_daddr; /* disk address, offset byte */ + uint64_t b_daddr; /* disk address, offset byte */ }; typedef struct l2arc_data_free { @@ -890,8 +921,8 @@ hdr_cons(void *vbuf, void *unused, int k refcount_create(&buf->b_refcnt); cv_init(&buf->b_cv, NULL, CV_DEFAULT, NULL); mutex_init(&buf->b_freeze_lock, NULL, MUTEX_DEFAULT, NULL); + arc_space_consume(sizeof (arc_buf_hdr_t), ARC_SPACE_HDRS); - ARCSTAT_INCR(arcstat_hdr_size, HDR_SIZE); return (0); } @@ -903,6 +934,8 @@ buf_cons(void *vbuf, void *unused, int k bzero(buf, sizeof (arc_buf_t)); rw_init(&buf->b_lock, NULL, RW_DEFAULT, NULL); + arc_space_consume(sizeof (arc_buf_t), ARC_SPACE_HDRS); + return (0); } @@ -919,8 +952,7 @@ hdr_dest(void *vbuf, void *unused) refcount_destroy(&buf->b_refcnt); cv_destroy(&buf->b_cv); mutex_destroy(&buf->b_freeze_lock); - - ARCSTAT_INCR(arcstat_hdr_size, -HDR_SIZE); + arc_space_return(sizeof (arc_buf_hdr_t), ARC_SPACE_HDRS); } /* ARGSUSED */ @@ -930,6 +962,7 @@ buf_dest(void *vbuf, void *unused) arc_buf_t *buf = vbuf; rw_destroy(&buf->b_lock); + arc_space_return(sizeof (arc_buf_t), ARC_SPACE_HDRS); } /* @@ -1245,15 +1278,49 @@ arc_change_state(arc_state_t *new_state, } void -arc_space_consume(uint64_t space) +arc_space_consume(uint64_t space, arc_space_type_t type) { + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, space); + break; + } + atomic_add_64(&arc_meta_used, space); atomic_add_64(&arc_size, space); } void -arc_space_return(uint64_t space) +arc_space_return(uint64_t space, arc_space_type_t type) { + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, -space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, -space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, -space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, -space); + break; + } + ASSERT(arc_meta_used >= space); if (arc_meta_max < arc_meta_used) arc_meta_max = arc_meta_used; @@ -1353,6 +1420,7 @@ arc_buf_add_ref(arc_buf_t *buf, void* ta ASSERT(hdr->b_state == arc_mru || hdr->b_state == arc_mfu); add_reference(hdr, hash_lock, tag); + DTRACE_PROBE1(arc__hit, arc_buf_hdr_t *, hdr); arc_access(hdr, hash_lock); mutex_exit(hash_lock); ARCSTAT_BUMP(arcstat_hits); @@ -1400,11 +1468,12 @@ arc_buf_destroy(arc_buf_t *buf, boolean_ if (type == ARC_BUFC_METADATA) { arc_buf_data_free(buf->b_hdr, zio_buf_free, buf->b_data, size); - arc_space_return(size); + arc_space_return(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); arc_buf_data_free(buf->b_hdr, zio_data_buf_free, buf->b_data, size); + ARCSTAT_INCR(arcstat_data_size, -size); atomic_add_64(&arc_size, -size); } } @@ -1699,6 +1768,21 @@ evict_start: buf->b_data == stolen, TRUE); } } + + if (ab->b_l2hdr) { + ARCSTAT_INCR(arcstat_evict_l2_cached, + ab->b_size); + } else { + if (l2arc_write_eligible(ab->b_spa, ab)) { + ARCSTAT_INCR(arcstat_evict_l2_eligible, + ab->b_size); + } else { + ARCSTAT_INCR( + arcstat_evict_l2_ineligible, + ab->b_size); + } + } + if (ab->b_datacnt == 0) { arc_change_state(evicted_state, ab, hash_lock); ASSERT(HDR_IN_HASH_TABLE(ab)); @@ -1871,61 +1955,63 @@ evict_start: static void arc_adjust(void) { - int64_t top_sz, mru_over, arc_over, todelete; + int64_t adjustment, delta; - top_sz = arc_anon->arcs_size + arc_mru->arcs_size + arc_meta_used; + /* + * Adjust MRU size + */ + + adjustment = MIN(arc_size - arc_c, + arc_anon->arcs_size + arc_mru->arcs_size + arc_meta_used - arc_p); - if (top_sz > arc_p && arc_mru->arcs_lsize[ARC_BUFC_DATA] > 0) { - int64_t toevict = - MIN(arc_mru->arcs_lsize[ARC_BUFC_DATA], top_sz - arc_p); - (void) arc_evict(arc_mru, NULL, toevict, FALSE, ARC_BUFC_DATA); - top_sz = arc_anon->arcs_size + arc_mru->arcs_size; + if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_DATA] > 0) { + delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_DATA], adjustment); + (void) arc_evict(arc_mru, NULL, delta, FALSE, ARC_BUFC_DATA); + adjustment -= delta; } - if (top_sz > arc_p && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) { - int64_t toevict = - MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], top_sz - arc_p); - (void) arc_evict(arc_mru, NULL, toevict, FALSE, + if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) { + delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], adjustment); + (void) arc_evict(arc_mru, NULL, delta, FALSE, ARC_BUFC_METADATA); - top_sz = arc_anon->arcs_size + arc_mru->arcs_size; } - mru_over = top_sz + arc_mru_ghost->arcs_size - arc_c; + /* + * Adjust MFU size + */ - if (mru_over > 0) { - if (arc_mru_ghost->arcs_size > 0) { - todelete = MIN(arc_mru_ghost->arcs_size, mru_over); - arc_evict_ghost(arc_mru_ghost, NULL, todelete); - } + adjustment = arc_size - arc_c; + + if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_DATA] > 0) { + delta = MIN(adjustment, arc_mfu->arcs_lsize[ARC_BUFC_DATA]); + (void) arc_evict(arc_mfu, NULL, delta, FALSE, ARC_BUFC_DATA); + adjustment -= delta; } - if ((arc_over = arc_size - arc_c) > 0) { - int64_t tbl_over; + if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) { + int64_t delta = MIN(adjustment, + arc_mfu->arcs_lsize[ARC_BUFC_METADATA]); + (void) arc_evict(arc_mfu, NULL, delta, FALSE, + ARC_BUFC_METADATA); + } - if (arc_mfu->arcs_lsize[ARC_BUFC_DATA] > 0) { - int64_t toevict = - MIN(arc_mfu->arcs_lsize[ARC_BUFC_DATA], arc_over); - (void) arc_evict(arc_mfu, NULL, toevict, FALSE, - ARC_BUFC_DATA); - arc_over = arc_size - arc_c; - } - - if (arc_over > 0 && - arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) { - int64_t toevict = - MIN(arc_mfu->arcs_lsize[ARC_BUFC_METADATA], - arc_over); - (void) arc_evict(arc_mfu, NULL, toevict, FALSE, - ARC_BUFC_METADATA); - } + /* + * Adjust ghost lists + */ - tbl_over = arc_size + arc_mru_ghost->arcs_size + - arc_mfu_ghost->arcs_size - arc_c * 2; + adjustment = arc_mru->arcs_size + arc_mru_ghost->arcs_size - arc_c; - if (tbl_over > 0 && arc_mfu_ghost->arcs_size > 0) { - todelete = MIN(arc_mfu_ghost->arcs_size, tbl_over); - arc_evict_ghost(arc_mfu_ghost, NULL, todelete); - } + if (adjustment > 0 && arc_mru_ghost->arcs_size > 0) { + delta = MIN(arc_mru_ghost->arcs_size, adjustment); + arc_evict_ghost(arc_mru_ghost, NULL, delta); + } + + adjustment = + arc_mru_ghost->arcs_size + arc_mfu_ghost->arcs_size - arc_c; + + if (adjustment > 0 && arc_mfu_ghost->arcs_size > 0) { + delta = MIN(arc_mfu_ghost->arcs_size, adjustment); + arc_evict_ghost(arc_mfu_ghost, NULL, delta); } } @@ -1999,8 +2085,6 @@ arc_flush(spa_t *spa) ASSERT(spa || arc_eviction_list == NULL); } -int arc_shrink_shift = 5; /* log2(fraction of arc to reclaim) */ - void arc_shrink(void) { @@ -2237,6 +2321,7 @@ static void arc_adapt(int bytes, arc_state_t *state) { int mult; + uint64_t arc_p_min = (arc_c >> arc_p_min_shift); if (state == arc_l2c_only) return; @@ -2254,12 +2339,15 @@ arc_adapt(int bytes, arc_state_t *state) mult = ((arc_mru_ghost->arcs_size >= arc_mfu_ghost->arcs_size) ? 1 : (arc_mfu_ghost->arcs_size/arc_mru_ghost->arcs_size)); - arc_p = MIN(arc_c, arc_p + bytes * mult); + arc_p = MIN(arc_c - arc_p_min, arc_p + bytes * mult); } else if (state == arc_mfu_ghost) { + uint64_t delta; + mult = ((arc_mfu_ghost->arcs_size >= arc_mru_ghost->arcs_size) ? 1 : (arc_mru_ghost->arcs_size/arc_mfu_ghost->arcs_size)); - arc_p = MAX(0, (int64_t)arc_p - bytes * mult); + delta = MIN(bytes * mult, arc_p); + arc_p = MAX(arc_p_min, arc_p - delta); } ASSERT((int64_t)arc_p >= 0); @@ -2359,10 +2447,11 @@ arc_get_data_buf(arc_buf_t *buf) if (!arc_evict_needed(type)) { if (type == ARC_BUFC_METADATA) { buf->b_data = zio_buf_alloc(size); - arc_space_consume(size); + arc_space_consume(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); buf->b_data = zio_data_buf_alloc(size); + ARCSTAT_INCR(arcstat_data_size, size); atomic_add_64(&arc_size, size); } goto out; @@ -2379,21 +2468,22 @@ arc_get_data_buf(arc_buf_t *buf) if (state == arc_mru || state == arc_anon) { uint64_t mru_used = arc_anon->arcs_size + arc_mru->arcs_size; - state = (arc_mfu->arcs_lsize[type] > 0 && + state = (arc_mfu->arcs_lsize[type] >= size && arc_p > mru_used) ? arc_mfu : arc_mru; } else { /* MFU cases */ uint64_t mfu_space = arc_c - arc_p; - state = (arc_mru->arcs_lsize[type] > 0 && + state = (arc_mru->arcs_lsize[type] >= size && mfu_space > arc_mfu->arcs_size) ? arc_mru : arc_mfu; } if ((buf->b_data = arc_evict(state, NULL, size, TRUE, type)) == NULL) { if (type == ARC_BUFC_METADATA) { buf->b_data = zio_buf_alloc(size); - arc_space_consume(size); + arc_space_consume(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); buf->b_data = zio_data_buf_alloc(size); + ARCSTAT_INCR(arcstat_data_size, size); atomic_add_64(&arc_size, size); } ARCSTAT_BUMP(arcstat_recycle_miss); @@ -2816,7 +2906,8 @@ top: uint64_t size = BP_GET_LSIZE(bp); arc_callback_t *acb; vdev_t *vd = NULL; - daddr_t addr; + uint64_t addr; + boolean_t devw = B_FALSE; if (hdr == NULL) { /* this block is not in the cache */ @@ -2895,6 +2986,7 @@ top: if (HDR_L2CACHE(hdr) && hdr->b_l2hdr != NULL && (vd = hdr->b_l2hdr->b_dev->l2ad_vdev) != NULL) { + devw = hdr->b_l2hdr->b_dev->l2ad_writing; addr = hdr->b_l2hdr->b_daddr; /* * Lock out device removal. @@ -2914,7 +3006,7 @@ top: demand, prefetch, hdr->b_type != ARC_BUFC_METADATA, data, metadata, misses); - if (vd != NULL) { + if (vd != NULL && l2arc_ndev != 0 && !(l2arc_norw && devw)) { /* * Read from the L2ARC if the following are true: * 1. The L2ARC vdev was previously cached. @@ -2922,9 +3014,11 @@ top: * 3. This buffer isn't currently writing to the L2ARC. * 4. The L2ARC entry wasn't evicted, which may * also have invalidated the vdev. + * 5. This isn't prefetch and l2arc_noprefetch is set. */ if (hdr->b_l2hdr != NULL && - !HDR_L2_WRITING(hdr) && !HDR_L2_EVICTED(hdr)) { + !HDR_L2_WRITING(hdr) && !HDR_L2_EVICTED(hdr) && + !(l2arc_noprefetch && HDR_PREFETCH(hdr))) { l2arc_read_callback_t *cb; DTRACE_PROBE1(l2arc__hit, arc_buf_hdr_t *, hdr); @@ -2950,6 +3044,7 @@ top: ZIO_FLAG_DONT_RETRY, B_FALSE); DTRACE_PROBE2(l2arc__read, vdev_t *, vd, zio_t *, rzio); + ARCSTAT_INCR(arcstat_l2_read_bytes, size); if (*arc_flags & ARC_NOWAIT) { zio_nowait(rzio); @@ -2969,6 +3064,14 @@ top: ARCSTAT_BUMP(arcstat_l2_rw_clash); spa_config_exit(spa, SCL_L2ARC, vd); } + } else { + if (vd != NULL) + spa_config_exit(spa, SCL_L2ARC, vd); + if (l2arc_ndev != 0) { + DTRACE_PROBE1(l2arc__miss, + arc_buf_hdr_t *, hdr); + ARCSTAT_BUMP(arcstat_l2_misses); + } } rzio = zio_read(pio, spa, bp, buf->b_data, size, @@ -3125,6 +3228,7 @@ arc_release(arc_buf_t *buf, void *tag) kmutex_t *hash_lock; l2arc_buf_hdr_t *l2hdr; uint64_t buf_size; + boolean_t released = B_FALSE; rw_enter(&buf->b_lock, RW_WRITER); hdr = buf->b_hdr; @@ -3140,12 +3244,12 @@ arc_release(arc_buf_t *buf, void *tag) ASSERT(buf->b_efunc == NULL); arc_buf_thaw(buf); rw_exit(&buf->b_lock); - return; + released = B_TRUE; + } else { + hash_lock = HDR_LOCK(hdr); + mutex_enter(hash_lock); } - hash_lock = HDR_LOCK(hdr); - mutex_enter(hash_lock); - l2hdr = hdr->b_l2hdr; if (l2hdr) { mutex_enter(&l2arc_buflist_mtx); @@ -3153,6 +3257,9 @@ arc_release(arc_buf_t *buf, void *tag) buf_size = hdr->b_size; } + if (released) + goto out; + /* * Do we have more than one buf? */ @@ -3220,6 +3327,7 @@ arc_release(arc_buf_t *buf, void *tag) buf->b_efunc = NULL; buf->b_private = NULL; +out: if (l2hdr) { list_remove(l2hdr->b_dev->l2ad_buflist, hdr); kmem_free(l2hdr, sizeof (l2arc_buf_hdr_t)); @@ -3697,6 +3805,15 @@ arc_init(void) if (arc_c_min < arc_meta_limit / 2 && zfs_arc_min == 0) arc_c_min = arc_meta_limit / 2; + if (zfs_arc_grow_retry > 0) + arc_grow_retry = zfs_arc_grow_retry; + + if (zfs_arc_shrink_shift > 0) + arc_shrink_shift = zfs_arc_shrink_shift; + + if (zfs_arc_p_min_shift > 0) + arc_p_min_shift = zfs_arc_p_min_shift; + /* if kmem_flags are set, lets try to use less memory */ if (kmem_debugging()) arc_c = arc_c / 2; @@ -3987,8 +4104,82 @@ arc_fini(void) * * Tunables may be removed or added as future performance improvements are * integrated, and also may become zpool properties. + * + * There are three key functions that control how the L2ARC warms up: + * + * l2arc_write_eligible() check if a buffer is eligible to cache + * l2arc_write_size() calculate how much to write + * l2arc_write_interval() calculate sleep delay between writes + * + * These three functions determine what to write, how much, and how quickly + * to send writes. */ +static boolean_t +l2arc_write_eligible(spa_t *spa, arc_buf_hdr_t *ab) +{ + /* + * A buffer is *not* eligible for the L2ARC if it: + * 1. belongs to a different spa. + * 2. is already cached on the L2ARC. + * 3. has an I/O in progress (it may be an incomplete read). + * 4. is flagged not eligible (zfs property). + */ + if (ab->b_spa != spa) { + ARCSTAT_BUMP(arcstat_l2_write_spa_mismatch); + return (B_FALSE); + } + if (ab->b_l2hdr != NULL) { + ARCSTAT_BUMP(arcstat_l2_write_in_l2); + return (B_FALSE); + } + if (HDR_IO_IN_PROGRESS(ab)) { + ARCSTAT_BUMP(arcstat_l2_write_hdr_io_in_progress); + return (B_FALSE); + } + if (!HDR_L2CACHE(ab)) { + ARCSTAT_BUMP(arcstat_l2_write_not_cacheable); + return (B_FALSE); + } + + return (B_TRUE); +} + +static uint64_t +l2arc_write_size(l2arc_dev_t *dev) +{ + uint64_t size; + + size = dev->l2ad_write; + + if (arc_warm == B_FALSE) + size += dev->l2ad_boost; + + return (size); + +} + +static clock_t +l2arc_write_interval(clock_t began, uint64_t wanted, uint64_t wrote) +{ + clock_t interval, next; + + /* + * If the ARC lists are busy, increase our write rate; if the + * lists are stale, idle back. This is achieved by checking + * how much we previously wrote - if it was more than half of + * what we wanted, schedule the next write much sooner. + */ + if (l2arc_feed_again && wrote > (wanted / 2)) + interval = (hz * l2arc_feed_min_ms) / 1000; + else + interval = hz * l2arc_feed_secs; + + next = MAX(LBOLT, MIN(LBOLT + interval, began + interval)); + + return (next); +} + static void l2arc_hdr_stat_add(void) { @@ -4410,7 +4601,7 @@ top: * An ARC_L2_WRITING flag is set so that the L2ARC buffers are not valid * for reading until they have completed writing. */ -static void +static uint64_t l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) { arc_buf_hdr_t *ab, *ab_prev, *head; @@ -4473,15 +4664,6 @@ l2arc_write_buffers(spa_t *spa, l2arc_de continue; } - if (ab->b_l2hdr != NULL) { - /* - * Already in L2ARC. - */ - mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_in_l2); - continue; - } - passed_sz += ab->b_size; if (passed_sz > headroom) { /* @@ -4492,22 +4674,11 @@ l2arc_write_buffers(spa_t *spa, l2arc_de break; } - if (ab->b_spa != spa) { + if (!l2arc_write_eligible(spa, ab)) { mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_spa_mismatch); continue; } - if (HDR_IO_IN_PROGRESS(ab)) { - mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_hdr_io_in_progress); - continue; - } - if (!HDR_L2CACHE(ab)) { - mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_not_cacheable); - continue; - } if ((write_sz + ab->b_size) > target_sz) { full = B_TRUE; mutex_exit(hash_lock); @@ -4515,12 +4686,6 @@ l2arc_write_buffers(spa_t *spa, l2arc_de break; } - if (ab->b_buf == NULL) { - DTRACE_PROBE1(l2arc__buf__null, void *, ab); - mutex_exit(hash_lock); - continue; - } - if (pio == NULL) { /* * Insert a dummy header on the buflist so @@ -4589,11 +4754,12 @@ l2arc_write_buffers(spa_t *spa, l2arc_de if (pio == NULL) { ASSERT3U(write_sz, ==, 0); kmem_cache_free(hdr_cache, head); - return; + return (0); } ASSERT3U(write_sz, <=, target_sz); ARCSTAT_BUMP(arcstat_l2_writes_sent); + ARCSTAT_INCR(arcstat_l2_write_bytes, write_sz); ARCSTAT_INCR(arcstat_l2_size, write_sz); spa_l2cache_space_update(dev->l2ad_vdev, 0, write_sz); @@ -4609,7 +4775,11 @@ l2arc_write_buffers(spa_t *spa, l2arc_de dev->l2ad_first = B_FALSE; } + dev->l2ad_writing = B_TRUE; (void) zio_wait(pio); + dev->l2ad_writing = B_FALSE; + + return (write_sz); } /* @@ -4622,20 +4792,19 @@ l2arc_feed_thread(void *dummy __unused) callb_cpr_t cpr; l2arc_dev_t *dev; spa_t *spa; - uint64_t size; + uint64_t size, wrote; + clock_t begin, next = LBOLT; CALLB_CPR_INIT(&cpr, &l2arc_feed_thr_lock, callb_generic_cpr, FTAG); mutex_enter(&l2arc_feed_thr_lock); while (l2arc_thread_exit == 0) { - /* - * Pause for l2arc_feed_secs seconds between writes. - */ CALLB_CPR_SAFE_BEGIN(&cpr); (void) cv_timedwait(&l2arc_feed_thr_cv, &l2arc_feed_thr_lock, - hz * l2arc_feed_secs >> l2arc_feed_secs_shift); + next - LBOLT); CALLB_CPR_SAFE_END(&cpr, &l2arc_feed_thr_lock); + next = LBOLT + hz; /* * Quick check for L2ARC devices. @@ -4646,6 +4815,7 @@ l2arc_feed_thread(void *dummy __unused) continue; } mutex_exit(&l2arc_dev_mtx); + begin = LBOLT; /* * This selects the next l2arc device to write to, and in @@ -4674,9 +4844,7 @@ l2arc_feed_thread(void *dummy __unused) ARCSTAT_BUMP(arcstat_l2_feeds); - size = dev->l2ad_write; - if (arc_warm == B_FALSE) - size += dev->l2ad_boost; + size = l2arc_write_size(dev); /* * Evict L2ARC buffers that will be overwritten. @@ -4686,7 +4854,12 @@ l2arc_feed_thread(void *dummy __unused) /* * Write ARC buffers. */ - l2arc_write_buffers(spa, dev, size); + wrote = l2arc_write_buffers(spa, dev, size); + + /* + * Calculate interval between writes. + */ + next = l2arc_write_interval(begin, size, wrote); spa_config_exit(spa, SCL_L2ARC, dev); } @@ -4736,6 +4909,7 @@ l2arc_add_vdev(spa_t *spa, vdev_t *vd, u adddev->l2ad_hand = adddev->l2ad_start; adddev->l2ad_evict = adddev->l2ad_start; adddev->l2ad_first = B_TRUE; + adddev->l2ad_writing = B_FALSE; ASSERT3U(adddev->l2ad_write, >, 0); /* Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Fri May 21 09:35:28 2010 (r208372) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Fri May 21 09:52:49 2010 (r208373) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -466,7 +466,7 @@ dbuf_read_impl(dmu_buf_impl_t *db, zio_t ASSERT3U(bonuslen, <=, db->db.db_size); db->db.db_data = zio_buf_alloc(DN_MAX_BONUSLEN); - arc_space_consume(DN_MAX_BONUSLEN); + arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); if (bonuslen < DN_MAX_BONUSLEN) bzero(db->db.db_data, DN_MAX_BONUSLEN); if (bonuslen) @@ -657,7 +657,7 @@ dbuf_fix_old_data(dmu_buf_impl_t *db, ui if (db->db_blkid == DB_BONUS_BLKID) { /* Note that the data bufs here are zio_bufs */ dr->dt.dl.dr_data = zio_buf_alloc(DN_MAX_BONUSLEN); - arc_space_consume(DN_MAX_BONUSLEN); + arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); bcopy(db->db.db_data, dr->dt.dl.dr_data, DN_MAX_BONUSLEN); } else if (refcount_count(&db->db_holds) > db->db_dirtycnt) { int size = db->db.db_size; @@ -1314,7 +1314,7 @@ dbuf_clear(dmu_buf_impl_t *db) ASSERT(db->db.db_data != NULL); if (db->db_blkid == DB_BONUS_BLKID) { zio_buf_free(db->db.db_data, DN_MAX_BONUSLEN); - arc_space_return(DN_MAX_BONUSLEN); + arc_space_return(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); } db->db.db_data = NULL; db->db_state = DB_UNCACHED; @@ -1436,7 +1436,7 @@ dbuf_create(dnode_t *dn, uint8_t level, db->db.db_offset = DB_BONUS_BLKID; db->db_state = DB_UNCACHED; /* the bonus dbuf is not placed in the hash table */ - arc_space_consume(sizeof (dmu_buf_impl_t)); + arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); return (db); } else { int blocksize = @@ -1463,7 +1463,7 @@ dbuf_create(dnode_t *dn, uint8_t level, list_insert_head(&dn->dn_dbufs, db); db->db_state = DB_UNCACHED; mutex_exit(&dn->dn_dbufs_mtx); - arc_space_consume(sizeof (dmu_buf_impl_t)); + arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); if (parent && parent != dn->dn_dbuf) dbuf_add_ref(parent, db); @@ -1532,7 +1532,7 @@ dbuf_destroy(dmu_buf_impl_t *db) ASSERT(db->db_data_pending == NULL); kmem_cache_free(dbuf_cache, db); - arc_space_return(sizeof (dmu_buf_impl_t)); + arc_space_return(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); } void @@ -1951,7 +1951,7 @@ dbuf_sync_leaf(dbuf_dirty_record_t *dr, bcopy(*datap, DN_BONUS(dn->dn_phys), dn->dn_phys->dn_bonuslen); if (*datap != db->db.db_data) { zio_buf_free(*datap, DN_MAX_BONUSLEN); - arc_space_return(DN_MAX_BONUSLEN); + arc_space_return(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); } db->db_data_pending = NULL; drp = &db->db_last_dirty; Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Fri May 21 09:35:28 2010 (r208372) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Fri May 21 09:52:49 2010 (r208373) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -301,7 +301,7 @@ dnode_create(objset_impl_t *os, dnode_ph list_insert_head(&os->os_dnodes, dn); mutex_exit(&os->os_lock); - arc_space_consume(sizeof (dnode_t)); + arc_space_consume(sizeof (dnode_t), ARC_SPACE_OTHER); return (dn); } @@ -336,7 +336,7 @@ dnode_destroy(dnode_t *dn) dn->dn_bonus = NULL; } kmem_cache_free(dnode_cache, dn); - arc_space_return(sizeof (dnode_t)); + arc_space_return(sizeof (dnode_t), ARC_SPACE_OTHER); } void Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Fri May 21 09:35:28 2010 (r208372) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Fri May 21 09:52:49 2010 (r208373) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -68,8 +68,19 @@ typedef enum arc_buf_contents { #define ARC_CACHED (1 << 4) /* I/O was already in cache */ #define ARC_L2CACHE (1 << 5) /* cache in L2ARC */ -void arc_space_consume(uint64_t space); -void arc_space_return(uint64_t space); +/* + * The following breakdows of arc_size exist for kstat only. + */ +typedef enum arc_space_type { + ARC_SPACE_DATA, + ARC_SPACE_HDRS, + ARC_SPACE_L2HDRS, + ARC_SPACE_OTHER, + ARC_SPACE_NUMTYPES +} arc_space_type_t; + +void arc_space_consume(uint64_t space, arc_space_type_t type); +void arc_space_return(uint64_t space, arc_space_type_t type); void *arc_data_buf_alloc(uint64_t space); void arc_data_buf_free(void *buf, uint64_t space); arc_buf_t *arc_buf_alloc(spa_t *spa, int size, void *tag, From owner-svn-src-head@FreeBSD.ORG Fri May 21 10:36:30 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 758FA1065674; Fri, 21 May 2010 10:36:30 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 653148FC0A; Fri, 21 May 2010 10:36:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LAaUD5090351; Fri, 21 May 2010 10:36:30 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LAaUXV090349; Fri, 21 May 2010 10:36:30 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005211036.o4LAaUXV090349@svn.freebsd.org> From: Konstantin Belousov Date: Fri, 21 May 2010 10:36:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208374 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 10:36:30 -0000 Author: kib Date: Fri May 21 10:36:29 2010 New Revision: 208374 URL: http://svn.freebsd.org/changeset/base/208374 Log: Remove PIOLLHUP from the flags used to test for to set exceptfsd fd_set bits in select(2). It seems that historical behaviour is to not reporting exception on EOF, and several applications are broken. Reported by: Yoshihiko Sarumaru Discussed with: bde PR: ports/140934 MFC after: 2 weeks Modified: head/sys/kern/sys_generic.c Modified: head/sys/kern/sys_generic.c ============================================================================== --- head/sys/kern/sys_generic.c Fri May 21 09:52:49 2010 (r208373) +++ head/sys/kern/sys_generic.c Fri May 21 10:36:29 2010 (r208374) @@ -996,7 +996,7 @@ done: static int select_flags[3] = { POLLRDNORM | POLLHUP | POLLERR, POLLWRNORM | POLLHUP | POLLERR, - POLLRDBAND | POLLHUP | POLLERR + POLLRDBAND | POLLERR }; /* From owner-svn-src-head@FreeBSD.ORG Fri May 21 13:29:28 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE8B81065672; Fri, 21 May 2010 13:29:28 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DDC918FC14; Fri, 21 May 2010 13:29:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LDTS4W028649; Fri, 21 May 2010 13:29:28 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LDTSuL028647; Fri, 21 May 2010 13:29:28 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005211329.o4LDTSuL028647@svn.freebsd.org> From: Alexander Motin Date: Fri, 21 May 2010 13:29:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208375 - in head/sys/dev: ahci ata X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 13:29:29 -0000 Author: mav Date: Fri May 21 13:29:28 2010 New Revision: 208375 URL: http://svn.freebsd.org/changeset/base/208375 Log: Improve suspend/resume support. Make sure controller is idle on suspend and reset it on resume. Modified: head/sys/dev/ahci/ahci.c head/sys/dev/ata/ata-all.c Modified: head/sys/dev/ahci/ahci.c ============================================================================== --- head/sys/dev/ahci/ahci.c Fri May 21 10:36:29 2010 (r208374) +++ head/sys/dev/ahci/ahci.c Fri May 21 13:29:28 2010 (r208375) @@ -60,6 +60,8 @@ static void ahci_intr(void *data); static void ahci_intr_one(void *data); static int ahci_suspend(device_t dev); static int ahci_resume(device_t dev); +static int ahci_ch_init(device_t dev); +static int ahci_ch_deinit(device_t dev); static int ahci_ch_suspend(device_t dev); static int ahci_ch_resume(device_t dev); static void ahci_ch_pm(void *arg); @@ -877,7 +879,7 @@ ahci_ch_attach(device_t dev) return (ENXIO); ahci_dmainit(dev); ahci_slotsalloc(dev); - ahci_ch_resume(dev); + ahci_ch_init(dev); mtx_lock(&ch->mtx); rid = ATA_IRQ_RID; if (!(ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, @@ -969,7 +971,7 @@ ahci_ch_detach(device_t dev) bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); - ahci_ch_suspend(dev); + ahci_ch_deinit(dev); ahci_slotsfree(dev); ahci_dmafini(dev); @@ -979,7 +981,32 @@ ahci_ch_detach(device_t dev) } static int -ahci_ch_suspend(device_t dev) +ahci_ch_init(device_t dev) +{ + struct ahci_channel *ch = device_get_softc(dev); + uint64_t work; + + /* Disable port interrupts */ + ATA_OUTL(ch->r_mem, AHCI_P_IE, 0); + /* Setup work areas */ + work = ch->dma.work_bus + AHCI_CL_OFFSET; + ATA_OUTL(ch->r_mem, AHCI_P_CLB, work & 0xffffffff); + ATA_OUTL(ch->r_mem, AHCI_P_CLBU, work >> 32); + work = ch->dma.rfis_bus; + ATA_OUTL(ch->r_mem, AHCI_P_FB, work & 0xffffffff); + ATA_OUTL(ch->r_mem, AHCI_P_FBU, work >> 32); + /* Activate the channel and power/spin up device */ + ATA_OUTL(ch->r_mem, AHCI_P_CMD, + (AHCI_P_CMD_ACTIVE | AHCI_P_CMD_POD | AHCI_P_CMD_SUD | + ((ch->pm_level == 2 || ch->pm_level == 3) ? AHCI_P_CMD_ALPE : 0) | + ((ch->pm_level > 2) ? AHCI_P_CMD_ASP : 0 ))); + ahci_start_fr(dev); + ahci_start(dev, 1); + return (0); +} + +static int +ahci_ch_deinit(device_t dev) { struct ahci_channel *ch = device_get_softc(dev); @@ -1000,27 +1027,29 @@ ahci_ch_suspend(device_t dev) } static int +ahci_ch_suspend(device_t dev) +{ + struct ahci_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->oslots) + msleep(ch, &ch->mtx, PRIBIO, "ahcisusp", hz/100); + ahci_ch_deinit(dev); + mtx_unlock(&ch->mtx); + return (0); +} + +static int ahci_ch_resume(device_t dev) { struct ahci_channel *ch = device_get_softc(dev); - uint64_t work; - /* Disable port interrupts */ - ATA_OUTL(ch->r_mem, AHCI_P_IE, 0); - /* Setup work areas */ - work = ch->dma.work_bus + AHCI_CL_OFFSET; - ATA_OUTL(ch->r_mem, AHCI_P_CLB, work & 0xffffffff); - ATA_OUTL(ch->r_mem, AHCI_P_CLBU, work >> 32); - work = ch->dma.rfis_bus; - ATA_OUTL(ch->r_mem, AHCI_P_FB, work & 0xffffffff); - ATA_OUTL(ch->r_mem, AHCI_P_FBU, work >> 32); - /* Activate the channel and power/spin up device */ - ATA_OUTL(ch->r_mem, AHCI_P_CMD, - (AHCI_P_CMD_ACTIVE | AHCI_P_CMD_POD | AHCI_P_CMD_SUD | - ((ch->pm_level == 2 || ch->pm_level == 3) ? AHCI_P_CMD_ALPE : 0) | - ((ch->pm_level > 2) ? AHCI_P_CMD_ASP : 0 ))); - ahci_start_fr(dev); - ahci_start(dev, 1); + mtx_lock(&ch->mtx); + ahci_ch_init(dev); + ahci_reset(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->mtx); return (0); } Modified: head/sys/dev/ata/ata-all.c ============================================================================== --- head/sys/dev/ata/ata-all.c Fri May 21 10:36:29 2010 (r208374) +++ head/sys/dev/ata/ata-all.c Fri May 21 13:29:28 2010 (r208375) @@ -432,7 +432,13 @@ ata_suspend(device_t dev) if (!dev || !(ch = device_get_softc(dev))) return ENXIO; -#ifndef ATA_CAM +#ifdef ATA_CAM + mtx_lock(&ch->state_mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->state != ATA_IDLE) + msleep(ch, &ch->state_mtx, PRIBIO, "atasusp", hz/100); + mtx_unlock(&ch->state_mtx); +#else /* wait for the channel to be IDLE or detached before suspending */ while (ch->r_irq) { mtx_lock(&ch->state_mtx); @@ -452,16 +458,21 @@ ata_suspend(device_t dev) int ata_resume(device_t dev) { + struct ata_channel *ch; int error; /* check for valid device */ - if (!dev || !device_get_softc(dev)) + if (!dev || !(ch = device_get_softc(dev))) return ENXIO; +#ifdef ATA_CAM + mtx_lock(&ch->state_mtx); + error = ata_reinit(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->state_mtx); +#else /* reinit the devices, we dont know what mode/state they are in */ error = ata_reinit(dev); - -#ifndef ATA_CAM /* kick off requests on the queue */ ata_start(dev); #endif From owner-svn-src-head@FreeBSD.ORG Fri May 21 15:57:25 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D8C50106564A; Fri, 21 May 2010 15:57:24 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C7FD48FC1A; Fri, 21 May 2010 15:57:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LFvOeE061497; Fri, 21 May 2010 15:57:24 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LFvO3t061495; Fri, 21 May 2010 15:57:24 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005211557.o4LFvO3t061495@svn.freebsd.org> From: Andrew Gallatin Date: Fri, 21 May 2010 15:57:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208379 - head/sys/dev/mxge X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 15:57:25 -0000 Author: gallatin Date: Fri May 21 15:57:24 2010 New Revision: 208379 URL: http://svn.freebsd.org/changeset/base/208379 Log: Add interrupt descriptions for mxge's msi-x vectors Modified: head/sys/dev/mxge/if_mxge.c Modified: head/sys/dev/mxge/if_mxge.c ============================================================================== --- head/sys/dev/mxge/if_mxge.c Fri May 21 15:49:56 2010 (r208378) +++ head/sys/dev/mxge/if_mxge.c Fri May 21 15:57:24 2010 (r208379) @@ -4476,6 +4476,8 @@ mxge_add_msix_irqs(mxge_softc_t *sc) "message %d\n", i); goto abort_with_intr; } + bus_describe_intr(sc->dev, sc->msix_irq_res[i], + sc->msix_ih[i], "s%d", i); } if (mxge_verbose) { From owner-svn-src-head@FreeBSD.ORG Fri May 21 15:59:24 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A3F39106566C; Fri, 21 May 2010 15:59:24 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from mail-qy0-f188.google.com (mail-qy0-f188.google.com [209.85.221.188]) by mx1.freebsd.org (Postfix) with ESMTP id 193498FC13; Fri, 21 May 2010 15:59:23 +0000 (UTC) Received: by qyk26 with SMTP id 26so2007942qyk.28 for ; Fri, 21 May 2010 08:59:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=6+ED4pEdOHN8J0NNpAqAQpjM8sSIyHQVRuAN9vz6k9E=; b=cmtUD0DgU6igRPzckHkdlaLWXTxvb5H2r9IO9/TYDMTRnbnQXJmqRr+BFZBHERDnm/ 5l/5/BxsmZ+Kii6zt3zJeiqeaY37hr6aL/vSyQSdBMmgoh8R+aYMCN1agiSIbh3yadpR qN5bWlk5WmoQH1/f4Yg5oLEKTXWboNShn61rU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=kJhgxvlmCghHEv9Ehj8GKpO738j6LP4ToPu+AnqA8cF8aCb/jOqHpjMrVmt0KiPw4p C0Q+CPxoOXooUROqZYu3+3Rh7Tyo0B70Xj5si4Kjvo0QnuFBkY1GuguoriPNCSIrW2VL 7Z6KudOjKDMp8Wot9s0sFhE0V2hSOt4GU21yk= MIME-Version: 1.0 Received: by 10.224.69.16 with SMTP id x16mr1329934qai.0.1274457563249; Fri, 21 May 2010 08:59:23 -0700 (PDT) Received: by 10.229.190.83 with HTTP; Fri, 21 May 2010 08:59:23 -0700 (PDT) In-Reply-To: <201005211329.o4LDTSuL028647@svn.freebsd.org> References: <201005211329.o4LDTSuL028647@svn.freebsd.org> Date: Fri, 21 May 2010 08:59:23 -0700 Message-ID: From: Garrett Cooper To: Alexander Motin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208375 - in head/sys/dev: ahci ata X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 15:59:24 -0000 On Fri, May 21, 2010 at 6:29 AM, Alexander Motin wrote: > Author: mav > Date: Fri May 21 13:29:28 2010 > New Revision: 208375 > URL: http://svn.freebsd.org/changeset/base/208375 > > Log: > =A0Improve suspend/resume support. Make sure controller is idle on suspen= d > =A0and reset it on resume. Awesome -- this may fix part of the acpi(4) suspend issue on my laptop (a Lenovo T61p) as it currently auto-reboots with 8-STABLE based sources on amd64. Thanks! -Garrett From owner-svn-src-head@FreeBSD.ORG Fri May 21 16:58:53 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 17F621065670; Fri, 21 May 2010 16:58:53 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E1B878FC18; Fri, 21 May 2010 16:58:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LGwqQJ075493; Fri, 21 May 2010 16:58:52 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LGwqDQ075491; Fri, 21 May 2010 16:58:52 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005211658.o4LGwqDQ075491@svn.freebsd.org> From: John Baldwin Date: Fri, 21 May 2010 16:58:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208388 - head/sys/boot/i386/zfsboot X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 16:58:53 -0000 Author: jhb Date: Fri May 21 16:58:52 2010 New Revision: 208388 URL: http://svn.freebsd.org/changeset/base/208388 Log: - Set 'dmadat' earlier so that we properly setup the heap if we fail to locate a high memory area for the heap using the SMAP. - Read the number of hard drive devices from the BIOS instead of hardcoding a limit of 128. Some BIOSes duplicate disk devices once you get beyond the maximum drive number. MFC after: 1 month Modified: head/sys/boot/i386/zfsboot/zfsboot.c Modified: head/sys/boot/i386/zfsboot/zfsboot.c ============================================================================== --- head/sys/boot/i386/zfsboot/zfsboot.c Fri May 21 16:32:14 2010 (r208387) +++ head/sys/boot/i386/zfsboot/zfsboot.c Fri May 21 16:58:52 2010 (r208388) @@ -94,6 +94,7 @@ __FBSDID("$FreeBSD$"); #define V86_CY(x) ((x) & 1) #define V86_ZR(x) ((x) & 0x40) +#define BIOS_NUMDRIVES 0x475 #define DRV_HARD 0x80 #define DRV_MASK 0x7f @@ -467,6 +468,7 @@ getstr(void) static inline void putc(int c) { + v86.ctl = 0; v86.addr = 0x10; v86.eax = 0xe00 | (c & 0xff); v86.ebx = 0x7; @@ -617,6 +619,8 @@ main(void) off_t off; struct dsk *dsk; + dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base); + bios_getmem(); if (high_heap_size > 0) { @@ -627,9 +631,6 @@ main(void) heap_end = (char *) PTOV(bios_basemem); } - dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base); - v86.ctl = V86_FLAGS; - dsk = malloc(sizeof(struct dsk)); dsk->drive = *(uint8_t *)PTOV(ARGS); dsk->type = dsk->drive & DRV_HARD ? TYPE_AD : TYPE_FD; @@ -666,7 +667,7 @@ main(void) * will find any other available pools and it may fill in missing * vdevs for the boot pool. */ - for (i = 0; i < 128; i++) { + for (i = 0; i < *(unsigned char *)PTOV(BIOS_NUMDRIVES); i++) { if ((i | DRV_HARD) == *(uint8_t *)PTOV(ARGS)) continue; @@ -1157,6 +1158,7 @@ getc(int fn) * when no such key is pressed in reality. As far as I can tell, * this only happens shortly after a reboot. */ + v86.ctl = V86_FLAGS; v86.addr = 0x16; v86.eax = fn << 8; v86int(); From owner-svn-src-head@FreeBSD.ORG Fri May 21 17:10:53 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 914A51065677; Fri, 21 May 2010 17:10:53 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7F8938FC1E; Fri, 21 May 2010 17:10:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LHArlb078172; Fri, 21 May 2010 17:10:53 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LHArGI078167; Fri, 21 May 2010 17:10:53 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201005211710.o4LHArGI078167@svn.freebsd.org> From: Sean Bruno Date: Fri, 21 May 2010 17:10:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208389 - in head: usr.bin/vmstat usr.sbin/iostat X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 17:10:53 -0000 Author: sbruno Date: Fri May 21 17:10:52 2010 New Revision: 208389 URL: http://svn.freebsd.org/changeset/base/208389 Log: Allow sub-second interval timings for iostat and vmstat. e.g. vmstat -w.5 iostat -w.5 Reviewed by: jhb Approved by: scottl (mentor) Obtained from: Yahoo Inc. MFC after: 2 weeks Modified: head/usr.bin/vmstat/vmstat.8 head/usr.bin/vmstat/vmstat.c head/usr.sbin/iostat/iostat.8 head/usr.sbin/iostat/iostat.c Modified: head/usr.bin/vmstat/vmstat.8 ============================================================================== --- head/usr.bin/vmstat/vmstat.8 Fri May 21 16:58:52 2010 (r208388) +++ head/usr.bin/vmstat/vmstat.8 Fri May 21 17:10:52 2010 (r208389) @@ -209,6 +209,9 @@ seconds between each display. If no repeat .Ar wait interval is specified, the default is 1 second. +The +.Nm +command will accept and honor a non-integer number of seconds. .It Fl z Report on memory used by the kernel zone allocator, .Xr uma 9 , Modified: head/usr.bin/vmstat/vmstat.c ============================================================================== --- head/usr.bin/vmstat/vmstat.c Fri May 21 16:58:52 2010 (r208388) +++ head/usr.bin/vmstat/vmstat.c Fri May 21 17:10:52 2010 (r208389) @@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -181,6 +182,7 @@ main(int argc, char *argv[]) { int c, todo; unsigned int interval; + float f; int reps; char *memf, *nlistf; char errbuf[_POSIX2_LINE_MAX]; @@ -243,7 +245,9 @@ main(int argc, char *argv[]) #endif break; case 'w': - interval = atoi(optarg); + /* Convert to milliseconds. */ + f = atof(optarg); + interval = f * 1000; break; case 'z': todo |= ZMEMSTAT; @@ -298,7 +302,8 @@ main(int argc, char *argv[]) #define BACKWARD_COMPATIBILITY #ifdef BACKWARD_COMPATIBILITY if (*argv) { - interval = atoi(*argv); + f = atof(*argv); + interval = f * 1000; if (*++argv) reps = atoi(*argv); } @@ -308,7 +313,7 @@ main(int argc, char *argv[]) if (!reps) reps = -1; } else if (reps) - interval = 1; + interval = 1 * 1000; if (todo & FORKSTAT) doforkst(); @@ -652,9 +657,11 @@ dovmstat(unsigned int interval, int reps size_t size; int ncpus, maxid; u_long cpumask; + int rate_adj; uptime = getuptime(); halfuptime = uptime / 2; + rate_adj = 1; /* * If the user stops the program (control-Z) and then resumes it, @@ -766,7 +773,7 @@ dovmstat(unsigned int interval, int reps (void)printf("%2d %1d %1d", total.t_rq - 1, total.t_dw + total.t_pw, total.t_sw); #define vmstat_pgtok(a) ((a) * (sum.v_page_size >> 10)) -#define rate(x) (((x) + halfuptime) / uptime) /* round */ +#define rate(x) (((x) * rate_adj + halfuptime) / uptime) /* round */ if (hflag) { printf(" "); prthuman(total.t_avm * (u_int64_t)sum.v_page_size, 7); @@ -806,15 +813,16 @@ dovmstat(unsigned int interval, int reps break; osum = sum; uptime = interval; + rate_adj = 1000; /* * We round upward to avoid losing low-frequency events - * (i.e., >= 1 per interval but < 1 per second). + * (i.e., >= 1 per interval but < 1 per millisecond). */ if (interval != 1) halfuptime = (uptime + 1) / 2; else halfuptime = 0; - (void)sleep(interval); + (void)usleep(interval * 1000); } } Modified: head/usr.sbin/iostat/iostat.8 ============================================================================== --- head/usr.sbin/iostat/iostat.8 Fri May 21 16:58:52 2010 (r208388) +++ head/usr.sbin/iostat/iostat.8 Fri May 21 17:10:52 2010 (r208389) @@ -239,6 +239,9 @@ seconds between each display. If no repeat .Ar count is specified, the default is infinity. +The +.Nm +command will accept and honor a non-integer number of seconds. .It Fl x Show extended disk statistics. Each disk is displayed on a line of its own with all available statistics. Modified: head/usr.sbin/iostat/iostat.c ============================================================================== --- head/usr.sbin/iostat/iostat.c Fri May 21 16:58:52 2010 (r208388) +++ head/usr.sbin/iostat/iostat.c Fri May 21 17:10:52 2010 (r208389) @@ -184,6 +184,7 @@ main(int argc, char **argv) long select_generation; char **specified_devices; devstat_select_mode select_mode; + float f; int havelast = 0; matches = NULL; @@ -239,9 +240,10 @@ main(int argc, char **argv) break; case 'w': wflag++; - waittime = atoi(optarg); + f = atof(optarg); + waittime = f * 1000; if (waittime < 1) - errx(1, "wait time is < 1"); + errx(1, "wait time is < 1ms"); break; case 'x': xflag++; @@ -378,12 +380,13 @@ main(int argc, char **argv) * Look for the traditional wait time and count arguments. */ if (*argv) { - waittime = atoi(*argv); + f = atof(*argv); + waittime = f * 1000; /* Let the user know he goofed, but keep going anyway */ if (wflag != 0) warnx("discarding previous wait interval, using" - " %d instead", waittime); + " %g instead", waittime / 1000.0); wflag++; if (*++argv) { @@ -401,7 +404,7 @@ main(int argc, char **argv) * to an interval of 1 second. */ if ((wflag == 0) && (cflag > 0)) - waittime = 1; + waittime = 1 * 1000; /* * If the user specified a wait time, but not a count, we want to @@ -602,7 +605,7 @@ main(int argc, char **argv) if (count >= 0 && --count <= 0) break; - sleep(waittime); + usleep(waittime * 1000); havelast = 1; } From owner-svn-src-head@FreeBSD.ORG Fri May 21 17:14:37 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 429D11065672; Fri, 21 May 2010 17:14:37 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3193E8FC23; Fri, 21 May 2010 17:14:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LHEaH4079037; Fri, 21 May 2010 17:14:36 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LHEakp079034; Fri, 21 May 2010 17:14:36 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005211714.o4LHEakp079034@svn.freebsd.org> From: John Baldwin Date: Fri, 21 May 2010 17:14:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208390 - in head/sys: kern sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 17:14:37 -0000 Author: jhb Date: Fri May 21 17:14:36 2010 New Revision: 208390 URL: http://svn.freebsd.org/changeset/base/208390 Log: Allow a const char * to be passed as the process name to kproc_kthread_add() without generating a warning. MFC after: 1 month Modified: head/sys/kern/kern_kthread.c head/sys/sys/kthread.h Modified: head/sys/kern/kern_kthread.c ============================================================================== --- head/sys/kern/kern_kthread.c Fri May 21 17:10:52 2010 (r208389) +++ head/sys/kern/kern_kthread.c Fri May 21 17:14:36 2010 (r208390) @@ -418,7 +418,7 @@ kthread_suspend_check() int kproc_kthread_add(void (*func)(void *), void *arg, struct proc **procptr, struct thread **tdptr, - int flags, int pages, char * procname, const char *fmt, ...) + int flags, int pages, const char *procname, const char *fmt, ...) { int error; va_list ap; Modified: head/sys/sys/kthread.h ============================================================================== --- head/sys/sys/kthread.h Fri May 21 17:10:52 2010 (r208389) +++ head/sys/sys/kthread.h Fri May 21 17:14:36 2010 (r208390) @@ -63,7 +63,7 @@ int kproc_kthread_add(void (*)(void struct proc **, struct thread **, int flags, int pages, - char * procname, const char *, ...) __printflike(8, 9); + const char *procname, const char *, ...) __printflike(8, 9); int kthread_add(void (*)(void *), void *, struct proc *, struct thread **, From owner-svn-src-head@FreeBSD.ORG Fri May 21 17:15:56 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EDB59106566C; Fri, 21 May 2010 17:15:56 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD6A98FC14; Fri, 21 May 2010 17:15:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LHFuHZ079388; Fri, 21 May 2010 17:15:56 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LHFuP5079385; Fri, 21 May 2010 17:15:56 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005211715.o4LHFuP5079385@svn.freebsd.org> From: John Baldwin Date: Fri, 21 May 2010 17:15:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208391 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 17:15:57 -0000 Author: jhb Date: Fri May 21 17:15:56 2010 New Revision: 208391 URL: http://svn.freebsd.org/changeset/base/208391 Log: Assert that the thread passed to sched_bind() and sched_unbind() is curthread as those routines are only supported for curthread currently. MFC after: 1 month Modified: head/sys/kern/sched_4bsd.c head/sys/kern/sched_ule.c Modified: head/sys/kern/sched_4bsd.c ============================================================================== --- head/sys/kern/sched_4bsd.c Fri May 21 17:14:36 2010 (r208390) +++ head/sys/kern/sched_4bsd.c Fri May 21 17:15:56 2010 (r208391) @@ -1462,9 +1462,8 @@ sched_bind(struct thread *td, int cpu) { struct td_sched *ts; - THREAD_LOCK_ASSERT(td, MA_OWNED); - KASSERT(TD_IS_RUNNING(td), - ("sched_bind: cannot bind non-running thread")); + THREAD_LOCK_ASSERT(td, MA_OWNED|MA_NOTRECURSED); + KASSERT(td == curthread, ("sched_bind: can only bind curthread")); ts = td->td_sched; @@ -1482,6 +1481,7 @@ void sched_unbind(struct thread* td) { THREAD_LOCK_ASSERT(td, MA_OWNED); + KASSERT(td == curthread, ("sched_unbind: can only bind curthread")); td->td_flags &= ~TDF_BOUND; } Modified: head/sys/kern/sched_ule.c ============================================================================== --- head/sys/kern/sched_ule.c Fri May 21 17:14:36 2010 (r208390) +++ head/sys/kern/sched_ule.c Fri May 21 17:15:56 2010 (r208391) @@ -2427,6 +2427,7 @@ sched_bind(struct thread *td, int cpu) struct td_sched *ts; THREAD_LOCK_ASSERT(td, MA_OWNED|MA_NOTRECURSED); + KASSERT(td == curthread, ("sched_bind: can only bind curthread")); ts = td->td_sched; if (ts->ts_flags & TSF_BOUND) sched_unbind(td); @@ -2448,6 +2449,7 @@ sched_unbind(struct thread *td) struct td_sched *ts; THREAD_LOCK_ASSERT(td, MA_OWNED); + KASSERT(td == curthread, ("sched_unbind: can only bind curthread")); ts = td->td_sched; if ((ts->ts_flags & TSF_BOUND) == 0) return; From owner-svn-src-head@FreeBSD.ORG Fri May 21 17:17:56 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9DF0B1065679; Fri, 21 May 2010 17:17:56 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8C8168FC0A; Fri, 21 May 2010 17:17:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LHHurB079885; Fri, 21 May 2010 17:17:56 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LHHunx079880; Fri, 21 May 2010 17:17:56 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005211717.o4LHHunx079880@svn.freebsd.org> From: John Baldwin Date: Fri, 21 May 2010 17:17:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208392 - in head/sys: amd64/amd64 ia64/ia64 kern mips/mips X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 17:17:56 -0000 Author: jhb Date: Fri May 21 17:17:56 2010 New Revision: 208392 URL: http://svn.freebsd.org/changeset/base/208392 Log: - Adjust the whitespace for the lines that output fields in 'show pcpu' in DDB so that all the fields line up. - Print out the tid of the per-CPU idlethread instead of the pid since the idle process is now shared across all idle threads. MFC after: 1 month Modified: head/sys/amd64/amd64/db_interface.c head/sys/ia64/ia64/db_machdep.c head/sys/kern/subr_pcpu.c head/sys/mips/mips/db_trace.c Modified: head/sys/amd64/amd64/db_interface.c ============================================================================== --- head/sys/amd64/amd64/db_interface.c Fri May 21 17:15:56 2010 (r208391) +++ head/sys/amd64/amd64/db_interface.c Fri May 21 17:17:56 2010 (r208392) @@ -139,11 +139,11 @@ void db_show_mdpcpu(struct pcpu *pc) { - db_printf("curpmap = %p\n", pc->pc_curpmap); - db_printf("tssp = %p\n", pc->pc_tssp); - db_printf("commontssp = %p\n", pc->pc_commontssp); - db_printf("rsp0 = 0x%lx\n", pc->pc_rsp0); - db_printf("gs32p = %p\n", pc->pc_gs32p); - db_printf("ldt = %p\n", pc->pc_ldt); - db_printf("tss = %p\n", pc->pc_tss); + db_printf("curpmap = %p\n", pc->pc_curpmap); + db_printf("tssp = %p\n", pc->pc_tssp); + db_printf("commontssp = %p\n", pc->pc_commontssp); + db_printf("rsp0 = 0x%lx\n", pc->pc_rsp0); + db_printf("gs32p = %p\n", pc->pc_gs32p); + db_printf("ldt = %p\n", pc->pc_ldt); + db_printf("tss = %p\n", pc->pc_tss); } Modified: head/sys/ia64/ia64/db_machdep.c ============================================================================== --- head/sys/ia64/ia64/db_machdep.c Fri May 21 17:15:56 2010 (r208391) +++ head/sys/ia64/ia64/db_machdep.c Fri May 21 17:17:56 2010 (r208392) @@ -579,11 +579,11 @@ db_show_mdpcpu(struct pcpu *pc) { struct pcpu_md *md = &pc->pc_md; - db_printf("MD: vhpt = %#lx\n", md->vhpt); - db_printf("MD: lid = %#lx\n", md->lid); - db_printf("MD: clock = %#lx/%#lx\n", md->clock, md->clockadj); - db_printf("MD: stats = %p\n", &md->stats); - db_printf("MD: pmap = %p\n", md->current_pmap); + db_printf("MD: vhpt = %#lx\n", md->vhpt); + db_printf("MD: lid = %#lx\n", md->lid); + db_printf("MD: clock = %#lx/%#lx\n", md->clock, md->clockadj); + db_printf("MD: stats = %p\n", &md->stats); + db_printf("MD: pmap = %p\n", md->current_pmap); } void Modified: head/sys/kern/subr_pcpu.c ============================================================================== --- head/sys/kern/subr_pcpu.c Fri May 21 17:15:56 2010 (r208391) +++ head/sys/kern/subr_pcpu.c Fri May 21 17:17:56 2010 (r208392) @@ -332,7 +332,7 @@ show_pcpu(struct pcpu *pc) struct thread *td; db_printf("cpuid = %d\n", pc->pc_cpuid); - db_printf("dynamic pcpu = %p\n", (void *)pc->pc_dynamic); + db_printf("dynamic pcpu = %p\n", (void *)pc->pc_dynamic); db_printf("curthread = "); td = pc->pc_curthread; if (td != NULL) @@ -351,12 +351,11 @@ show_pcpu(struct pcpu *pc) db_printf("idlethread = "); td = pc->pc_idlethread; if (td != NULL) - db_printf("%p: pid %d \"%s\"\n", td, td->td_proc->p_pid, - td->td_name); + db_printf("%p: tid %d \"%s\"\n", td, td->td_tid, td->td_name); else db_printf("none\n"); db_show_mdpcpu(pc); - + #ifdef VIMAGE db_printf("curvnet = %p\n", pc->pc_curthread->td_vnet); #endif Modified: head/sys/mips/mips/db_trace.c ============================================================================== --- head/sys/mips/mips/db_trace.c Fri May 21 17:15:56 2010 (r208391) +++ head/sys/mips/mips/db_trace.c Fri May 21 17:17:56 2010 (r208392) @@ -432,8 +432,8 @@ void db_show_mdpcpu(struct pcpu *pc) { - db_printf("ipis = 0x%x\n", pc->pc_pending_ipis); + db_printf("ipis = 0x%x\n", pc->pc_pending_ipis); db_printf("next ASID = %d\n", pc->pc_next_asid); - db_printf("GENID = %d\n", pc->pc_asid_generation); + db_printf("GENID = %d\n", pc->pc_asid_generation); return; } From owner-svn-src-head@FreeBSD.ORG Fri May 21 17:26:17 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 02253106564A; Fri, 21 May 2010 17:26:17 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E4F078FC15; Fri, 21 May 2010 17:26:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LHQGco081730; Fri, 21 May 2010 17:26:16 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LHQGMn081729; Fri, 21 May 2010 17:26:16 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005211726.o4LHQGMn081729@svn.freebsd.org> From: Alexander Motin Date: Fri, 21 May 2010 17:26:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208393 - in head/sys/dev: mvs siis X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 17:26:17 -0000 Author: mav Date: Fri May 21 17:26:16 2010 New Revision: 208393 URL: http://svn.freebsd.org/changeset/base/208393 Log: Improve suspend/resume support. Make sure controller is idle on suspend and reset it on resume. Modified: head/sys/dev/mvs/mvs.c head/sys/dev/siis/siis.c Modified: head/sys/dev/mvs/mvs.c ============================================================================== --- head/sys/dev/mvs/mvs.c Fri May 21 17:17:56 2010 (r208392) +++ head/sys/dev/mvs/mvs.c Fri May 21 17:26:16 2010 (r208393) @@ -51,6 +51,8 @@ __FBSDID("$FreeBSD$"); #include /* local prototypes */ +static int mvs_ch_init(device_t dev); +static int mvs_ch_deinit(device_t dev); static int mvs_ch_suspend(device_t dev); static int mvs_ch_resume(device_t dev); static void mvs_dmainit(device_t dev); @@ -133,7 +135,7 @@ mvs_ch_attach(device_t dev) return (ENXIO); mvs_dmainit(dev); mvs_slotsalloc(dev); - mvs_ch_resume(dev); + mvs_ch_init(dev); mtx_lock(&ch->mtx); rid = ATA_IRQ_RID; if (!(ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, @@ -215,7 +217,7 @@ mvs_ch_detach(device_t dev) bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); - mvs_ch_suspend(dev); + mvs_ch_deinit(dev); mvs_slotsfree(dev); mvs_dmafini(dev); @@ -225,19 +227,7 @@ mvs_ch_detach(device_t dev) } static int -mvs_ch_suspend(device_t dev) -{ - struct mvs_channel *ch = device_get_softc(dev); - - /* Stop EDMA */ - mvs_set_edma_mode(dev, MVS_EDMA_OFF); - /* Disable port interrupts. */ - ATA_OUTL(ch->r_mem, EDMA_IEM, 0); - return (0); -} - -static int -mvs_ch_resume(device_t dev) +mvs_ch_init(device_t dev) { struct mvs_channel *ch = device_get_softc(dev); uint32_t reg; @@ -264,6 +254,45 @@ mvs_ch_resume(device_t dev) return (0); } +static int +mvs_ch_deinit(device_t dev) +{ + struct mvs_channel *ch = device_get_softc(dev); + + /* Stop EDMA */ + mvs_set_edma_mode(dev, MVS_EDMA_OFF); + /* Disable port interrupts. */ + ATA_OUTL(ch->r_mem, EDMA_IEM, 0); + return (0); +} + +static int +mvs_ch_suspend(device_t dev) +{ + struct mvs_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->oslots) + msleep(ch, &ch->mtx, PRIBIO, "mvssusp", hz/100); + mvs_ch_deinit(dev); + mtx_unlock(&ch->mtx); + return (0); +} + +static int +mvs_ch_resume(device_t dev) +{ + struct mvs_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + mvs_ch_init(dev); + mvs_reset(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->mtx); + return (0); +} + struct mvs_dc_cb_args { bus_addr_t maddr; int error; Modified: head/sys/dev/siis/siis.c ============================================================================== --- head/sys/dev/siis/siis.c Fri May 21 17:17:56 2010 (r208392) +++ head/sys/dev/siis/siis.c Fri May 21 17:26:16 2010 (r208393) @@ -59,6 +59,8 @@ static int siis_setup_interrupt(device_t static void siis_intr(void *data); static int siis_suspend(device_t dev); static int siis_resume(device_t dev); +static int siis_ch_init(device_t dev); +static int siis_ch_deinit(device_t dev); static int siis_ch_suspend(device_t dev); static int siis_ch_resume(device_t dev); static void siis_ch_intr_locked(void *data); @@ -458,7 +460,7 @@ siis_ch_attach(device_t dev) return (ENXIO); siis_dmainit(dev); siis_slotsalloc(dev); - siis_ch_resume(dev); + siis_ch_init(dev); mtx_lock(&ch->mtx); rid = ATA_IRQ_RID; if (!(ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, @@ -528,7 +530,7 @@ siis_ch_detach(device_t dev) bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); - siis_ch_suspend(dev); + siis_ch_deinit(dev); siis_slotsfree(dev); siis_dmafini(dev); @@ -538,7 +540,24 @@ siis_ch_detach(device_t dev) } static int -siis_ch_suspend(device_t dev) +siis_ch_init(device_t dev) +{ + struct siis_channel *ch = device_get_softc(dev); + + /* Get port out of reset state. */ + ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PORT_RESET); + ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_32BIT); + if (ch->pm_present) + ATA_OUTL(ch->r_mem, SIIS_P_CTLSET, SIIS_P_CTL_PME); + else + ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PME); + /* Enable port interrupts */ + ATA_OUTL(ch->r_mem, SIIS_P_IESET, SIIS_P_IX_ENABLED); + return (0); +} + +static int +siis_ch_deinit(device_t dev) { struct siis_channel *ch = device_get_softc(dev); @@ -548,19 +567,29 @@ siis_ch_suspend(device_t dev) } static int +siis_ch_suspend(device_t dev) +{ + struct siis_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->oslots) + msleep(ch, &ch->mtx, PRIBIO, "siissusp", hz/100); + siis_ch_deinit(dev); + mtx_unlock(&ch->mtx); + return (0); +} + +static int siis_ch_resume(device_t dev) { struct siis_channel *ch = device_get_softc(dev); - /* Get port out of reset state. */ - ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PORT_RESET); - ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_32BIT); - if (ch->pm_present) - ATA_OUTL(ch->r_mem, SIIS_P_CTLSET, SIIS_P_CTL_PME); - else - ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PME); - /* Enable port interrupts */ - ATA_OUTL(ch->r_mem, SIIS_P_IESET, SIIS_P_IX_ENABLED); + mtx_lock(&ch->mtx); + siis_ch_init(dev); + siis_reset(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->mtx); return (0); } From owner-svn-src-head@FreeBSD.ORG Fri May 21 18:03:35 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 604361065673; Fri, 21 May 2010 18:03:35 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 30FC08FC16; Fri, 21 May 2010 18:03:35 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id BF95A46B1A; Fri, 21 May 2010 14:03:34 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPA id CC7F08A01F; Fri, 21 May 2010 14:03:33 -0400 (EDT) From: John Baldwin To: Sean Bruno Date: Fri, 21 May 2010 13:54:09 -0400 User-Agent: KMail/1.12.1 (FreeBSD/7.3-CBSD-20100217; KDE/4.3.1; amd64; ; ) References: <201005211710.o4LHArGI078167@svn.freebsd.org> In-Reply-To: <201005211710.o4LHArGI078167@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201005211354.09044.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Fri, 21 May 2010 14:03:33 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.4 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208389 - in head: usr.bin/vmstat usr.sbin/iostat X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 18:03:35 -0000 On Friday 21 May 2010 1:10:53 pm Sean Bruno wrote: > Author: sbruno > Date: Fri May 21 17:10:52 2010 > New Revision: 208389 > URL: http://svn.freebsd.org/changeset/base/208389 > > Log: > Allow sub-second interval timings for iostat and vmstat. > e.g. > vmstat -w.5 > iostat -w.5 It should perhaps be noted that the intervals are only at a granularity of a millisecond, and of course it is subject to the frequency of clock interrupts via 'hz'. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Fri May 21 19:08:24 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F1136106564A; Fri, 21 May 2010 19:08:24 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DF73C8FC14; Fri, 21 May 2010 19:08:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LJ8Odf008589; Fri, 21 May 2010 19:08:24 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LJ8OFh008587; Fri, 21 May 2010 19:08:24 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201005211908.o4LJ8OFh008587@svn.freebsd.org> From: "Jayachandran C." Date: Fri, 21 May 2010 19:08:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208394 - head/share/misc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 19:08:25 -0000 Author: jchandra Date: Fri May 21 19:08:24 2010 New Revision: 208394 URL: http://svn.freebsd.org/changeset/base/208394 Log: Fixup order of entries (including mine), reported by yar@freebsd.org Approved by: rrs (mentor) Modified: head/share/misc/committers-src.dot Modified: head/share/misc/committers-src.dot ============================================================================== --- head/share/misc/committers-src.dot Fri May 21 17:26:16 2010 (r208393) +++ head/share/misc/committers-src.dot Fri May 21 19:08:24 2010 (r208394) @@ -111,12 +111,12 @@ ivoras [label="Ivan Voras\nivoras@FreeBS jake [label="Jake Burkholder\njake@FreeBSD.org\n2000/05/16"] jamie [label="Jamie Gritton\njamie@FreeBSD.org\n2009/01/28"] jayanth [label="Jayanth Vijayaraghavan\njayanth@FreeBSD.org\n2000/05/08"] -jh [label="Jaakko Heinonen\njh@FreeBSD.org\n2009/10/02"] -jilles [label="Jilles Tjoelker\njilles@FreeBSD.org\n2009/05/22"] -jinmei [label="JINMEI Tatuya\njinmei@FreeBSD.org\n2007/03/17"] jchandra [label="Jayachandran C.\njchandra@FreeBSD.org\n2010/05/19"] jdp [label="John Polstra\njdp@FreeBSD.org\n????/??/??"] +jh [label="Jaakko Heinonen\njh@FreeBSD.org\n2009/10/02"] jhb [label="John Baldwin\njhb@FreeBSD.org\n1999/08/23"] +jilles [label="Jilles Tjoelker\njilles@FreeBSD.org\n2009/05/22"] +jinmei [label="JINMEI Tatuya\njinmei@FreeBSD.org\n2007/03/17"] jkh [label="Jordan K. Hubbard\njkh@FreeBSD.org\n1993/06/12"] jkim [label="Jung-uk Kim\njkim@FreeBSD.org\n2005/07/06"] jkoshy [label="A. Joseph Koshy\njkoshy@FreeBSD.org\n1998/05/13"] From owner-svn-src-head@FreeBSD.ORG Fri May 21 20:46:03 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A7FB106564A; Fri, 21 May 2010 20:46:02 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 78F278FC12; Fri, 21 May 2010 20:46:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LKk2Ww032259; Fri, 21 May 2010 20:46:02 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4LKk2Sc032257; Fri, 21 May 2010 20:46:02 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005212046.o4LKk2Sc032257@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 21 May 2010 20:46:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208405 - head/sys/powerpc/aim X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 20:46:03 -0000 Author: nwhitehorn Date: Fri May 21 20:46:01 2010 New Revision: 208405 URL: http://svn.freebsd.org/changeset/base/208405 Log: Now that single-threaded access to firmware is enforced by IPI_RENDEZVOUS, the ofw mutex is irrelevant. Modified: head/sys/powerpc/aim/ofw_machdep.c Modified: head/sys/powerpc/aim/ofw_machdep.c ============================================================================== --- head/sys/powerpc/aim/ofw_machdep.c Fri May 21 19:47:52 2010 (r208404) +++ head/sys/powerpc/aim/ofw_machdep.c Fri May 21 20:46:01 2010 (r208405) @@ -64,8 +64,6 @@ __FBSDID("$FreeBSD$"); static struct mem_region OFmem[OFMEM_REGIONS + 1], OFavail[OFMEM_REGIONS + 3]; static struct mem_region OFfree[OFMEM_REGIONS + 3]; -static struct mtx ofw_mutex; - struct mem_region64 { vm_offset_t mr_start_hi; vm_offset_t mr_start_lo; @@ -285,8 +283,6 @@ OF_bootstrap() { boolean_t status = FALSE; - mtx_init(&ofw_mutex, "open firmware", NULL, MTX_DEF); - if (ofwcall != NULL) { if (ofw_real_mode) status = OF_install(OFW_STD_REAL, 0); @@ -356,12 +352,6 @@ openfirmware_core(void *args) u_int srsave[16]; u_int i; - /* - * NOTE: This MUST be called with the OF mutex held. Because the CPU - * holding the lock is not necessarily the CPU running this function, - * we can't put an assert here. - */ - __asm __volatile( "\t" "sync\n\t" "mfmsr %0\n\t" @@ -459,8 +449,6 @@ openfirmware(void *args) if (pmap_bootstrapped && ofw_real_mode) args = (void *)pmap_kextract((vm_offset_t)args); - mtx_lock(&ofw_mutex); - #ifdef SMP rv_args.args = args; rv_args.in_progress = 1; @@ -471,8 +459,6 @@ openfirmware(void *args) result = openfirmware_core(args); #endif - mtx_unlock(&ofw_mutex); - return (result); } From owner-svn-src-head@FreeBSD.ORG Fri May 21 21:07:19 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C06BA106564A; Fri, 21 May 2010 21:07:19 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout3.yahoo.com (mrout3.yahoo.com [216.145.54.173]) by mx1.freebsd.org (Postfix) with ESMTP id A43D48FC0A; Fri, 21 May 2010 21:07:19 +0000 (UTC) Received: from [127.0.0.1] (proxy10.corp.re1.yahoo.com [69.147.105.206]) by mrout3.yahoo.com (8.13.6/8.13.6/y.out) with ESMTP id o4LKuUZP003597; Fri, 21 May 2010 13:56:31 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; s=serpent; d=yahoo-inc.com; c=nofws; q=dns; h=subject:from:to:cc:in-reply-to:references:content-type:date: message-id:mime-version:x-mailer:content-transfer-encoding; b=WFBwn9mHrm77WQ9v86er2t2DLJl1L4J4z3Xtm26FXMdWJEox92+QfYq8B1ZtBDtt From: Sean Bruno To: John Baldwin In-Reply-To: <201005211354.09044.jhb@freebsd.org> References: <201005211710.o4LHArGI078167@svn.freebsd.org> <201005211354.09044.jhb@freebsd.org> Content-Type: text/plain; charset="UTF-8" Date: Fri, 21 May 2010 13:56:30 -0700 Message-ID: <1274475390.2574.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 (2.28.3-1.fc12) Content-Transfer-Encoding: 7bit Cc: "svn-src-head@FreeBSD.org" , Sean Bruno , "src-committers@FreeBSD.org" , "svn-src-all@FreeBSD.org" Subject: Re: svn commit: r208389 - in head: usr.bin/vmstat usr.sbin/iostat X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 21:07:19 -0000 On Fri, 2010-05-21 at 10:54 -0700, John Baldwin wrote: > On Friday 21 May 2010 1:10:53 pm Sean Bruno wrote: > > Author: sbruno > > Date: Fri May 21 17:10:52 2010 > > New Revision: 208389 > > URL: http://svn.freebsd.org/changeset/base/208389 > > > > Log: > > Allow sub-second interval timings for iostat and vmstat. > > e.g. > > vmstat -w.5 > > iostat -w.5 > > It should perhaps be noted that the intervals are only at a granularity of a > millisecond, and of course it is subject to the frequency of clock interrupts > via 'hz'. > I'll update the comments in the man page to indicate this information today. sean From owner-svn-src-head@FreeBSD.ORG Sat May 22 00:43:15 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E3E8106564A; Sat, 22 May 2010 00:43:15 +0000 (UTC) (envelope-from randi@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F1D558FC08; Sat, 22 May 2010 00:43:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4M0hEtQ090346; Sat, 22 May 2010 00:43:14 GMT (envelope-from randi@svn.freebsd.org) Received: (from randi@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4M0hELT090344; Sat, 22 May 2010 00:43:14 GMT (envelope-from randi@svn.freebsd.org) Message-Id: <201005220043.o4M0hELT090344@svn.freebsd.org> From: Randi Harper Date: Sat, 22 May 2010 00:43:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208407 - head/usr.sbin/sysinstall X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 00:43:15 -0000 Author: randi Date: Sat May 22 00:43:14 2010 New Revision: 208407 URL: http://svn.freebsd.org/changeset/base/208407 Log: Flush all routes before adding the default route in order to allow sysinstall to cleanly re-initialize the network. PR: bin/145553 Submitted by: gcooper Approved by: cperciva (mentor) MFC after: 3 days Modified: head/usr.sbin/sysinstall/network.c Modified: head/usr.sbin/sysinstall/network.c ============================================================================== --- head/usr.sbin/sysinstall/network.c Fri May 21 23:08:53 2010 (r208406) +++ head/usr.sbin/sysinstall/network.c Sat May 22 00:43:14 2010 (r208407) @@ -141,12 +141,22 @@ mediaInitNetwork(Device *dev) } rp = variable_get(VAR_GATEWAY); if (!rp || *rp == '0') { - msgConfirm("No gateway has been set. You may be unable to access hosts\n" + msgConfirm("No gateway has been set. You will be unable to access hosts\n" "not on your local network"); } else { + /* + * Explicitly flush all routes to get back to a known sane + * state. We don't need to check this exit code because if + * anything fails it will show up in the route add below. + */ + system("route -n flush"); msgDebug("Adding default route to %s.\n", rp); - vsystem("route -n add default %s", rp); + if (vsystem("route -n add default %s", rp) != 0) { + msgConfirm("Failed to add a default route; please check " + "your network configuration"); + return FALSE; + } } } else { msgDebug("A DHCP interface. Should already be up.\n"); From owner-svn-src-head@FreeBSD.ORG Sat May 22 03:19:30 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2552106564A; Sat, 22 May 2010 03:19:30 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9BF708FC08; Sat, 22 May 2010 03:19:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4M3JU8m030760; Sat, 22 May 2010 03:19:30 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4M3JUGY030758; Sat, 22 May 2010 03:19:30 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005220319.o4M3JUGY030758@svn.freebsd.org> From: Alexander Motin Date: Sat, 22 May 2010 03:19:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208409 - head/sys/dev/pci X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 03:19:31 -0000 Author: mav Date: Sat May 22 03:19:30 2010 New Revision: 208409 URL: http://svn.freebsd.org/changeset/base/208409 Log: Honor hw.pci.do_power_nodriver on resume. Power-down devices without driver attached. Modified: head/sys/dev/pci/pci.c Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Sat May 22 01:01:59 2010 (r208408) +++ head/sys/dev/pci/pci.c Sat May 22 03:19:30 2010 (r208409) @@ -2988,6 +2988,8 @@ pci_resume(device_t dev) /* Now the device is powered up, restore its config space. */ pci_cfg_restore(child, dinfo); + if (!device_is_attached(child)) + pci_cfg_save(child, dinfo, 1); } free(devlist, M_TEMP); return (bus_generic_resume(dev)); From owner-svn-src-head@FreeBSD.ORG Sat May 22 07:32:48 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AF45106566C; Sat, 22 May 2010 07:32:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 22D9B8FC12; Sat, 22 May 2010 07:32:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4M7WlF6086190; Sat, 22 May 2010 07:32:47 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4M7WlVa086183; Sat, 22 May 2010 07:32:47 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005220732.o4M7WlVa086183@svn.freebsd.org> From: Alexander Motin Date: Sat, 22 May 2010 07:32:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208410 - in head/sys/dev: ahci ata mvs siis X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 07:32:48 -0000 Author: mav Date: Sat May 22 07:32:47 2010 New Revision: 208410 URL: http://svn.freebsd.org/changeset/base/208410 Log: Report ATA/SATA channel number to NewBus at location string. Modified: head/sys/dev/ahci/ahci.c head/sys/dev/ata/ata-pci.c head/sys/dev/ata/ata-pci.h head/sys/dev/mvs/mvs_pci.c head/sys/dev/mvs/mvs_soc.c head/sys/dev/siis/siis.c Modified: head/sys/dev/ahci/ahci.c ============================================================================== --- head/sys/dev/ahci/ahci.c Sat May 22 03:19:30 2010 (r208409) +++ head/sys/dev/ahci/ahci.c Sat May 22 07:32:47 2010 (r208410) @@ -778,6 +778,16 @@ ahci_print_child(device_t dev, device_t return (retval); } +static int +ahci_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + devclass_t ahci_devclass; static device_method_t ahci_methods[] = { DEVMETHOD(device_probe, ahci_probe), @@ -790,6 +800,7 @@ static device_method_t ahci_methods[] = DEVMETHOD(bus_release_resource, ahci_release_resource), DEVMETHOD(bus_setup_intr, ahci_setup_intr), DEVMETHOD(bus_teardown_intr,ahci_teardown_intr), + DEVMETHOD(bus_child_location_str, ahci_child_location_str), { 0, 0 } }; static driver_t ahci_driver = { @@ -809,6 +820,7 @@ static device_method_t ahci_ata_methods[ DEVMETHOD(bus_release_resource, ahci_release_resource), DEVMETHOD(bus_setup_intr, ahci_setup_intr), DEVMETHOD(bus_teardown_intr,ahci_teardown_intr), + DEVMETHOD(bus_child_location_str, ahci_child_location_str), { 0, 0 } }; static driver_t ahci_ata_driver = { Modified: head/sys/dev/ata/ata-pci.c ============================================================================== --- head/sys/dev/ata/ata-pci.c Sat May 22 03:19:30 2010 (r208409) +++ head/sys/dev/ata/ata-pci.c Sat May 22 07:32:47 2010 (r208410) @@ -544,6 +544,16 @@ ata_pci_dmafini(device_t dev) ata_dmafini(dev); } +int +ata_pci_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + static device_method_t ata_pci_methods[] = { /* device interface */ DEVMETHOD(device_probe, ata_pci_probe), @@ -564,6 +574,7 @@ static device_method_t ata_pci_methods[] DEVMETHOD(bus_teardown_intr, ata_pci_teardown_intr), DEVMETHOD(pci_read_config, ata_pci_read_config), DEVMETHOD(pci_write_config, ata_pci_write_config), + DEVMETHOD(bus_child_location_str, ata_pci_child_location_str), { 0, 0 } }; Modified: head/sys/dev/ata/ata-pci.h ============================================================================== --- head/sys/dev/ata/ata-pci.h Sat May 22 03:19:30 2010 (r208409) +++ head/sys/dev/ata/ata-pci.h Sat May 22 07:32:47 2010 (r208410) @@ -502,6 +502,8 @@ int ata_pci_write_ivar(device_t dev, dev uint32_t ata_pci_read_config(device_t dev, device_t child, int reg, int width); void ata_pci_write_config(device_t dev, device_t child, int reg, uint32_t val, int width); +int ata_pci_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen); struct resource * ata_pci_alloc_resource(device_t dev, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags); int ata_pci_release_resource(device_t dev, device_t child, int type, int rid, struct resource *r); int ata_pci_setup_intr(device_t dev, device_t child, struct resource *irq, int flags, driver_filter_t *filter, driver_intr_t *function, void *argument, void **cookiep); @@ -550,6 +552,7 @@ static device_method_t __CONCAT(dname,_m DEVMETHOD(bus_teardown_intr, ata_pci_teardown_intr), \ DEVMETHOD(pci_read_config, ata_pci_read_config), \ DEVMETHOD(pci_write_config, ata_pci_write_config), \ + DEVMETHOD(bus_child_location_str, ata_pci_child_location_str), \ { 0, 0 } \ }; \ static driver_t __CONCAT(dname,_driver) = { \ Modified: head/sys/dev/mvs/mvs_pci.c ============================================================================== --- head/sys/dev/mvs/mvs_pci.c Sat May 22 03:19:30 2010 (r208409) +++ head/sys/dev/mvs/mvs_pci.c Sat May 22 07:32:47 2010 (r208410) @@ -482,6 +482,16 @@ mvs_print_child(device_t dev, device_t c return (retval); } +static int +mvs_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + static device_method_t mvs_methods[] = { DEVMETHOD(device_probe, mvs_probe), DEVMETHOD(device_attach, mvs_attach), @@ -493,6 +503,7 @@ static device_method_t mvs_methods[] = { DEVMETHOD(bus_release_resource, mvs_release_resource), DEVMETHOD(bus_setup_intr, mvs_setup_intr), DEVMETHOD(bus_teardown_intr,mvs_teardown_intr), + DEVMETHOD(bus_child_location_str, mvs_child_location_str), DEVMETHOD(mvs_edma, mvs_edma), { 0, 0 } }; Modified: head/sys/dev/mvs/mvs_soc.c ============================================================================== --- head/sys/dev/mvs/mvs_soc.c Sat May 22 03:19:30 2010 (r208409) +++ head/sys/dev/mvs/mvs_soc.c Sat May 22 07:32:47 2010 (r208410) @@ -413,6 +413,16 @@ mvs_print_child(device_t dev, device_t c return (retval); } +static int +mvs_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + static device_method_t mvs_methods[] = { DEVMETHOD(device_probe, mvs_probe), DEVMETHOD(device_attach, mvs_attach), @@ -425,6 +435,7 @@ static device_method_t mvs_methods[] = { DEVMETHOD(bus_setup_intr, mvs_setup_intr), DEVMETHOD(bus_teardown_intr,mvs_teardown_intr), DEVMETHOD(mvs_edma, mvs_edma), + DEVMETHOD(bus_child_location_str, mvs_child_location_str), { 0, 0 } }; static driver_t mvs_driver = { Modified: head/sys/dev/siis/siis.c ============================================================================== --- head/sys/dev/siis/siis.c Sat May 22 03:19:30 2010 (r208409) +++ head/sys/dev/siis/siis.c Sat May 22 07:32:47 2010 (r208410) @@ -398,6 +398,16 @@ siis_print_child(device_t dev, device_t return (retval); } +static int +siis_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + devclass_t siis_devclass; static device_method_t siis_methods[] = { DEVMETHOD(device_probe, siis_probe), @@ -410,6 +420,7 @@ static device_method_t siis_methods[] = DEVMETHOD(bus_release_resource, siis_release_resource), DEVMETHOD(bus_setup_intr, siis_setup_intr), DEVMETHOD(bus_teardown_intr,siis_teardown_intr), + DEVMETHOD(bus_child_location_str, siis_child_location_str), { 0, 0 } }; static driver_t siis_driver = { From owner-svn-src-head@FreeBSD.ORG Sat May 22 07:35:17 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A906B1065670; Sat, 22 May 2010 07:35:17 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97F2B8FC1C; Sat, 22 May 2010 07:35:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4M7ZHw8086794; Sat, 22 May 2010 07:35:17 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4M7ZHwk086790; Sat, 22 May 2010 07:35:17 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005220735.o4M7ZHwk086790@svn.freebsd.org> From: Jung-uk Kim Date: Sat, 22 May 2010 07:35:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208411 - in head/sys: dev/syscons isa X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 07:35:17 -0000 Author: jkim Date: Sat May 22 07:35:17 2010 New Revision: 208411 URL: http://svn.freebsd.org/changeset/base/208411 Log: Suspend screen updates when the video controller is powered down. Modified: head/sys/dev/syscons/syscons.c head/sys/dev/syscons/syscons.h head/sys/isa/syscons_isa.c Modified: head/sys/dev/syscons/syscons.c ============================================================================== --- head/sys/dev/syscons/syscons.c Sat May 22 07:32:47 2010 (r208410) +++ head/sys/dev/syscons/syscons.c Sat May 22 07:35:17 2010 (r208411) @@ -1692,7 +1692,7 @@ sccnupdate(scr_stat *scp) { /* this is a cut-down version of scrn_timer()... */ - if (scp->sc->font_loading_in_progress) + if (scp->sc->suspend_in_progress || scp->sc->font_loading_in_progress) return; if (debugger > 0 || panicstr || shutdown_in_progress) { @@ -1742,7 +1742,7 @@ scrn_timer(void *arg) return; /* don't do anything when we are performing some I/O operations */ - if (sc->font_loading_in_progress) { + if (sc->suspend_in_progress || sc->font_loading_in_progress) { if (again) timeout(scrn_timer, sc, hz / 10); return; Modified: head/sys/dev/syscons/syscons.h ============================================================================== --- head/sys/dev/syscons/syscons.h Sat May 22 07:32:47 2010 (r208410) +++ head/sys/dev/syscons/syscons.h Sat May 22 07:35:17 2010 (r208411) @@ -230,6 +230,7 @@ typedef struct sc_softc { char switch_in_progress; char write_in_progress; char blink_in_progress; + char suspend_in_progress; struct mtx video_mtx; long scrn_time_stamp; Modified: head/sys/isa/syscons_isa.c ============================================================================== --- head/sys/isa/syscons_isa.c Sat May 22 07:32:47 2010 (r208410) +++ head/sys/isa/syscons_isa.c Sat May 22 07:35:17 2010 (r208411) @@ -114,21 +114,21 @@ scsuspend(device_t dev) sc = &main_softc; - if (sc->cur_scp == NULL) + if (sc->cur_scp == NULL || sc->suspend_in_progress) return (0); - sc_cur_scr = sc->cur_scp->index; - - if (sc_no_suspend_vtswitch) - return (0); + if (!sc_no_suspend_vtswitch) { + sc_cur_scr = sc->cur_scp->index; + do { + sc_switch_scr(sc, 0); + if (!sc->switch_in_progress) { + break; + } + pause("scsuspend", hz); + } while (retry--); + } - do { - sc_switch_scr(sc, 0); - if (!sc->switch_in_progress) { - break; - } - pause("scsuspend", hz); - } while (retry--); + sc->suspend_in_progress = TRUE; return (0); } @@ -138,11 +138,15 @@ scresume(device_t dev) { sc_softc_t *sc; - if (sc_no_suspend_vtswitch) + sc = &main_softc; + + if (!sc->suspend_in_progress) return (0); - sc = &main_softc; - sc_switch_scr(sc, sc_cur_scr); + sc->suspend_in_progress = FALSE; + + if (!sc_no_suspend_vtswitch) + sc_switch_scr(sc, sc_cur_scr); return (0); } @@ -303,3 +307,70 @@ static driver_t sc_driver = { }; DRIVER_MODULE(sc, isa, sc_driver, sc_devclass, 0, 0); + +static devclass_t scpm_devclass; + +static void +scpm_identify(driver_t *driver, device_t parent) +{ + + device_add_child(parent, "scpm", 0); +} + +static int +scpm_probe(device_t dev) +{ + + device_set_desc(dev, SC_DRIVER_NAME " suspend/resume"); + device_quiet(dev); + + return (BUS_PROBE_DEFAULT); +} + +static int +scpm_attach(device_t dev) +{ + + bus_generic_probe(dev); + bus_generic_attach(dev); + + return (0); +} + +static int +scpm_suspend(device_t dev) +{ + int error; + + error = bus_generic_suspend(dev); + if (error != 0) + return (error); + + return (scsuspend(dev)); +} + +static int +scpm_resume(device_t dev) +{ + + scresume(dev); + + return (bus_generic_resume(dev)); +} + +static device_method_t scpm_methods[] = { + DEVMETHOD(device_identify, scpm_identify), + DEVMETHOD(device_probe, scpm_probe), + DEVMETHOD(device_attach, scpm_attach), + DEVMETHOD(device_suspend, scpm_suspend), + DEVMETHOD(device_resume, scpm_resume), + { 0, 0 } +}; + +static driver_t scpm_driver = { + "scpm", + scpm_methods, + 0 +}; + +DRIVER_MODULE(scpm, vgapm, scpm_driver, scpm_devclass, 0, 0); From owner-svn-src-head@FreeBSD.ORG Sat May 22 07:38:29 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D3FA1065673; Sat, 22 May 2010 07:38:29 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5CB4C8FC14; Sat, 22 May 2010 07:38:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4M7cTBS087505; Sat, 22 May 2010 07:38:29 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4M7cTE5087503; Sat, 22 May 2010 07:38:29 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005220738.o4M7cTE5087503@svn.freebsd.org> From: Jung-uk Kim Date: Sat, 22 May 2010 07:38:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208412 - head/sys/isa X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 07:38:29 -0000 Author: jkim Date: Sat May 22 07:38:29 2010 New Revision: 208412 URL: http://svn.freebsd.org/changeset/base/208412 Log: Fix style(9) nits. Modified: head/sys/isa/syscons_isa.c Modified: head/sys/isa/syscons_isa.c ============================================================================== --- head/sys/isa/syscons_isa.c Sat May 22 07:35:17 2010 (r208411) +++ head/sys/isa/syscons_isa.c Sat May 22 07:38:29 2010 (r208412) @@ -68,7 +68,7 @@ __FBSDID("$FreeBSD$"); static devclass_t sc_devclass; -static sc_softc_t main_softc; +static sc_softc_t main_softc; #ifdef SC_NO_SUSPEND_VTYSWITCH static int sc_no_suspend_vtswitch = 1; #else @@ -76,26 +76,28 @@ static int sc_no_suspend_vtswitch = 0; #endif static int sc_cur_scr; -TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", (int *)&sc_no_suspend_vtswitch); +TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); SYSCTL_DECL(_hw_syscons); SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); static void -scidentify (driver_t *driver, device_t parent) +scidentify(driver_t *driver, device_t parent) { + BUS_ADD_CHILD(parent, ISA_ORDER_SPECULATIVE, "sc", 0); } static int scprobe(device_t dev) { + /* No pnp support */ if (isa_get_vendorid(dev)) return (ENXIO); device_set_desc(dev, "System console"); - return sc_probe_unit(device_get_unit(dev), device_get_flags(dev)); + return (sc_probe_unit(device_get_unit(dev), device_get_flags(dev))); } static int @@ -154,7 +156,8 @@ scresume(device_t dev) int sc_max_unit(void) { - return devclass_get_maxunit(sc_devclass); + + return (devclass_get_maxunit(sc_devclass)); } sc_softc_t @@ -163,46 +166,46 @@ sc_softc_t sc_softc_t *sc; if (unit < 0) - return NULL; - if (flags & SC_KERNEL_CONSOLE) { + return (NULL); + if ((flags & SC_KERNEL_CONSOLE) != 0) { /* FIXME: clear if it is wired to another unit! */ sc = &main_softc; } else { - sc = (sc_softc_t *)device_get_softc(devclass_get_device(sc_devclass, unit)); + sc = device_get_softc(devclass_get_device(sc_devclass, unit)); if (sc == NULL) - return NULL; + return (NULL); } sc->unit = unit; - if (!(sc->flags & SC_INIT_DONE)) { + if ((sc->flags & SC_INIT_DONE) == 0) { sc->keyboard = -1; sc->adapter = -1; sc->cursor_char = SC_CURSOR_CHAR; sc->mouse_char = SC_MOUSE_CHAR; } - return sc; + return (sc); } sc_softc_t *sc_find_softc(struct video_adapter *adp, struct keyboard *kbd) { sc_softc_t *sc; - int units; int i; + int units; sc = &main_softc; - if (((adp == NULL) || (adp == sc->adp)) - && ((kbd == NULL) || (kbd == sc->kbd))) - return sc; + if ((adp == NULL || adp == sc->adp) && + (kbd == NULL || kbd == sc->kbd)) + return (sc); units = devclass_get_maxunit(sc_devclass); for (i = 0; i < units; ++i) { - sc = (sc_softc_t *)device_get_softc(devclass_get_device(sc_devclass, i)); + sc = device_get_softc(devclass_get_device(sc_devclass, i)); if (sc == NULL) continue; - if (((adp == NULL) || (adp == sc->adp)) - && ((kbd == NULL) || (kbd == sc->kbd))) - return sc; + if ((adp == NULL || adp == sc->adp) && + (kbd == NULL || kbd == sc->kbd)) + return (sc); } - return NULL; + return (NULL); } int @@ -220,7 +223,7 @@ sc_get_cons_priority(int *unit, int *fla if (arch_i386_is_xbox) { *unit = 0; *flags = SC_KERNEL_CONSOLE; - return CN_INTERNAL; + return (CN_INTERNAL); } #endif @@ -249,24 +252,24 @@ sc_get_cons_priority(int *unit, int *fla *flags = 0; } #if 0 - return ((*flags & SC_KERNEL_CONSOLE) ? CN_INTERNAL : CN_NORMAL); + return ((*flags & SC_KERNEL_CONSOLE) != 0 ? CN_INTERNAL : CN_NORMAL); #endif - return CN_INTERNAL; + return (CN_INTERNAL); } void sc_get_bios_values(bios_values_t *values) { #if defined(__i386__) || defined(__amd64__) - u_int8_t shift; + uint8_t shift; - values->cursor_start = *(u_int8_t *)BIOS_PADDRTOVADDR(0x461); - values->cursor_end = *(u_int8_t *)BIOS_PADDRTOVADDR(0x460); - shift = *(u_int8_t *)BIOS_PADDRTOVADDR(0x417); - values->shift_state = ((shift & BIOS_CLKED) ? CLKED : 0) - | ((shift & BIOS_NLKED) ? NLKED : 0) - | ((shift & BIOS_SLKED) ? SLKED : 0) - | ((shift & BIOS_ALKED) ? ALKED : 0); + values->cursor_start = *(uint8_t *)BIOS_PADDRTOVADDR(0x461); + values->cursor_end = *(uint8_t *)BIOS_PADDRTOVADDR(0x460); + shift = *(uint8_t *)BIOS_PADDRTOVADDR(0x417); + values->shift_state = ((shift & BIOS_CLKED) != 0 ? CLKED : 0) | + ((shift & BIOS_NLKED) != 0 ? NLKED : 0) | + ((shift & BIOS_SLKED) != 0 ? SLKED : 0) | + ((shift & BIOS_ALKED) != 0 ? ALKED : 0); #else values->cursor_start = 0; values->cursor_end = 32; @@ -278,17 +281,17 @@ sc_get_bios_values(bios_values_t *values int sc_tone(int herz) { + #if defined(HAS_TIMER_SPKR) if (herz) { if (timer_spkr_acquire()) - return EBUSY; + return (EBUSY); timer_spkr_setfreq(herz); - } else { + } else timer_spkr_release(); - } #endif - return 0; + return (0); } static device_method_t sc_methods[] = { From owner-svn-src-head@FreeBSD.ORG Sat May 22 07:44:34 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 23C851065672; Sat, 22 May 2010 07:44:34 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 130E68FC08; Sat, 22 May 2010 07:44:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4M7iX5q088868; Sat, 22 May 2010 07:44:33 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4M7iXVW088866; Sat, 22 May 2010 07:44:33 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005220744.o4M7iXVW088866@svn.freebsd.org> From: Jung-uk Kim Date: Sat, 22 May 2010 07:44:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208413 - head/sys/isa X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 07:44:34 -0000 Author: jkim Date: Sat May 22 07:44:33 2010 New Revision: 208413 URL: http://svn.freebsd.org/changeset/base/208413 Log: Fix more style(9) nits that I missed in the previous commit. Modified: head/sys/isa/syscons_isa.c Modified: head/sys/isa/syscons_isa.c ============================================================================== --- head/sys/isa/syscons_isa.c Sat May 22 07:38:29 2010 (r208412) +++ head/sys/isa/syscons_isa.c Sat May 22 07:44:33 2010 (r208413) @@ -79,7 +79,7 @@ static int sc_cur_scr; TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); SYSCTL_DECL(_hw_syscons); SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, - &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); + &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); static void scidentify(driver_t *driver, device_t parent) @@ -123,9 +123,8 @@ scsuspend(device_t dev) sc_cur_scr = sc->cur_scp->index; do { sc_switch_scr(sc, 0); - if (!sc->switch_in_progress) { + if (!sc->switch_in_progress) break; - } pause("scsuspend", hz); } while (retry--); } @@ -212,7 +211,7 @@ int sc_get_cons_priority(int *unit, int *flags) { const char *at; - int u, f; + int f, u; #ifdef XBOX /* @@ -348,7 +347,7 @@ scpm_suspend(device_t dev) error = bus_generic_suspend(dev); if (error != 0) return (error); - + return (scsuspend(dev)); } From owner-svn-src-head@FreeBSD.ORG Sat May 22 07:52:24 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 293171065674; Sat, 22 May 2010 07:52:24 +0000 (UTC) (envelope-from swell.k@gmail.com) Received: from mail-bw0-f54.google.com (mail-bw0-f54.google.com [209.85.214.54]) by mx1.freebsd.org (Postfix) with ESMTP id 1E5088FC26; Sat, 22 May 2010 07:52:22 +0000 (UTC) Received: by bwz2 with SMTP id 2so323895bwz.13 for ; Sat, 22 May 2010 00:52:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:references :date:in-reply-to:message-id:user-agent:mime-version:content-type; bh=2Qtt9xV9vy244+ypShHBAv+DdTxTsFn3Bu5K0SSwL0Y=; b=IKRcgVVdVjxBlxYKv66+loBxYaLVB8RqW5CyYONsu/DzzgwDLO1ICE5LesbP0LRi+P vqbYNZYsLLvgl9hc+G28mnKTyDhQoQzS25QwHLdvNAqVt0ceSIytjzxRZp9qkx6bcTDc pAYRLbp2Kcf5nnym1ZhMWzXlfHSp4HRXpU81A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; b=TMp1pdG5rhu1b99fy1VEVQJVgxAaHNUDJojxytnskRLuW3nqSOvoydss1yuG0xb/cD nmw0e46bSvxKUoyxGF6XH0l4XGtIpXu3Cq3XDpP5ub8wKmzvu77vAfi7b/vw6aEkWFy4 CImB8pSdzcW18+3/8kDROCkc3rA5eXkvSfctA= Received: by 10.204.30.195 with SMTP id v3mr513409bkc.3.1274514741722; Sat, 22 May 2010 00:52:21 -0700 (PDT) Received: from localhost (95-25-188-72.broadband.corbina.ru [95.25.188.72]) by mx.google.com with ESMTPS id d5sm8305765bkd.1.2010.05.22.00.52.20 (version=SSLv3 cipher=RC4-MD5); Sat, 22 May 2010 00:52:20 -0700 (PDT) From: Anonymous To: Tim Kientzle References: <201005081628.o48GSM9s067363__30886.3841965378$1273336146$gmane$org@svn.freebsd.org> <86aas3oc8b.fsf@gmail.com> <4BF059FF.8050002__30617.9139217877$1274042897$gmane$org@freebsd.org> <861vdaakkf.fsf@gmail.com> Date: Sat, 22 May 2010 11:52:18 +0400 In-Reply-To: <861vdaakkf.fsf@gmail.com> (Anonymous's message of "Mon, 17 May 2010 14:28:48 +0400") Message-ID: <86mxvsxtjh.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r207790 - head/usr.bin/tar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 07:52:24 -0000 Anonymous writes: > Tim Kientzle writes: > >> Please try the attached patch and let me know if it fixes it for you... >> >> Cheers, >> >> Tim > [...] > > It fixes the issue. Thanks. I'm afraid not. Similar issue affects `tar cf - blah | tar xf -'. It's a little bit harder to reproduce. Caught after using pkg_add(1). # pkg_add gtk-2.20.1_1.tbz load: 0.21 cmd: bsdtar 3351 [running] 0.06r 0.02u 0.00s 1% 6348k In: 307200 bytes, compression 76%; Out: 161 files, 1316787 bytes Current: include/gtk-2.0/gtk/gtklabel.h (8627 bytes) load: 0.16 cmd: bsdtar 3354 [tx->tx_quiesce_done_cv)] 4.08r 0.00u 0.14s 1% 2712k In: 544 files, 36359168 bytes; Out: 36352000 bytes, compression 0% Current: share/locale/hi/LC_MESSAGES/gtk20-properties.mo (131072/234342 bytes) load: 0.16 cmd: bsdtar 3354 [tx->tx_quiesce_done_cv)] 4.86r 0.00u 0.14s 1% 2712k tar: Write error In: 36341760 bytes, compression 0%; Out: 544 files, 36341760 bytes Current: share/locale/hi/LC_MESSAGES/gtk20-properties.mo (234342 bytes) share/locale/hi/LC_MESSAGES/gtk20-properties.mo: Truncated tar archive tar: Error exit delayed from previous errors. pkg_add: leave_playpen: can't chdir back to '' zsh: exit 2 sudo -E pkg_add gtk-x11-2.20.1_1.tbz Workaround is the same - svn diff -c207790 | patch -R -- I don't remember svn revision (newvers.sh doesn't work here). But it was after you committed that patch. $ uname -vm FreeBSD 9.0-CURRENT #0: Fri May 21 15:32:05 UTC 2010 ...:.../PHOENIX amd64 From owner-svn-src-head@FreeBSD.ORG Sat May 22 08:30:48 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 12AF2106567E; Sat, 22 May 2010 08:30:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D45B48FC19; Sat, 22 May 2010 08:30:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4M8Ulsq098953; Sat, 22 May 2010 08:30:47 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4M8Ulsw098948; Sat, 22 May 2010 08:30:47 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005220830.o4M8Ulsw098948@svn.freebsd.org> From: Alexander Motin Date: Sat, 22 May 2010 08:30:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208414 - in head/sys/dev: ahci mvs siis X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 08:30:48 -0000 Author: mav Date: Sat May 22 08:30:47 2010 New Revision: 208414 URL: http://svn.freebsd.org/changeset/base/208414 Log: Fill rman range start/end values. It makes devinfo output more readable. Modified: head/sys/dev/ahci/ahci.c head/sys/dev/mvs/mvs_pci.c head/sys/dev/mvs/mvs_soc.c head/sys/dev/siis/siis.c Modified: head/sys/dev/ahci/ahci.c ============================================================================== --- head/sys/dev/ahci/ahci.c Sat May 22 07:44:33 2010 (r208413) +++ head/sys/dev/ahci/ahci.c Sat May 22 08:30:47 2010 (r208414) @@ -330,6 +330,8 @@ ahci_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return ENXIO; /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { Modified: head/sys/dev/mvs/mvs_pci.c ============================================================================== --- head/sys/dev/mvs/mvs_pci.c Sat May 22 07:44:33 2010 (r208413) +++ head/sys/dev/mvs/mvs_pci.c Sat May 22 08:30:47 2010 (r208414) @@ -139,6 +139,8 @@ mvs_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return ENXIO; /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { Modified: head/sys/dev/mvs/mvs_soc.c ============================================================================== --- head/sys/dev/mvs/mvs_soc.c Sat May 22 07:44:33 2010 (r208413) +++ head/sys/dev/mvs/mvs_soc.c Sat May 22 08:30:47 2010 (r208414) @@ -131,6 +131,8 @@ mvs_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return ENXIO; /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { Modified: head/sys/dev/siis/siis.c ============================================================================== --- head/sys/dev/siis/siis.c Sat May 22 07:44:33 2010 (r208413) +++ head/sys/dev/siis/siis.c Sat May 22 08:30:47 2010 (r208414) @@ -152,6 +152,8 @@ siis_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return (ENXIO); /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { From owner-svn-src-head@FreeBSD.ORG Sat May 22 16:30:33 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8163C106566C; Sat, 22 May 2010 16:30:33 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 713458FC14; Sat, 22 May 2010 16:30:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4MGUX8k009052; Sat, 22 May 2010 16:30:33 GMT (envelope-from maxim@svn.freebsd.org) Received: (from maxim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4MGUXL8009050; Sat, 22 May 2010 16:30:33 GMT (envelope-from maxim@svn.freebsd.org) Message-Id: <201005221630.o4MGUXL8009050@svn.freebsd.org> From: Maxim Konovalov Date: Sat, 22 May 2010 16:30:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208417 - head/share/mk X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 16:30:33 -0000 Author: maxim Date: Sat May 22 16:30:33 2010 New Revision: 208417 URL: http://svn.freebsd.org/changeset/base/208417 Log: o Grammar. PR: conf/146827 Submitted by: chris petrik Modified: head/share/mk/bsd.README Modified: head/share/mk/bsd.README ============================================================================== --- head/share/mk/bsd.README Sat May 22 15:13:41 2010 (r208416) +++ head/share/mk/bsd.README Sat May 22 16:30:33 2010 (r208417) @@ -91,12 +91,12 @@ the command "make b" will echo "bar". T way the V7 make behaved. It's fairly difficult to make the BSD .mk files work when you're building -multiple programs in a single directory. It's a lot easier split up the -programs than to deal with the problem. Most of the agony comes from making -the "obj" directory stuff work right, not because we switch to a new version -of make. So, don't get mad at us, figure out a better way to handle multiple -architectures so we can quit using the symbolic link stuff. (Imake doesn't -count.) +multiple programs in a single directory. It's a lot easier to split up +the programs than to deal with the problem. Most of the agony comes from +making the "obj" directory stuff work right, not because we switch to a new +version of make. So, don't get mad at us, figure out a better way to handle +multiple architectures so we can quit using the symbolic link stuff. +(Imake doesn't count.) The file .depend in the source directory is expected to contain dependencies for the source files. This file is read automatically by make after reading From owner-svn-src-head@FreeBSD.ORG Sat May 22 17:17:58 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E32761065670; Sat, 22 May 2010 17:17:58 +0000 (UTC) (envelope-from kientzle@freebsd.org) Received: from monday.kientzle.com (kientzle.com [66.166.149.50]) by mx1.freebsd.org (Postfix) with ESMTP id 1F2A58FC15; Sat, 22 May 2010 17:17:57 +0000 (UTC) Received: (from root@localhost) by monday.kientzle.com (8.14.3/8.14.3) id o4MHIE6o071173; Sat, 22 May 2010 17:18:14 GMT (envelope-from kientzle@freebsd.org) Received: from horton.x.kientzle.com (fw2.kientzle.com [10.123.1.2]) by kientzle.com with SMTP id 3p6epe3bbius3m4n9wi7citdea; Sat, 22 May 2010 17:18:13 +0000 (UTC) (envelope-from kientzle@freebsd.org) Message-ID: <4BF811C2.4050901@freebsd.org> Date: Sat, 22 May 2010 10:17:54 -0700 From: Tim Kientzle User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.23) Gecko/20100314 SeaMonkey/1.1.18 MIME-Version: 1.0 To: Anonymous References: <201005081628.o48GSM9s067363__30886.3841965378$1273336146$gmane$org@svn.freebsd.org> <86aas3oc8b.fsf@gmail.com> <4BF059FF.8050002__30617.9139217877$1274042897$gmane$org@freebsd.org> <861vdaakkf.fsf@gmail.com> <86mxvsxtjh.fsf@gmail.com> In-Reply-To: <86mxvsxtjh.fsf@gmail.com> Content-Type: multipart/mixed; boundary="------------080204080707060602010606" Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r207790 - head/usr.bin/tar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 17:17:59 -0000 This is a multi-part message in MIME format. --------------080204080707060602010606 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Ah, yes. I did forget to add an EINTR check to the write side. Attached patch should fix "tar cf" Thanks for your careful testing... Anonymous wrote: > Anonymous writes: > >> Tim Kientzle writes: >> >>> Please try the attached patch and let me know if it fixes it for you... >>> >>> Cheers, >>> >>> Tim >> [...] >> >> It fixes the issue. Thanks. > > I'm afraid not. Similar issue affects `tar cf - blah | tar xf -'. > It's a little bit harder to reproduce. Caught after using pkg_add(1). > > # pkg_add gtk-2.20.1_1.tbz > load: 0.21 cmd: bsdtar 3351 [running] 0.06r 0.02u 0.00s 1% 6348k > In: 307200 bytes, compression 76%; Out: 161 files, 1316787 bytes > Current: include/gtk-2.0/gtk/gtklabel.h (8627 bytes) > load: 0.16 cmd: bsdtar 3354 [tx->tx_quiesce_done_cv)] 4.08r 0.00u 0.14s 1% 2712k > In: 544 files, 36359168 bytes; Out: 36352000 bytes, compression 0% > Current: share/locale/hi/LC_MESSAGES/gtk20-properties.mo (131072/234342 bytes) > load: 0.16 cmd: bsdtar 3354 [tx->tx_quiesce_done_cv)] 4.86r 0.00u 0.14s 1% 2712k > tar: Write error > In: 36341760 bytes, compression 0%; Out: 544 files, 36341760 bytes > Current: share/locale/hi/LC_MESSAGES/gtk20-properties.mo (234342 bytes) > share/locale/hi/LC_MESSAGES/gtk20-properties.mo: Truncated tar archive > tar: Error exit delayed from previous errors. > pkg_add: leave_playpen: can't chdir back to '' > zsh: exit 2 sudo -E pkg_add gtk-x11-2.20.1_1.tbz > > Workaround is the same - svn diff -c207790 | patch -R > > -- > I don't remember svn revision (newvers.sh doesn't work here). But it was > after you committed that patch. > > $ uname -vm > FreeBSD 9.0-CURRENT #0: Fri May 21 15:32:05 UTC 2010 ...:.../PHOENIX amd64 > > --------------080204080707060602010606 Content-Type: text/x-patch; name="libarchive_write_handle_eintr.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="libarchive_write_handle_eintr.patch" Index: archive_write_open_fd.c =================================================================== --- archive_write_open_fd.c (revision 2413) +++ archive_write_open_fd.c (working copy) @@ -51,7 +51,6 @@ #include "archive.h" struct write_fd_data { - off_t offset; int fd; }; @@ -122,12 +121,16 @@ ssize_t bytesWritten; mine = (struct write_fd_data *)client_data; - bytesWritten = write(mine->fd, buff, length); - if (bytesWritten <= 0) { - archive_set_error(a, errno, "Write error"); - return (-1); + for (;;) { + bytesWritten = write(mine->fd, buff, length); + if (bytesWritten <= 0) { + if (errno == EINTR) + continue; + archive_set_error(a, errno, "Write error"); + return (-1); + } + return (bytesWritten); } - return (bytesWritten); } static int Index: archive_write_open_file.c =================================================================== --- archive_write_open_file.c (revision 2413) +++ archive_write_open_file.c (working copy) @@ -86,12 +86,16 @@ size_t bytesWritten; mine = client_data; - bytesWritten = fwrite(buff, 1, length, mine->f); - if (bytesWritten < length) { - archive_set_error(a, errno, "Write error"); - return (-1); + for (;;) { + bytesWritten = fwrite(buff, 1, length, mine->f); + if (bytesWritten <= 0) { + if (errno == EINTR) + continue; + archive_set_error(a, errno, "Write error"); + return (-1); + } + return (bytesWritten); } - return (bytesWritten); } static int Index: archive_write_open_filename.c =================================================================== --- archive_write_open_filename.c (revision 2413) +++ archive_write_open_filename.c (working copy) @@ -142,12 +142,16 @@ ssize_t bytesWritten; mine = (struct write_file_data *)client_data; - bytesWritten = write(mine->fd, buff, length); - if (bytesWritten <= 0) { - archive_set_error(a, errno, "Write error"); - return (-1); + for (;;) { + bytesWritten = write(mine->fd, buff, length); + if (bytesWritten <= 0) { + if (errno == EINTR) + continue; + archive_set_error(a, errno, "Write error"); + return (-1); + } + return (bytesWritten); } - return (bytesWritten); } static int Index: archive_write.c =================================================================== --- archive_write.c (revision 2413) +++ archive_write.c (working copy) @@ -361,11 +361,20 @@ remaining -= to_copy; /* ... if it's full, write it out. */ if (state->avail == 0) { - bytes_written = (a->client_writer)(&a->archive, - a->client_data, state->buffer, state->buffer_size); - if (bytes_written <= 0) - return (ARCHIVE_FATAL); - /* XXX TODO: if bytes_written < state->buffer_size */ + char *p = state->buffer; + size_t remaining = state->buffer_size; + while (remaining > 0) { + bytes_written = (a->client_writer)(&a->archive, + a->client_data, p, remaining); + if (bytes_written <= 0) + return (ARCHIVE_FATAL); + if (bytes_remaining > remaining) { + archive_set_error(a, -1, "write overrun"); + return (ARCHIVE_FATAL); + } + p += bytes_written; + remaining -= bytes_written; + } state->next = state->buffer; state->avail = state->buffer_size; } --------------080204080707060602010606-- From owner-svn-src-head@FreeBSD.ORG Sat May 22 20:05:31 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F6CC106564A; Sat, 22 May 2010 20:05:31 +0000 (UTC) (envelope-from uqs@spoerlein.net) Received: from acme.spoerlein.net (acme.spoerlein.net [IPv6:2001:470:9a47::1]) by mx1.freebsd.org (Postfix) with ESMTP id BEF1C8FC1A; Sat, 22 May 2010 20:05:30 +0000 (UTC) Received: from acme.spoerlein.net (localhost.spoerlein.net [IPv6:::1]) by acme.spoerlein.net (8.14.4/8.14.4) with ESMTP id o4MK5SHv058819 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 22 May 2010 22:05:29 +0200 (CEST) (envelope-from uqs@spoerlein.net) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=spoerlein.net; s=dkim200908; t=1274558729; bh=BsTHET8EIN/mWVt5avNpEa2oiQzkKdhWqvek0OIHdww=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:In-Reply-To; b=jRUu3geneKyVMhdAYTduLsD1H9nIygHfUY07TpY2YiKoeRjCpEUvKrSqxdWzgMoCh asB3CIR+Uvg0jLD6hvivGUIPys2fhwPQGWbo+ssu/zJNWSZg9eIPvQBg+3YY3FKmk3 /fIwHwzarGf6Qhs9nLEYnIj19TWtSfjrSG/6Ytig= Received: (from uqs@localhost) by acme.spoerlein.net (8.14.4/8.14.4/Submit) id o4MK5ScL058818; Sat, 22 May 2010 22:05:28 +0200 (CEST) (envelope-from uqs@spoerlein.net) Date: Sat, 22 May 2010 22:05:28 +0200 From: Ulrich =?utf-8?B?U3DDtnJsZWlu?= To: Maxim Konovalov Message-ID: <20100522200528.GR88504@acme.spoerlein.net> Mail-Followup-To: Ulrich =?utf-8?B?U3DDtnJsZWlu?= , Maxim Konovalov , src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org References: <201005221630.o4MGUXL8009050@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201005221630.o4MGUXL8009050@svn.freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208417 - head/share/mk X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 20:05:31 -0000 On Sat, 22.05.2010 at 16:30:33 +0000, Maxim Konovalov wrote: > Author: maxim > Date: Sat May 22 16:30:33 2010 > New Revision: 208417 > URL: http://svn.freebsd.org/changeset/base/208417 > > Log: > o Grammar. > > PR: conf/146827 > Submitted by: chris petrik > > Modified: > head/share/mk/bsd.README > > Modified: head/share/mk/bsd.README > ============================================================================== > --- head/share/mk/bsd.README Sat May 22 15:13:41 2010 (r208416) > +++ head/share/mk/bsd.README Sat May 22 16:30:33 2010 (r208417) > @@ -91,12 +91,12 @@ the command "make b" will echo "bar". T > way the V7 make behaved. > > It's fairly difficult to make the BSD .mk files work when you're building > -multiple programs in a single directory. It's a lot easier split up the > -programs than to deal with the problem. Most of the agony comes from making > -the "obj" directory stuff work right, not because we switch to a new version > -of make. So, don't get mad at us, figure out a better way to handle multiple > -architectures so we can quit using the symbolic link stuff. (Imake doesn't > -count.) > +multiple programs in a single directory. It's a lot easier to split up > +the programs than to deal with the problem. Most of the agony comes from > +making the "obj" directory stuff work right, not because we switch to a new > +version of make. So, don't get mad at us, figure out a better way to handle > +multiple architectures so we can quit using the symbolic link stuff. > +(Imake doesn't count.) I don't quite get, why the paragraph had to be re-wrapped (making it worse). But what's more annoying is, that you introduced whitespace at end-of-line. Too bad 'svn diff' doesn't highligh this nicely as other SCMs do :( Uli From owner-svn-src-head@FreeBSD.ORG Sat May 22 20:19:13 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 52F13106564A; Sat, 22 May 2010 20:19:13 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4271E8FC08; Sat, 22 May 2010 20:19:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4MKJDla059302; Sat, 22 May 2010 20:19:13 GMT (envelope-from maxim@svn.freebsd.org) Received: (from maxim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4MKJDYH059300; Sat, 22 May 2010 20:19:13 GMT (envelope-from maxim@svn.freebsd.org) Message-Id: <201005222019.o4MKJDYH059300@svn.freebsd.org> From: Maxim Konovalov Date: Sat, 22 May 2010 20:19:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208420 - head/share/mk X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 20:19:13 -0000 Author: maxim Date: Sat May 22 20:19:12 2010 New Revision: 208420 URL: http://svn.freebsd.org/changeset/base/208420 Log: o Remove EoL w/spaces introduced in the last commit. Spotted by: uqs Modified: head/share/mk/bsd.README Modified: head/share/mk/bsd.README ============================================================================== --- head/share/mk/bsd.README Sat May 22 18:40:54 2010 (r208419) +++ head/share/mk/bsd.README Sat May 22 20:19:12 2010 (r208420) @@ -91,11 +91,11 @@ the command "make b" will echo "bar". T way the V7 make behaved. It's fairly difficult to make the BSD .mk files work when you're building -multiple programs in a single directory. It's a lot easier to split up -the programs than to deal with the problem. Most of the agony comes from -making the "obj" directory stuff work right, not because we switch to a new -version of make. So, don't get mad at us, figure out a better way to handle -multiple architectures so we can quit using the symbolic link stuff. +multiple programs in a single directory. It's a lot easier to split up +the programs than to deal with the problem. Most of the agony comes from +making the "obj" directory stuff work right, not because we switch to a new +version of make. So, don't get mad at us, figure out a better way to handle +multiple architectures so we can quit using the symbolic link stuff. (Imake doesn't count.) The file .depend in the source directory is expected to contain dependencies From owner-svn-src-head@FreeBSD.ORG Sat May 22 20:24:59 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A640B1065673; Sat, 22 May 2010 20:24:59 +0000 (UTC) (envelope-from swell.k@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.153]) by mx1.freebsd.org (Postfix) with ESMTP id AA4358FC08; Sat, 22 May 2010 20:24:58 +0000 (UTC) Received: by fg-out-1718.google.com with SMTP id l26so1170178fgb.13 for ; Sat, 22 May 2010 13:24:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:references :date:in-reply-to:message-id:user-agent:mime-version:content-type; bh=3sc2Y9W5CVTcr0R46Y4un0lFQ8t+tlLyijSRtGW+mM8=; b=a1Z3fTjOs0CZehxxqkszaxJMhJA65wHxiaNnOB7Qe+y3Xzkcn+vQk0vihgu15tjoEB 4BgEAIKlacqwk6K21OFvVNjk+F5g7kzPSySa8HcgftGOPxuyOG/GlCUCzXmqinS2ejds M3DH559P3/2zTq03D6WlpOzH1rMzEcv3l86+I= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; b=XNQ8leq6nF7V+Z/t+6UuB6Lu9iC8IZXrcrz7JRebXJHnB4Adjyu8O1W4o0FEwA5EqT G134NAVdPsryYQy3YMd0t2g5lg4tlXLGhJSGFmDPzV83LpUeSqjQbAZ4z5lLrhutMK5r LjWSLcH7h1k/KkvvgLacgYeFdnnpHpiWNDLpY= Received: by 10.87.50.37 with SMTP id c37mr5820011fgk.68.1274559894898; Sat, 22 May 2010 13:24:54 -0700 (PDT) Received: from localhost (95-25-188-72.broadband.corbina.ru [95.25.188.72]) by mx.google.com with ESMTPS id 3sm1705526fge.20.2010.05.22.13.24.54 (version=SSLv3 cipher=RC4-MD5); Sat, 22 May 2010 13:24:54 -0700 (PDT) From: Anonymous To: Tim Kientzle References: <201005081628.o48GSM9s067363__30886.3841965378$1273336146$gmane$org@svn.freebsd.org> <86aas3oc8b.fsf@gmail.com> <4BF059FF.8050002__30617.9139217877$1274042897$gmane$org@freebsd.org> <861vdaakkf.fsf@gmail.com> <86mxvsxtjh.fsf@gmail.com> <4BF811C2.4050901@freebsd.org> Date: Sun, 23 May 2010 00:24:35 +0400 In-Reply-To: <4BF811C2.4050901@freebsd.org> (Tim Kientzle's message of "Sat, 22 May 2010 10:17:54 -0700") Message-ID: <868w7bd6rg.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r207790 - head/usr.bin/tar X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 20:24:59 -0000 Tim Kientzle writes: > Ah, yes. I did forget to add an EINTR check to the write side. > > Attached patch should fix "tar cf" > > Thanks for your careful testing... > [...] > Index: archive_write.c > =================================================================== > --- archive_write.c (revision 2413) > +++ archive_write.c (working copy) > @@ -361,11 +361,20 @@ > remaining -= to_copy; > /* ... if it's full, write it out. */ > if (state->avail == 0) { > - bytes_written = (a->client_writer)(&a->archive, > - a->client_data, state->buffer, state->buffer_size); > - if (bytes_written <= 0) > - return (ARCHIVE_FATAL); > - /* XXX TODO: if bytes_written < state->buffer_size */ > + char *p = state->buffer; > + size_t remaining = state->buffer_size; > + while (remaining > 0) { > + bytes_written = (a->client_writer)(&a->archive, > + a->client_data, p, remaining); > + if (bytes_written <= 0) > + return (ARCHIVE_FATAL); > + if (bytes_remaining > remaining) { > + archive_set_error(a, -1, "write overrun"); > + return (ARCHIVE_FATAL); > + } > + p += bytes_written; > + remaining -= bytes_written; > + } > state->next = state->buffer; > state->avail = state->buffer_size; > } This hunk doesn't apply against archive_write.c@r201099. It depends on r1936 from googlecode that wasn't merged to /head. I compiled without the above hunk and I no longer able to reproduce the issue. Thanks. From owner-svn-src-head@FreeBSD.ORG Sat May 22 21:38:57 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5FB7C106566B; Sat, 22 May 2010 21:38:57 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4F24C8FC1C; Sat, 22 May 2010 21:38:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o4MLcvLF076786; Sat, 22 May 2010 21:38:57 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4MLcvkk076784; Sat, 22 May 2010 21:38:57 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201005222138.o4MLcvkk076784@svn.freebsd.org> From: Neel Natu Date: Sat, 22 May 2010 21:38:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208422 - head/sys/mips/mips X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 May 2010 21:38:57 -0000 Author: neel Date: Sat May 22 21:38:57 2010 New Revision: 208422 URL: http://svn.freebsd.org/changeset/base/208422 Log: - Use ptpgzone zone to allocate page table pages irrespective of the amount of memory on a platform. Tested on the Sibyte with 256MB and 1GB memory configurations. - Replace vtophys() with MIPS_KSEG0_TO_PHYS() to convert a page table page's virtual address to physical. We can safely do this because page table pages are allocated out of KSEG0. - Add an assertion to verify that when a page table page is freed it contains all zeroes. We can now use it after allocation without zeroing it. Modified: head/sys/mips/mips/pmap.c Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Sat May 22 21:34:14 2010 (r208421) +++ head/sys/mips/mips/pmap.c Sat May 22 21:38:57 2010 (r208422) @@ -110,10 +110,6 @@ __FBSDID("$FreeBSD$"); #define PMAP_SHPGPERPROC 200 #endif -#if defined(TARGET_XLR_XLS) -#define HIGHMEM_SUPPORT -#endif - #if !defined(PMAP_DIAGNOSTIC) #define PMAP_INLINE __inline #else @@ -197,10 +193,9 @@ static void pmap_invalidate_all_action(v static void pmap_update_page_action(void *arg); #endif -#ifdef HIGHMEM_SUPPORT -static void * pmap_ptpgzone_allocf(uma_zone_t, int, u_int8_t*, int); +static void pmap_ptpgzone_dtor(void *mem, int size, void *arg); +static void *pmap_ptpgzone_allocf(uma_zone_t, int, u_int8_t *, int); static uma_zone_t ptpgzone; -#endif struct local_sysmaps { struct mtx lock; @@ -542,11 +537,9 @@ pmap_init(void) pv_entry_high_water = 9 * (pv_entry_max / 10); uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); -#ifdef HIGHMEM_SUPPORT - ptpgzone = uma_zcreate("PT ENTRY", PAGE_SIZE, NULL, - NULL, NULL, NULL, PAGE_SIZE-1, UMA_ZONE_NOFREE); + ptpgzone = uma_zcreate("PT ENTRY", PAGE_SIZE, NULL, pmap_ptpgzone_dtor, + NULL, NULL, PAGE_SIZE - 1, UMA_ZONE_NOFREE | UMA_ZONE_ZINIT); uma_zone_set_allocf(ptpgzone, pmap_ptpgzone_allocf); -#endif } /*************************************************** @@ -880,21 +873,10 @@ pmap_qremove(vm_offset_t va, int count) static int _pmap_unwire_pte_hold(pmap_t pmap, vm_page_t m) { - vm_offset_t pteva; /* * unmap the page table page */ - pteva = (vm_offset_t)pmap->pm_segtab[m->pindex]; - if (pteva >= VM_MIN_KERNEL_ADDRESS) { - pmap_kremove(pteva); - kmem_free(kernel_map, pteva, PAGE_SIZE); - } else { - KASSERT(MIPS_IS_KSEG0_ADDR(pteva), - ("_pmap_unwire_pte_hold: 0x%0lx is not in kseg0", - (long)pteva)); - } - pmap->pm_segtab[m->pindex] = 0; --pmap->pm_stats.resident_count; @@ -939,7 +921,7 @@ pmap_unuse_pt(pmap_t pmap, vm_offset_t v mpte = pmap->pm_ptphint; } else { pteva = *pmap_pde(pmap, va); - mpte = PHYS_TO_VM_PAGE(vtophys(pteva)); + mpte = PHYS_TO_VM_PAGE(MIPS_KSEG0_TO_PHYS(pteva)); pmap->pm_ptphint = mpte; } } @@ -964,12 +946,27 @@ pmap_pinit0(pmap_t pmap) bzero(&pmap->pm_stats, sizeof pmap->pm_stats); } -#ifdef HIGHMEM_SUPPORT +static void +pmap_ptpgzone_dtor(void *mem, int size, void *arg) +{ +#ifdef INVARIANTS + static char zeropage[PAGE_SIZE]; + + KASSERT(size == PAGE_SIZE, + ("pmap_ptpgzone_dtor: invalid size %d", size)); + KASSERT(bcmp(mem, zeropage, PAGE_SIZE) == 0, + ("pmap_ptpgzone_dtor: freeing a non-zeroed page")); +#endif +} + static void * pmap_ptpgzone_allocf(uma_zone_t zone, int bytes, u_int8_t *flags, int wait) { vm_page_t m; vm_paddr_t paddr; + + KASSERT(bytes == PAGE_SIZE, + ("pmap_ptpgzone_allocf: invalid allocation size %d", bytes)); *flags = UMA_SLAB_PRIV; m = vm_phys_alloc_contig(1, 0, MIPS_KSEG0_LARGEST_PHYS, @@ -1006,8 +1003,6 @@ pmap_alloc_pte_page(pmap_t pmap, unsigne paddr = MIPS_KSEG0_TO_PHYS(va); m = PHYS_TO_VM_PAGE(paddr); - if ((m->flags & PG_ZERO) == 0) - bzero(va, PAGE_SIZE); m->pindex = index; m->valid = VM_PAGE_BITS_ALL; m->wire_count = 1; @@ -1026,55 +1021,6 @@ pmap_release_pte_page(vm_page_t m) va = (void *)MIPS_PHYS_TO_KSEG0(paddr); uma_zfree(ptpgzone, va); } -#else -static vm_page_t -pmap_alloc_pte_page(pmap_t pmap, unsigned int index, int wait, vm_offset_t *vap) -{ - vm_offset_t va; - vm_page_t m; - int locked, req; - - locked = mtx_owned(&pmap->pm_mtx); - req = VM_ALLOC_WIRED | VM_ALLOC_NOOBJ; - if (wait & M_WAITOK) - req |= VM_ALLOC_NORMAL; - else - req |= VM_ALLOC_INTERRUPT; - - m = vm_page_alloc(NULL, index, req); - if (m == NULL) { - if (wait & M_WAITOK) { - if (locked) { - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - PMAP_UNLOCK(pmap); - vm_page_unlock_queues(); - } - VM_WAIT; - if (locked) { - vm_page_lock_queues(); - PMAP_LOCK(pmap); - } - } - return NULL; - } - - va = MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(m)); - if ((m->flags & PG_ZERO) == 0) - bzero((void *)va, PAGE_SIZE); - else - vm_page_flag_clear(m, PG_ZERO); - - m->valid = VM_PAGE_BITS_ALL; - *vap = (vm_offset_t)va; - return (m); -} - -static void -pmap_release_pte_page(vm_page_t m) -{ - vm_page_free(m); -} -#endif /* * Initialize a preallocated and zeroed pmap structure, @@ -1178,7 +1124,7 @@ retry: (pmap->pm_ptphint->pindex == ptepindex)) { m = pmap->pm_ptphint; } else { - m = PHYS_TO_VM_PAGE(vtophys(pteva)); + m = PHYS_TO_VM_PAGE(MIPS_KSEG0_TO_PHYS(pteva)); pmap->pm_ptphint = m; } m->wire_count++; @@ -1226,10 +1172,7 @@ pmap_release(pmap_t pmap) pmap->pm_stats.resident_count)); ptdva = (vm_offset_t)pmap->pm_segtab; - ptdpg = PHYS_TO_VM_PAGE(vtophys(ptdva)); - - KASSERT(MIPS_IS_KSEG0_ADDR(ptdva), - ("pmap_release: 0x%0lx is not in kseg0", (long)ptdva)); + ptdpg = PHYS_TO_VM_PAGE(MIPS_KSEG0_TO_PHYS(ptdva)); ptdpg->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1); @@ -2023,7 +1966,8 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ (pmap->pm_ptphint->pindex == ptepindex)) { mpte = pmap->pm_ptphint; } else { - mpte = PHYS_TO_VM_PAGE(vtophys(pteva)); + mpte = PHYS_TO_VM_PAGE( + MIPS_KSEG0_TO_PHYS(pteva)); pmap->pm_ptphint = mpte; } mpte->wire_count++;